§
    
 @gÛ ã                  ó¸  — U d Z ddlmZ ddlZddlmZ ddlZddlm	Z	 ddl
Z
ddlZddlZddlmZ ddlZddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm Z  ddlm!Z! ddlm"Z" ddlm#Z# ddlm$Z$ ddl%m&Z& ddl%m'Z' ddl%m(Z( ddl%m)Z) dd l%m*Z* dd!l%m+Z+ dd"l%m,Z, dd#l%m-Z- dd$l%m.Z. dd%l%m/Z/ dd&l%m0Z1 dd'l2m3Z3 dd(l2m4Z4 dd)l&m5Z5 dd*l&m6Z6 dd+l&m7Z7 dd,l&m8Z8 dd-l&m9Z9 dd.l&m:Z: dd/l)m;Z; dd0l)m<Z< dd1l-m=Z= dd2l/m>Z> dd3l?m@Z@ dd4lAmBZB dd5lAmCZC d6d7l%mDZD d6d&l%m0Z0 d6d8l0mEZE d6d9lFmGZG d6d:lFmHZH d6d;lFmIZI ej#        rÒdd<lJmKZK dd=l&mLZL dd>l&mMZM dd?lNmOZO dd@lPmQZQ ddAlRmSZS ddBlRmTZT ddClRmUZU ddDl)mVZV ddEl)mWZW ddFl)mXZX ddGl)mYZY ddHl)mZZZ ddIl*m[Z[ ddJl-m\Z\ ddKl.m]Z] ddLl.m^Z^ ddMl.m_Z_ ddNl.m`Z` ddOl.maZa ddPl.mbZb ddQl.mcZc ddRl.mdZd ddSl?meZe ddTl?mfZf d6dUlgmhZh d6dVlimjZj d6dWlimkZk d6dXlimlZl d6dYlimmZm d6dZlimnZn d6d[limoZo d6d\limpZp d6d]limqZq d6d^limrZr ed_esf         Zth d`£Zu ejv        daejw        ¦  «        Zx ejv        dbejw        ¦  «        Zydc„  ezddd¦  «        D ¦   «          {                    deg¦  «        Z| ejv        dfejw        ¦  «        Z} ejv        dfejw        ¦  «        Z~ ejv        dgejw        ¦  «        Z ejv        dhej€        ¦  «        Z� ejv        diej€        ¦  «        Z‚djZƒeƒdkdldmdndodpœZ„i e+j…        dq“e+j†        dr“e+j‡        ds“e+jˆ        dt“e+j‰        du“e+jŠ        dv“e+j‹        dw“e+jŒ        dx“e+j�        dy“e+jŽ        dz“e+j�        d{“e+j�        d|“e+j‘        d}“e+j’        d~“e+j“        d“e+j”        d€“e+j•        d�“i e+j–        d‚“e+j—        dƒ“e+j˜        d„“e+j™        d…“e+jš        d†“e+j›        d‡“e+jœ        dˆ“e+j�        d‰“e+jž        dŠ“e+jŸ        d‹“e+j         dŒ“e+j¡        d�“e+j¢        dŽ“e+j£        d�“e+j¤        d�“e+j¥        d‘“e+j¦        d’“¥e+j§        d“e+j¨        d”e+j©        d•e+jª        d–e+j«        d—e+j¬        d˜e+j­        d™i¥Z®e*j¯        dše*j°        d›e*j±        dœe*j²        d�e*j³        dže*j´        dŸe*jµ        d e*j¶        d¡e*j·        d¢e*j¸        d£e*j¹        d¤e*jº        d¥e*j»        d¦e*j¼        d§iZ½d¨e¾d©<   dªd«d¬d­d®d¯d°d±d²d³d´dµd¶d·d¸d¹œZ¿e.jÀ        jÁ        dºe.jÀ        jÂ        d»e.jÀ        jÃ        d¼e.jÀ        jÄ        d½e.jÀ        jÅ        d¾e.jÀ        jÆ        d¿iZÇ G dÀ„ dÁe¦  «        ZÈ G dÂ„ dÃeH¦  «        ZÉdZÊdÄe¾dÅ<   dZËdÆe¾dÇ<   d6ZÌdÈe¾dÉ<   dÊZÍdËe¾dÌ<    G dÍ„ dÎeI¦  «        ZÎ G dÏ„ dÐeÎdÑ¬Ò¦  «        ZÏ G dÓ„ dÔe¦  «        ZÐ G dÕ„ dÖe¦  «        ZÑ G d×„ dØe¦  «        ZÒ G dÙ„ dÚeE¦  «        ZÓ G dÛ„ dÜe	¦  «        ZÔ G dÝ„ dÞe	¦  «        ZÕ eÖeÕ¦  «        \  Z×ZØZÙZÚ G dß„ dà ejÛ        dàdádâg¦  «        ¦  «        ZÜ G dã„ dä¦  «        ZÝ G då„ dæe0jÞ        ¦  «        Zß G dç„ dèe,jà        e         e)já        ¦  «        Zâ G dé„ dêe,jà        e         e)já        ¦  «        Zã G dë„ dìeÝ¦  «        Zä G dí„ dîeä¦  «        Zå G dï„ dðeÝ¦  «        Zæ G dñ„ dòeß¦  «        Zç G dó„ dôeç¦  «        Zè G dõ„ döeH¦  «        Zé G d÷„ døeH¦  «        Zê G dù„ dú¦  «        ZëdS )ûa]  Base SQL and DDL compiler implementations.

Classes provided include:

:class:`.compiler.SQLCompiler` - renders SQL
strings

:class:`.compiler.DDLCompiler` - renders DDL
(data definition language) strings

:class:`.compiler.GenericTypeCompiler` - renders
type specification strings.

To generate user-defined SQL strings, see
:doc:`/ext/compiler`.

é    )ÚannotationsN)ÚIntEnum)Úperf_counter)ÚAny)ÚCallable)Úcast)ÚClassVar)ÚDict)Ú	FrozenSet)ÚIterable)ÚIterator)ÚList)ÚMapping)ÚMutableMapping)Ú
NamedTuple)ÚNoReturn)ÚOptional)ÚPattern)ÚSequence)ÚSet)ÚTuple)ÚType)ÚTYPE_CHECKING)ÚUnioné   )Úbase)Ú	coercions)Úcrud)Úelements)Ú	functions)Ú	operators)Úroles)Úschema)Ú
selectable)Úsqltypes)Úutil©Úis_column_element)Úis_dml)Ú	_de_clone)Ú_from_objects)Ú
_NONE_NAME)Ú _SentinelDefaultCharacterization)Ú
Executable)ÚNO_ARG)ÚClauseElement)Úquoted_name)ÚColumn)Ú	TupleType)Ú
TypeEngine)Úprefix_anon_map)Ú	Visitableé   )Úexc)ÚFastIntFlag)ÚLiteral)ÚProtocol)Ú	TypedDict)Ú_AnnotationDict)Ú_AmbiguousTableNameMap)ÚCompileState)ÚCacheKey)ÚExecutableDDLElement)ÚInsert)Ú
UpdateBase)Ú
ValuesBase)Ú_truncated_label)ÚBindParameter)ÚColumnClause)ÚColumnElement)ÚLabel)ÚFunction)ÚTable)ÚAliasedReturnsRows)ÚCompoundSelectState)ÚCTE)Ú
FromClause)ÚNamedFromClause)ÚReturnsRows)ÚSelect)ÚSelectState)Ú_BindProcessorType)Ú_SentinelProcessorType)ÚCursorResultMetaData)Ú_CoreSingleExecuteParams)Ú_DBAPIAnyExecuteParams)Ú_DBAPIMultiExecuteParams)Ú_DBAPISingleExecuteParams)Ú_ExecuteOptions)Ú_GenericSetInputSizesType)Ú_MutableCoreSingleExecuteParams)ÚDialect)ÚSchemaTranslateMapTyperO   >^   ÚasÚdoÚinÚisÚonÚorÚtoÚallÚandÚanyÚascÚendÚforÚnewÚnotÚoffÚoldÚsetÚbothÚcaser   ÚdescÚelseÚfromÚfullÚintoÚjoinÚleftÚlikeÚnullÚonlyÚsomeÚthenÚtrueÚuserÚwhenÚarrayÚcheckÚcrossÚfalseÚgrantÚgroupÚilikeÚinnerÚlimitÚorderÚouterÚrightÚtableÚunionÚusingÚwhereÚbinaryÚcolumnÚcreateÚexceptÚfreezeÚhavingÚisnullÚoffsetÚselectÚuniqueÚanalyseÚanalyzeÚbetweenÚcollateÚdefaultÚforeignÚleadingÚnaturalÚnotnullÚplacingÚprimaryÚsimilarÚverboseÚdistinctÚoverlapsÚtrailingÚ	initiallyÚ	intersectÚ	localtimeÚ	symmetricÚ
asymmetricÚ
constraintÚ
deferrableÚ
referencesÚcurrent_dateÚcurrent_roleÚcurrent_timeÚcurrent_userÚsession_userÚauthorizationÚlocaltimestampÚcurrent_timestampz^[A-Z0-9_$]+$z^[A-Z0-9_ $]+$c                ó,   — h | ]}t          |¦  «        ’ŒS © )Ústr)Ú.0Úxs     úK/var/www/piapp/venv/lib/python3.11/site-packages/sqlalchemy/sql/compiler.pyú	<setcomp>rÃ   æ   s   € Ð;Ð;Ð;¨�c !™fœfÐ;Ð;Ð;ó    é
   ú$z5^(?:RESTRICT|CASCADE|SET NULL|NO ACTION|SET DEFAULT)$z^(?:DEFERRED|IMMEDIATE)$z%(?<![:\w\$\x5c]):([\w\$]+)(?![:\w\$])z\x5c(:[\w\$]*)(?![:\w\$])z%%(%(name)s)sú?z%%sz:[_POSITION]z$[_POSITION]z	:%(name)s)ÚpyformatÚqmarkÚformatÚnumericÚnumeric_dollarÚnamedú AND z OR z + z * z - ú % ú-z < z <= z != z > z >= z = z IS DISTINCT FROM z IS NOT DISTINCT FROM z || z MATCH z NOT MATCH z IN z NOT IN ú, ú FROM ú AS ú IS z IS NOT z	 COLLATE zEXISTS ú	DISTINCT zNOT zANY zALL z DESCz ASCz NULLS FIRSTz NULLS LASTz ^ z | z & ú~z << z >> ÚcoalesceÚCURRENT_DATEÚCURRENT_TIMEÚCURRENT_TIMESTAMPÚCURRENT_USERÚ	LOCALTIMEÚLOCALTIMESTAMPÚrandomÚsysdateÚSESSION_USERÚUSERÚCUBEÚROLLUPzGROUPING SETSzDict[Type[Function[Any]], str]Ú	FUNCTIONSÚmonthÚdayÚyearÚsecondÚhourÚdoyÚminuteÚquarterÚdowÚweekÚepochÚmillisecondsÚmicrosecondsÚtimezone_hourÚtimezone_minute)rå   ræ   rç   rè   ré   rê   rë   rì   rí   rî   rï   rð   rñ   rò   ró   ÚUNIONz	UNION ALLÚEXCEPTz
EXCEPT ALLÚ	INTERSECTzINTERSECT ALLc                  óB   — e Zd ZU dZded<   	 ded<   	 ded<   	 ded<   d	S )
ÚResultColumnsEntrya  Tracks a column expression that is expected to be represented
    in the result rows for this statement.

    This normally refers to the columns clause of a SELECT statement
    but may also refer to a RETURNING clause, as well as for dialect-specific
    emulations.

    r¿   ÚkeynameÚnameúTuple[Any, ...]ÚobjectsúTypeEngine[Any]ÚtypeN©Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r¾   rÄ   rÂ   rø   rø   [  sY   € € € € € € ðð ð €L€L�LØ;à€I€I�IØ%àÐÐÑðð ÐÐÑðð rÄ   rø   c                  ó   — e Zd Zdd
„ZdS )Ú_ResultMapAppenderrù   r¿   rú   rü   úSequence[Any]Útype_rý   ÚreturnÚNonec                ó   — d S ©Nr¾   ©Úselfrù   rú   rü   r  s        rÂ   Ú__call__z_ResultMapAppender.__call__{  s	   € ð 	ˆrÄ   N)
rù   r¿   rú   r¿   rü   r  r  rý   r	  r
  ©r   r  r  r  r¾   rÄ   rÂ   r  r  z  s(   € € € € € ðð ð ð ð ð rÄ   r  z
Literal[0]ÚRM_RENDERED_NAMEz
Literal[1]ÚRM_NAMEz
Literal[2]Ú
RM_OBJECTSé   z
Literal[3]ÚRM_TYPEc                  ó.   — e Zd ZU ded<   ded<   ded<   dS )Ú_BaseCompilerStackEntryzSet[FromClause]Úasfrom_fromsÚcorrelate_fromsrQ   r$   N©r   r  r  r  r¾   rÄ   rÂ   r  r  �  s6   € € € € € € Ø!Ð!Ð!Ñ!Ø$Ð$Ð$Ñ$ØÐÐÑÐÐrÄ   r  c                  óB   — e Zd ZU ded<   ded<   ded<   ded<   ded	<   d
S )Ú_CompilerStackEntryr?   Úcompile_stateÚboolÚneed_result_map_for_nestedÚneed_result_map_for_compoundrQ   Úselect_0úSelect[Any]Úinsert_from_selectNr  r¾   rÄ   rÂ   r  r  “  sN   € € € € € € ØÐÐÑØ$Ð$Ð$Ñ$Ø&Ð&Ð&Ñ&ØÐÐÑØ#Ð#Ð#Ñ#Ð#Ð#rÄ   r  F)Útotalc                  ó€   — e Zd ZU dZded<   	 ded<   	 ded<   	 ded	<   	 d
ed<   	 edd„¦   «         Zedd„¦   «         ZdS )ÚExpandedStatea¹  represents state to use when producing "expanded" and
    "post compile" bound parameters for a statement.

    "expanded" parameters are parameters that are generated at
    statement execution time to suit a number of parameters passed, the most
    prominent example being the individual elements inside of an IN expression.

    "post compile" parameters are parameters where the SQL literal value
    will be rendered into the SQL statement at execution time, rather than
    being passed as separate parameters to the driver.

    To create an :class:`.ExpandedState` instance, use the
    :meth:`.SQLCompiler.construct_expanded_state` method on any
    :class:`.SQLCompiler` instance.

    r¿   Ú	statementrW   Ú
parametersú%Mapping[str, _BindProcessorType[Any]]Ú
processorsúOptional[Sequence[str]]ÚpositiontupzMapping[str, List[str]]Úparameter_expansionr	  rû   c                óz   ‡ — ‰ j         €t          j        d¦  «        ‚t          ˆ fd„‰ j         D ¦   «         ¦  «        S )zrTuple of positional parameters, for statements that were compiled
        using a positional paramstyle.

        Nz.statement does not use a positional paramstylec              3  ó2   •K  — | ]}‰j         |         V — Œd S r  ©r(  )rÀ   Úkeyr  s     €rÂ   ú	<genexpr>z6ExpandedState.positional_parameters.<locals>.<genexpr>Ð  s*   øè è € ÐFÐF¨c�T”_ SÔ)ÐFÐFÐFÐFÐFÐFrÄ   )r,  r8   ÚInvalidRequestErrorÚtuple©r  s   `rÂ   Úpositional_parametersz#ExpandedState.positional_parametersÆ  sN   ø€ ð ÔÐ#ÝÔ)Ø@ñô ð õ ÐFÐFÐFÐF°TÔ5EÐFÑFÔFÑFÔFÐFrÄ   c                ó   — | j         S )z.synonym for :attr:`.ExpandedState.parameters`.r0  r5  s    rÂ   Úadditional_parametersz#ExpandedState.additional_parametersÒ  s   € ð ŒÐrÄ   N)r	  rû   )r	  rW   )r   r  r  r  r  Úpropertyr6  r8  r¾   rÄ   rÂ   r&  r&  ›  s¸   € € € € € € ðð ð" €N€N�NØ=à(Ð(Ð(Ñ(ðð 6Ð5Ð5Ñ5Ø+à(Ð(Ð(Ñ(ðð 1Ð0Ð0Ñ0ðð ð	Gð 	Gð 	Gñ „Xð	Gð ðð ð ñ „Xðð ð rÄ   r&  c                  ó²   — e Zd ZU dZded<   	 ded<   	 ded<   	 ded	<   	 d
Zded<   	 d
Zded<   	 dZded<   	 dZded<   	 dZ	ded<   	 d
Z
ded<   	 d
Zded<   dS )Ú_InsertManyValuesa  represents state to use for executing an "insertmanyvalues" statement.

    The primary consumers of this object are the
    :meth:`.SQLCompiler._deliver_insertmanyvalues_batches` and
    :meth:`.DefaultDialect._deliver_insertmanyvalues_batches` methods.

    .. versionadded:: 2.0

    r  Úis_default_exprr¿   Úsingle_values_exprúList[crud._CrudParamElementStr]Úinsert_crud_paramsÚintÚnum_positional_params_countedFÚsort_by_parameter_orderÚincludes_upsert_behaviorsNúOptional[Sequence[Column[Any]]]Úsentinel_columnsr   Únum_sentinel_columnsz#Optional[Sequence[Union[str, int]]]Úsentinel_param_keysÚimplicit_sentinelÚembed_values_counter)r   r  r  r  r  rB  rC  rE  rF  rG  rH  rI  r¾   rÄ   rÂ   r;  r;  Ø  s  € € € € € € ðð ð ÐÐÑðð
 ÐÐÑðð 8Ð7Ð7Ñ7ØMà&Ð&Ð&Ñ&ð
ð %*ÐÐ)Ð)Ð)Ñ)ðð ',ÐÐ+Ð+Ð+Ñ+ðð 9=ÐÐ<Ð<Ð<Ñ<ðð !"ÐÐ!Ð!Ð!Ñ!ðð @DÐÐCÐCÐCÑCð
ð $ÐÐ#Ð#Ð#Ñ#ð	ð "'ÐÐ&Ð&Ð&Ñ&ð	ð 	rÄ   r;  c                  ón   — e Zd ZU dZded<   ded<   ded<   ded	<   d
ed<   d
ed<   d
ed<   ded<   ded<   dS )Ú_InsertManyValuesBatchas  represents an individual batch SQL statement for insertmanyvalues.

    This is passed through the
    :meth:`.SQLCompiler._deliver_insertmanyvalues_batches` and
    :meth:`.DefaultDialect._deliver_insertmanyvalues_batches` methods out
    to the :class:`.Connection` within the
    :meth:`.Connection._exec_insertmany_context` method.

    .. versionadded:: 2.0.10

    r¿   Úreplaced_statementrX   Úreplaced_parametersú#Optional[_GenericSetInputSizesType]Úprocessed_setinputsizesú#Sequence[_DBAPISingleExecuteParams]Úbatchr@  Ú
batch_sizeÚbatchnumÚtotal_batchesr  Úrows_sortedÚis_downgradedNrÿ   r¾   rÄ   rÂ   rK  rK  K  s„   € € € € € € ð
ð 
ð ÐÐÑØ/Ð/Ð/Ñ/Ø@Ð@Ð@Ñ@Ø.Ð.Ð.Ñ.Ø€O€O�OØ€M€M�MØÐÐÑØÐÐÑØÐÐÑÐÐrÄ   rK  c                  óD   — e Zd ZdZdZdZdZdZeez  ez  Zeez  Z	dZ
dZdS )	ÚInsertmanyvaluesSentinelOptszcbitflag enum indicating styles of PK defaults
    which can work as implicit sentinel columns

    r   r7   é   é   é   é@   N)r   r  r  r  ÚNOT_SUPPORTEDÚAUTOINCREMENTÚIDENTITYÚSEQUENCEÚANY_AUTOINCREMENTÚ_SUPPORTED_OR_NOTÚUSE_INSERT_FROM_SELECTÚRENDER_SELECT_COL_CASTSr¾   rÄ   rÂ   rX  rX  c  sX   € € € € € ðð ð
 €MØ€MØ€HØ€Hà%¨Ñ0°8Ñ;ÐØ%Ð(9Ñ9ÐàÐØ ÐÐÐrÄ   rX  c                  ó   — e Zd ZdZ	 dZ	 dZdS )ÚCompilerStater   r   r7   N)r   r  r  Ú	COMPILINGÚSTRING_APPLIEDÚNO_STATEMENTr¾   rÄ   rÂ   rf  rf  u  s-   € € € € € Ø€IØ=à€Nðð €Lðð rÄ   rf  c                  ó.   — e Zd ZdZdZ	 dZ	 dZ	 eez  ZdS )ÚLintingzžrepresent preferences for the 'SQL linting' feature.

    this feature currently includes support for flagging cartesian products
    in SQL statements.

    r   r   r7   N)r   r  r  r  Ú
NO_LINTINGÚCOLLECT_CARTESIAN_PRODUCTSÚWARN_LINTINGÚFROM_LINTINGr¾   rÄ   rÂ   rk  rk  …  sG   € € € € € ðð ð €JØà!"Ððð €LØ2à-°Ñ<€Lðð rÄ   rk  c                  ó"   — e Zd ZdZdd„Zdd„ZdS )Ú
FromLinterzKrepresents current state for the "cartesian product" detection
    feature.Nc                óà  ‡— | j         }|sdS t          | j        ¦  «        }t          |¦  «        }|�|}|                     |¦  «         n|                     ¦   «         }t          j        |g¦  «        }|rs|rq|                     ¦   «         Š|                     ‰¦  «         ˆfd„|D ¦   «         }| 	                    ˆfd„|D ¦   «         ¦  «         | 
                    |¦  «         |r|°q|r||fS dS )N)NNc                ó   •— h | ]}‰|v ¯|’Œ	S r¾   r¾   ©rÀ   ÚedgeÚnodes     €rÂ   rÃ   z"FromLinter.lint.<locals>.<setcomp>½  s   ø€ Ð@Ð@Ð@ $°4¸4°<°<˜°<°<°<rÄ   c              3  óP   •K  — | ] }||                      ‰¦  «                  V — Œ!d S r  )Úindexrt  s     €rÂ   r2  z"FromLinter.lint.<locals>.<genexpr>Á  s7   øè è € ÐNÐN¸D˜T d§j¢j°Ñ&6Ô&6Ð"6Ô7ÐNÐNÐNÐNÐNÐNrÄ   )Úfromsrq   ÚedgesÚremoveÚpopÚcollectionsÚdequeÚpopleftÚdiscardÚ
extendleftÚdifference_update)	r  Ústartry  rz  Úthe_restÚ
start_withÚstackÚ	to_removerv  s	           @rÂ   ÚlintzFromLinter.lint¥  s$  ø€ Ø”
ˆØð 	Ø�:å�D”J‘”ˆÝ�u‘:”:ˆàÐØˆJØ�OŠO˜JÑ'Ô'Ð'Ð'à!Ÿš™œˆJåÔ! : ,Ñ/Ô/ˆàð 	/˜ð 	/Ø—=’=‘?”?ˆDØ×Ò˜TÑ"Ô"Ð"ð AÐ@Ð@Ð@¨%Ð@Ñ@Ô@ˆIð ×ÒÐNÐNÐNÐNÀIÐNÑNÔNÑNÔNÐNØ×#Ò# IÑ.Ô.Ð.ð ð 	/˜ð 	/ð  ð 	Ø˜ZÐ'Ð'à�:rÄ   ÚSELECTc                óþ   ‡ — ‰                       ¦   «         \  }}|r`|}|r^d}d                     ˆ fd„|D ¦   «         ¦  «        }|                     ||‰ j        |         ¬¦  «        }t	          j        |¦  «         d S d S d S )Nz£{stmt_type} statement has a cartesian product between FROM element(s) {froms} and FROM element "{start}".  Apply join condition(s) between each element to resolve.rÑ   c              3  ó:   •K  — | ]}d ‰j         |         › d �V — ŒdS )ú"N)ry  )rÀ   Úfrom_r  s     €rÂ   r2  z"FromLinter.warn.<locals>.<genexpr>×  sG   øè è € ð &ð &Ø16Ð,˜œ
 5Ô)Ð,Ð,Ð,ð&ð &ð &ð &ð &ð &rÄ   )Ú	stmt_typery  rƒ  )rˆ  ry   rÊ   ry  r&   Úwarn)r  rŽ  r„  r…  ry  ÚtemplateÚ	froms_strÚmessages   `       rÂ   r�  zFromLinter.warnÊ  sÇ   ø€ Ø#Ÿyšy™{œ{Ñˆ�*ð ð 	#ØˆEØð #ð7ð ð !ŸIšIð &ð &ð &ð &Ø:?ð&ñ &ô &ñ ô �	ð #Ÿ/š/Ø'Ø#Øœ* ZÔ0ð *ñ ô �õ ”	˜'Ñ"Ô"Ð"Ð"Ð"ð%	#ð 	#ð#ð #rÄ   r  )r‰  )r   r  r  r  rˆ  r�  r¾   rÄ   rÂ   rq  rq  ¡  sG   € € € € € ðð ð#ð #ð #ð #ðJ#ð #ð #ð #ð #ð #rÄ   rq  ry  rz  c                  ó”  ‡ — e Zd ZU dZdZded<   	 dZded<   	 ded	<   	 d
Zd
ZdZ	ded<   dZ
ded<   dZded<   ej        Zded<   	 ded<   ej        Zded<   dZded<   	 dZded<   	 dZded<   	 ded<   	 dd
 ej        ¦   «         fd;d$„Zd<ˆ fd'„Zed(„ ¦   «         Zd)„ Zd*„ Zed+„ ¦   «         Zd=d0„Zd>d1„Z	 	 	 d?d@d9„Zed:„ ¦   «         Zˆ xZ S )AÚCompileda  Represent a compiled SQL or DDL expression.

    The ``__str__`` method of the ``Compiled`` object should produce
    the actual text of the statement.  ``Compiled`` objects are
    specific to their underlying database dialect, and also may
    or may not be specific to the columns referenced within a
    particular set of bind parameters.  In no case should the
    ``Compiled`` object be dependent on the actual values of those
    bind parameters, even though it may reference those values as
    defaults.
    NúOptional[ClauseElement]r'  Ú r¿   Ústringrf  ÚstateFzOptional[CursorResultMetaData]Ú_cached_metadataz"Optional[List[ResultColumnsEntry]]Ú_result_columnsú Optional[SchemaTranslateMapType]Úschema_translate_mapr[   Úexecution_optionsÚIdentifierPreparerÚpreparerr=   Ú_annotationszOptional[CompileState]r  Údml_compile_stateúOptional[CacheKey]Ú	cache_keyÚfloatÚ	_gen_timeÚdialectr^   Úrender_schema_translater  Úcompile_kwargsúMapping[str, Any]c                ó6  — || _         | j         j        | _        |r&|| _        | j                             |¦  «        | _        |�²t
          j        | _        || _        |j	        | _
        |j        | _        | j
        r*t          rt          |t          ¦  «        sJ ‚|j        | _         | j        | j        fi |¤Ž| _        |r%| j                             | j        |¦  «        | _        t
          j        | _        nt
          j        | _        t-          ¦   «         | _        dS )aû  Construct a new :class:`.Compiled` object.

        :param dialect: :class:`.Dialect` to compile against.

        :param statement: :class:`_expression.ClauseElement` to be compiled.

        :param schema_translate_map: dictionary of schema names to be
         translated when forming the resultant SQL

         .. seealso::

            :ref:`schema_translating`

        :param compile_kwargs: additional kwargs that will be
         passed to the initial call to :meth:`.Compiled.process`.


        N)r¦  Úidentifier_preparerrŸ  rœ  Ú_with_schema_translaterf  rg  r˜  r'  Úsupports_executionÚcan_executer   r   Ú
isinstancer.   Ú_execution_optionsr�  Úprocessr—  Ú_render_schema_translatesrh  ri  r   r¥  ©r  r¦  r'  rœ  r§  r¨  s         rÂ   Ú__init__zCompiled.__init__8  s  € ð4 ˆŒØœÔ8ˆŒØð 	Ø(<ˆDÔ%Ø œM×@Ò@Ø$ñô ˆDŒMð Ð Ý&Ô0ˆDŒJØ&ˆDŒNØ(Ô;ˆDÔØ )Ô 6ˆDÔØÔð FÝ ð =Ý% iµÑ<Ô<Ð<Ð<Ð<Ø)2Ô)E�Ô&Ø&˜$œ, t¤~ÐHÐH¸ÐHÐHˆDŒKà&ð Ø"œm×EÒEØ”KÐ!5ñô �”õ 'Ô5ˆDŒJˆJå&Ô3ˆDŒJå%™œˆŒˆˆrÄ   r	  r
  c                ól   •— |                       ¦   «          t          ¦   «                              ¦   «         S r  )Ú_init_compiler_clsÚsuperÚ__init_subclass__)ÚclsÚ	__class__s    €rÂ   r¸  zCompiled.__init_subclass__p  s+   ø€ Ø×ÒÑ Ô Ð Ý‰wŒw×(Ò(Ñ*Ô*Ð*rÄ   c                ó   — d S r  r¾   ©r¹  s    rÂ   r¶  zCompiled._init_compiler_clst  s   € àˆrÄ   c                óp   — | j         r|                     | ||¦  «        S t          j        | j        ¦  «        ‚r  )r®  Ú_execute_compiledr8   ÚObjectNotExecutableErrorr'  )r  Ú
connectionÚdistilled_paramsr�  s       rÂ   Ú_execute_on_connectionzCompiled._execute_on_connectionx  sE   € ð Ôð 	?Ø×/Ò/ØÐ&Ð(9ñô ð õ Ô.¨t¬~Ñ>Ô>Ð>rÄ   c                óH   — t          j        | t          |¦  «        ¦  «        |‚r  ©r8   ÚUnsupportedCompilationErrorrþ   ©r  ÚelementÚerrÚkws       rÂ   Úvisit_unsupported_compilationz&Compiled.visit_unsupported_compilation‚  s   € ÝÔ-¨dµD¸±M´MÑBÔBÈÐKrÄ   c                ó   — t          ¦   «         ‚)z�Return a Compiled that is capable of processing SQL expressions.

        If this compiler is one, it would likely just return 'self'.

        ©ÚNotImplementedErrorr5  s    rÂ   Úsql_compilerzCompiled.sql_compiler…  s   € õ "Ñ#Ô#Ð#rÄ   Úobjr6   Úkwargsr   c                ó   —  |j         | fi |¤ŽS r  ©Ú_compiler_dispatch)r  rÏ  rÐ  s      rÂ   r±  zCompiled.process�  s   € Ø%ˆsÔ% dÐ5Ð5¨fÐ5Ð5Ð5rÄ   c                ó:   — | j         t          j        u r| j        S dS )z3Return the string text of the generated SQL or DDL.r–  )r˜  rf  rh  r—  r5  s    rÂ   Ú__str__zCompiled.__str__’  s!   € ð Œ:�Ô5Ð5Ð5Ø”;Ðà�2rÄ   TÚparamsú"Optional[_CoreSingleExecuteParams]Úextracted_parametersú&Optional[Sequence[BindParameter[Any]]]Úescape_namesú)Optional[_MutableCoreSingleExecuteParams]c                ó   — t          ¦   «         ‚)zâReturn the bind params for this compiled object.

        :param params: a dict of string/object pairs whose values will
                       override bind values compiled in to the
                       statement.
        rÌ  ©r  rÖ  rØ  rÚ  s       rÂ   Úconstruct_paramszCompiled.construct_paramsš  s   € õ "Ñ#Ô#Ð#rÄ   c                ó*   — |                       ¦   «         S )z0Return the bind params for this compiled object.©rÞ  r5  s    rÂ   rÖ  zCompiled.params©  s   € ð ×$Ò$Ñ&Ô&Ð&rÄ   )
r¦  r^   r'  r•  rœ  r›  r§  r  r¨  r©  )r	  r
  )rÏ  r6   rÐ  r   r	  r¿   )r	  r¿   ©NNT©rÖ  r×  rØ  rÙ  rÚ  r  r	  rÛ  )!r   r  r  r  r'  r  r—  Úis_sqlÚis_ddlr™  rš  rœ  r&   Ú
EMPTY_DICTr�  r   r  r¡  r£  Úimmutabledictr´  r¸  Úclassmethodr¶  rÂ  rÊ  r9  rÎ  r±  rÕ  rÞ  rÖ  Ú__classcell__©rº  s   @rÂ   r”  r”  ã  sE  ø€ € € € € € ð
ð 
ð *.€IÐ-Ð-Ð-Ñ-ØØ€FÐÐÐÑØ4àÐÐÑØ-à€FØ€Fà7;ÐÐ;Ð;Ð;Ñ;à:>€OÐ>Ð>Ð>Ñ>à=AÐÐAÐAÐAÑAà)-¬ÐÐ8Ð8Ð8Ñ8ðð
 !Ð Ð Ñ à$(¤O€LÐ3Ð3Ð3Ñ3à,0€MÐ0Ð0Ð0Ñ0ðð 15ÐÐ4Ð4Ð4Ñ4ð	ð %)€IÐ(Ð(Ð(Ñ(ð	ð ÐÐÑðð BFØ(-Ø,>¨DÔ,>Ñ,@Ô,@ð6(ð 6(ð 6(ð 6(ð 6(ðp+ð +ð +ð +ð +ð +ð ðð ñ „[ðð?ð ?ð ?ðLð Lð Lð ð$ð $ñ „Xð$ð6ð 6ð 6ð 6ðð ð ð ð 6:ØGKØ!ð	$ð $ð $ð $ð $ð ð'ð 'ñ „Xð'ð 'ð 'ð 'ð 'rÄ   r”  c                  ó.   — e Zd ZdZdZdd„Zdd„Zdd„ZdS )ÚTypeCompilerz2Produces DDL specification for TypeEngine objects.z	visit_\w+r¦  r^   c                ó   — || _         d S r  )r¦  )r  r¦  s     rÂ   r´  zTypeCompiler.__init__´  s   € ØˆŒˆˆrÄ   r  rý   rÉ  r   r	  r¿   c                ó€   — |j         r*| j        j        |j         v r|j         | j        j                 } |j        | fi |¤ŽS r  )Ú_variant_mappingr¦  rú   rÓ  ©r  r  rÉ  s      rÂ   r±  zTypeCompiler.process·  sM   € àÔ"ð	>à”Ô! UÔ%;Ð;Ð;àÔ*¨4¬<Ô+<Ô=ˆEØ'ˆuÔ'¨Ð3Ð3°Ð3Ð3Ð3rÄ   rÇ  rÈ  Ú	Exceptionr   c                ó.   — t          j        | |¦  «        |‚r  )r8   rÅ  rÆ  s       rÂ   rÊ  z*TypeCompiler.visit_unsupported_compilation¿  s   € õ Ô-¨d°GÑ<Ô<À#ÐErÄ   N)r¦  r^   )r  rý   rÉ  r   r	  r¿   )rÇ  r   rÈ  rð  rÉ  r   r	  r   )r   r  r  r  Úensure_kwargr´  r±  rÊ  r¾   rÄ   rÂ   rë  rë  ¯  sa   € € € € € Ø<Ð<à€Lðð ð ð ð4ð 4ð 4ð 4ðFð Fð Fð Fð Fð FrÄ   rë  c                  óT   — e Zd ZdZdZdZd
d„Zed„ ¦   «         Zed„ ¦   «         Z	d„ Z
d	S )Ú_CompileLabelz;lightweight label object which acts as an expression.Label.Úlabel©rÇ  rú   Ú
_alt_namesr¾   c                ó8   — || _         || _        |f|z   | _        d S r  rö  )r  Úcolrú   Ú	alt_namess       rÂ   r´  z_CompileLabel.__init__Ð  s"   € ØˆŒØˆŒ	Ø˜& 9Ñ,ˆŒˆˆrÄ   c                ó   — | j         j        S r  ©rÇ  Ú	proxy_setr5  s    rÂ   rý  z_CompileLabel.proxy_setÕ  ó   € àŒ|Ô%Ð%rÄ   c                ó   — | j         j        S r  ©rÇ  rþ   r5  s    rÂ   rþ   z_CompileLabel.typeÙ  ó   € àŒ|Ô Ð rÄ   c                ó   — | S r  r¾   ©r  rÉ  s     rÂ   Ú
self_groupz_CompileLabel.self_groupÝ  ó   € ØˆrÄ   N)r¾   )r   r  r  r  Ú__visit_name__Ú	__slots__r´  r9  rý  rþ   r  r¾   rÄ   rÂ   rô  rô  Ç  s€   € € € € € ð FÐEà€NØ/€Ið-ð -ð -ð -ð
 ð&ð &ñ „Xð&ð ð!ð !ñ „Xð!ðð ð ð ð rÄ   rô  c                  óX   — e Zd ZdZdZdZd„ Zed„ ¦   «         Zed„ ¦   «         Z	d„ Z
d„ Zd	S )
Úilike_case_insensitivea  produce a wrapping element for a case-insensitive portion of
    an ILIKE construct.

    The construct usually renders the ``lower()`` function, but on
    PostgreSQL will pass silently with the assumption that "ILIKE"
    is being used.

    .. versionadded:: 2.0

    Úilike_case_insensitive_operand©rÇ  Ú
comparatorc                ó,   — || _         |j        | _        d S r  r  )r  rÇ  s     rÂ   r´  zilike_case_insensitive.__init__ò  s   € ØˆŒØ!Ô,ˆŒˆˆrÄ   c                ó   — | j         j        S r  rü  r5  s    rÂ   rý  z ilike_case_insensitive.proxy_setö  rþ  rÄ   c                ó   — | j         j        S r  r   r5  s    rÂ   rþ   zilike_case_insensitive.typeú  r  rÄ   c                ó   — | S r  r¾   r  s     rÂ   r  z!ilike_case_insensitive.self_groupþ  r  rÄ   c                óP   — t          | j                             |¦  «        ¦  «        S r  )r	  rÇ  Ú_with_binary_element_type)r  r  s     rÂ   r  z0ilike_case_insensitive._with_binary_element_type  s'   € Ý%ØŒL×2Ò2°5Ñ9Ô9ñ
ô 
ð 	
rÄ   N)r   r  r  r  r  r  r´  r9  rý  rþ   r  r  r¾   rÄ   rÂ   r	  r	  á  s�   € € € € € ð	ð 	ð 6€NØ'€Ið-ð -ð -ð ð&ð &ñ „Xð&ð ð!ð !ñ „Xð!ðð ð ð
ð 
ð 
ð 
ð 
rÄ   r	  c                  óò  — e Zd ZU dZeZ ej        dddddddddœ¦  «        Zde	d	<   	 d
e	d<   de	d<   dZ
eZdZde	d<   dZde	d<   dZde	d<   	 de	d<   	 dZde	d<   	 dZde	d<   	 dZde	d<   	 dZde	d<   de	d<   	 de	d <   	 d!e	d"<   	 dZde	d#<   	 dZde	d$<   	 dZde	d%<   	 d&e	d'<   	 d&e	d(<   	 d&e	d)<   	 d*e	d+<   	 dZde	d,<   	 dZde	d-<   	 dZde	d.<   	 dZde	d/<   	 dZde	d0<   	 dZde	d1<   	 dZd2e	d3<   	 dZd4e	d5<   	 dZd6e	d7<   dZ d8e	d9<   dZ!d:e	d;<    e"¦   «         Z#d<e	d=<   	  e"¦   «         Z$d<e	d><   	 ej%        Z&d?e	d@<   	 dZ'	 dZ(	 dZ)dAe	dB<   	 dZ*d6e	dC<   	 dZ+d6e	dD<   dZ,d6e	dE<   dZ-de	dF<   dGe	dH<   dIe	dJ<   dKe	dL<   de	dM<    e.j/        dN¦  «        Z0 e.j/        dO¦  «        Z1 e.j/        e1j2        › dPe0j2        › �¦  «        Z3e4dQ„ ¦   «         Z5e4dR„ ¦   «         Z6ddde7f�d]d`„Z8e9�d^db„¦   «         Z:ej;        �d_dc„¦   «         Z<e9dd„ ¦   «         Z=e9de„ ¦   «         Z>e9df„ ¦   «         Z?ej@        �d`dh„¦   «         ZAejB        �dadj„¦   «         ZCeDjE        dk„ ¦   «         ZFdl„ ZGdm„ ZHej@        �dbdo„¦   «         ZIej@        �dcdq„¦   «         ZJdr„ ZKe9ds„ ¦   «         ZL	 	 �dd�dedx„ZM	 	 	 	 	 	 �df�dgd€„ZNejB        d�„ ¦   «         ZOe9d‚„ ¦   «         ZP	 �dh�did…„ZQ ejR        d†¦  «        d‡„ ¦   «         ZSdˆe	d‰<   ej@        �djd‹„¦   «         ZTej@         ejR        dŒ¦  «        d�„ ¦   «         ¦   «         ZUej@         ejR        dŒ¦  «        dŽ„ ¦   «         ¦   «         ZVd�„ ZW�dhd�„ZXd‘„ ZY	 �dhd’„ZZ	 �dhd“„Z[	 	 	 	 	 �dkd”„Z\d•„ Z]d–„ Z^	 	 	 	 �dl�dmd „Z_d¡„ Z`d¢„ Zad£„ Zbd¤„ Zcd¥„ Zdd¦„ Ze�dnd§„Zf	 �dod¨„Zgd©„ Zhdª„ Zid«„ Zjd¬„ Zkd­„ Zld®„ Zmd¯„ Znd°„ Zod±„ Zpd²„ Zqd³„ Zrd´„ Zsdµ„ Ztd¶„ Zud·„ Zvd¸„ Zwd¹„ Zx	 �dn�dpd¼„Zyd½„ Zzd¾„ Z{d¿„ Z|	 �dqdÀ„Z}dÁ„ Z~dÂ„ Z	 �drdÃ„Z€dÄ„ Z�dÅ„ Z‚dÆ„ ZƒdÇ„ Z„dÈ„ Z…dÉ„ Z†dÊ„ Z‡dË„ Zˆ	 �dndÌ„Z‰dÍ„ ZŠ	 	 	 	 �dsdÎ„Z‹dÏ„ ZŒdÐ„ Z�dÑ„ ZŽdÒ„ Z�dÓ„ Z�	 �dhdÔ„Z‘dÕ„ Z’dÖ„ Z“ej@        d×„ ¦   «         Z”dØ„ Z•dÙ„ Z–dÚ„ Z—dÛ„ Z˜dÜ„ Z™dÝ„ ZšdÞ„ Z›dß„ Zœdà„ Z�dá„ Zždâ„ ZŸdã„ Z dä„ Z¡då„ Z¢dæ„ Z£dç„ Z¤dè„ Z¥dé„ Z¦dê„ Z§dë„ Z¨dì„ Z©dí„ Zª	 	 	 	 	 �dtdî„Z«dï„ Z¬e­dfdð„Z®dñ„ Z¯dò„ Z°�dudö„Z±�dvd÷„Z²	 	 	 	 	 	 �dw�dx�d„Z³�d„ Z´ddddd eµj¶        d¦  «        f�dy�d„Z·�d„ Z¸�d„ Z¹	 	 	 	 	 	 	 	 �dz�d„Zº�d„ Z»�d„ Z¼�dh�d„Z½�d„ Z¾�dq�d„Z¿�d„ ZÀ�d„ ZÁ�d{�d„ZÂ	 �dn�d „ZÃ	 	 	 	 	 	 	 �d|�d!„ZÄ�d"„ ZÅ�d#„ ZÆ�d$„ ZÇ�d%„ ZÈ�d&„ ZÉ�d'e	�d(<   eÊjË        s( ej        �d) e"¦   «         f�d* e"¦   «         fg¦  «        ZÌ	 �dh�d+„ZÍdZÎd_e	�d,<   	 	 	 	 	 	 	 	 �d}�d-„ZÏ�d~�d1„ZÐ�d2„ ZÑ�d3„ ZÒ�d4„ ZÓ	 	 �do�d5„ZÔ�d6„ ZÕ�d7„ ZÖ�d8„ Z×�d9„ ZØ�d:„ ZÙ�d�d@„ZÚ�dA„ ZÛ	 	 	 �d€�dB„ZÜ	 	 	 	 	 	 	 �d��dC„ZÝ�dq�dD„ZÞ�dE„ Zß ej        eàjá        eâjã        eàjä        eâjã        eàjå        eâjã        eàjæ        eâjæ        eàjç        eâjç        i¦  «        Zèeè é                    eàjå        eâjê        i¦  «        Zë�d‚�dI„Zì�dƒ�dQ„Zí�dn�dR„Zî�dS„ Zï�dT„ Zð�dU„ Zñ�dV„ Zò�dW„ Zó�dX„ Zô�dY„ Zõ�dZ„ Zö�d[„ Z÷�d\„ ZødS („  ÚSQLCompilerz~Default implementation of :class:`.Compiled`.

    Compiles :class:`_expression.ClauseElement` objects into SQL strings.

    ÚPÚAÚZÚCÚ_)ú%ú(ú)ú:ú.ú[ú]ú zClassVar[Mapping[str, str]]Úbindname_escape_characterszClassVar[Pattern[str]]Ú_bind_translate_reÚ_bind_translate_charsTFr  ÚisdeleteÚisinsertÚisupdatezOptional[List[Column[Any]]]Ú	postfetchr¾   zSequence[Column[Any]]Úinsert_prefetchÚupdate_prefetchNú&Optional[Sequence[ColumnElement[Any]]]Úimplicit_returningÚisplaintextzDict[str, BindParameter[Any]]ÚbindszDict[BindParameter[Any], str]Ú
bind_nameszList[_CompilerStackEntry]r†  Úreturning_precedes_valuesÚ'render_table_with_column_in_update_fromÚansi_bind_rulesr¿   ÚbindtemplateÚcompilation_bindtemplateÚ_numeric_binds_identifier_charzList[ResultColumnsEntry]rš  Ú_textual_ordered_columnsÚ_ad_hoc_textualÚ_ordered_columnsÚ_loose_column_name_matchingÚ_numeric_bindsÚ_render_postcompilezOptional[ExpandedState]Ú_post_compile_expanded_stateúOptional[str]Ú_pre_expanded_stringúOptional[List[str]]Ú_pre_expanded_positiontupzOptional[_InsertManyValues]Ú_insertmanyvaluesz!Optional[crud._CrudParamSequence]Ú_insert_crud_paramszFrozenSet[BindParameter[Any]]Úliteral_execute_paramsÚpost_compile_paramszutil.immutabledict[str, str]Úescaped_bind_nameszbOptional[Tuple[Dict[BindParameter[Any], List[BindParameter[Any]]], Dict[str, BindParameter[Any]]]]Ú_cache_key_bind_matchr,  Ú_values_bindparamÚ_visited_bindparamÚinlinez"Optional[MutableMapping[CTE, str]]ÚcteszDict[Tuple[int, str], CTE]Úctes_by_level_namez/Dict[CTE, Tuple[int, str, selectable._CTEOpts]]Úlevel_name_by_cteÚctes_recursivez"__\[POSTCOMPILE_(\S+?)(~~.+?~~)?\]z%\(([^)]+?)\)sú|c                ó.   — |                       ¦   «          d S r  )Ú_init_bind_translater¼  s    rÂ   r¶  zSQLCompiler._init_compiler_cls0  s   € à× Ò Ñ"Ô"Ð"Ð"Ð"rÄ   c                ó°   — t          j        d                     | j        ¦  «        ¦  «        }t          j        d|› d�¦  «        | _        | j        | _        d S )Nr–  r  r   )ÚreÚescapery   r"  Úcompiler#  r$  )r¹  Úregs     rÂ   rP  z SQLCompiler._init_bind_translate4  sK   € åŒi˜Ÿš Ô >Ñ?Ô?Ñ@Ô@ˆÝ!#¤¨J°¨J¨J¨JÑ!7Ô!7ˆÔØ$'Ô$BˆÔ!Ð!Ð!rÄ   r¦  r^   r'  r•  r£  r¢  Úcolumn_keysr+  Úfor_executemanyÚlintingrk  rÐ  r   c                óÐ  — || _         || _        |r-d„ |d         D ¦   «         }d„ |d         D ¦   «         }	|	|f| _        || _        || _        i | _        t          j        ¦   «         | _        g | _	        g | _
        |j        | _        | j        rD|j                             d¦  «        x| _        }
|
r|j        dk    rdnd| _        t           | _        nt$          |j                 | _        d| _        |j        p|j        | _        t-          ¦   «         | _        i | _        i | _        t5          j        | ||fi |¤Ž | j        s| j        s| j        r�t>          rtA          |tB          ¦  «        sJ ‚| j        s| j        rUt>          rtA          |tD          ¦  «        sJ ‚|j#        rd	| _$        n(| j        r!| j        r| j%        j&        r|j'        rd	| _$        t$          |j                 | _(        | j)        tT          j+        u rn| j        r0| j        r|  ,                    ¦   «          n|  -                    ¦   «          | j.        r2|  /                    d
d	¬¦  «        }|  0                    |d	¬¦  «         dS dS dS )a‚  Construct a new :class:`.SQLCompiler` object.

        :param dialect: :class:`.Dialect` to be used

        :param statement: :class:`_expression.ClauseElement` to be compiled

        :param column_keys:  a list of column names to be compiled into an
         INSERT or UPDATE statement.

        :param for_executemany: whether INSERT / UPDATE statements should
         expect that they are to be invoked in an "executemany" style,
         which may impact how the statement will be expected to return the
         values of defaults and autoincrement / sequences and similar.
         Depending on the backend and driver in use, support for retrieving
         these values may be disabled which means SQL expressions may
         be rendered inline, RETURNING may not be rendered, etc.

        :param kwargs: additional keyword arguments to be consumed by the
         superclass.

        c                ó   — i | ]
}|j         |“ŒS r¾   ©r1  ©rÀ   Úbs     rÂ   ú
<dictcomp>z(SQLCompiler.__init__.<locals>.<dictcomp>^  s   € Ð3Ð3Ð3 �A”E˜1Ð3Ð3Ð3rÄ   r   c                ó   — i | ]}||g“ŒS r¾   r¾   r\  s     rÂ   r^  z(SQLCompiler.__init__.<locals>.<dictcomp>_  s   € Ð1Ð1Ð1˜q�A˜�sÐ1Ð1Ð1rÄ   rË   rÌ   rÆ   r  NTF©rÚ  Ú_no_postcompile)Ú_populate_self)1rV  r£  rF  rW  rX  r.  r&   Úcolumn_dictr/  r†  rš  Ú
positionalÚ
paramstyleÚ
startswithr:  r5  Ú_pyformat_templater4  ÚBIND_TEMPLATESrJ  Úlabel_lengthÚmax_identifier_lengthr5   Úanon_mapÚtruncated_namesÚ_truncated_countersr”  r´  r&  r'  r%  r   r¯  rC   rD   Ú_inlinerI  r¦  Úinsert_executemany_returningÚ_return_defaultsr3  r˜  rf  rh  Ú_process_numericÚ_process_positionalr;  rÞ  Ú#_process_parameters_for_postcompile)r  r¦  r'  r£  rV  rW  rX  rÐ  ÚcksmÚckbmÚnbr(  s               rÂ   r´  zSQLCompiler.__init__:  sæ  € ð> 'ˆÔà"ˆŒàð 	6Ø3Ð3 i°¤lÐ3Ñ3Ô3ˆDØ1Ð1 I¨a¤LÐ1Ñ1Ô1ˆDØ*.°¨ˆDÔ&ð
  /ˆÔàˆŒð ˆŒ
õ Ô*Ñ,Ô,ˆŒð ˆŒ
à!ˆÔð "Ô,ˆŒØŒ?ð 		OØ'.Ô'9×'DÒ'DÀYÑ'OÔ'OÐOˆDÔ "Øð à"Ô-Ð1AÒAÐA�C�CÀsð Ô3õ -?ˆDÔ)Ð)å,:¸7Ô;MÔ,NˆDÔ)àˆŒ	ð Ô ÐA GÔ$Að 	Ôõ (Ñ)Ô)ˆŒð <>ˆÔØ35ˆÔ åÔ˜$ ¨Ð=Ð=°fÐ=Ð=Ð=àŒ=ð 	'˜DœMð 	'¨T¬]ð 	'Ýð 9Ý! )­ZÑ8Ô8Ð8Ð8Ð8àŒ}ð ' ¤ð 'Ý ð =Ý% iµÑ<Ô<Ð<Ð<Ð<ØÔ$ð 	'Ø"&�D”K�KØÔ)ð 'Øœð'ð œÔAð'ð &Ô6ð	'ð #'�D”Kå*¨7Ô+=Ô>ˆÔàŒ:�Ô5Ð5Ð5ØŒð /ØÔ&ð /Ø×)Ò)Ñ+Ô+Ð+Ð+à×,Ò,Ñ.Ô.Ð.àÔ'ð Ø!×2Ò2Ø!&Ø$(ð 3ñ ô �
ð
 ×8Ò8Ø¨tð 9ñ ô ð ð ð ð 6Ð5ðð rÄ   r	  c                ó,   — | j         €dS | j         j        S )aø  When an INSERT is compiled with a single set of parameters inside
        a VALUES expression, the string is assigned here, where it can be
        used for insert batching schemes to rewrite the VALUES expression.

        .. versionadded:: 1.3.8

        .. versionchanged:: 2.0 This collection is no longer used by
           SQLAlchemy's built-in dialects, in favor of the currently
           internal ``_insertmanyvalues`` collection that is used only by
           :class:`.SQLCompiler`.

        N)rA  r=  r5  s    rÂ   Úinsert_single_values_exprz%SQLCompiler.insert_single_values_expr¹  s   € ð Ô!Ð)Ø�4àÔ)Ô<Ð<rÄ   c                ó„   — | j         r| j         S | j        �*t          | j        ¦  «        rd„ | j        j        D ¦   «         S dS )aâ  The effective "returning" columns for INSERT, UPDATE or DELETE.

        This is either the so-called "implicit returning" columns which are
        calculated by the compiler on the fly, or those present based on what's
        present in ``self.statement._returning`` (expanded into individual
        columns using the ``._all_selected_columns`` attribute) i.e. those set
        explicitly using the :meth:`.UpdateBase.returning` method.

        .. versionadded:: 2.0

        Nc                ó0   — g | ]}t          |¦  «        ¯|‘ŒS r¾   r'   ©rÀ   Úcs     rÂ   ú
<listcomp>z3SQLCompiler.effective_returning.<locals>.<listcomp>Ü  s6   € ð ð ð àÝ$ QÑ'Ô'ðØðð ð rÄ   )r,  r'  r)   Ú_all_selected_columnsr5  s    rÂ   Úeffective_returningzSQLCompiler.effective_returningÌ  s\   € ð Ô"ð 
	ØÔ*Ð*ØŒ^Ð'­F°4´>Ñ,BÔ,BÐ'ðð àœÔ=ðñ ô ð ð �4rÄ   c                ó   — | j         S )zVbackwards compatibility; returns the
        effective_returning collection.

        )r  r5  s    rÂ   Ú	returningzSQLCompiler.returningå  s   € ð Ô'Ð'rÄ   c                ón   — 	 | j         d         d         S # t          $ r}t          d¦  «        |‚d}~ww xY w)a±  Return the current 'executable' that is being compiled.

        This is currently the :class:`_sql.Select`, :class:`_sql.Insert`,
        :class:`_sql.Update`, :class:`_sql.Delete`,
        :class:`_sql.CompoundSelect` object that is being compiled.
        Specifically it's assigned to the ``self.stack`` list of elements.

        When a statement like the above is being compiled, it normally
        is also assigned to the ``.statement`` attribute of the
        :class:`_sql.Compiler` object.   However, all SQL constructs are
        ultimately nestable, and this attribute should never be consulted
        by a ``visit_`` method, as it is not guaranteed to be assigned
        nor guaranteed to correspond to the current statement being compiled.

        .. versionadded:: 1.3.21

            For compatibility with previous versions, use the following
            recipe::

                statement = getattr(self, "current_executable", False)
                if statement is False:
                    statement = self.stack[-1]["selectable"]

            For versions 1.4 and above, ensure only .current_executable
            is used; the format of "self.stack" may change.


        éÿÿÿÿr$   z$Compiler does not have a stack entryN)r†  Ú
IndexError)r  Úies     rÂ   Úcurrent_executablezSQLCompiler.current_executableí  sM   € ð<	MØ”:˜b”> ,Ô/Ð/øÝð 	Mð 	Mð 	MÝÐCÑDÔDÈ"ÐLøøøøð	Møøøs   ‚ •
4Ÿ/¯4c                óT   — t          | j        ¦  «        t          | j        ¦  «        z   S r  )Úlistr)  r*  r5  s    rÂ   ÚprefetchzSQLCompiler.prefetch  s#   € å�DÔ(Ñ)Ô)­D°Ô1EÑ,FÔ,FÑFÐFrÄ   úDict[Any, Any]c                ó   — i S r  r¾   r5  s    rÂ   Ú_global_attributeszSQLCompiler._global_attributes  s   € àˆ	rÄ   úMutableMapping[CTE, str]c                ód   — t          j        ¦   «         }|| _        i | _        i | _        d| _        |S )z’Initialize collections related to CTEs only if
        a CTE is located, to save on the overhead of
        these collections otherwise.

        F)r&   ÚOrderedDictrJ  rK  rL  rM  )r  rJ  s     rÂ   Ú_init_cte_statezSQLCompiler._init_cte_state  s:   € õ *.Ô)9Ñ);Ô);ˆØˆŒ	ð #%ˆÔð "$ˆÔà#ˆÔàˆrÄ   c              #  ó@  K  — | j         | j        }}g dc| _         | _        	 | j        r| j        d         }d|d<   nd}| j         | j        fV — |r|                     d¦  «         ||c| _         | _        dS # |r|                     d¦  «         ||c| _         | _        w xY w)z;special API to support the use case of 'nested result sets'Frƒ  Tr  N)rš  r8  r†  r|  )r  Úresult_columnsÚordered_columnsÚentrys       rÂ   Ú_nested_resultzSQLCompiler._nested_result0  sð   è è € ð Ô ØÔ!ð (ˆð 79¸%Ð3ˆÔ˜dÔ3ð	ØŒzð Øœ
 2œ�Ø6:�Ð2Ñ3Ð3à�ØÔ&¨Ô(=Ð=Ð=Ð=Ð=àð 8Ø—	’	Ð6Ñ7Ô7Ð7àØð 8ˆDÔ  $Ô"7Ð"7Ð"7øð ð 8Ø—	’	Ð6Ñ7Ô7Ð7àØð 8ˆDÔ  $Ô"7ð ð ð ð s   ¡,A5 Á5(Bc                ó  ‡ ‡‡‡‡— ‰ j         rJ ‚‰ j        t          j        u sJ ‚‰ j        rJ ‚‰ j        j        dk    rdŠn‰ j        j        dk    sJ ‚dŠg Šdˆˆfd	„Št          j        ‰ j	        ‰‰ j
        ¦  «        ‰ _
        ‰ j        r^d
„ ‰ j                             ¦   «         D ¦   «         Št          ‰ j        ¦  «        t          ‰¦  «        k    sJ ‚ˆfd„‰D ¦   «         ‰ _         n‰‰ _         ‰ j        rŠg Št          j        ‰ j	        ‰‰ j        j        ¦  «        }ˆˆ fd„‰ j        j        D ¦   «         }‰ j        j        �ˆ fd„‰ j        j        D ¦   «         nd }‰ j                             |||¬¦  «        ‰ _        d S d S )NrÊ   ú%srÉ   rÇ   Úmúre.Match[str]r	  r¿   c                óÚ   •— |                       d¦  «        }|r‰                     |¦  «         ‰S ‰                     |                       d¦  «        ¦  «         |                       d¦  «        S )Nr   r7   r   )rˆ   Úappend)r˜  Únormal_bindÚplaceholderÚ	positionss     €€rÂ   Úfind_positionz6SQLCompiler._process_positional.<locals>.find_positionU  sd   ø€ ØŸ'š' !™*œ*ˆKØð "Ø× Ò  Ñ-Ô-Ð-Ø"Ð"ð × Ò  §¢¨¡¤Ñ,Ô,Ð,Ø—w’w˜q‘z”zÐ!rÄ   c                ó   — i | ]\  }}||“Œ	S r¾   r¾   )rÀ   ÚkÚvs      rÂ   r^  z3SQLCompiler._process_positional.<locals>.<dictcomp>d  s   € ÐOÐOÐO¡t q¨!˜a ÐOÐOÐOrÄ   c                ó<   •— g | ]}‰                      ||¦  «        ‘ŒS r¾   ©Úget)rÀ   rú   Úreverse_escapes     €rÂ   r}  z3SQLCompiler._process_positional.<locals>.<listcomp>f  s6   ø€ ð  ð  ð  Ø37�×"Ò" 4¨Ñ.Ô.ð ð  ð  rÄ   c           
     ó~   •— g | ]9}|d          |d         t          j        ‰j        ‰|d         ¦  «        |d         f‘Œ:S )r   r   r7   r  )rR  ÚsubÚ_positional_pattern)rÀ   r¢  rŸ  r  s     €€rÂ   r}  z3SQLCompiler._process_positional.<locals>.<listcomp>t  sZ   ø€ ð "ð "ð "ð ð �a”DØ�a”DÝ”F˜4Ô3°]ÀAÀaÄDÑIÔIØ�a”Dð	ð"ð "ð "rÄ   c                ój   •— g | ]/}‰j                              t          t          |¦  «        ¦  «        ‘Œ0S r¾   ©r,  rx  r   r¿   ©rÀ   Ú
_param_keyr  s     €rÂ   r}  z3SQLCompiler._process_positional.<locals>.<listcomp>  óD   ø€ ð ð ð à"ð Ô$×*Ò*­4µ°ZÑ+@Ô+@ÑAÔAðð ð rÄ   ©r=  r?  rG  )r˜  r™  r	  r¿   )r,  r˜  rf  rh  r:  r¦  re  rR  r¨  r©  r—  rE  ÚitemsÚlenrA  r=  r?  rG  Ú_replace)r  r=  r?  Úsentinel_param_int_idxsrŸ  r�  rž  r¦  s   `   @@@@rÂ   rr  zSQLCompiler._process_positionalH  s0  øøøøø€ ØÔ#Ð#Ð#Ð#ØŒz�]Ô9Ð9Ð9Ð9Ð9ØÔ&Ð&Ð&Ð&àŒ<Ô" hÒ.Ð.ØˆKˆKà”<Ô*¨gÒ5Ð5Ð5Ð5ØˆKàˆ	ð	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"õ ”fØÔ$ m°T´[ñ
ô 
ˆŒð Ô"ð 	)ØOÐO¨tÔ/F×/LÒ/LÑ/NÔ/NÐOÑOÔOˆNÝ�tÔ.Ñ/Ô/µ3°~Ñ3FÔ3FÒFÐFÐFÐFð ð  ð  ð  Ø;Dð ñ  ô  ˆDÔÐð  )ˆDÔàÔ!ð 	ØˆIå!#¤ØÔ(ØØÔ&Ô9ñ"ô "Ðð
"ð "ð "ð "ð "ð Ô/ÔBð"ñ "ô "Ðð Ô)Ô=ÐIð	ð ð ð à&*Ô&<Ô&Pðñ ô ð ð
 ð $ð &*Ô%;×%DÒ%DØ#5Ø#5Ø$;ð &Eñ &ô &ˆDÔ"Ð"Ð"ð7	ð 	rÄ   c                óÌ  ‡ ‡
— ‰ j         sJ ‚‰ j        t          j        u sJ ‚d}i Š
‰ j        rW‰ j        �Pt          j        ˆ fd„‰ j         	                    ¦   «         D ¦   «         ‰ j         	                    ¦   «         ¦  «        }n‰ j         	                    ¦   «         }|D ]A}|‰
v rŒ‰ j
        |         }|‰ j        v s	|‰ j        v rd ‰
|<   Œ,‰ j        › |› �}|dz  }|‰
|<   ŒB|‰ _        t          ‰
¦  «        ‰ _        ‰ j        rDt%          ‰
¦  «        }ˆ fd„‰
                     ¦   «         D ¦   «         Š
t%          ‰
¦  «        |k    sJ ‚‰ j                             ˆ
fd„‰ j        ¦  «        ‰ _        ‰ j        ro‰ j        j        ‰
z  }d„ ‰ j        j        D ¦   «         }‰ j        j        �ˆ fd„‰ j        j        D ¦   «         nd }	‰ j                             |||	¬¦  «        ‰ _        d S d S )Nr   c              3  ó.   •K  — | ]}|‰j         v¯|V — Œd S r  )rG  )rÀ   rú   r  s     €rÂ   r2  z/SQLCompiler._process_numeric.<locals>.<genexpr>™  s=   øè è € ð ð àØ 4Ô#9Ð9Ð9ð à9Ð9Ð9Ð9ðð rÄ   c                óN   •— i | ]!\  }}‰j                              ||¦  «        |“Œ"S r¾   )rE  r¥  )rÀ   rú   Úposr  s      €rÂ   r^  z0SQLCompiler._process_numeric.<locals>.<dictcomp>¸  sB   ø€ ð ð ð á�D˜#ð Ô'×+Ò+¨D°$Ñ7Ô7¸ðð ð rÄ   c                ó:   •— ‰|                       d¦  «                 S ©Nr   ©rˆ   ©r˜  Ú	param_poss    €rÂ   ú<lambda>z.SQLCompiler._process_numeric.<locals>.<lambda>À  s   ø€ �i §¢¨¡
¤
Ô+€ rÄ   c                ó>   — g | ]}|d          |d         d|d         f‘ŒS )r   r   r—  r  r¾   )rÀ   r¢  s     rÂ   r}  z0SQLCompiler._process_numeric.<locals>.<listcomp>Ê  s=   € ð "ð "ð "àð �1”�q˜”t˜T 1 Q¤4Ð(ð"ð "ð "rÄ   c                ój   •— g | ]/}‰j                              t          t          |¦  «        ¦  «        ‘Œ0S r¾   r«  r¬  s     €rÂ   r}  z0SQLCompiler._process_numeric.<locals>.<listcomp>Ð  r®  rÄ   r¯  )r:  r˜  rf  rh  rA  rG  Ú	itertoolsÚchainr/  Úvaluesr.  rD  rC  r5  Únext_numeric_posrˆ  r,  rE  r±  r°  Ú_pyformat_patternr¨  r—  r=  r?  rG  r²  )r  ÚnumrŒ   Ú	bind_nameÚbindÚphÚ
len_beforer=  r?  r³  r¼  s   `         @rÂ   rq  zSQLCompiler._process_numeric�  s¦  øø€ ØÔ"Ð"Ð"Ð"ØŒz�]Ô9Ð9Ð9Ð9Ð9àˆØ$&ˆ	àÔ!ð 	- dÔ&<Ð&Hõ ”Oðð ð ð à $¤× 6Ò 6Ñ 8Ô 8ðñ ô ð
 ”×&Ò&Ñ(Ô(ñô ˆEˆEð ”O×*Ò*Ñ,Ô,ˆEàð 	*ð 	*ˆIØ˜IÐ%Ð%ØØ”:˜iÔ(ˆDà˜Ô0Ð0Ð0Ø˜4Ô6Ð6Ð6ð (,�	˜)Ñ$Ð$àÔ;ÐB¸SÐBÐB�Ø�q‘�Ø')�	˜)Ñ$Ð$à #ˆÔå 	™?œ?ˆÔØÔ"ð 	0Ý˜Y™œˆJðð ð ð à!*§¢Ñ!2Ô!2ðñ ô ˆIõ �y‘>”> ZÒ/Ð/Ð/Ð/ð Ô,×0Ò0Ø+Ð+Ð+Ð+¨T¬[ñ
ô 
ˆŒð Ô!ð 	ð Ô&Ô9Øñð ð"ð "àÔ/ÔBð"ñ "ô "Ðð Ô)Ô=ÐIð	ð ð ð à&*Ô&<Ô&Pðñ ô ð ð
 ð $ð &*Ô%;×%DÒ%Dà#5à#5Ø$;ð &Eñ &ô &ˆDÔ"Ð"Ð"ð+	ð 	rÄ   úVMutableMapping[str, Union[_BindProcessorType[Any], Sequence[_BindProcessorType[Any]]]]c                ó>   ‡ — d„ ˆ fd„‰ j         D ¦   «         D ¦   «         S )Nc                ó   — i | ]
\  }}|®||“ŒS r  r¾   )rÀ   r1  Úvalues      rÂ   r^  z0SQLCompiler._bind_processors.<locals>.<dictcomp>è  s2   € ð 
ð 
ð 
á��Uð Ð ð �ð !Ð Ð rÄ   c           	   3  óø   •K  — | ]t}‰j         |         |j        j        s|j                             ‰j        ¦  «        n7t          ˆfd „t          t          |j        ¦  «        j        D ¦   «         ¦  «        fV — ŒudS )c              3  óL   •K  — | ]}|                      ‰j        ¦  «        V — Œd S r  )Ú_cached_bind_processorr¦  )rÀ   Ú	elem_typer  s     €rÂ   r2  z9SQLCompiler._bind_processors.<locals>.<genexpr>.<genexpr>ï  sG   øè è € ð ð à%ð "×8Ò8¸¼ÑFÔFðð ð ð ð ð rÄ   N)	r/  rþ   Ú_is_tuple_typerÐ  r¦  r4  r   r3   Útypes)rÀ   Ú	bindparamr  s     €rÂ   r2  z/SQLCompiler._bind_processors.<locals>.<genexpr>ê  s«   øè è € ð ð ð ð ”O IÔ.à$œ>Ô8ð�I”N×9Ò9¸$¼,ÑGÔGÐGåð ð ð ð å)-­i¸¼Ñ)HÔ)HÔ)Nðñ ô ñ ô ð	ðð ð ð ð ð rÄ   )r/  r5  s   `rÂ   Ú_bind_processorszSQLCompiler._bind_processorsà  sK   ø€ ð
ð 
ðð ð ð ð "&¤ðñ ô ð
ñ 
ô 
ð 	
rÄ   ú9Optional[Sequence[Optional[_SentinelProcessorType[Any]]]]c                ó”   ‡ — ‰ j         }|�|j        €d S ˆ fd„|j        D ¦   «         }t          j                             |¦  «        rd S |S )Nc                óN   •— g | ]!}|j                              ‰j        ¦  «        ‘Œ"S r¾   )rþ   Ú _cached_sentinel_value_processorr¦  )rÀ   Ú_scolr  s     €rÂ   r}  z=SQLCompiler._imv_sentinel_value_resolvers.<locals>.<listcomp>  s;   ø€ ð $
ð $
ð $
àð ŒJ×7Ò7¸¼ÑEÔEð$
ð $
ð $
rÄ   )rA  rE  r&   ÚNONE_SETÚ
issuperset)r  ÚimvÚsentinel_value_resolverss   `  rÂ   Ú_imv_sentinel_value_resolversz)SQLCompiler._imv_sentinel_value_resolversù  sq   ø€ ð Ô$ˆØˆ;˜#Ô.Ð6Ø�4ð$
ð $
ð $
ð $
àÔ-ð$
ñ $
ô $
Ð õ Œ=×#Ò#Ð$<Ñ=Ô=ð 	,Ø�4à+Ð+rÄ   c                ó2   — t          | j        ¦  «        dk    S r¹  )r±  r†  r5  s    rÂ   Úis_subqueryzSQLCompiler.is_subquery
  s   € Ý�4”:‰Œ Ò"Ð"rÄ   c                ó   — | S r  r¾   r5  s    rÂ   rÎ  zSQLCompiler.sql_compiler  s   € àˆrÄ   rÖ  r×  rÚ  r&  c                ó\   — |                       ||d¬¦  «        }|                      |¦  «        S )aR  Return a new :class:`.ExpandedState` for a given parameter set.

        For queries that use "expanding" or other late-rendered parameters,
        this method will provide for both the finalized SQL string as well
        as the parameters that would be used for a particular parameter set.

        .. versionadded:: 2.0.0rc1

        Tr`  )rÞ  rs  )r  rÖ  rÚ  r(  s       rÂ   Úconstruct_expanded_statez$SQLCompiler.construct_expanded_state  sD   € ð ×*Ò*ØØ%Ø ð +ñ 
ô 
ˆ
ð
 ×7Ò7Øñ
ô 
ð 	
rÄ   rØ  rÙ  Ú_group_numberúOptional[int]Ú_checkra  r]   c                óÄ  ‡— | j         r:|s8| j        €J ‚|st          | j        j        ¦  «        S t	          j        d¦  «        ‚|ot          | j        ¦  «        }|rU| j        €t	          j	        d¦  «        ‚| j        d         }| j
        }	|	€J ‚|	\  Š}
ˆfd„t          ||¦  «        D ¦   «         }nd}|rìi }| j                             ¦   «         D ]Î\  }}|r| j                             ||¦  «        n|}|j        |v r||j                 ||<   Œ>||v r||         ||<   ŒN|rG|j        r@|r t	          j        d|j        |fz  d¬¦  «        ‚t	          j        d	|j        z  d¬¦  «        ‚|r|                     ||¦  «        }n|}|j        r|j        ||<   ŒÄ|j        ||<   ŒÏ|S i }| j                             ¦   «         D ]¤\  }}|r| j                             ||¦  «        n|}|rG|j        r@|r t	          j        d|j        |fz  d¬¦  «        ‚t	          j        d	|j        z  d¬¦  «        ‚|r|                     ||¦  «        }n|}|j        r|j        ||<   Œš|j        ||<   Œ¥|S )
z5return a dictionary of bind parameter keys and valuesNzÂcan't construct new parameters when render_postcompile is used; the statement is hard-linked to the original parameters.  Use construct_expanded_state to generate a new statement and parameters.zcThis compiled object has no original cache key; can't pass extracted_parameters to construct_paramsr   c                ó2   •— i | ]\  }}‰|         D ]}||“ŒŒS r¾   r¾   )rÀ   r]  Ú	extractedrÇ  ru  s       €rÂ   r^  z0SQLCompiler.construct_params.<locals>.<dictcomp>S  sJ   ø€ ð "ð "ð "á �A�yØ  œGð"ð "ð ð �ið"ð "ð "ð "rÄ   z@A value is required for bind parameter %r, in parameter group %dÚcd3x)Úcodez)A value is required for bind parameter %r)r;  r<  Údictr(  r8   r3  r  rE  r£  ÚCompileErrorrF  Úzipr/  r°  r¥  r1  ÚrequiredÚcallableÚeffective_valuerÍ  )r  rÖ  rØ  rÚ  rå  rç  ra  Úhas_escaped_namesÚorig_extractedÚ
ckbm_tupler  Úresolved_extractedÚpdrÔ  rú   Úescaped_nameÚvalue_paramru  s                    @rÂ   rÞ  zSQLCompiler.construct_params(  s˜  ø€ ð Ô#ð 
	¨Oð 
	ØÔ4Ð@Ð@Ð@Øð Ý˜DÔ=ÔHÑIÔIÐIåÔ-ð4ñô ð ð )ÐJ­T°$Ô2IÑ-JÔ-JÐàð 	&ð Œ~Ð%ÝÔ&ðJñô ð ð
 "&¤°Ô!2�àÔ3ˆJØÐ)Ð)Ð)Ø ‰GˆD�!ð"ð "ð "ð "å$'¨Ð8LÑ$MÔ$Mð"ñ "ô "ÐÐð "&Ðàð K	ØˆBØ#'¤?×#8Ò#8Ñ#:Ô#:ð %=ð %=‘�	˜4ð )ð�DÔ+×/Ò/°°dÑ;Ô;Ð;àð ð ”= FÐ*Ð*Ø'-¨i¬mÔ'<�B�|Ñ$Ð$Ø˜V�^�^Ø'-¨d¤|�B�|Ñ$Ð$àð = 	Ô 2ð =Ø$ð Ý!Ô5ð4à(œ}¨mÐ<ñ=ð "(ð	ñ ô ð õ "Ô5ØGØ'œmñ,à!'ðñ ô ð ð *ð 0Ø&8×&<Ò&<Ø% yñ'ô '˜˜ð '0˜à Ô)ð =Ø+6Ô+F˜˜<Ñ(Ð(à+6Ô+<˜˜<Ñ(Ð(ØˆIàˆBØ#'¤?×#8Ò#8Ñ#:Ô#:ð 9ð 9‘�	˜4ð )ð�DÔ+×/Ò/°°dÑ;Ô;Ð;àð ð ð ˜iÔ0ð Ø$ð Ý!Ô5ð4à(œ}¨mÐ<ñ=ð "(ð	ñ ô ð õ "Ô5ØGØ'œmñ,à!'ðñ ô ð ð &ð ,Ø"4×"8Ò"8¸ÀIÑ"NÔ"N�K�Kà"+�KàÔ%ð 9Ø'2Ô'B�B�|Ñ$Ð$à'2Ô'8�B�|Ñ$Ð$àˆIrÄ   c                ó$  ‡‡‡‡‡— | j         Š‰j        Š‰j        Š‰j        Šˆˆˆˆfd„Ši }| j        }| j        D ]U}||v rŒ|j        j        r/ˆfd„t          t          |j        ¦  «        j
        D ¦   «         ||<   ŒB ‰|j        ¦  «        ||<   ŒV|S )Nc                óx   •— |                       ‰¦  «                             ‰¦  «        }|�‰�|‰vr‰�|‰v r|S d S r  )Ú_unwrapped_dialect_implÚget_dbapi_type)ÚtypÚdbtypeÚdbapir¦  Úexclude_typesÚinclude_typess     €€€€rÂ   Úlookup_typez<SQLCompiler._get_set_input_sizes_lookup.<locals>.lookup_type±  sV   ø€ Ø×0Ò0°Ñ9Ô9×HÒHÈÑOÔOˆFð Ð"Ø"Ð*¨f¸MÐ.IÐ.IØ"Ð*¨f¸Ð.EÐ.Eà�à�trÄ   c                ó&   •— g | ]} ‰|¦  «        ‘ŒS r¾   r¾   )rÀ   rþ  r  s     €rÂ   r}  z;SQLCompiler._get_set_input_sizes_lookup.<locals>.<listcomp>Æ  s3   ø€ ð )ð )ð )àð  �K Ñ$Ô$ð)ð )ð )rÄ   )r¦  Úinclude_set_input_sizesÚexclude_set_input_sizesr   rC  r/  rþ   rÒ  r   r3   rÓ  )	r  Ú
inputsizesrC  rÔ  r   r¦  r  r  r  s	       @@@@@rÂ   Ú_get_set_input_sizes_lookupz'SQLCompiler._get_set_input_sizes_lookup¨  sí   øøøøø€ à”,ˆàÔ7ˆØÔ7ˆà”ˆð
	ð 
	ð 
	ð 
	ð 
	ð 
	ð 
	ð 
	ð ˆ
à!%Ô!<Ðàœð 
	Dð 
	DˆIØÐ2Ð2Ð2ØàŒ~Ô,ð Dð)ð )ð )ð )å#¥I¨y¬~Ñ>Ô>ÔDð)ñ )ô )�
˜9Ñ%Ð%ð
 )4¨°I´NÑ(CÔ(C�
˜9Ñ%Ð%àÐrÄ   c                ó.   — |                       d¬¦  «        S )zýReturn the bind param dictionary embedded into this
        compiled object, for those values that are present.

        .. seealso::

            :ref:`faq_sql_expression_string` - includes a usage example for
            debugging use cases.

        F)rç  rà  r5  s    rÂ   rÖ  zSQLCompiler.paramsÏ  s   € ð ×$Ò$¨EÐ$Ñ2Ô2Ð2rÄ   r(  rb  c                ó0  ‡ ‡‡‡‡‡— i }‰ j         }|€‰ j        }‰ j        rg }‰ j        }|€‰ j        }ndx}}‰ j        }t          d|¦  «        Št          d|¦  «        Ši }i Ši }	d}
‰ j        r|�|}‰ j        rg }
n‰ j         	                    ¦   «         }‰ j
        }|D �]£Š|r|                     ‰‰¦  «        n‰}‰ j        ‰         }|‰ j        v r2|‰vr-‰                      ||                     |¦  «        ¬¦  «        ‰|<   Œe|‰ j        v �r|‰v r|	|         }d}n;|                     ‰¦  «        }‰                      |||¦  «        }|\  }}||	|<   |‰|<   |j        sÊ|                     |¦  «         |j        j        r5|€J ‚|                     ˆˆfd„t-          |d¦  «        D ¦   «         ¦  «         n"|                     ˆˆfd„|D ¦   «         ¦  «         |
� |
                     d„ |D ¦   «         ¦  «         n!|�|                     d	„ |D ¦   «         ¦  «         d
„ |D ¦   «         |‰<   �ŒŒ|�|                     ‰¦  «         �Œ¥ˆfd„}t3          j        ‰ j        ||¦  «        }|
�X|€J ‚ˆ fd„t-          |
‰ j        ¦  «        D ¦   «         Š‰ j                             ˆfd„|¦  «        }|                     |
¦  «         t=          |||||¦  «        }|rE|‰ _         |‰ _        |j        ‰ _        ‰ j        rtA          |j        pd¦  «        nd‰ _        |‰ _!        |S )až  handle special post compile parameters.

        These include:

        * "expanding" parameters -typically IN tuples that are rendered
          on a per-parameter basis for an otherwise fixed SQL statement string.

        * literal_binds compiled with the literal_execute flag.  Used for
          things like SQL Server "TOP N" where the driver does not accommodate
          N as a bound parameter.

        Nr)  z/Mapping[str, Sequence[_BindProcessorType[Any]]]©Úrender_literal_valuec              3  óª   •K  — | ]M\  }}t          |d ¦  «        D ]7\  }}‰‰v r.‰‰         |d z
           ®‰›d|›d|›�‰‰         |d z
           fV — Œ8ŒNdS )r   Nr  ©Ú	enumerate)rÀ   ÚiÚtuple_elementÚjr  rú   Útuple_processorss        €€rÂ   r2  zBSQLCompiler._process_parameters_for_postcompile.<locals>.<genexpr>I  s¢   øè è € ð 	.ð 	.ñ
 !1  =Ý(1°-ÀÑ(CÔ(Cð	.ð 	.ñ !%  1Ø#Ð'7Ð7Ð7Ø 0°Ô 6°q¸1±uÔ =Ð Ið /3¨d¨d°A°A°A°q°qÐ 9Ø 0°Ô 6°q¸1±uÔ =ðð !JÐ IÐ IÐ IÐ Ið	.ð 	.rÄ   r   c              3  ó:   •K  — | ]\  }}‰‰v ¯	|‰‰         fV — Œd S r  r¾   )rÀ   r1  r  rú   Úsingle_processorss      €€rÂ   r2  zBSQLCompiler._process_parameters_for_postcompile.<locals>.<genexpr>T  sJ   øè è € ð .ð .á &  QØ#Ð'8Ð8Ð8ð !Ð"3°DÔ"9Ð:à8Ð8Ð8Ð8ð.ð .rÄ   c              3  ó    K  — | ]	\  }}|V — Œ
d S r  r¾   ©rÀ   rú   r  s      rÂ   r2  zBSQLCompiler._process_parameters_for_postcompile.<locals>.<genexpr>Z  s7   è è € ð 3ð 3Ù%, T¨1˜Dð3ð 3ð 3ð 3ð 3ð 3rÄ   c              3  ó    K  — | ]	\  }}|V — Œ
d S r  r¾   r  s      rÂ   r2  zBSQLCompiler._process_parameters_for_postcompile.<locals>.<genexpr>a  s&   è è € Ð.MÐ.M¹¸¸a¨tÐ.MÐ.MÐ.MÐ.MÐ.MÐ.MrÄ   c                ó   — g | ]\  }}|‘ŒS r¾   r¾   )rÀ   Ú
expand_keyr  s      rÂ   r}  zCSQLCompiler._process_parameters_for_postcompile.<locals>.<listcomp>b  s)   € ð 1ð 1ð 1Ù'4 z°1˜
ð1ð 1ð 1rÄ   c                óL  •‡‡— |                       d¦  «        }‰|         }|                       d¦  «        rn|                       d¦  «                             d¦  «        }|d         |d         cŠŠd                     ˆˆfd„|                     d¦  «        D ¦   «         ¦  «        }|S )Nr   r7   ú~~r  rÑ   c              3  ó(   •K  — | ]}‰›|›‰›�V — Œd S r  r¾   )rÀ   ÚexpÚbe_leftÚbe_rights     €€rÂ   r2  z]SQLCompiler._process_parameters_for_postcompile.<locals>.process_expanding.<locals>.<genexpr>q  sD   øè è € ð !ð !àð !( ¨¨¨h¨hÐ7ð!ð !ð !ð !ð !ð !rÄ   )rˆ   Úsplitry   )r˜  r1  ÚexprÚtokr  r   Úreplacement_expressionss       @@€rÂ   Úprocess_expandingzJSQLCompiler._process_parameters_for_postcompile.<locals>.process_expandingh  s´   øøø€ Ø—'’'˜!‘*”*ˆCØ*¨3Ô/ˆDð �wŠw�q‰zŒzð Ø—g’g˜a‘j”j×&Ò& tÑ,Ô,�Ø$'¨¤F¨C°¬FÐ!�˜Ø—y’yð !ð !ð !ð !ð !à#Ÿzšz¨$Ñ/Ô/ð!ñ !ô !ñ ô �ð ˆKrÄ   c                ó.   •— i | ]\  }}|‰j         › |› �“ŒS r¾   ©r5  )rÀ   rÅ  r1  r  s      €rÂ   r^  zCSQLCompiler._process_parameters_for_postcompile.<locals>.<dictcomp>}  s=   ø€ ð ð ð á�C˜ð ˜Ô;ÐB¸SÐBÐBðð ð rÄ   c                ó:   •— ‰|                       d¦  «                 S r¹  rº  r»  s    €rÂ   r½  zASQLCompiler._process_parameters_for_postcompile.<locals>.<lambda>…  s   ø€ ˜) A§G¢G¨A¡J¤JÔ/€ rÄ   r¾   )"r>  r—  rd  r@  r,  rÕ  r   r:  r/  rÂ  rE  r¥  r.  rC  Úrender_literal_bindparamr|  rD  Ú$_literal_execute_expanding_parameterÚliteral_executeÚupdaterþ   rÒ  r  Úextendr›  rR  r¨  Ú_post_compile_patternrÃ  rÄ  r&  r'  rˆ  r<  )r  r(  rb  Úexpanded_parametersÚpre_expanded_stringÚnew_positiontupÚpre_expanded_positiontupr*  Únew_processorsÚto_update_setsÚnumeric_positiontupÚnamesÚebnrø  Ú	parameterÚ	to_updaterÂ  Úleep_resÚreplacement_exprr%  r'  Úexpanded_staterú   r¼  r$  r  r  s   `                     @@@@@rÂ   rs  z/SQLCompiler._process_parameters_for_postcompileÜ  sÃ  øøøøøø€ ð$ !Ðð #Ô7ÐØÐ&Ø"&¤+ÐàŒ?ð 	>Ø ˆOà'+Ô'EÐ$Ø'Ð/Ø+/Ô+;Ð(øð :>Ð=ˆOÐ6àÔ*ˆ
Ý Ø3°Zñ
ô 
Ðõ  Ø=¸zñ
ô 
Ðð >@ˆà24ÐØ)+ˆð 48ÐàŒ?ð 	-Ð7ÐCØ#;ˆEØÔ"ð )Ø&(Ð#øà”O×*Ò*Ñ,Ô,ˆEàÔ%ˆØð I	-ñ I	-ˆDØ25Ð?˜3Ÿ7š7 4¨Ñ.Ô.Ð.¸4ˆLØœ
 4Ô(ˆIà˜DÔ7Ð7Ð7ØÐ'>Ð>Ð>ð ×5Ò5Ø!Ø-7¯^ª^¸LÑ-IÔ-Ið 6ñ ô ð ,Ø$ñð à˜DÔ4Ð4Ñ4ØÐ#:Ð:Ð:Ø .¨|Ô <�IØ!�F�Fð (Ÿ^š^¨DÑ1Ô1�Fà#×HÒHØ$ i°ñ ô  �Hð 5=Ñ1�YÐ 0à3<�N <Ñ0Ø<LÐ+¨LÑ9à Ô0ð Ø×%Ò% iÑ0Ô0Ð0Ø ”~Ô4ð Ø%Ð1Ð1Ð1Ø&×-Ò-ð 	.ð 	.ð 	.ð 	.ð 	.õ
 5>¸fÀaÑ4HÔ4Hð	.ñ 	.ô 	.ñ 	ô 	ð 	ð 	ð '×-Ò-ð .ð .ð .ð .ð .à*3ð.ñ .ô .ñ ô ð ð
 +Ð6Ø+×2Ò2ð 3ð 3Ø09ð3ñ 3ô 3ñ ô ð ð ð )Ð4ð (×.Ò.Ð.MÐ.MÀ9Ð.MÑ.MÔ.MÑMÔMÐMð1ð 1Ø8Að1ñ 1ô 1Ð'¨Ñ-ùð !Ð,Ø×&Ò& tÑ,Ô,Ð,ùð	ð 	ð 	ð 	ð 	õ ”FØÔ&Ð(9Ð;Nñ
ô 
ˆ	ð Ð*Ø"Ð.Ð.Ð.ðð ð ð å )Ø'¨Ô)>ñ!ô !ðñ ô ˆIð Ô.×2Ò2Ø/Ð/Ð/Ð/°ñô ˆIð ×"Ò"Ð#6Ñ7Ô7Ð7å&ØØØØØñ
ô 
ˆð ð 	?ð )<ˆDÔ%Ø-EˆDÔ*Ø(Ô2ˆDŒKð ”?ð•�^Ô/Ð5°2Ñ6Ô6Ð6àð Ôð
 1?ˆDÔ-àÐrÄ   zsqlalchemy.engine.cursorc                ób   — t           j        j        }|j                             | j        ¦  «        S )z(utility method used for unit tests only.)r&   Ú	preloadedÚengine_cursorrV   Ú_create_description_match_maprš  )r  Úcursors     rÂ   Ú_create_result_mapzSQLCompiler._create_result_map¡  s/   € õ ”Ô-ˆØÔ*×HÒHØÔ ñ
ô 
ð 	
rÄ   Ú_BindNameForColProtocolÚ_get_bind_name_for_colúCallable[[Any], str]c                ó   — | j         }|S r  )rD  )r  Úgetters     rÂ   Ú_within_exec_param_key_getterz)SQLCompiler._within_exec_param_key_getter¬  s   € àÔ,ˆØˆrÄ   zsqlalchemy.engine.resultc                óÊ  ‡‡‡‡	‡
‡‡— t           j        j        }| j        Š| j        €J ‚| j        j        }t          rt          |t          ¦  «        sJ ‚|j	        }ˆfd„|j
        D ¦   «         Š	d Š|j        Š‰�<‰j                             | j        d ¦  «        Š
 ‰‰¦  «        Š‰| j        v rˆfd„}|Šnd Š
|                     d„ |j
        D ¦   «         ¦  «        Šˆˆˆ	ˆ
ˆfd„}|S )Nc                óR   •— g | ]#}t          j        d  ‰|¦  «        d¦  «        |f‘Œ$S )r¥  N)ÚoperatorÚmethodcaller)rÀ   rù  Úparam_key_getters     €rÂ   r}  zKSQLCompiler._inserted_primary_key_from_lastrowid_getter.<locals>.<listcomp>À  sI   ø€ ð 
ð 
ð 
àõ Ô" 5Ð*:Ð*:¸3Ñ*?Ô*?ÀÑFÔFÈÐLð
ð 
ð 
rÄ   c                ó<   •— |                      ‰| ¦  «        }|�|S | S r  r¤  )Ú	lastrowidr(  Úparam_valueÚautoinc_keys      €rÂ   Ú_autoinc_getterzPSQLCompiler._inserted_primary_key_from_lastrowid_getter.<locals>._autoinc_getterÕ  s,   ø€ Ø",§.¢.°¸iÑ"HÔ"H�KØ"Ð.ð
  +Ð*ð  )Ð(rÄ   c                ó   — g | ]	}|j         ‘Œ
S r¾   r[  ©rÀ   rù  s     rÂ   r}  zKSQLCompiler._inserted_primary_key_from_lastrowid_getter.<locals>.<listcomp>ç  ó   € Ð%KÐ%KÐ%K°# c¤gÐ%KÐ%KÐ%KrÄ   c                óˆ   •‡ ‡— ‰� ‰‰ ¦  «        Š ‰ € ‰ˆfd„‰D ¦   «         ¦  «        S  ‰ˆˆˆ ˆfd„‰D ¦   «         ¦  «        S )a  given cursor.lastrowid value and the parameters used for INSERT,
            return a "row" that represents the primary key, either by
            using the "lastrowid" or by extracting values from the parameters
            that were sent along with the INSERT.

            Nc              3  ó4   •K  — | ]\  }} |‰¦  «        V — Œd S r  r¾   )rÀ   rG  rù  r(  s      €rÂ   r2  zWSQLCompiler._inserted_primary_key_from_lastrowid_getter.<locals>.get.<locals>.<genexpr>ô  s1   øè è € ÐLÐL±[°V¸S˜f˜f ZÑ0Ô0ÐLÐLÐLÐLÐLÐLrÄ   c              3  ó\   •K  — | ]&\  }}|‰u r‰� ‰‰‰¦  «        n‰n
 |‰¦  «        V — Œ'd S r  r¾   )rÀ   rG  rù  Úautoinc_colÚautoinc_getterrO  r(  s      €€€€rÂ   r2  zWSQLCompiler._inserted_primary_key_from_lastrowid_getter.<locals>.get.<locals>.<genexpr>ö  su   øè è € ð 	ð 	ñ $˜ ð ˜kÐ)Ð)ð *Ð5ð '˜ y°*Ñ=Ô=Ð=à&˜Yð  ˜ 
Ñ+Ô+ð	ð 	ð 	ð 	ð 	ð 	rÄ   r¾   )rO  r(  rY  rZ  ÚgettersÚlastrowid_processorÚrow_fns   ``€€€€€rÂ   r¥  zDSQLCompiler._inserted_primary_key_from_lastrowid_getter.<locals>.geté  s“   øøø€ ð #Ð.Ø/Ð/°	Ñ:Ô:�	àÐ Ø�vÐLÐLÐLÐLÀGÐLÑLÔLÑLÔLÐLà�vð 	ð 	ð 	ð 	ð 	ð 	ð 	ð (/ð	ñ 	ô 	ñ 	ô 	ð 	rÄ   )r&   r>  Úengine_resultrH  r  r'  r   r¯  rB   r�   Úprimary_keyÚ_autoincrement_columnrþ   Ú_cached_result_processorr¦  r.  Úresult_tuple)r  Úresultr'  r�   rR  r¥  rY  rZ  rQ  r[  r\  rM  r]  s         @@@@@@@rÂ   Ú+_inserted_primary_key_from_lastrowid_getterz7SQLCompiler._inserted_primary_key_from_lastrowid_getter±  s`  øøøøøøø€ õ ”Ô-ˆàÔ=ÐàÔ!Ð-Ð-Ð-ØÔ&Ô0ˆ	åð 	1Ý˜i­Ñ0Ô0Ð0Ð0Ð0à”ˆð
ð 
ð 
ð 
àÔ(ð
ñ 
ô 
ˆð
 ˆØÔ1ˆØÐ"à"-Ô"2×"KÒ"KØ”˜dñ#ô #Ðð +Ð*¨;Ñ7Ô7ˆKð ˜dœjÐ(Ð(ð
)ð 
)ð 
)ð 
)ð 
)ð "1�øð #'Ðà×$Ò$Ð%KÐ%K¸Ô9JÐ%KÑ%KÔ%KÑLÔLˆð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð0 ˆ
rÄ   c                ó¸  ‡‡‡‡	— t           j        rddlm} nt          j        j        }| j        €J ‚| j        j        }t          rt          |t          ¦  «        sJ ‚| j        Š|j        }| j        }|€J ‚d„ t          |¦  «        D ¦   «         Št          dˆˆfd„|j        D ¦   «         ¦  «        Š|                     d„ |j        D ¦   «         ¦  «        Š	ˆˆ	fd„}|S )Nr7   )rc  c                ó   — i | ]\  }}||“Œ	S r¾   r¾   )rÀ   Úidxrù  s      rÂ   r^  zKSQLCompiler._inserted_primary_key_from_returning_getter.<locals>.<dictcomp>	  s   € Ð=Ð=Ð=™H˜C ˆs�CÐ=Ð=Ð=rÄ   z'List[Tuple[Callable[[Any], Any], bool]]c                ó’   •— g | ]C}|‰v rt          j        ‰|         ¦  «        d fn t          j        d ‰|¦  «        d¦  «        df‘ŒDS )Tr¥  NF)rK  Ú
itemgetterrL  )rÀ   rù  rM  Úrets     €€rÂ   r}  zKSQLCompiler._inserted_primary_key_from_returning_getter.<locals>.<listcomp>	  su   ø€ ð ð ð ð ð ˜#�:�:õ Ô$ S¨¤XÑ.Ô.°Ð5Ð5õ Ô)¨%Ð1AÐ1AÀ#Ñ1FÔ1FÈÑMÔMØððð ð rÄ   c                ó   — g | ]	}|j         ‘Œ
S r¾   r[  rT  s     rÂ   r}  zKSQLCompiler._inserted_primary_key_from_returning_getter.<locals>.<listcomp>%	  rU  rÄ   c                ó8   •‡ ‡—  ‰ˆˆ fd„‰D ¦   «         ¦  «        S )Nc              3  óN   •K  — | ]\  }}|r |‰¦  «        n
 |‰¦  «        V — Œ d S r  r¾   )rÀ   rG  Úuse_rowr(  Úrows      €€rÂ   r2  zWSQLCompiler._inserted_primary_key_from_returning_getter.<locals>.get.<locals>.<genexpr>(	  sV   øè è € ð ð á#�F˜Gð  'Ð>���s‘”�¨F¨F°:Ñ,>Ô,>ðð ð ð ð ð rÄ   r¾   )ro  r(  r[  r]  s   ``€€rÂ   r¥  zDSQLCompiler._inserted_primary_key_from_returning_getter.<locals>.get'	  sD   øøø€ Ø�6ð ð ð ð ð à'.ðñ ô ñ ô ð rÄ   )Útypingr   Úenginerc  r&   r>  r^  r  r'  r¯  rB   rH  r�   r,  r  r   r_  rb  )
r  rc  r'  r�   r�  r¥  r[  rM  rj  r]  s
         @@@@rÂ   Ú+_inserted_primary_key_from_returning_getterz7SQLCompiler._inserted_primary_key_from_returning_getter	  s7  øøøø€ õ Ôð 	2Ø'Ð'Ð'Ð'Ð'Ð'Ð'å”^Ô1ˆFàÔ!Ð-Ð-Ð-ØÔ&Ô0ˆ	åð 	1Ý˜i­Ñ0Ô0Ð0Ð0Ð0àÔ=ÐØ”ˆàÔ+ˆ	ØÐ$Ð$Ð$Ø=Ð=­	°)Ñ(<Ô(<Ð=Ñ=Ô=ˆåØ5ðð ð ð ð ð !Ô,ðñ ô ñ
ô 
ˆð ×$Ò$Ð%KÐ%K¸Ô9JÐ%KÑ%KÔ%KÑLÔLˆð	ð 	ð 	ð 	ð 	ð 	ð ˆ
rÄ   c                ó   — dS )z´Called when a SELECT statement has no froms, and no FROM clause is
        to be appended.

        Gives Oracle a chance to tack on a ``FROM DUAL`` to the string output.

        r–  r¾   r5  s    rÂ   Údefault_fromzSQLCompiler.default_from/	  s	   € ð ˆrrÄ   c                ó4   — d |j         j        | fi |¤Žz   dz   S ©Nr  r  ©rÇ  rÓ  )r  ÚgroupingÚasfromrÐ  s       rÂ   Úvisit_groupingzSQLCompiler.visit_grouping8	  ó+   € ØÐ8�XÔ%Ô8¸ÐHÐHÀÐHÐHÑHÈ3ÑNÐNrÄ   c                ó4   — d |j         j        | fi |¤Žz   dz   S rv  rw  )r  rx  rÐ  s      rÂ   Úvisit_select_statement_groupingz+SQLCompiler.visit_select_statement_grouping;	  r{  rÄ   c                ó–  — | j         r®| j        j        r¢	 t          d| j         d         d         ¦  «        }n'# t          $ r}t          j        d¦  «        |‚d }~ww xY w|j        \  }}}|r|}	n|}	|j        j	        }
|
�8|
j
        |	v r/|
                     |	|
j
                 ¦  «        r|j        j	        |d<    | j        |j        fd|i|¤ŽS )Nú'Union[SelectState, CompoundSelectState]rƒ  r  úECan't resolve label reference for ORDER BY / GROUP BY / DISTINCT etc.Úrender_label_as_labelÚwithin_columns_clause)r†  r¦  Úsupports_simple_order_by_labelr   ÚKeyErrorr8   rî  Ú_label_resolve_dictrÇ  Ú_order_by_label_elementrú   Úshares_lineager±  )r  rÇ  r‚  rÐ  r  ÚkeÚ	with_colsÚ
only_fromsÚ	only_colsÚresolve_dictÚorder_by_elems              rÂ   Úvisit_label_referencez!SQLCompiler.visit_label_reference>	  s;  € ð Œ:ð %	<˜$œ,ÔEð %	<ð	Ý $Ø=Ø”J˜r”N ?Ô3ñ!ô !��øõ ð ð ð ÝÔ&ð/ñô ð ðøøøøðøøøð Ô1ñ	ØØØà$ð )Ø)��à(�ð $œOÔCˆMð Ð)Ø!Ô&¨,Ð6Ð6Ø!×0Ò0Ø  Ô!3Ô4ñô ð 7ð ”OÔ;ð Ø+ñð ˆtŒ|ØŒOð
ð 
à"7ð
ð ð
ð 
ð 	
s   •!7 ·
AÁAÁAc                ó   — | j         s|                      |j        ¦  «        S 	 t          d| j         d         d         ¦  «        }n># t          $ r1}t          j        |j        dt          j	        |¬¦  «         Y d }~nd }~ww xY w|j
        \  }}}	 |r||j                 }	n||j                 }	|	|d<    | j        |	fd|i|¤ŽS # t          $ r2}
t          j        |j        dt          j	        |
¬¦  «         Y d }
~
d S d }
~
ww xY w)Nr  rƒ  r  r€  )ÚextraÚexc_clsrÈ  r�  r‚  )r†  r±  Ú_text_clauser   r„  r   Ú_no_text_coercionrÇ  r8   rî  r…  )r  rÇ  r‚  rÐ  r  rˆ  r‰  rŠ  r‹  rù  rÈ  s              rÂ   Úvisit_textual_label_referencez)SQLCompiler.visit_textual_label_referencem	  s”  € ð Œzð 	6à—<’< Ô 4Ñ5Ô5Ð5ð	Ý Ø9Ø”
˜2”˜Ô/ñô ˆMˆMøõ ð 		ð 		ð 		ÝÔ'Ø”ð/õ Ô(Øðñ ô ð ð ð ð ð ð øøøøð		øøøð ,9Ô+LÑ(ˆ	�:˜yð	Ø$ð 1Ø  ¤Ô1��à ¤Ô0�ð /2ˆFÐ*Ñ+Ø�4”<Øðð Ø+@ðØDJðð ð øõ ð 		ð 		ð 		ÝÔ'Ø”ð/õ Ô(Øðñ ô ð ð ð ð ð ð ð øøøøð		øøøs/   £!A Á
B Á'A;Á;B ÂC Ã
C=Ã'C8Ã8C=c                óê  — |o| }||u }	|	s|rBt          |j        t          j        ¦  «        r|                      d|j        ¦  «        }
n|j        }
|rq|�% ||
|j        ||
f|j        z   |z   |j        ¦  «          |j        j        | fdddœ|¤Žt          t          j                 z   | j                             ||
¦  «        z   S |	r| j                             ||
¦  «        S  |j        j        | fddi|¤ŽS )NÚcolidentT)r‚  Úwithin_label_clauser‚  F)r¯  rú   r   rE   Ú_truncated_identifierr÷  rþ   rÇ  rÓ  Ú	OPERATORSr!   Úas_rŸ  Úformat_label)r  rõ  Úadd_to_result_mapr—  r‚  r�  Úresult_map_targetsrÉ  Úrender_label_with_asÚrender_label_onlyÚ	labelnames              rÂ   Úvisit_labelzSQLCompiler.visit_labelš	  sg  € ð "Ð=Ð*=Ð&=ð 	ð 2°UÐ:Ðàð 	'Ð 4ð 	'Ý˜%œ*¥hÔ&?Ñ@Ô@ð 'Ø ×6Ò6°zÀ5Ä:ÑNÔN�	�	à!œJ�	àð 	Ø Ð,Ø!Ð!ØØ”JØ˜IÐ&¨Ô)9Ñ9Ð<NÑNØ”Jñ	ô ð ð 1�”Ô0Øðà*.Ø(,ðð ð ð	ð õ �IœMÔ*ñ+ð ”-×,Ò,¨U°IÑ>Ô>ñ?ð	ð ð 	Ø”=×-Ò-¨e°YÑ?Ô?Ð?à3�5”=Ô3Øðð Ø,1ðØ57ðð ð rÄ   c                ó*   — t          j        d¦  «        ‚)Nz:Cannot compile Column object until its 'name' is assigned.©r8   rî  ©r  r”   s     rÂ   Ú_fallback_column_namez!SQLCompiler._fallback_column_nameË	  s   € ÝÔØKñ
ô 
ð 	
rÄ   c                ó,   — |j         } | j        |fi |¤ŽS r  )Ú	_resolvedr±  )r  rÇ  rÉ  Úsql_elements       rÂ   Úvisit_lambda_elementz SQLCompiler.visit_lambda_elementÐ	  s$   € ØÔ'ˆØˆtŒ|˜KÐ.Ð.¨2Ð.Ð.Ð.rÄ   r”   úColumnClause[Any]rœ  úOptional[_ResultMapAppender]Úinclude_tabler�  rû   Úambiguous_table_name_mapú Optional[_AmbiguousTableNameMap]c                ó0  — |j         x}}|€|                      |¦  «        }|j        }	|	s0t          |t          j        ¦  «        r|                      d|¦  «        }|�2|||j        f|z   }
|j        r|
|j        fz  }
 ||||
|j	        ¦  «         |	r|  
                    |¦  «        }n| j                             |¦  «        }|j        }|�	|r|j        s|S | j                             |¦  «        }|r| j                             |¦  «        dz   }nd}t"          rt          |t$          ¦  «        sJ ‚|j         }|s|r||v r||         }t          |t          j        ¦  «        r|                      d|¦  «        }|| j                             |¦  «        z   dz   |z   S )Nr–  r  r–  Úalias)rú   r¥  Ú
is_literalr¯  r   rE   r˜  r1  Ú	_tq_labelrþ   Úescape_literal_columnrŸ  Úquoter�   Únamed_with_columnÚschema_for_objectÚquote_schemar   rP   )r  r”   rœ  r¬  r�  r­  rÐ  rú   Ú	orig_namer±  Útargetsr�   Úeffective_schemaÚschema_prefixÚ	tablenames                  rÂ   Úvisit_columnzSQLCompiler.visit_columnÔ	  sç  € ð "œ;Ð&ˆˆyØˆ<Ø×-Ò-¨fÑ5Ô5ˆDàÔ&ˆ
Øð 	@�j¨­xÔ/HÑIÔIð 	@Ø×-Ò-¨j¸$Ñ?Ô?ˆDàÐ(Ø˜t V¤ZÐ0Ð3EÑEˆGØÔð /Ø˜FÔ,Ð.Ñ.�àÐ˜d I¨w¸¼ÑDÔDÐDàð 	-ð ×-Ò-¨dÑ3Ô3ˆDˆDà”=×&Ò& tÑ,Ô,ˆDØ”ˆØˆ= ˆ=°UÔ5Lˆ=ØˆKà#œ}×>Ò>¸uÑEÔEÐàð #à”M×.Ò.Ð/?Ñ@Ô@À3ÑFð �ð !#�åð :Ý! %­Ñ9Ô9Ð9Ð9Ð9Øœ
ˆIð %ð@à,ð@ð Ð!9Ð9Ð9à4°YÔ?�	å˜)¥XÔ%>Ñ?Ô?ð KØ ×6Ò6°wÀ	ÑJÔJ�	à  4¤=×#6Ò#6°yÑ#AÔ#AÑAÀCÑGÈ$ÑNÐNrÄ   c                ó@   — | j                              |j        ¦  «        S r  )rŸ  Úformat_collationÚ	collation©r  rÇ  rÉ  s      rÂ   Úvisit_collationzSQLCompiler.visit_collation
  s   € ØŒ}×-Ò-¨gÔ.?Ñ@Ô@Ð@rÄ   c                ó   — |j         S r  ©rú   )r  Ú
fromclauserÐ  s      rÂ   Úvisit_fromclausezSQLCompiler.visit_fromclause
  s
   € ØŒÐrÄ   c                ó   — |j         S r  rÄ  )r  rx  rÐ  s      rÂ   Úvisit_indexzSQLCompiler.visit_index
  s
   € ØŒzÐrÄ   c                óZ   — ||d<   | j         |d<    | j        j        j        |j        fi |¤ŽS )NÚtype_expressionr«  )rŸ  r¦  Útype_compiler_instancer±  rþ   )r  Ú
typeclauserÉ  s      rÂ   Úvisit_typeclausezSQLCompiler.visit_typeclause
  sH   € Ø *ˆÐÑØ$(¤MˆÐ Ñ!Ø:ˆtŒ|Ô2Ô:ØŒOð
ð 
Ø!ð
ð 
ð 	
rÄ   c                óJ   — | j         j        r|                     dd¦  «        }|S ©Nr  ú%%©rŸ  Ú_double_percentsÚreplace©r  Útexts     rÂ   Úpost_process_textzSQLCompiler.post_process_text
  ó'   € ØŒ=Ô)ð 	+Ø—<’<  TÑ*Ô*ˆDØˆrÄ   c                óJ   — | j         j        r|                     dd¦  «        }|S rÏ  rÑ  rÔ  s     rÂ   r³  z!SQLCompiler.escape_literal_column$
  r×  rÄ   c           	     ó  ‡ ‡‡— ˆˆ ˆfd„}‰ j         sd‰ _        |r |d d ‰ft          j        ¦  «         t                               d„ t                               |‰                      ‰j        ¦  «        ¦  «        ¦  «        S )Nc                óŽ   •— |                       d¦  «        }|‰j        v r ‰j        ‰j        |         fi ‰¤ŽS  ‰j        |fi ‰¤ŽS r¹  )rˆ   Ú_bindparamsr±  Úbindparam_string)r˜  rú   rÉ  r  Ú
textclauses     €€€rÂ   Údo_bindparamz2SQLCompiler.visit_textclause.<locals>.do_bindparam*
  s]   ø€ Ø—7’7˜1‘:”:ˆDØ�zÔ-Ð-Ð-Ø#�t”| JÔ$:¸4Ô$@ÐGÐGÀBÐGÐGÐGà,�tÔ,¨TÐ8Ð8°RÐ8Ð8Ð8rÄ   Tc                ó,   — |                       d¦  «        S r¹  rº  )r˜  s    rÂ   r½  z.SQLCompiler.visit_textclause.<locals>.<lambda><
  s   € �a—g’g˜a‘j”j€ rÄ   )	r†  r-  r%   ÚNULLTYPEÚBIND_PARAMS_ESCr¨  ÚBIND_PARAMSrÖ  rÕ  )r  rÝ  rœ  rÉ  rÞ  s   `` ` rÂ   Úvisit_textclausezSQLCompiler.visit_textclause)
  s©   øøø€ ð	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð Œzð 	$Ø#ˆDÔàð 	Lð Ð˜d D¨:¨-½Ô9JÑKÔKÐKõ ×"Ò"Ø Ð Ý�OŠOØ˜d×4Ò4°Z´_ÑEÔEñô ñ
ô 
ð 	
rÄ   c                óØ  — | j          }|r| j        n| j         d         }t          ¦   «         t          ¦   «         |dœ}| j                              |¦  «         |j        r|                      ||¦  «         |p1|dk    o|                     dd¦  «        p|                     dd¦  «        }|r[|j        x| _        | _	        |j         ot          |j        ¦  «        | _        |j        D ]}	|                      |	d| j        ¬¦  «         Œ  | j        |j        fi |¤Ž}
| j        r1|st#          | j         ¦  «        nd }|                      |¬	¦  «        |
z   }
| j                              d¦  «         |
S )
Nrƒ  ©r  r  r$   r   r   Fr  T)r‚  rœ  ©Únesting_level)r†  Ú_default_stack_entryrq   r›  Ú_independent_ctesÚ_dispatch_independent_ctesr¥  rd  r8  r6  r  Úcolumn_argsr9  r±  Ú_add_to_result_maprÇ  rJ  r±  Ú_render_cte_clauser|  )r  ÚtafÚcompound_indexry  rÉ  Útoplevelr”  Ú	new_entryÚpopulate_result_mapr|  rÕ  rç  s               rÂ   Úvisit_textual_selectz SQLCompiler.visit_textual_selectB
  s¾  € ð ”z�>ˆØ-5ÐI�Ô)Ð)¸4¼:Àb¼>ˆõ  #™uœuÝ™EœEØð*
ð *
ˆ	ð
 	Œ
×Ò˜)Ñ$Ô$Ð$àÔ ð 	5Ø×+Ò+¨C°Ñ4Ô4Ð4ð ð >à !Ò#ð EØ—I’IÐ<¸eÑDÔDð>ð
 �yŠyÐ5°uÑ=Ô=ð 	ð ð 	ð ”ðˆDÔ!ØÔ-ð
 47´>Ð/Að 0ÅdØ”ñGô GˆDÔ,ð ”_ð ð �Ø—’ØØ*.Ø&*Ô&=ð ñ ô ð ð ð ˆtŒ|˜CœKÐ.Ð.¨2Ð.Ð.ˆØŒ9ð 	OØ3;ÐE�C ¤
™OœO˜OÀˆMØ×*Ò*¸Ð*ÑGÔGÈ$ÑNˆDàŒ
�Š�rÑÔÐàˆrÄ   c                ó   — dS ©NÚNULLr¾   ©r  r"  rÉ  s      rÂ   Ú
visit_nullzSQLCompiler.visit_nullv
  ó   € ØˆvrÄ   c                ó"   — | j         j        rdS dS )Nr€   Ú1©r¦  Úsupports_native_booleanr÷  s      rÂ   Ú
visit_truezSQLCompiler.visit_truey
  s   € ØŒ<Ô/ð 	Ø�6à�3rÄ   c                ó"   — | j         j        rdS dS )Nr†   Ú0rü  r÷  s      rÂ   Úvisit_falsezSQLCompiler.visit_false
  s   € ØŒ<Ô/ð 	Ø�7à�3rÄ   c                ó^   ‡ ‡— |                      d„ ˆˆ fd„|D ¦   «         D ¦   «         ¦  «        S )Nc              3  ó   K  — | ]}|¯|V — Œ	d S r  r¾   ©rÀ   Úss     rÂ   r2  z7SQLCompiler._generate_delimited_list.<locals>.<genexpr>†
  s<   è è € ð 
ð 
àØð
Øð
ð 
ð 
ð 
ð 
ð 
rÄ   c              3  ó4   •K  — | ]} |j         ‰fi ‰¤ŽV — Œd S r  rÒ  ©rÀ   r|  rÉ  r  s     €€rÂ   r2  z7SQLCompiler._generate_delimited_list.<locals>.<genexpr>ˆ
  s9   øè è € ÐIÐI¸1Ð*�aÔ*¨4Ð6Ð6°2Ð6Ð6ÐIÐIÐIÐIÐIÐIrÄ   ©ry   )r  r   Ú	separatorrÉ  s   `  `rÂ   Ú_generate_delimited_listz$SQLCompiler._generate_delimited_list…
  sM   øø€ Ø�~Š~ð 
ð 
àIÐIÐIÐIÐIÀÐIÑIÔIð
ñ 
ô 
ñ 
ô 
ð 	
rÄ   c                óZ  ‡ ‡— t           j                             t          j        t           j        j        t           j        j        |¦  «        \  }}|dk    r |d         j        ‰ fi ‰¤ŽS t          t          j                 }| 
                    d„ ˆˆ fd„|D ¦   «         D ¦   «         ¦  «        S )Nr   r   c              3  ó   K  — | ]}|¯|V — Œ	d S r  r¾   r  s     rÂ   r2  z;SQLCompiler._generate_delimited_and_list.<locals>.<genexpr>—
  s<   è è € ð "ð "àØð"Øð"ð "ð "ð "ð "ð "rÄ   c              3  ó4   •K  — | ]} |j         ‰fi ‰¤ŽV — Œd S r  rÒ  r  s     €€rÂ   r2  z;SQLCompiler._generate_delimited_and_list.<locals>.<genexpr>™
  s9   øè è € ÐLÐL¸qÐ.˜!Ô.¨tÐ:Ð:°rÐ:Ð:ÐLÐLÐLÐLÐLÐLrÄ   )r   ÚBooleanClauseListÚ_process_clauses_for_booleanr!   Úand_ÚTrue_Ú
_singletonÚFalse_rÓ  r™  ry   )r  ÚclausesrÉ  Úlccr	  s   ` `  rÂ   Ú_generate_delimited_and_listz(SQLCompiler._generate_delimited_and_listŒ
  s·   øø€ ÝÔ1×NÒNÝŒNÝŒNÔ%ÝŒOÔ&Øñ	
ô 
‰ˆˆWð �!Š8ˆ8Ø0�7˜1”:Ô0°Ð<Ð<¸Ð<Ð<Ð<å!¥)¤.Ô1ˆIØ—>’>ð "ð "àLÐLÐLÐLÐLÀGÐLÑLÔLð"ñ "ô "ñ ô ð rÄ   c                ó$   — d | j         |fi |¤Žz  S ©Nú(%s))Úvisit_clauselist)r  Ú
clauselistrÉ  s      rÂ   Úvisit_tuplezSQLCompiler.visit_tuple�
  s#   € ØÐ-˜Ô-¨jÐ?Ð?¸BÐ?Ð?Ñ?Ð?rÄ   c                óf   — |j         }|€d}nt          |j                  } | j        |j        |fi |¤ŽS ©Nr!  )rK  r™  r
  r  )r  r  rÉ  Úseps       rÂ   r  zSQLCompiler.visit_clauselist 
  sC   € ØÔ!ˆØˆ;ØˆCˆCå˜JÔ/Ô0ˆCà,ˆtÔ,¨ZÔ-?ÀÐKÐKÈÐKÐKÐKrÄ   c                óô   — |j         }|                      |dd ¦  «        }|r
 |||fi |¤ŽS 	 t          |         }d|d<    | j        |j        |fi |¤ŽS # t
          $ r}t          j        | |¦  «        |‚d }~ww xY w)NÚexpression_clauselistTÚ_in_operator_expression)rK  Ú_get_operator_dispatchr™  r
  r  r„  r8   rÅ  )r  r  rÉ  Ú	operator_ÚdispÚopstringrÈ  s          rÂ   Úvisit_expression_clauselistz'SQLCompiler.visit_expression_clauselist©
  sÍ   € ØÔ'ˆ	à×*Ò*ØÐ.°ñ
ô 
ˆð ð 	5Ø�4˜
 IÐ4Ð4°Ð4Ð4Ð4ð	Ý  Ô+ˆHð -1ˆBÐ(Ñ)Ø0�4Ô0ØÔ" Hðð Ø02ðð ð øõ	 ð 	Lð 	Lð 	LÝÔ1°$¸	ÑBÔBÈÐKøøøøð	Løøøs   ¬A Á
A7ÁA2Á2A7c                ó  — d}|j         �| |j         j        | fi |¤Ždz   z  }|j        D ].\  }}|d |j        | fi |¤Žz   dz    |j        | fi |¤Žz   dz   z  }Œ/|j        �|d |j        j        | fi |¤Žz   dz   z  }|dz  }|S )NzCASE r!  zWHEN z THEN zELSE ÚEND)rÍ  rÓ  ÚwhensÚelse_)r  ÚclauserÐ  rÁ   Úcondrc  s         rÂ   Ú
visit_casezSQLCompiler.visit_case¼
  sñ   € ØˆØŒ<Ð#ØÐ0�”Ô0°Ð@Ð@¸Ð@Ð@À3ÑFÑFˆAØ"œLð 	ð 	‰LˆD�&ØØØ)�$Ô)¨$Ð9Ð9°&Ð9Ð9ñ:àñð ,�&Ô+¨DÐ;Ð;°FÐ;Ð;ñ<ð ñ	ñˆAˆAð Œ<Ð#ØØÐ9˜&œ,Ô9¸$ÐIÐIÀ&ÐIÐIÑIÈCÑOñˆAð 	
ˆU‰
ˆØˆrÄ   c                ó(   —  |j         j        | fi |¤ŽS r  )Útyped_expressionrÓ  )r  Útype_coercerÉ  s      rÂ   Úvisit_type_coercezSQLCompiler.visit_type_coerceÏ
  s    € Ø>ˆ{Ô+Ô>¸tÐJÐJÀrÐJÐJÐJrÄ   c                óæ   —  |j         j        | fi |¤Ž}t          j        d|¦  «        }d |j        j        | fi |¤Ž›d|r|                     d¦  «        n|›d|r|                     d¦  «        nd›�S )Nz(.*)( COLLATE .*)zCAST(rÓ   r   r  r7   r–  )rÌ  rÓ  rR  Úmatchr,  rˆ   )r  r   rÐ  Útype_clauser4  s        rÂ   Ú
visit_castzSQLCompiler.visit_castÒ
  s‘   € Ø8�d”oÔ8¸ÐHÐHÀÐHÐHˆÝ”Ð,¨kÑ:Ô:ˆˆà*ˆDŒKÔ*¨4Ð:Ð:°6Ð:Ð:Ð:Ð:Ø#Ð4ˆE�KŠK˜‰NŒNˆN¨Ð4Ð4Ø#Ð+ˆE�KŠK˜‰NŒNˆN¨Ð+ð
ð 	
rÄ   c           
     ód  — |d         t           j        u rdn€|d         t           j        u rdnj|d         dk     r6 | j        t          j        t          |d         ¦  «        ¦  «        fi |¤Ž›d�n( | j        t          j        |d         ¦  «        fi |¤Ž›d�›d|d         t           j        u rdn€|d         t           j        u rdnj|d         dk     r6 | j        t          j        t          |d         ¦  «        ¦  «        fi |¤Ž›d�n( | j        t          j        |d         ¦  «        fi |¤Ž›d�›�S )	Nr   zUNBOUNDED PRECEDINGzCURRENT ROWz
 PRECEDINGz
 FOLLOWINGrÎ   r   zUNBOUNDED FOLLOWING)r   ÚRANGE_UNBOUNDEDÚRANGE_CURRENTr±  ÚliteralÚabs)r  Úrange_rÉ  s      rÂ   Ú_format_frame_clausez SQLCompiler._format_frame_clauseÛ
  s’  € ð �aŒy�HÔ4Ð4Ð4ð "Ð!ð �aŒy�HÔ2Ð2Ð2ð �ð �aŒy˜1Š}ˆ}ð ˆtŒ|�HÔ,­S°¸´©^¬^Ñ<Ô<ÐCÐCÀÐCÐCÐCÐCðFð Fð ˆtŒ|�HÔ,¨V°A¬YÑ7Ô7Ð>Ð>¸2Ð>Ð>Ð>Ð>ðAðAð Að �aŒy�HÔ4Ð4Ð4ð "Ð!ð �aŒy�HÔ2Ð2Ð2ð �ð �aŒy˜1Š}ˆ}ð ˆtŒ|�HÔ,­S°¸´©^¬^Ñ<Ô<ÐCÐCÀÐCÐCÐCÐCðFð Fð ˆtŒ|�HÔ,¨V°A¬YÑ7Ô7Ð>Ð>¸2Ð>Ð>Ð>Ð>ðAðAð
ð 	
rÄ   c                ó(  ‡ ‡—  |j         j        ‰ fi ‰¤Ž}|j        rd ‰ j        |j        fi ‰¤Žz  }n |j        rd ‰ j        |j        fi ‰¤Žz  }nd }|›dd                     ˆˆ fd„d|j        fd|j        ffD ¦   «         |r|gng z   ¦  «        ›d�S )	NzRANGE BETWEEN %szROWS BETWEEN %sz OVER (r!  c           	     ó^   •— g | ])\  }}|®t          |¦  «        ¯|›d |j        ‰fi ‰¤Ž›�‘Œ*S )Nz BY )r±  rÓ  )rÀ   Úwordr,  rÐ  r  s      €€rÂ   r}  z*SQLCompiler.visit_over.<locals>.<listcomp>  sc   ø€ ð ð ð ñ %˜˜fð Ð)­c°&©k¬kÐ)ð �t�tÐ6˜VÔ6°tÐFÐF¸vÐFÐFÐFðHð *Ð)Ð)rÄ   Ú	PARTITIONÚORDERr  )rÇ  rÓ  r<  r=  Úrowsry   Úpartition_byÚorder_by)r  ÚoverrÐ  rÕ  r<  s   ` `  rÂ   Ú
visit_overzSQLCompiler.visit_overñ
  s$  øø€ Ø.ˆtŒ|Ô.¨tÐ>Ð>°vÐ>Ð>ˆØŒ;ð 		Ø'Ð*C¨$Ô*CØ”ð+ð +Ø%ð+ð +ñ ˆFˆFð ŒYð 	Ø&Ð)B¨Ô)BØ”	ð*ð *Ø#ð*ð *ñ ˆFˆFð ˆFð ˆDˆDØ�HŠHðð ð ð ð ð % dÔ&7Ð8Ø  $¤-Ð0ð)ðñ ô ð  &Ð-�F�8�8¨2ñ	/ñô ð ð ð
ð 	
rÄ   c                óV   —  |j         j        | fi |¤Ž›d |j        j        | fi |¤Ž›d�S )Nz WITHIN GROUP (ORDER BY r  )rÇ  rÓ  rE  )r  ÚwithingrouprÐ  s      rÂ   Úvisit_withingroupzSQLCompiler.visit_withingroup  sN   € à2ˆKÔÔ2°4ÐBÐB¸6ÐBÐBÐBÐBØ3ˆKÔ Ô3°DÐCÐC¸FÐCÐCÐCÐCð
ð 	
rÄ   c                óV   —  |j         j        | fi |¤Ž›d |j        j        | fi |¤Ž›d�S )Nz FILTER (WHERE r  )ÚfuncrÓ  Ú	criterion)r  Ú
funcfilterrÐ  s      rÂ   Úvisit_funcfilterzSQLCompiler.visit_funcfilter  sM   € à.ˆJŒOÔ.¨tÐ>Ð>°vÐ>Ð>Ð>Ð>Ø3ˆJÔ Ô3°DÐCÐC¸FÐCÐCÐCÐCð
ð 	
rÄ   c                ó€   — | j                              |j        |j        ¦  «        }d|›d |j        j        | fi |¤Ž›d�S )NzEXTRACT(rÒ   r  )Úextract_mapr¥  Úfieldr"  rÓ  )r  ÚextractrÐ  rR  s       rÂ   Úvisit_extractzSQLCompiler.visit_extract  sQ   € ØÔ ×$Ò$ W¤]°G´MÑBÔBˆˆàˆEˆEØ+ˆGŒLÔ+¨DÐ;Ð;°FÐ;Ð;Ð;Ð;ð
ð 	
rÄ   c                óT   —  | j         |j        fi |¤Ž} | j        |fi |¤Ž}d|›d|›�S )Nr  z).)Úvisit_functionÚfnr½  )r  rÇ  rÉ  Úcompiled_fnÚcompiled_cols        rÂ   Úvisit_scalar_function_columnz(SQLCompiler.visit_scalar_function_column!  sK   € Ø)�dÔ)¨'¬*Ð;Ð;¸Ð;Ð;ˆØ(�tÔ(¨Ð7Ð7°BÐ7Ð7ˆˆØ'˜K˜K¨¨Ð6Ð6rÄ   rL  úFunction[Any]c                ó€  ‡ ‡— |� ||j         |j         d|j        ¦  «         t          ‰ d|j                              ¦   «         z  d ¦  «        }|r
 ||fi |¤Ž}nÙt                               |                     ¦   «         j        d ¦  «        Š‰r|j        r‰dz  Šn\|j         Š‰ j	         
                    ‰¦  «        st          ‰t          j        ¦  «        r‰ j	                             ‰¦  «        n‰Š‰dz   Šd                     ˆˆ fd„|j        D ¦   «         ‰gz   ¦  «        d ‰ j        |fi |¤Žiz  }|j        r|dz  }|S )Nr¾   zvisit_%s_funcz%(expr)sr  c                ó°   •— g | ]R}‰j                              |¦  «        st          ‰t          j        ¦  «        r‰j                              |¦  «        n|‘ŒSS r¾   )rŸ  Ú_requires_quotes_illegal_charsr¯  r   r1   r´  )rÀ   r#  rú   r  s     €€rÂ   r}  z.SQLCompiler.visit_function.<locals>.<listcomp>D  so   ø€ ð ð ð ð ð	  œ=×GÒGÈÑLÔLð!å% d­HÔ,@ÑAÔAð!˜œ×+Ò+¨CÑ0Ô0Ð0ð !ðð ð rÄ   r"  z WITH ORDINALITY)rú   rþ   ÚgetattrÚlowerrä   r¥  Ú_deannotaterº  Ú	_has_argsrŸ  r^  r¯  r   r1   r´  ry   ÚpackagenamesÚfunction_argspecÚ_with_ordinality)r  rL  rœ  rÐ  r%  rÕ  rú   s   `     @rÂ   rV  zSQLCompiler.visit_function&  s¡  øø€ ð Ð(ØÐ˜dœi¨¬°B¸¼	ÑBÔBÐBå�t˜_¨t¬y¯ªÑ/@Ô/@Ñ@À$ÑGÔGˆð ð 	@Ø�4˜Ð'Ð' Ð'Ð'ˆDˆDå—=’= ×!1Ò!1Ñ!3Ô!3Ô!=¸tÑDÔDˆDØð )Ø”>ð 'Ø˜JÑ&�Døà”y�ð ”}×CÒCÀDÑIÔIðå! $­Ô(<Ñ=Ô=ð�D”M×'Ò'¨Ñ-Ô-Ð-ð ð	 ð ˜jÑ(�Ø—8’8ðð ð ð ð ð  $Ô0ðñ ô ð �&ñ	ñô ð Ð.˜Ô.¨tÐ>Ð>°vÐ>Ð>Ð?ñ@ˆDð Ô ð 	'ØÐ&Ñ&ˆDØˆrÄ   c                ó6   — |                       |j        ¦  «        S r  )Úvisit_sequenceÚsequence)r  Ú
next_valuerÉ  s      rÂ   Úvisit_next_value_funcz!SQLCompiler.visit_next_value_funcT  s   € Ø×"Ò" :Ô#6Ñ7Ô7Ð7rÄ   c                ó:   — t          d| j        j        z  ¦  «        ‚)Nz2Dialect '%s' does not support sequence increments.©rÍ  r¦  rú   )r  rh  rÉ  s      rÂ   rg  zSQLCompiler.visit_sequenceW  s$   € Ý!Ø@ØŒlÔñ ñ
ô 
ð 	
rÄ   c                ó(   —  |j         j        | fi |¤ŽS r  )Úclause_exprrÓ  )r  rL  rÐ  s      rÂ   rd  zSQLCompiler.function_argspec]  s    € Ø2ˆtÔÔ2°4ÐBÐB¸6ÐBÐBÐBrÄ   c           
     óH  ‡ ‡‡— ‰ j          } |j        |‰ fi ‰¤Ž}|r‰ j        s|‰ _        |j        }|r‰ j        n‰ j         d         }|p| o|                     dd¦  «        }	|dk    r||d<   ‰ j                              |d         |d         |||	dœ¦  «         |j        r‰                      |‰¦  «         ‰ j	        |j
                 }
d	|
z   d	z                        ˆˆˆ fd
„t          |j        ¦  «        D ¦   «         ¦  «        }d‰d<   | ‰ j        |fi t          dd‰i‰¤Ž¤Žz  }| ‰ j        |fi ‰¤Žz  }|j        r| ‰ j        |fi ‰¤Žz  }‰ j        r2|st)          ‰ j         ¦  «        nd }‰                      |d¬¦  «        |z   }‰ j                              d¦  «         |S )Nrƒ  r   Fr   r!  r  r  )r  r  r$   r  r   r!  c              3  ó@   •K  — | ]\  }} |j         ‰f‰|d œ‰¤ŽV — ŒdS ))ry  rï  NrÒ  )rÀ   r  r|  ry  rÐ  r  s      €€€rÂ   r2  z4SQLCompiler.visit_compound_select.<locals>.<genexpr>†  sf   øè è € ð ð ñ �A�qð %�Ô$ØðØ!'¸ðð Ø=Cðð ðð ð ð ð ð rÄ   r¬  ry  T©rç  Úinclude_following_stackr¾   )r†  Ú_compile_state_factoryr  r'  rè  r¥  r›  ré  rê  Úcompound_keywordsÚkeywordry   r  ÚselectsÚgroup_by_clauserí  Úorder_by_clauseÚ_has_row_limiting_clauseÚ_row_limit_clauserJ  r±  rí  r|  )r  Úcsry  rï  rÐ  rð  r  Úcompound_stmtr”  Úneed_result_mapru  rÕ  rç  s   ` ` `        rÂ   Úvisit_compound_selectz!SQLCompiler.visit_compound_select`  se  øøø€ ð ”z�>ˆà1˜Ô1°"°dÐEÐE¸fÐEÐEˆàð 	/˜DÔ.ð 	/Ø!.ˆDÔà%Ô/ˆà-5ÐI�Ô)Ð)¸4¼:Àb¼>ˆØ"ð 
ØÐð AØ—	’	Ð8¸%Ñ@Ô@ð 	ð ˜QÒÐØ "ˆE�*ÑàŒ
×Òà#(Ð):Ô#;Ø % nÔ 5Ø Ø!.Ø0?ðð ñ	
ô 	
ð 	
ð Ô*ð 	CØ×+Ò+¨M¸6ÑBÔBÐBàÔ(¨¬Ô4ˆà�g‘ Ñ#×)Ò)ðð ð ð ð ð õ & b¤jÑ1Ô1ð	ñ ô ñ
ô 
ˆð #(ˆˆÑØÐ$�Ô$ RÐIÐI­4Ð+HÐ+H°vÐ+HÀÐ+HÐ+HÐIÐIÑIˆØÐ$�Ô$ RÐ2Ð2¨6Ð2Ð2Ñ2ˆØÔ&ð 	9ØÐ*�DÔ*¨2Ð8Ð8°Ð8Ð8Ñ8ˆDàŒ9ð 	Ø3;ÐE�C ¤
™OœO˜OÀˆMà×'Ò'Ø"/Ø,0ð (ñ ô ð ñ	ð ð 	Œ
�Š�rÑÔÐØˆrÄ   c                óH   — |j         � | j        |fi |¤ŽS  | j        |fi |¤ŽS r  )Ú_fetch_clauseÚfetch_clauseÚlimit_clause)r  r{  rÐ  s      rÂ   rz  zSQLCompiler._row_limit_clause¡  sA   € ØÔÐ'Ø$�4Ô$ RÐ2Ð2¨6Ð2Ð2Ð2à$�4Ô$ RÐ2Ð2¨6Ð2Ð2Ð2rÄ   c                óP   — d|j         ›d|›|rd|z   nd›�}t          | |d ¦  «        S )NÚvisit_r  r–  )r   r_  )r  r$  Ú
qualifier1Ú
qualifier2Úattrnames        rÂ   r#  z"SQLCompiler._get_operator_dispatch§  sE   € € àÔÐÐØˆJØ *Ð2ˆC�*ÑÐ°Ð2ð
ˆõ
 �t˜X tÑ,Ô,Ð,rÄ   c                óÐ  — |�||fz  }||d<   ||d<   |j         rg|j        rt          j        d¦  «        ‚|                      |j         dd¦  «        }|r |||j         fi |¤ŽS  | j        |t          |j                  fi |¤ŽS |j        rL|                      |j        dd¦  «        }|r |||j        fi |¤ŽS  | j        |t          |j                 fi |¤ŽS t          j        d¦  «        ‚)Nrœ  r�  zFUnary expression does not support operator and modifier simultaneouslyÚunaryrK  Úmodifierz,Unary expression has no operator or modifier)rK  rŠ  r8   rî  r#  Ú _generate_generic_unary_operatorr™  Ú _generate_generic_unary_modifier)r  r‰  rœ  r�  rÉ  r%  s         rÂ   Úvisit_unaryzSQLCompiler.visit_unary¯  sk  € ð Ð(Ø 5 (Ñ*ÐØ&7ˆBÐ"Ñ#Ø'9ˆBÐ#Ñ$àŒ>ð 	ØŒ~ð ÝÔ&ð2ñô ð ð ×.Ò.Ø” ¨ñô ˆDð ð Ø�t˜E 5¤>Ð8Ð8°RÐ8Ð8Ð8à<�tÔ<Ø�9 U¤^Ô4ðð Ø8:ðð ð ð Œ^ð 	Ø×.Ò.Ø” ¨ñô ˆDð ð Ø�t˜E 5¤>Ð8Ð8°RÐ8Ð8Ð8à<�tÔ<Ø�9 U¤^Ô4ðð Ø8:ðð ð õ Ô"Ø>ñô ð rÄ   c                ó\  — | j         j        rw | j        |j        fi |¤Ždz    | j        t	          j        |j        |j        j        j        t          j
        u r|j        j        nt          j
        ¦   «         ¦  «        fi |¤Žz   S  | j        |j        fi |¤Ždz    | j        |j        fi |¤Žz   S )Nú / )r¦  Údiv_is_floordivr±  rz   r   ÚCastrŽ   rþ   Ú_type_affinityr%   ÚNumeric©r  r“   rK  rÉ  s       rÂ   Úvisit_truediv_binaryz SQLCompiler.visit_truediv_binaryÕ  så   € ØŒ<Ô'ð 	à�”˜Vœ[Ð/Ð/¨BÐ/Ð/Øñð �$”,Ý”MØœà!œ<Ô,Ô;½xÔ?OÐOÐOð œÔ)Ð)å%Ô-Ñ/Ô/ñ	ô ðð ð ðð ñ	ðð" �”˜Vœ[Ð/Ð/¨BÐ/Ð/Øñà�$”,˜vœ|Ð2Ð2¨rÐ2Ð2ñ3ðrÄ   c                ó  — | j         j        rG|j        j        j        t
          j        u r* | j        |j        fi |¤Ždz    | j        |j        fi |¤Žz   S d | j        |j        fi |¤Ždz    | j        |j        fi |¤Žz   z  S )Nr�  z	FLOOR(%s))	r¦  r�  rŽ   rþ   r’  r%   ÚIntegerr±  rz   r”  s       rÂ   Úvisit_floordiv_binaryz!SQLCompiler.visit_floordiv_binaryí  s¹   € àŒLÔ(ð	à”Ô!Ô0µHÔ4DÐDÐDð �”˜Vœ[Ð/Ð/¨BÐ/Ð/Øñà�$”,˜vœ|Ð2Ð2¨rÐ2Ð2ñ3ðð Ø�”˜Vœ[Ð/Ð/¨BÐ/Ð/Øñà�$”,˜vœ|Ð2Ð2¨rÐ2Ð2ñ3ñð rÄ   c                óz   — |j         s| j        j        r | j        |j        fi |¤ŽS d | j        |j        fi |¤Žz  S )Nz%s = 1©Ú_is_implicitly_booleanr¦  rý  r±  rÇ  ©r  rÇ  rK  rÉ  s       rÂ   Úvisit_is_true_unary_operatorz(SQLCompiler.visit_is_true_unary_operatorþ  s[   € àÔ*ð	BàŒ|Ô3ð	Bð  �4”< ¤Ð6Ð6°2Ð6Ð6Ð6à˜l˜dœl¨7¬?ÐAÐA¸bÐAÐAÑAÐArÄ   c                ó€   — |j         s| j        j        rd | j        |j        fi |¤Žz  S d | j        |j        fi |¤Žz  S )NúNOT %sz%s = 0rš  rœ  s       rÂ   Úvisit_is_false_unary_operatorz)SQLCompiler.visit_is_false_unary_operator  s`   € àÔ*ð	BàŒ|Ô3ð	Bð ˜l˜dœl¨7¬?ÐAÐA¸bÐAÐAÑAÐAà˜l˜dœl¨7¬?ÐAÐA¸bÐAÐAÑAÐArÄ   c                óJ   — d|                       |t          j        ¬¦  «        z  S )NrŸ  )Úoverride_operator)Úvisit_binaryr!   Úmatch_opr”  s       rÂ   Úvisit_not_match_op_binaryz%SQLCompiler.visit_not_match_op_binary  s.   € Ø˜$×+Ò+Ø¥iÔ&8ð ,ñ 
ô 
ñ 
ð 	
rÄ   c                ó<   — d | j         |t          |         fi |¤Žz  S r  )Ú_generate_generic_binaryr™  r”  s       rÂ   Úvisit_not_in_op_binaryz"SQLCompiler.visit_not_in_op_binary  s:   € ð Ð5˜Ô5Ø•I˜hÔ'ð
ð 
Ø+-ð
ð 
ñ 
ð 	
rÄ   c                ó@  — |t           j        u r7t          |¦  «        dk    r"dd                     d„ |D ¦   «         ¦  «        z  S dS |t           j        u r7t          |¦  «        dk    r"dd                     d„ |D ¦   «         ¦  «        z  S dS |                      |¦  «        S )	Nr   z(%s)) OR (1 = 1rÑ   c              3  ó   K  — | ]}d V — ŒdS ©rö  Nr¾   ©rÀ   rÇ  s     rÂ   r2  z6SQLCompiler.visit_empty_set_op_expr.<locals>.<genexpr>!  ó"   è è € Ð:Ð:¨˜fÐ:Ð:Ð:Ð:Ð:Ð:rÄ   zNULL) OR (1 = 1z(%s)) AND (1 != 1c              3  ó   K  — | ]}d V — ŒdS r«  r¾   r¬  s     rÂ   r2  z6SQLCompiler.visit_empty_set_op_expr.<locals>.<genexpr>(  r­  rÄ   zNULL) AND (1 != 1)r!   Ú	not_in_opr±  ry   Úin_opÚvisit_empty_set_expr)r  r  Ú	expand_oprÉ  s       rÂ   Úvisit_empty_set_op_exprz#SQLCompiler.visit_empty_set_op_expr  sµ   € Ø�	Ô+Ð+Ð+Ý�5‰zŒz˜AŠ~ˆ~Ø(Ø—I’IÐ:Ð:°EÐ:Ñ:Ô:Ñ:Ô:ñð ð )Ð(Ø�)œ/Ð)Ð)Ý�5‰zŒz˜AŠ~ˆ~Ø*Ø—I’IÐ:Ð:°EÐ:Ñ:Ô:Ñ:Ô:ñð ð +Ð*à×,Ò,¨UÑ3Ô3Ð3rÄ   c                ó:   — t          d| j        j        z  ¦  «        ‚)Nz3Dialect '%s' does not support empty set expression.rl  )r  Úelement_typesrÉ  s      rÂ   r±  z SQLCompiler.visit_empty_set_expr/  s$   € Ý!ØAØŒlÔñ ñ
ô 
ð 	
rÄ   c                óä  ‡ ‡‡	‡
— ‰j                              ‰ j        ¦  «        }|sb|j        r8‰ j        j        rdnd‰                      ‰j         j        ‰j        ¦  «        z   }�n‰‰                      ‰j         g‰j        ¦  «        }�nf|j        sI|j        r™t          |d         t          j        ¦  «        ryt          |d         t          t          f¦  «        sW|j        rt          d¦  «        ‚‰ j        j        rdndd                     ˆˆ fd„t#          |¦  «        D ¦   «         ¦  «        z   }n¿|r›‰ j        }|                     |¦  «        }|r|                     d¦  «        s
J d¦   «         ‚|                     d¦  «                             d	¦  «        }|d
         |d         cŠ	Š
d                     ˆ	ˆ
ˆˆ fd„|D ¦   «         ¦  «        }n"d                     ˆˆ fd„|D ¦   «         ¦  «        }d|fS )NúVALUES r–  r   z?bind_expression() on TupleType not supported with literal_bindsrÑ   c           	   3  ó–   •K  — | ]C\  }}d d                      ˆfd„t          |‰j        j        ¦  «        D ¦   «         ¦  «        z  V — ŒDdS )r  rÑ   c              3  óJ   •K  — | ]\  }}‰                      ||¦  «        V — Œd S r  r  )rÀ   rÍ  Ú
param_typer  s      €rÂ   r2  z[SQLCompiler._literal_execute_expanding_parameter_literal_binds.<locals>.<genexpr>.<genexpr>[  sK   øè è € ð ð á-˜E :ð ×1Ò1°%¸ÑDÔDðð ð ð ð ð rÄ   N)ry   rï  rþ   rÓ  )rÀ   r  r  r8  r  s      €€rÂ   r2  zQSQLCompiler._literal_execute_expanding_parameter_literal_binds.<locals>.<genexpr>X  s�   øè è € ð ð ñ %�A�}ð à—I’Ið ð ð ð å14Ø)¨9¬>Ô+?ñ2ô 2ðñ ô ñ ô ñðð ð ð ð ð rÄ   r7   ú)unexpected format for expanding parameterr  r   r  c              3  óZ   •K  — | ]%}‰›‰                      |‰j        ¦  «        ›‰›�V — Œ&d S r  ©r  rþ   )rÀ   rÍ  r  r   r8  r  s     €€€€rÂ   r2  zQSQLCompiler._literal_execute_expanding_parameter_literal_binds.<locals>.<genexpr>n  s]   øè è € ð 3ð 3ð ð	  ˜Ø×1Ò1°%¸¼ÑHÔHÐHØ ˜ð	ð3ð 3ð 3ð 3ð 3ð 3rÄ   c              3  óN   •K  — | ]}‰                      |‰j        ¦  «        V — Œ d S r  r½  )rÀ   rÍ  r8  r  s     €€rÂ   r2  zQSQLCompiler._literal_execute_expanding_parameter_literal_binds.<locals>.<genexpr>x  sI   øè è € ð 3ð 3àð ×-Ò-¨e°Y´^ÑDÔDð3ð 3ð 3ð 3ð 3ð 3rÄ   r¾   )rþ   rü  r¦  rÒ  Útuple_in_valuesr³  rÓ  r²  Ú_isnullr¯  Úcollections_abcr   r¿   ÚbytesÚ_has_bind_expressionrÍ  ry   r  r.  Úsearchrˆ   r!  )r  r8  rÂ  Úbind_expression_templateÚtyp_dialect_implÚreplacement_expressionÚpost_compile_patternr˜  r#  r  r   s   ``       @@rÂ   Ú2_literal_execute_expanding_parameter_literal_bindsz>SQLCompiler._literal_execute_expanding_parameter_literal_binds5  s�  øøøø€ ð %œ>×AÒAÀ$Ä,ÑOÔOÐàð A	ð
  Ô.ð 
à!%¤Ô!=ÐE�I�IÀ2Ø×0Ò0Ø”NÔ(¨)Ô*=ñô ñ*Ð&Ñ&ð *.×)EÒ)EØ”^Ð$ iÔ&9ñ*ô *Ð&Ñ&ð Ô,ð 0	ØÔ$ð0	å˜6 !œ9¥oÔ&>Ñ?Ô?ð0	õ ˜v aœy­3µ¨,Ñ7Ô7ð0	ð
  Ô4ð Ý)ð$ñô ð ð "œ\Ô9ÐA�	�	¸rØ—	’	ð ð ð ð ð õ )2°&Ñ(9Ô(9ðñ ô ñ ô ñ&Ð"Ð"ð (ð Ø'+Ô'AÐ$Ø(×/Ò/Ð0HÑIÔI�Øð ?˜QŸWšWØñô ð ?ð ?à>ñ?ô ?ð ?ð —g’g˜a‘j”j×&Ò& tÑ,Ô,�Ø$'¨¤F¨C°¬FÐ!�˜Ø)-¯ªð 3ð 3ð 3ð 3ð 3ð 3ð 3ð "(ð3ñ 3ô 3ñ *ô *Ð&Ð&ð *.¯ªð 3ð 3ð 3ð 3ð 3à!'ð3ñ 3ô 3ñ *ô *Ð&ð
 Ð)Ð)Ð)rÄ   c                ó†  ‡ ‡‡‡‡‡‡	— ‰j         r‰                      ‰|¦  «        S ‰ j        }‰j                             |¦  «        Š	‰ j        r‰ j        Šn‰ j        Š‰ j        j        r‰	j	        r	ˆˆˆ ˆ	fd„Šnˆfd„Š|sRg Š‰	j
        r'‰                      ‰j        j        ‰j        ¦  «        }�n‰                      ‰j        g‰j        ¦  «        }nî‰	j
        sI‰	j        r£t          |d         t           j        ¦  «        rƒt          |d         t$          t&          f¦  «        sa‰	j        rJ ‚ˆfd„t+          |d¦  «        D ¦   «         Š|j        rdndd                     ˆˆfd	„t+          |¦  «        D ¦   «         ¦  «        z   }n=ˆfd
„t+          |d¦  «        D ¦   «         Šd                     ˆfd„‰D ¦   «         ¦  «        }‰|fS )Nc                óF   •— ‰                      ‰j        ‰‰d| iz  ¦  «        S ©Nrú   )Úrender_bind_castrþ   )rú   Úbind_templater8  r  rÆ  s    €€€€rÂ   Ú_render_bindtemplatezNSQLCompiler._literal_execute_expanding_parameter.<locals>._render_bindtemplate’  s/   ø€ Ø×,Ò,Ø”NØ$Ø! V¨T NÑ2ñô ð rÄ   c                ó   •— ‰d| iz  S rÌ  r¾   )rú   rÎ  s    €rÂ   rÏ  zNSQLCompiler._literal_execute_expanding_parameter.<locals>._render_bindtemplate›  s   ø€ Ø$¨° ~Ñ5Ð5rÄ   r   c                óZ   •— g | ]'\  }}t          |d ¦  «        D ]\  }}‰›d|›d|›�|f‘ŒŒ(S )r   r  r  )rÀ   r  r  r  rÍ  rú   s        €rÂ   r}  zDSQLCompiler._literal_execute_expanding_parameter.<locals>.<listcomp>¯  sh   ø€ ð ð ð á$�A�}Ý )¨-¸Ñ ;Ô ;ðð ñ �A�uð  $˜t˜t Q Q Q¨¨Ð*¨EÐ2ðð ð ð rÄ   r   r·  r–  rÑ   c              3  óŠ   •‡‡K  — | ];\  ŠŠd d                      ˆˆˆˆfd„t          ‰¦  «        D ¦   «         ¦  «        z  V — Œ<dS )r  rÑ   c              3  ór   •K  — | ]1\  }} ‰‰‰t          ‰¦  «        z  |z            d          ¦  «        V — Œ2dS )r   N)r±  )rÀ   r  rÍ  rÏ  r  r9  r  s      €€€€rÂ   r2  zMSQLCompiler._literal_execute_expanding_parameter.<locals>.<genexpr>.<genexpr>º  si   øè è € ð ð ñ %˜A˜uð -Ð,Ø% a­#¨mÑ*<Ô*<Ñ&<¸qÑ&@ÔAÀ!ÔDñô ðð ð ð ð ð rÄ   N)ry   r  )rÀ   r  r  rÏ  r9  s    @@€€rÂ   r2  zCSQLCompiler._literal_execute_expanding_parameter.<locals>.<genexpr>·  s”   øøøè è € ð ð ñ %�A�}ð à—I’Ið ð ð ð ð ð ð õ )2°-Ñ(@Ô(@ð	ñ ô ñ ô ñðð ð ð ð ð rÄ   c                ó(   •— g | ]\  }}‰›d |›�|f‘ŒS )r  r¾   )rÀ   r  rÍ  rú   s      €rÂ   r}  zDSQLCompiler._literal_execute_expanding_parameter.<locals>.<listcomp>Ä  s=   ø€ ð ð ð á�A�uð !˜D˜D ! !Ð$ eÐ,ðð ð rÄ   c              3  ó4   •K  — | ]\  }} ‰|¦  «        V — Œd S r  r¾   )rÀ   r1  rÍ  rÏ  s      €rÂ   r2  zCSQLCompiler._literal_execute_expanding_parameter.<locals>.<genexpr>È  sD   øè è € ð /ð /Ù.8¨c°5Ð$Ð$ SÑ)Ô)ð/ð /ð /ð /ð /ð /rÄ   )r+  rÉ  r¦  rþ   rü  r:  r4  r3  Ú_bind_typing_render_castsrÍ  rÒ  r³  rÓ  r²  rÀ  r¯  rÁ  r   r¿   rÂ  Ú	_is_arrayr  r¿  ry   )
r  rú   r8  rÂ  r¦  rÇ  rÏ  rÎ  r9  rÆ  s
   ```   @@@@rÂ   r*  z0SQLCompiler._literal_execute_expanding_parameter  s£  øøøøøøø€ ØÔ$ð 	Ø×JÒJØ˜6ñô ð ð ”,ˆØ$œ>×AÒAÀ'ÑJÔJÐàÔð 	.Ø Ô9ˆMˆMà Ô-ˆMð ŒLÔ2ð	6à Ô1ð	6ð
ð ð ð ð ð ð ð ð ð6ð 6ð 6ð 6ð 6ð ð ,	ØˆIØÔ.ð Ø)-×)EÒ)EØ”NÔ(¨)Ô*=ñ*ô *Ð&Ñ&ð *.×)EÒ)EØ”^Ð$ iÔ&9ñ*ô *Ð&Ð&ð Ô,ð !	ØÔ$ð!	å˜6 !œ9¥oÔ&>Ñ?Ô?ð!	õ ˜v aœy­3µ¨,Ñ7Ô7ð!	ð
 (Ô1Ð1Ð1Ð1ðð ð ð å(1°&¸!Ñ(<Ô(<ðñ ô ˆIð %Ô4Ð<�	�	¸"Ø—	’	ð ð ð ð ð õ )2°&Ñ(9Ô(9ðñ ô ñ ô ñ&Ð"Ð"ðð ð ð å )¨&°!Ñ 4Ô 4ðñ ô ˆIð &*§Y¢Yð /ð /ð /ð /Ø<Eð/ñ /ô /ñ &ô &Ð"ð Ð0Ð0Ð0rÄ   c           	     óF  — |rât          j        |j        ¦  «        rÉ|�l|d         }|j                             t          j        t          |j        j	        |gz   ¦  «        t          |j
        j	        |gz   ¦  «        ¦  «        ¦  «         n[|j                             t          j        t          |j        j	        ¦  «        t          |j
        j	        ¦  «        ¦  «        ¦  «         | j        rCt          |j        t          j        ¦  «        r$t          |j
        t          j        ¦  «        rd|d<   |p|j        }|                      |dd ¦  «        }	|	r
 |	||fi |¤ŽS 	 t           |         }
 | j        ||
f||dœ|¤ŽS # t$          $ r}t'          j        | |¦  «        |‚d }~ww xY w)NÚenclosing_lateralTr+  r“   )Úfrom_linterÚlateral_from_linter)r!   Úis_comparisonrK  rz  r,  rÀ  Úproductr*   rz   r+   rŽ   r2  r¯  r   rF   r#  r™  r§  r„  r8   rÅ  )r  r“   r¢  Úeager_groupingrÚ  rÛ  rÉ  rÙ  r$  r%  r&  rÈ  s               rÂ   r£  zSQLCompiler.visit_binaryÎ  s   € ð ð 	�9Ô2°6´?ÑCÔCð 	Ø"Ð.Ø$&Ð':Ô$;Ð!Ø#Ô)×0Ò0ÝÔ%Ý!Ø"œKÔ5Ð9JÐ8KÑKñô õ "Ø"œLÔ6Ð:KÐ9LÑLñô ñ	ô ñ	ô 	ð 	ð 	ð Ô!×(Ò(ÝÔ%Ý! &¤+Ô";Ñ<Ô<Ý! &¤,Ô"<Ñ=Ô=ñô ñô ð ð Ô ð	)å˜6œ;­Ô(>Ñ?Ô?ð	)õ ˜6œ<­Ô)?Ñ@Ô@ð	)ð
 %)ˆBÐ Ñ!à%Ð8¨¬ˆ	Ø×*Ò*¨9°hÀÑEÔEˆØð 	Ø�4˜ 	Ð0Ð0¨RÐ0Ð0Ð0ðÝ$ YÔ/�ð 5�tÔ4ØØðð !,Ø(;ð	ð ð
 ðð ð øõ ð Pð Pð PÝÔ5°d¸IÑFÔFÈCÐOøøøøðPøøøs   ÅE; Å;
F ÆFÆF c                ó(   —  | j         |j        fi |¤ŽS r  )r±  Úsql_functionrœ  s       rÂ   Ú&visit_function_as_comparison_op_binaryz2SQLCompiler.visit_function_as_comparison_op_binary  s   € ØˆtŒ|˜GÔ0Ð7Ð7°BÐ7Ð7Ð7rÄ   c                óÂ   — | j         j        r* | j        |j        fi |¤Ždz    | j        |j        fi |¤Žz   S  | j        |j        fi |¤Ždz    | j        |j        fi |¤Žz   S )Nz %% rÏ   )rŸ  rÒ  r±  rz   rŽ   r”  s       rÂ   Úvisit_mod_binaryzSQLCompiler.visit_mod_binary	  s™   € ØŒ=Ô)ð 	à�”˜Vœ[Ð/Ð/¨BÐ/Ð/Øñà�$”,˜vœ|Ð2Ð2¨rÐ2Ð2ñ3ðð �”˜Vœ[Ð/Ð/¨BÐ/Ð/Øñà�$”,˜vœ|Ð2Ð2¨rÐ2Ð2ñ3ðrÄ   c                óp   — |j         |d<    | j        |d|                      |j        ¦  «        z   dz   fi |¤ŽS )NrÞ  r!  )rÞ  r§  r³  r&  rœ  s       rÂ   Úvisit_custom_op_binaryz"SQLCompiler.visit_custom_op_binary  sW   € Ø'Ô6ˆÐÑØ,ˆtÔ,ØØ�$×,Ò,¨XÔ->Ñ?Ô?Ñ?À#ÑEð
ð 
ð ð
ð 
ð 	
rÄ   c                óV   —  | j         ||                      |j        ¦  «        dz   fi |¤ŽS r  )r‹  r³  r&  rœ  s       rÂ   Úvisit_custom_op_unary_operatorz*SQLCompiler.visit_custom_op_unary_operator  sA   € Ø4ˆtÔ4Ø�T×/Ò/°Ô0AÑBÔBÀSÑHð
ð 
ØLNð
ð 
ð 	
rÄ   c                óV   —  | j         |d|                      |j        ¦  «        z   fi |¤ŽS r  )rŒ  r³  r&  rœ  s       rÂ   Úvisit_custom_op_unary_modifierz*SQLCompiler.visit_custom_op_unary_modifier$  sA   € Ø4ˆtÔ4Ø�S˜4×5Ò5°hÔ6GÑHÔHÑHð
ð 
ØLNð
ð 
ð 	
rÄ   c                ó¾   — |                      dd¦  «        }d|d<   |j        |d<    |j        j        | fd|i|¤Ž|z    |j        j        | fd|i|¤Žz   }|r|rd|z  }|S )Nr"  FTÚ
_binary_oprÞ  r  )r¥  rK  rz   rÓ  rŽ   )r  r“   r&  rÞ  rÉ  r"  rÕ  s          rÂ   r§  z$SQLCompiler._generate_generic_binary)  s½   € ð #%§&¢&Ð)BÀEÑ"JÔ"JÐà(,ˆÐ$Ñ%Ø!œ?ˆˆ<Ñà*ˆFŒKÔ*Øðð Ø%3ðØ79ðð ð ñð .ˆfŒlÔ-Øðð Ø%3ðØ79ðð ñ	ð 	ð #ð 	! ~ð 	!Ø˜D‘=ˆDØˆrÄ   c                ó.   — | |j         j        | fi |¤Žz   S r  rw  ©r  r‰  r&  rÉ  s       rÂ   r‹  z,SQLCompiler._generate_generic_unary_operator>  s%   € ØÐ:˜%œ-Ô:¸4ÐFÐFÀ2ÐFÐFÑFÐFrÄ   c                ó.   —  |j         j        | fi |¤Ž|z   S r  rw  rí  s       rÂ   rŒ  z,SQLCompiler._generate_generic_unary_modifierA  s$   € Ø/ˆuŒ}Ô/°Ð;Ð;¸Ð;Ð;¸hÑFÐFrÄ   c                óB   — t          j        dt          j        ¬¦  «        S )Nz'%')r  )r   Úliteral_columnr%   Ú
STRINGTYPEr5  s    rÂ   Ú_like_percent_literalz!SQLCompiler._like_percent_literalD  s   € åÔ& uµHÔ4GÐHÑHÔHÐHrÄ   c                ó0   — d |j         j        | fi |¤Ž› d�S )Nzlower(r  rw  rÁ  s      rÂ   Ú$visit_ilike_case_insensitive_operandz0SQLCompiler.visit_ilike_case_insensitive_operandH  s+   € ØIÐ:˜œÔ:¸4ÐFÐFÀ2ÐFÐFÐIÐIÐIÐIrÄ   c                óº   — |                      ¦   «         }| j        }|                     |j        ¦  «                             |¦  «        |_         | j        ||fi |¤ŽS r  ©Ú_clonerò  ÚconcatrŽ   Úvisit_like_op_binary©r  r“   rK  rÉ  Úpercents        rÂ   Úvisit_contains_op_binaryz$SQLCompiler.visit_contains_op_binaryK  sW   € Ø—’‘”ˆØÔ,ˆØ—~’~ f¤lÑ3Ô3×:Ò:¸7ÑCÔCˆŒØ(ˆtÔ(¨°Ð@Ð@¸RÐ@Ð@Ð@rÄ   c                óº   — |                      ¦   «         }| j        }|                     |j        ¦  «                             |¦  «        |_         | j        ||fi |¤ŽS r  ©r÷  rò  rø  rŽ   Úvisit_not_like_op_binaryrú  s        rÂ   Úvisit_not_contains_op_binaryz(SQLCompiler.visit_not_contains_op_binaryQ  sW   € Ø—’‘”ˆØÔ,ˆØ—~’~ f¤lÑ3Ô3×:Ò:¸7ÑCÔCˆŒØ,ˆtÔ,¨V°XÐDÐDÀÐDÐDÐDrÄ   c                ó  — |                      ¦   «         }| j        }t          |j        ¦  «        |_        |                     t          |j        ¦  «        ¦  «                             |¦  «        |_         | j        ||fi |¤ŽS r  ©r÷  rò  r	  rz   rø  rŽ   Úvisit_ilike_op_binaryrú  s        rÂ   Úvisit_icontains_op_binaryz%SQLCompiler.visit_icontains_op_binaryW  sw   € Ø—’‘”ˆØÔ,ˆÝ,¨V¬[Ñ9Ô9ˆŒØ—~’~Ý" 6¤<Ñ0Ô0ñ
ô 
ç
Š&�‰/Œ/ð 	Œð *ˆtÔ)¨&°(ÐAÐA¸bÐAÐAÐArÄ   c                ó  — |                      ¦   «         }| j        }t          |j        ¦  «        |_        |                     t          |j        ¦  «        ¦  «                             |¦  «        |_         | j        ||fi |¤ŽS r  ©r÷  rò  r	  rz   rø  rŽ   Úvisit_not_ilike_op_binaryrú  s        rÂ   Úvisit_not_icontains_op_binaryz)SQLCompiler.visit_not_icontains_op_binary`  sw   € Ø—’‘”ˆØÔ,ˆÝ,¨V¬[Ñ9Ô9ˆŒØ—~’~Ý" 6¤<Ñ0Ô0ñ
ô 
ç
Š&�‰/Œ/ð 	Œð .ˆtÔ-¨f°hÐEÐEÀ"ÐEÐEÐErÄ   c                ó”   — |                      ¦   «         }| j        }|                     |j        ¦  «        |_         | j        ||fi |¤ŽS r  )r÷  rò  Ú_rconcatrŽ   rù  rú  s        rÂ   Úvisit_startswith_op_binaryz&SQLCompiler.visit_startswith_op_binaryi  sK   € Ø—’‘”ˆØÔ,ˆØ×'Ò'¨¬Ñ5Ô5ˆŒØ(ˆtÔ(¨°Ð@Ð@¸RÐ@Ð@Ð@rÄ   c                ó”   — |                      ¦   «         }| j        }|                     |j        ¦  «        |_         | j        ||fi |¤ŽS r  )r÷  rò  r
  rŽ   rÿ  rú  s        rÂ   Úvisit_not_startswith_op_binaryz*SQLCompiler.visit_not_startswith_op_binaryo  sK   € Ø—’‘”ˆØÔ,ˆØ×'Ò'¨¬Ñ5Ô5ˆŒØ,ˆtÔ,¨V°XÐDÐDÀÐDÐDÐDrÄ   c                óà   — |                      ¦   «         }| j        }t          |j        ¦  «        |_        |                     t          |j        ¦  «        ¦  «        |_         | j        ||fi |¤ŽS r  )r÷  rò  r	  rz   r
  rŽ   r  rú  s        rÂ   Úvisit_istartswith_op_binaryz'SQLCompiler.visit_istartswith_op_binaryu  se   € Ø—’‘”ˆØÔ,ˆÝ,¨V¬[Ñ9Ô9ˆŒØ×'Ò'Õ(>¸v¼|Ñ(LÔ(LÑMÔMˆŒØ)ˆtÔ)¨&°(ÐAÐA¸bÐAÐAÐArÄ   c                óà   — |                      ¦   «         }| j        }t          |j        ¦  «        |_        |                     t          |j        ¦  «        ¦  «        |_         | j        ||fi |¤ŽS r  )r÷  rò  r	  rz   r
  rŽ   r  rú  s        rÂ   Úvisit_not_istartswith_op_binaryz+SQLCompiler.visit_not_istartswith_op_binary|  se   € Ø—’‘”ˆØÔ,ˆÝ,¨V¬[Ñ9Ô9ˆŒØ×'Ò'Õ(>¸v¼|Ñ(LÔ(LÑMÔMˆŒØ-ˆtÔ-¨f°hÐEÐEÀ"ÐEÐEÐErÄ   c                ó”   — |                      ¦   «         }| j        }|                     |j        ¦  «        |_         | j        ||fi |¤ŽS r  rö  rú  s        rÂ   Úvisit_endswith_op_binaryz$SQLCompiler.visit_endswith_op_binaryƒ  sI   € Ø—’‘”ˆØÔ,ˆØ—~’~ f¤lÑ3Ô3ˆŒØ(ˆtÔ(¨°Ð@Ð@¸RÐ@Ð@Ð@rÄ   c                ó”   — |                      ¦   «         }| j        }|                     |j        ¦  «        |_         | j        ||fi |¤ŽS r  rþ  rú  s        rÂ   Úvisit_not_endswith_op_binaryz(SQLCompiler.visit_not_endswith_op_binary‰  sI   € Ø—’‘”ˆØÔ,ˆØ—~’~ f¤lÑ3Ô3ˆŒØ,ˆtÔ,¨V°XÐDÐDÀÐDÐDÐDrÄ   c                óà   — |                      ¦   «         }| j        }t          |j        ¦  «        |_        |                     t          |j        ¦  «        ¦  «        |_         | j        ||fi |¤ŽS r  r  rú  s        rÂ   Úvisit_iendswith_op_binaryz%SQLCompiler.visit_iendswith_op_binary�  sc   € Ø—’‘”ˆØÔ,ˆÝ,¨V¬[Ñ9Ô9ˆŒØ—~’~Õ&<¸V¼\Ñ&JÔ&JÑKÔKˆŒØ)ˆtÔ)¨&°(ÐAÐA¸bÐAÐAÐArÄ   c                óà   — |                      ¦   «         }| j        }t          |j        ¦  «        |_        |                     t          |j        ¦  «        ¦  «        |_         | j        ||fi |¤ŽS r  r  rú  s        rÂ   Úvisit_not_iendswith_op_binaryz)SQLCompiler.visit_not_iendswith_op_binary–  sc   € Ø—’‘”ˆØÔ,ˆÝ,¨V¬[Ñ9Ô9ˆŒØ—~’~Õ&<¸V¼\Ñ&JÔ&JÑKÔKˆŒØ-ˆtÔ-¨f°hÐEÐEÀ"ÐEÐEÐErÄ   c                óÚ   — |j                              dd ¦  «        } |j        j        | fi |¤Ž›d |j        j        | fi |¤Ž›�|�#d|                      |t          j        ¦  «        z   ndz   S )NrS  z LIKE ú ESCAPE r–  ©Ú	modifiersr¥  rz   rÓ  rŽ   r  r%   rñ  ©r  r“   rK  rÉ  rS  s        rÂ   rù  z SQLCompiler.visit_like_op_binary�  s“   € ØÔ!×%Ò% h°Ñ5Ô5ˆð +ˆFŒKÔ*¨4Ð6Ð6°2Ð6Ð6Ð6Ð6Ø+ˆFŒLÔ+¨DÐ7Ð7°BÐ7Ð7Ð7ð
ð
 Ð!ð ˜×2Ò2°6½8Ô;NÑOÔOÑOÐOàñ
ð 	
rÄ   c                óÚ   — |j                              dd ¦  «        } |j        j        | fi |¤Ž›d |j        j        | fi |¤Ž›�|�#d|                      |t          j        ¦  «        z   ndz   S )NrS  z
 NOT LIKE r  r–  r  r  s        rÂ   rÿ  z$SQLCompiler.visit_not_like_op_binary©  s‘   € ØÔ!×%Ò% h°Ñ5Ô5ˆà*ˆFŒKÔ*¨4Ð6Ð6°2Ð6Ð6Ð6Ð6Ø+ˆFŒLÔ+¨DÐ7Ð7°BÐ7Ð7Ð7ð
ð
 Ð!ð ˜×2Ò2°6½8Ô;NÑOÔOÑOÐOàñ
ð 	
rÄ   c                óÈ   — |t           j        u rF|                     ¦   «         }t          |j        ¦  «        |_        t          |j        ¦  «        |_         | j        ||fi |¤ŽS r  )r!   Úilike_opr÷  r	  rz   rŽ   rù  r”  s       rÂ   r  z!SQLCompiler.visit_ilike_op_binary´  s^   € Ø•yÔ)Ð)Ð)Ø—]’]‘_”_ˆFÝ0°´Ñ=Ô=ˆFŒKÝ1°&´,Ñ?Ô?ˆFŒLð )ˆtÔ(¨°Ð@Ð@¸RÐ@Ð@Ð@rÄ   c                óÈ   — |t           j        u rF|                     ¦   «         }t          |j        ¦  «        |_        t          |j        ¦  «        |_         | j        ||fi |¤ŽS r  )r!   Únot_ilike_opr÷  r	  rz   rŽ   rÿ  r”  s       rÂ   r  z%SQLCompiler.visit_not_ilike_op_binary½  s^   € Ø•yÔ-Ð-Ð-Ø—]’]‘_”_ˆFÝ0°´Ñ=Ô=ˆFŒKÝ1°&´,Ñ?Ô?ˆFŒLð -ˆtÔ,¨V°XÐDÐDÀÐDÐDÐDrÄ   c                ó^   — |j                              dd¦  «        } | j        ||rdndfi |¤ŽS )Nr°   Fz BETWEEN SYMMETRIC z	 BETWEEN ©r  r¥  r§  ©r  r“   rK  rÉ  r°   s        rÂ   Úvisit_between_op_binaryz#SQLCompiler.visit_between_op_binaryÆ  sN   € ØÔ$×(Ò(¨°eÑ<Ô<ˆ	Ø,ˆtÔ,Ø¨YÐGÐ)Ð)¸Kð
ð 
ØKMð
ð 
ð 	
rÄ   c                ó^   — |j                              dd¦  «        } | j        ||rdndfi |¤ŽS )Nr°   Fz NOT BETWEEN SYMMETRIC z NOT BETWEEN r%  r&  s        rÂ   Úvisit_not_between_op_binaryz'SQLCompiler.visit_not_between_op_binaryÌ  sQ   € ØÔ$×(Ò(¨°eÑ<Ô<ˆ	Ø,ˆtÔ,ØØ)2ÐGÐ%Ð%¸ð
ð 
ð ð
ð 
ð 	
rÄ   c                óD   — t          j        d| j        j        z  ¦  «        ‚©Nz/%s dialect does not support regular expressions©r8   rî  r¦  rú   r”  s       rÂ   Úvisit_regexp_match_op_binaryz(SQLCompiler.visit_regexp_match_op_binaryÔ  ó'   € ÝÔØ=ØŒlÔñ ñ
ô 
ð 	
rÄ   c                óD   — t          j        d| j        j        z  ¦  «        ‚r+  r,  r”  s       rÂ   Ú visit_not_regexp_match_op_binaryz,SQLCompiler.visit_not_regexp_match_op_binaryÚ  r.  rÄ   c                óD   — t          j        d| j        j        z  ¦  «        ‚)Nz;%s dialect does not support regular expression replacementsr,  r”  s       rÂ   Úvisit_regexp_replace_op_binaryz*SQLCompiler.visit_regexp_replace_op_binaryà  s'   € ÝÔØIØŒlÔñ ñ
ô 
ð 	
rÄ   c           	     óô  — |sÞ|j                              | j        ¦  «        }|j        r¸|                     |¦  «        }	 | j        |	fd||o|j         ||dœ|¤Ž}
|j        r~t          j        d|
¦  «        }|s
J d¦   «         ‚d| 	                    d¦  «        ›d| 	                    d¦  «        ›d	| 	                    d
¦  «        ›d�}
|r | j
        |fd|
dœ|¤Ž}d|z  S |
S |s|p|j        p|o| j        }|p|j        }nd}|r | j
        |fddi|¤Ž}|j        rd|z  }|S |                      |¦  «        }|| j        v rñ| j        |         }||urà|j        s|j        rU|j                             |j        ¦  «        s6|j                             |j        ¦  «        st'          j        d|z  ¦  «        ‚|j        |j        k    rt'          j        d|›d�¦  «        ‚|j        s|j        rG|j        r|j        rt'          j        d¦  «        ‚t'          j        d|j        › d|j        › d�¦  «        ‚|x| j        |j        <   | j        |<   | j        }|r@|\  }}|j        D ]3}|j        |v r(||j                 }||                              |¦  «         Œ4|j        rd| _        |r.|rd| _        |r| xj        |hz  c_        n| xj        |hz  c_         | j        |f||j        |j         dœ|¤Ž}|j        rd|z  }|S )NT)Úskip_bind_expressionr‚  Úliteral_bindsr+  Úrender_postcompilez&^(.*)\(__\[POSTCOMPILE_(\S+?)\]\)(.*)$r»  z(__[POSTCOMPILE_r7   r  r   z~~REPL~~r  z~~]))r‚  rÅ  r  Fr‚  zIBind parameter '%s' conflicts with unique bind parameter of the same namez"Can't reuse bound parameter name 'zê' in both 'expanding' (e.g. within an IN expression) and non-expanding contexts.  If this parameter is to receive a list/array value, set 'expanding=True' on it for expressions that aren't IN, otherwise use a different parameter name.a)  Encountered unsupported case when compiling an INSERT or UPDATE statement.  If this is a multi-table UPDATE statement, please provide string-named arguments to the values() method with distinct names; support for multi-table UPDATE statements that target multiple tables for UPDATE is very limitedzbindparam() name 'zÌ' is reserved for automatic usage in the VALUES or SET clause of this insert/update statement.   Please use a name other than column name when using bindparam() with insert() or update() (for example, 'b_z').)Úpost_compileÚ	expandingÚbindparam_type)rþ   Údialect_implr¦  rÃ  Úbind_expressionr±  r8  rR  r4  rˆ   r)  r+  r2  Ú_truncate_bindparamr.  rœ   rý  ÚintersectionÚ_cloned_setr8   rî  Ú_is_crudr1  rF  r›  Ú
isoutparamÚhas_out_parametersr;  rC  rD  rÜ  )r  rÔ  r‚  r5  r4  r+  r6  rÐ  Úimplr;  Úwrappedr˜  rj  r7  rú   Úexistingrõ  ru  rt  ÚbpÚcbs                        rÂ   Úvisit_bindparamzSQLCompiler.visit_bindparamæ  s�  € ð $ð $	Ø”>×.Ò.¨t¬|Ñ<Ô<ˆDØÔ(ð "Ø"&×"6Ò"6°yÑ"AÔ"A�Ø&˜$œ,Ø#ðà)-Ø*?Ø"/Ð"K¸	Ô8KÐ4KØ$3Ø'9ðð ð ðð �ð Ô&ð ,õ œØAÀ7ñô �Að ÐIÐIÐIÑIÔIÐIÐIàŸš ™
œ
˜
˜
ØŸš ™
œ
˜
˜
ØŸš ™
œ
˜
˜
ð�Gð %ð ,Ø;˜dÔ;Ø%ðà26Ø5<ðð ð %ð	ð ˜ð  &¨™|Ð+à�àð 	!àð DØÔ,ðDà)ÐB¨dÔ.Bð ð
 +ÐA¨iÔ.AˆLˆLà ˆLàð 	Ø/�$Ô/Øðð Ø15ðØ9?ðð ˆCð Ô"ð #Ø˜s‘l�ØˆJà×'Ò'¨	Ñ2Ô2ˆà�4”:ÐÐØ”z $Ô'ˆHØ˜yÐ(Ð(à”_ð/Ø(1Ô(8ð/à$Ô.×;Ò;Ø!Ô+ñô ð/ð
 %Ô0×=Ò=Ø!Ô-ñô ð/õ Ô*ðAØCGñHñô ð ð Ô'¨9Ô+>Ò>Ð>ÝÔ*Ð*ð :>¸¸ð@ñô ð ð Ô&ð ¨)Ô*<ð ØÔ(ð ¨YÔ-?ð õ "Ô.ð&ñ
ô 
ð 
õ "Ô.ð5°´ð 5ð 5ð #,¤-ð5ð 5ð 5ñ	ô 	ð 	ð 8AÐ@ˆŒ
�9”=Ñ! D¤J¨tÑ$4ð Ô/ˆ
àð 	/Ø#‰JˆD�$ØÔ+ð /ð /�Ø”6˜T�>�>Ø˜bœfœ�BØ˜”H—O’O IÑ.Ô.Ð.øàÔð 	+Ø&*ˆDÔ#àð 	8Ø!ð 0Ø+/�Ô(àð 8ØÐ+Ô+°	¨{Ñ:Ð+Ô+Ð+àÐ(Ô(¨Y¨KÑ7Ð(Ô(à#ˆdÔ#Øð
à%ØÔ)Ø$œ>ð	
ð 
ð
 ð
ð 
ˆð Ôð 	Ø˜3‘,ˆCàˆ
rÄ   c                ó   — t          ¦   «         ‚r  rÌ  )r  r  Ú
dbapi_typeÚsqltexts       rÂ   rÍ  zSQLCompiler.render_bind_castŠ  s   € Ý!Ñ#Ô#Ð#rÄ   c                ó†  — |t           ur|}nz|j        €l|j        €e|                     dd ¦  «        }|r5|t          j        t          j        fvrt          j        d|j	        f¦  «          | j
        t          j        fi |¤ŽS |j        }|j        r| j        } ||||¬¦  «        \  }}	|	S |                      ||j        ¦  «        S )Nrë  z‰Bound parameter '%s' rendering literal NULL in a SQL expression; comparisons to NULL should not use operators outside of 'is' or 'is not')rÅ  )r/   rÍ  rñ  r¥  r!   Úis_Úis_notr&   Úwarn_limitedr1  r±  r%   rà  rò  r8  rÉ  r  rþ   )
r  rÔ  r  rÅ  rÉ  rÍ  ÚopÚleepr9  r;  s
             rÂ   r)  z$SQLCompiler.render_literal_bindparam�  sú   € ð  ¥vÐ-Ð-Ø(ˆEˆEàŒÐ&¨9Ô+=Ð+EØ—V’V˜L¨$Ñ/Ô/�Øð ˜"¥Y¤]µIÔ4DÐ$EÐEÐEÝÔ%ð@ð #œÐ(ñ	ô ð ð $�t”|¥HÔ$5Ð<Ð<¸Ð<Ð<Ð<ØÔ-ˆEàÔð 		DØÔJˆDØ*.¨$ØØØ)Að+ñ +ô +Ñ'ˆIÐ'ð
 $Ð#à×,Ò,¨U°I´NÑCÔCÐCrÄ   c                óž  — |€8|j         s1|                      t          j                             ¦   «         ¦  «        S |                     | j        ¦  «        }|rL	  ||¦  «        S # t          $ r3}t          j	        dt          j        |¦  «        › d|› d�¦  «        |‚d}~ww xY wt          j	        dt          j        |¦  «        › d|› �¦  «        ‚)a  Render the value of a bind parameter as a quoted literal.

        This is used for statement sections that do not accept bind parameters
        on the target driver/database.

        This should be implemented by subclasses using the quoting services
        of the DBAPI.

        Nz Could not render literal value "z" with datatype z); see parent stack trace for more detail.z:No literal value renderer is available for literal value ")Úshould_evaluate_noner±  r   ÚNullÚ	_instanceÚ_cached_literal_processorr¦  rð  r8   rî  Úsql_utilÚ_repr_single_value)r  rÍ  r  Ú	processorÚes        rÂ   r  z SQLCompiler.render_literal_value®  s  € ð ˆ= Ô!;ˆ=ð —<’<¥¤× 7Ò 7Ñ 9Ô 9Ñ:Ô:Ð:à×3Ò3°D´LÑAÔAˆ	Øð 	ð	Ø �y Ñ'Ô'Ð'øÝð ð ð ÝÔ&ð#Ý Ô3°EÑ:Ô:ð#ð #ð ð#ð #ð #ñô ð ðøøøøðøøøõ Ô"ð)ÝÔ/°Ñ6Ô6ð)ð )à!&ð)ð )ñô ð s   Á
A# Á#
B Á-.BÂB c                ó´   — || j         v r| j         |         S |j        }t          |t          j        ¦  «        r|                      d|¦  «        }|| j         |<   |S )NrÔ  )r/  r1  r¯  r   rE   r˜  )r  rÔ  rÆ  s      rÂ   r<  zSQLCompiler._truncate_bindparamÓ  sb   € Ø˜œÐ'Ð'Ø”? 9Ô-Ð-à”Mˆ	Ý�i¥Ô!:Ñ;Ô;ð 	KØ×2Ò2°;À	ÑJÔJˆIð &/ˆŒ˜	Ñ"àÐrÄ   Úident_classrú   rE   c                óˆ  — ||f| j         v r| j         ||f         S |                     | j        ¦  «        }t          |¦  «        | j        dz
  k    rd| j                             |d¦  «        }|dt          | j        dz
  d¦  «        …         dz   t          |¦  «        dd …         z   }|dz   | j        |<   n|}|| j         ||f<   |S )Né   r   r   r  r7   )	rl  Ú	apply_maprk  r±  ri  rm  r¥  ÚmaxÚhex)r  r[  rú   ÚanonnameÚcounterÚ	truncnames         rÂ   r˜  z!SQLCompiler._truncated_identifierà  sä   € ð ˜Ð $Ô"6Ð6Ð6ØÔ'¨°dÐ(;Ô<Ð<à—>’> $¤-Ñ0Ô0ˆåˆx‰=Œ=˜4Ô,¨qÑ0Ò0Ð0ØÔ.×2Ò2°;ÀÑBÔBˆGà˜�S Ô!2°QÑ!6¸Ñ:Ô:Ð:Ô;Øñå�g‘,”,˜q˜r˜rÔ"ñ#ð ð
 5<¸a±KˆDÔ$ [Ñ1Ð1à ˆIØ4=ˆÔ˜k¨4Ð0Ñ1ØÐrÄ   c                ó   — || j         z  S r  ©rk  ©r  rú   s     rÂ   Ú
_anonymizezSQLCompiler._anonymizeõ  s   € Ø�d”mÑ#Ð#rÄ   r7  r8  Úescaped_fromr9  úOptional[TypeEngine[Any]]Úaccumulate_bind_namesúOptional[Set[str]]Úvisited_bindparamrÉ  c                ó˜  ‡ — |�|                      |¦  «         |�|                     |¦  «         |s<‰ j                             |¦  «        r"‰ j                             ˆ fd„|¦  «        }	|}|	}|r!‰ j                             ||i¦  «        ‰ _        |rEd|z  }
|r|
S |�8|                     ‰ j        ¦  «        }|j	        r‰  
                    |||
¦  «        }
|
S ‰ j        t          j        u r‰ j        d|iz  }
n‰ j        d|iz  }
|�D‰ j        j        r8|                     ‰ j        ¦  «        }|j
        r‰  
                    |||
¦  «        }
|
S )Nc                óD   •— ‰j         |                      d¦  «                 S )Nr   )r$  rˆ   )r˜  r  s    €rÂ   r½  z.SQLCompiler.bindparam_string.<locals>.<lambda>  s   ø€ ˜dÔ8¸¿ºÀ¹¼ÔD€ rÄ   z__[POSTCOMPILE_%s]rú   )Úaddr›  r#  rÄ  r¨  rE  r�   rü  r¦  Úrender_literal_castrÍ  r˜  rf  rg  r4  r3  rÖ  )r  rú   r7  r8  rh  r9  rj  rl  rÉ  Únew_namerj  Ú	type_impls   `           rÂ   rÜ  zSQLCompiler.bindparam_stringø  s±  ø€ ð !Ð,Ø!×%Ò% dÑ+Ô+Ð+ØÐ(Ø×$Ò$ TÑ*Ô*Ð*àð 
	 ØÔ&×-Ò-¨dÑ3Ô3ð 	 ð  Ô2×6Ò6ØDÐDÐDÐDØñô �ð  $�Ø�àð 	Ø&*Ô&=×&CÒ&CØ˜tÐ$ñ'ô 'ˆDÔ#ð ð 	5Ø&¨Ñ-ˆCØð ð �
ð Ð)Ø*×BÒBØ”Lñô �	ð Ô0ð PØ×/Ò/°À	È3ÑOÔO�CØˆJØŒZ�=Ô2Ð2Ð2ØÔ/°6¸4°.Ñ@ˆCˆCàÔ# v¨t nÑ4ˆCð Ð&Ø”Ô6ð 'ð '×>Ò>¸t¼|ÑLÔLˆIØÔ)ð LØ×+Ò+¨N¸IÀsÑKÔK�àˆ
rÄ   c                óº   — |                      ¦   «         }|                     dd ¦  «         t          |j        |j        ¦  «        D ]\  }} |j        | fd|i|¤Ž Œd S )NÚcte_opts)Úcopyr|  rï  ré  Ú_independent_ctes_optsrÓ  )r  ÚstmtrÉ  Úlocal_kwÚcteÚopts         rÂ   rê  z&SQLCompiler._dispatch_independent_ctes;  s~   € Ø—7’7‘9”9ˆØ�Š�Z Ñ&Ô&Ð&ÝØÔ" DÔ$?ñ
ô 
ð 	Cð 	C‰HˆC�ð #ˆCÔ" 4ÐBÐB°#ÐB¸ÐBÐBÐBÐBð	Cð 	CrÄ   ry  rN   ry  ÚashintÚ	fromhintsúOptional[_FromHintsType]Úvisiting_cteúOptional[CTE]rÚ  úOptional[FromLinter]rt  úselectable._CTEOptsc                óx  ‡ — ‰                       ¦   «         }	|	‰ j        u sJ ‚||d<   |j        }
t          |
t          j        ¦  «        r‰                      d|
¦  «        }
d}d}|                     ¦   «         }|j        p|j        }|‰ j	        v r�‰ j	        |         \  }}}||
k    sJ ‚||
f}‰ j
        |         }|j        r]|j        rt          j        d¦  «        ‚||
f}|rt          ‰ j        ¦  «        nd}||
fx}}‰ j
        |= |‰ j
        |<   ||fz   ‰ j	        |<   n5|rt          ‰ j        ¦  «        nd}||
f}|‰ j
        v r‰ j
        |         }nd }|�†||u }||j        u s||u rd}nr||j        u r,|	|= |                     ¦   «         }||u sJ ‚||u sJ ‚‰ j	        |= n=|j        €|j        �|                     |¦  «        rd}nt          j        d|
z  ¦  «        ‚|s|sd S |j        �D|j        }|j        j        }t          |t          j        ¦  «        r‰                      d|¦  «        }n|}d }|�rE|‰ j
        |<   ||fz   ‰ j	        |<   |‰ j        vr ‰ j        |fi |¤Ž |�s||	v�r|j        rd‰ _        ‰ j                             ||
¦  «        }|j        rM|j        }d„ |                     d¦  «        D ¦   «         }|d	d
                     ˆ fd„|D ¦   «         ¦  «        z  z  }|                     dd¦  «        du sJ ‚‰ j        s |j        j        ‰ fd|i|¤ŽS  ‰ j        ||j        fi |¤Ž} |j        j        ‰ fddi|¤Ž}|d|›d|›d�z  }|j        r|d ‰ j        ||j        fi |¤Žz   z  }||	|<   |rÃ|r|
|j         | !                    ¦   «         <   |s|r‰ j                             ||
¦  «        S |ri‰ j                             ||¦  «        }‰ j         "                    |
¦  «        r‰ j         #                    |
¦  «        }
|‰  $                    |
¦  «        z  }|S ‰ j                             ||
¦  «        S d S )Nr~  r°  TFz6CTE is stated as 'nest_here' in more than one locationr   z5Multiple, unrelated CTEs found with the same name: %rc                ó&   — g | ]\  }}}}}|°
|p|‘ŒS r¾   r¾   )rÀ   r  Ú
proxy_nameÚfallback_label_namer|  Úrepeateds         rÂ   r}  z)SQLCompiler.visit_cte.<locals>.<listcomp>É  sF   € ð "ð "ð "ñØØ&Ø/ØØ$à'ð"ð
 ,Ð9¨zð"ð "ð "rÄ   r  rÑ   c              3  óZ   •K  — | ]%}‰j                              |‰j        ¬ ¦  «        V — Œ&dS )re  N)rŸ  Úformat_label_namerk  )rÀ   Úidentr  s     €rÂ   r2  z(SQLCompiler.visit_cte.<locals>.<genexpr>Ú  sW   øè è € ð "ð "ð !&ð !œM×;Ò;Ø %°´ð <ñ ô ð"ð "ð "ð "ð "ð "rÄ   Úsubqueryry  rÓ   z
(r  r!  )%r�  rJ  rú   r¯  r   rE   r˜  Ú_get_reference_cteÚnestingrL  rK  r8   rî  r±  r†  Ú	_restatesÚ_is_clone_ofÚcompareÚ
_cte_aliasÚ	visit_cteÚ	recursiverM  rŸ  Úformat_aliasrÇ  Ú_generate_columns_plus_namesry   r¥  rÓ  Ú_generate_prefixesÚ	_prefixesÚ	_suffixesry  r*   Ú_requires_quotesr´  Úget_render_as_alias_suffix)r  ry  ry  r{  r|  r~  rÚ  rt  rÐ  Ú	self_ctesÚcte_nameÚ
is_new_cteÚembedded_in_current_named_cteÚ_reference_cterŒ  Ú	cte_levelr  Úexisting_cte_optsÚcte_level_nameÚexisting_cteÚold_level_nameÚnew_level_nameÚexisting_cte_reference_cteÚpre_alias_cteÚcte_pre_alias_namerÕ  Ú
col_sourceÚ
recur_colsÚprefixesrŠ   s   `                             rÂ   r‘  zSQLCompiler.visit_cteC  s  ø€ ð ×(Ò(Ñ*Ô*ˆ	Ø˜DœIÐ%Ð%Ð%Ð%à!$ˆˆ~Ñà”8ˆå�h¥Ô 9Ñ:Ô:ð 	EØ×1Ò1°'¸8ÑDÔDˆHàˆ
Ø(-Ð%à×/Ò/Ñ1Ô1ˆà”+Ð1 Ô!1ˆð ˜TÔ3Ð3Ð3Ø.2Ô.DØô/Ñ+ˆI�qÐ+ð ˜’=�=�=�=à'¨Ð2ˆNØÔ2°>ÔBˆLð
 Ôð Ø$Ô,ð ÝÔ*ð1ñô ð ð
 #,¨XÐ!6�Ø/6Ð=�C ¤
™OœO˜O¸A�	Ø3<¸hÐ2GÐG� àÔ+¨NÐ;Ø:F�Ô'¨Ñ7Ø9GØðKñ :�Ô& ~Ñ6øð
 ,3Ð9�˜DœJ™œ˜¸ˆIØ'¨Ð2ˆNà Ô!8Ð8Ð8Ø#Ô6°~ÔF��à#�àÐ#Ø,8¸LÐ,HÐ)ð �lÔ,Ð,Ð,°°|Ð0CÐ0CØ"�
�
Ø ¤Ð.Ð.ð ˜lÐ+à-9×-LÒ-LÑ-NÔ-NÐ*à1°^ÐCÐCÐCÐCØ1°\ÐAÐAÐAÐAàÔ*Ð+EÐFÐFð Ô$Ð0Ø#Ô0Ð<Ø—k’k ,Ñ/Ô/ð =à!&�J�JåÔ*ð,Ø.6ñ7ñô ð ð
 ð 	˜jð 	Ø�4àŒ>Ð%ØœNˆMØ!$¤Ô!4ÐÝÐ,­hÔ.GÑHÔHð Ø%)×%?Ò%?ØÐ/ñ&ô &Ð"øð  ˆMØ!%Ðàñ D	&Ø69ˆDÔ# NÑ3Ø5CØðGñ 6ˆDÔ" >Ñ2ð  D¤IÐ-Ð-Ø�”˜}Ð7Ð7°Ð7Ð7Ð7à%ñ ;&¨#°YÐ*>Ñ*>Ø”=ð /Ø*.�DÔ'Ø”}×1Ò1°#°xÑ@Ô@�Ø”=ð Ø!$¤�Jð
"ð "ð )×EÒEÀdÑKÔKð"ñ "ô "�Jð  ˜FØŸ	š	ð "ð "ð "ð "ð *4ð	"ñ "ô "ñ ô ññ �Dð —z’z *¨eÑ4Ô4¸Ð=Ð=Ð=Ð=à”zð ?ð :˜3œ;Ô9Øðð Ø%+ðØ/5ðð ð ð  7˜tÔ6Ø˜Sœ]ð ð  Ø.4ð ð  �Hð ;˜CœKÔ:Øðð Ø%)ðØ-3ðð �Eð �D¨h¨h¨h¸¸¸Ð>Ñ>�Dà”=ð Ø˜CÐ"9 $Ô"9Ø˜Sœ]ð#ð #Ø.4ð#ð #ñ ñ �Dð "&�	˜#‘àð 	AØð >Ø5=�Ô! #§-¢-¡/¤/Ñ2àð AÐ"?ð AØ”}×1Ò1°#°xÑ@Ô@Ð@à!ð AØ”}×1Ò1°#Ð7IÑJÔJ�Ø”=×1Ò1°(Ñ;Ô;ð =Ø#œ}×2Ò2°8Ñ<Ô<�HØ˜×7Ò7¸ÑAÔAÑA�Ø�à”}×1Ò1°#°xÑ@Ô@Ð@àˆtrÄ   c                ó`   — |j         rd |d<   |j        r | j        |fi |¤ŽS  | j        |fi |¤ŽS )NrÚ  )Újoins_implicitlyÚ_is_lateralÚvisit_lateralÚvisit_aliasrÁ  s      rÂ   Úvisit_table_valued_aliasz$SQLCompiler.visit_table_valued_alias  sX   € ØÔ#ð 	%Ø $ˆBˆ}ÑØÔð 	3Ø%�4Ô% gÐ4Ð4°Ð4Ð4Ð4à#�4Ô# GÐ2Ð2¨rÐ2Ð2Ð2rÄ   c                ó   —  | j         |fi |¤ŽS r  )r½  rÁ  s      rÂ   Úvisit_table_valued_columnz%SQLCompiler.visit_table_valued_column  s   € Ø ˆtÔ  Ð/Ð/¨BÐ/Ð/Ð/rÄ   c
           
     óT  ‡ ‡‡
— |r!d‰
vr‰j         sJ ‚‰‰
d<   |	rd‰
vr	d‰
v r|	‰
d<   |�1|j        ‰u r( ‰j        j        ‰ f|||||‰dœ‰
¤Ž}|r
|s|rd|›d�}|S ‰x}‰
d<   |s|rBt          ‰j        t
          j        ¦  «        r‰                      d‰j        ¦  «        }n‰j        }|r‰ j         	                    ‰|¦  «        S |rÏ|	r||	j
        ‰                     ¦   «         <    ‰j        j        ‰ fd|d	œ‰
¤Ž}|rd|›d�}|‰                      ‰ j         	                    ‰|¦  «        ¦  «        z   }‰j        r5‰j        r.|d
d                     ˆˆ
ˆ fd„‰j        D ¦   «         ¦  «        z  z  }|r"‰|v r‰                      |‰|‰         |¦  «        }|S  ‰j        j        ‰ fd|i‰
¤ŽS )NrÙ  rÛ  )ry  r{  Úiscrudr|  ÚlateralÚenclosing_aliasr  r  r¶  r°  T)ry  rµ  r  rÑ   c              3  ó¬   •K  — | ]N}‰j                              |j        ¦  «        ›‰j        r d  ‰j        j        j        |j        fi ‰¤Žz  nd›�V — ŒOdS )ú %sr–  N)rŸ  r´  rú   Ú_render_derived_w_typesr¦  rË  r±  rþ   )rÀ   rù  r°  rÐ  r  s     €€€rÂ   r2  z*SQLCompiler.visit_alias.<locals>.<genexpr>`  sŸ   øè è € ð ð ð  ð !œM×/Ò/°´Ñ9Ô9Ð9ð
  %Ô<ð	$˜EØI˜dœlÔAÔIØ #¤ðð Ø,2ðð ñð ð
 "$ð$ð	ðð ð ð ð ð rÄ   rµ  )r­  rÇ  rÓ  r¯  rú   r   rE   r˜  rŸ  r“  ry  r*   r™  Ú_supports_derived_columnsÚ_render_derivedry   r|  Úformat_from_hint_text)r  r°  ry  r{  r´  r|  rŠ  rµ  r¶  rÚ  rÐ  rŠ   Ú
alias_namerj  s   ``        `   rÂ   r¯  zSQLCompiler.visit_alias  sÕ  øøø€ ð ð 	<Ø"¨&Ð0Ð0ð Ô(Ð(Ð(Ð(Ø.3�Ð*Ñ+ð
 ð<à)°Ð7Ð7Ø'¨6Ð1Ð1à0;�Ð,Ñ-àÐ&¨?Ô+BÀeÐ+KÐ+KØ4�E”MÔ4Øð	àØØØ#ØØ %ð	ð 	ð ð	ð 	ˆEð ð *˜Vð * wð *øØ"' % %Ð)�ØˆLà:?Ð?ˆO˜fÐ%6Ñ7àð 	(�Vð 	(Ý˜%œ*¥hÔ&?Ñ@Ô@ð (Ø!×7Ò7¸ÀÄÑLÔL�
�
à"œZ�
àð +	Ø”=×-Ò-¨e°ZÑ@Ô@Ð@Øð )	Øð BØ7A�Ô! %§/¢/Ñ"3Ô"3Ñ4à4�E”MÔ4ØðØ!¨7ðð Ø6<ðð ˆEð ð *ð *Ø"' % %Ð)�à˜$×9Ò9Ø”×*Ò*¨5°*Ñ=Ô=ñô ñ ˆCð Ô.ð °5Ô3Hð Ø�vØ—I’Ið ð ð ð ð ð ð $)¤7ðñ ô ñ ô ññ �ð  ð ˜U iÐ/Ð/Ø×0Ò0Ø˜ 	¨%Ô 0°&ñô �ð ˆJð 4�5”=Ô3Øðð Ø%ðØ)/ðð ð rÄ   c                ó(   — d|d<    | j         |fi |¤ŽS )NTrŠ  ©r¯  )r  rŠ  rÉ  s      rÂ   Úvisit_subqueryzSQLCompiler.visit_subquery{  s&   € Øˆˆ:‰ØˆtÔ Ð/Ð/¨BÐ/Ð/Ð/rÄ   c                ó.   — d|d<   d | j         |fi |¤Žz  S )NTrµ  z
LATERAL %sr¿  )r  Úlateral_rÉ  s      rÂ   r®  zSQLCompiler.visit_lateral  s,   € Øˆˆ9‰ØÐ.˜dÔ.¨xÐ>Ð>¸2Ð>Ð>Ñ>Ð>rÄ   c                ó¬   —  | j         |fddi|¤Ž›d |                     ¦   «         j        | fi |¤Ž›�}|j        �|d |j        j        | fi |¤Žz  z  }|S )Nry  Tz TABLESAMPLE z REPEATABLE (%s))r¯  Ú_get_methodrÓ  Úseed)r  Útablesamplery  rÉ  rÕ  s        rÂ   Úvisit_tablesamplezSQLCompiler.visit_tablesampleƒ  s’   € àˆDÔ˜[Ð<Ð<°Ð<¸Ð<Ð<Ð<Ð<Ø8ˆK×#Ò#Ñ%Ô%Ô8¸ÐDÐDÀÐDÐDÐDð
ˆð
 ÔÐ'ØÐ&Ø3�Ô Ô3°DÐ?Ð?¸BÐ?Ð?ññ ˆDð ˆrÄ   c                ó˜   ‡ ‡‡— ‰                      d‰j        ¦  «         d                     ˆˆˆ fd„‰j        D ¦   «         ¦  «        }d|› �S )Nr5  rÑ   c           	   3  óŠ   •K  — | ]=}|D ]8} ‰j         t          j        |d ‰j        iŽ                     ¦   «         fi ‰¤ŽV — Œ9Œ>dS )rÓ  N)r±  r   r   Ú_column_typesr  )rÀ   ÚchunkÚelemrÇ  rÉ  r  s      €€€rÂ   r2  z-SQLCompiler._render_values.<locals>.<genexpr>’  s“   øè è € ð 	
ð 	
ð Øð	
ð 	
ð ð ˆDŒLÝ”Ø26ðØ!Ô/ðð ç’*‘,”,ðð ð ð	ð ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
rÄ   r·  )Ú
setdefaultr5  ry   Ú_data)r  rÇ  rÉ  Útupless   ``` rÂ   Ú_render_valueszSQLCompiler._render_values�  ss   øøø€ Ø
�Š�o wÔ'<Ñ=Ô=Ð=Ø—’ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð !œð	
ñ 	
ô 	
ñ 	
ô 	
ˆð "˜Ð!Ð!Ð!rÄ   c           
     óú  ‡ ‡—  ‰ j         |fi ‰¤Ž}|j        rd }nBt          |j        t          j        ¦  «        r‰                      d|j        ¦  «        }n|j        }|j        rd}nd}|r�|r |�|nd|j        | 	                    ¦   «         <   |rdd‰d<   |›d|›d‰  
                    ‰ j                             |¦  «        ¦  «        ›d	d
                     ˆˆ fd„|j        D ¦   «         ¦  «        ›d�}n|›d|›d�}|S )NrÂ  zLATERAL r–  z(unnamed VALUES element)Fr¬  r  r  ú (rÑ   c              3  ó4   •K  — | ]} |j         ‰fi ‰¤ŽV — Œd S r  rÒ  r  s     €€rÂ   r2  z+SQLCompiler.visit_values.<locals>.<genexpr>º  sL   øè è € ð "ð "à !ð 1˜AÔ0°Ð<Ð<¸Ð<Ð<ð"ð "ð "ð "ð "ð "rÄ   )rÐ  Ú_unnamedr¯  rú   r   rE   r˜  r­  ry  r*   r™  rŸ  r´  ry   Úcolumns)r  rÇ  ry  rÚ  rÉ  r¢  rú   rµ  s   `   `   rÂ   Úvisit_valueszSQLCompiler.visit_valuesž  sg  øø€ ØˆDÔ Ð.Ð.¨2Ð.Ð.ˆàÔð 	 ØˆDˆDÝ˜œ¥hÔ&?Ñ@Ô@ð 	 Ø×-Ò-¨h¸¼ÑEÔEˆDˆDà”<ˆDàÔð 	Ø ˆGˆGàˆGàð 	,Øð à Ð,�D�DÐ2Lð Ô! '×"3Ò"3Ñ"5Ô"5Ñ6ð ð ,Ø&+��?Ñ#à�G�GØ�A�AØ×3Ò3°D´M×4GÒ4GÈÑ4MÔ4MÑNÔNÐNÐNàŸ	š	ð "ð "ð "ð "ð "à%,¤_ð"ñ "ô "ñ ô ð ð ð
��ð !(  ¨¨¨Ð+�ØˆrÄ   c                ó&   — d | j         |fi |¤Ž› d�S rv  )rÐ  rÁ  s      rÂ   Úvisit_scalar_valueszSQLCompiler.visit_scalar_valuesÄ  s)   € Ø8Ð&�4Ô& wÐ5Ð5°"Ð5Ð5Ð8Ð8Ð8Ð8rÄ   c                ó   — d|z   S )NrÓ   r¾   )r  Úalias_name_texts     rÂ   r™  z&SQLCompiler.get_render_as_alias_suffixÇ  s   € Ø˜Ñ'Ð'rÄ   rù   rü   r  rý   r
  c                ó¼   — |�|dk    rd| _         d| _        |j        rt          j        d¦  «        ‚| j                             t          ||||¦  «        ¦  «         d S )NÚ*FTzxMost backends don't support SELECTing from a tuple() object.  If this is an ORM query, consider using the Bundle object.)r8  r7  rÒ  r8   rî  rš  r›  rø   r  s        rÂ   rì  zSQLCompiler._add_to_result_mapÊ  s~   € ð ˆ?˜g¨šn˜nØ$)ˆDÔ!Ø#'ˆDÔ ØÔð 	ÝÔ"ð4ñô ð ð
 	Ô×#Ò#Ý˜w¨¨g°uÑ=Ô=ñ	
ô 	
ð 	
ð 	
ð 	
rÄ   c                ó.   —  | j         d||d|€i n|fi |¤ŽS )aL  Render a column with necessary labels inside of a RETURNING clause.

        This method is provided for individual dialects in place of calling
        the _label_select_column method directly, so that the two use cases
        of RETURNING vs. SELECT can be disambiguated going forward.

        .. versionadded:: 1.4.21

        NF©Ú_label_select_column)r  rw  r”   rò  Úcolumn_clause_argsrÉ  s         rÂ   Ú_label_returning_columnz#SQLCompiler._label_returning_columnÞ  sC   € ð )ˆtÔ(ØØØØØ$Ð,ˆBˆBÐ2Dð
ð 
ð ð
ð 
ð 	
rÄ   c                óæ  ‡‡— ‰j                              | j        ¦  «        }|j        r|s|r|                     ‰¦  «        }n‰}|r| j        }|
r|Šˆfd„}n|‰ur|Šˆˆfd„}nd}|	s
J d¦   «         ‚t          ‰t          j        ¦  «        r'|‰urt          |‰j
        ‰j        f¬¦  «        }�n|}�n|r&|€
J d¦   «         ‚t          |||‰j        f¬¦  «        }nñ|‰urd}n•t          ‰t          j        ¦  «        r|o‰j         o‰j        du}ngt          ‰t          j        ¦  «        rd}nJt          ‰t          j        ¦  «        r
‰j        p|}n&t          ‰t          j        ¦  «        s
‰j        €d}nd}|rQ|s|
rJ ‚‰j        }t          |t          j        ¦  «        st          j        |¦  «        n|}t          |||f¬¦  «        }n|}|                     |	||¬	¦  «          |j        | fi |¤ŽS )
z.produce labeled columns present in a select().c                ó$   •—  ‰| |d|¦  «         d S ©Nr¾   r¾   )rù   rú   rü   r  rì  s       €rÂ   rœ  z;SQLCompiler._label_select_column.<locals>.add_to_result_map  s    ø€ Ø&Ð& w°°b¸%Ñ@Ô@Ð@Ð@Ð@rÄ   c                ó,   •—  ‰| |‰f|z   |¦  «         d S r  r¾   )rù   rú   rü   r  rì  r”   s       €€rÂ   rœ  z;SQLCompiler._label_select_column.<locals>.add_to_result_map!  s2   ø€ Ø&Ð&Ø ¨ y°7Ñ':¸Eñô ð ð ð rÄ   NzX_label_select_column is only relevant within the columns clause of a SELECT or RETURNING)rú  z*proxy_name is required if 'name' is passedTF)r‚  rœ  r¬  )rþ   r:  r¦  Ú_has_column_expressionÚcolumn_expressionrì  r¯  r   rI   rô  rú   rÇ  r²  rG   r±  r�   Ú
TextClauseÚUnaryExpressionÚwraps_column_expressionÚNamedColumnÚ_non_anon_labelÚ_anon_name_labelrE   r,  rÓ  )r  r›   r”   rò  ry  rà  rú   r„  r…  r‚  Úcolumn_is_repeatedÚneed_column_expressionsr¬  rB  Úcol_exprrœ  Úresult_exprÚrender_with_labelrì  s     `               @rÂ   rß  z SQLCompiler._label_select_columnó  s1  øø€ ð  Œ{×'Ò'¨¬Ñ5Ô5ˆàÔ&ð 	Ø#ð	Ø':ð	ð ×-Ò-¨fÑ5Ô5ˆHˆHàˆHàð 	%ð
 !%Ô 7Ðð
 "ð Ø%6Ð"ðAð Að Að Að Að Að
  Ð'Ð'Ø%6Ð"ðð ð ð ð ð øð !%Ðð %ð 	
ð 	
ð:ñ	
ô 	
ð 	
õ �f�hœnÑ-Ô-ð \	'Ø˜vÐ%Ð%Ý+Ø˜fœk°f´nÐ5Fðñ ô �‘ð '�‘àð T	'ð Ð&Ð&Ø;ñ 'Ô&Ð&õ (ØØàð Ô$ððñ ô ˆKˆKð& ˜vÐ%Ð%ð %)Ð!Ð!Ý˜F¥HÔ$9Ñ:Ô:ð *ð ð 1Ø"Ô-Ð-ð1àœ¨DÐ0ð "Ð!õ
 ˜F¥HÔ$7Ñ8Ô8ð *Ø$)Ð!Ð!Ý˜F¥HÔ$<Ñ=Ô=ð *Ø$*Ô$BÐ$LÀfÐ!Ð!õ
 ˜v¥xÔ';Ñ<Ô<ð	*ð Ô*Ð2à$(Ð!Ð!à$)Ð!à ð 'Ø*ð Bð
  2Ð1Ð1Ð1Ø*0Ô*AÐ'õ &Ø+­XÔ-Fñô ð-•HÔ-Ð.AÑBÔBÐBð -ð $õ ,ØÐ1¸j¸]ðñ ô ��ð '�à×!Ò!Ø"7Ø/Ø'ð 	"ñ 	
ô 	
ð 	
ð
 .ˆ{Ô-¨dÐIÐIÐ6HÐIÐIÐIrÄ   c                óF   — |                       ||¦  «        }|r|d|z   z  }|S r  )Úget_from_hint_text)r  rJ  r�   Úhintr´  Úhinttexts         rÂ   r¼  z!SQLCompiler.format_from_hint_text—  s2   € Ø×*Ò*¨5°$Ñ7Ô7ˆØð 	&Ø�s˜X‘~Ñ%ˆGØˆrÄ   c                ó   — d S r  r¾   )r  Úbyfromss     rÂ   Úget_select_hint_textz SQLCompiler.get_select_hint_text�  ó   € ØˆtrÄ   c                ó   — d S r  r¾   ©r  r�   rÕ  s      rÂ   rô  zSQLCompiler.get_from_hint_text   rú  rÄ   c                ó   — d S r  r¾   rü  s      rÂ   Úget_crud_hint_textzSQLCompiler.get_crud_hint_text£  rú  rÄ   c                ó,   — d                      |¦  «        S r  r  )r  Ú
hint_textss     rÂ   Úget_statement_hint_textz#SQLCompiler.get_statement_hint_text¦  s   € Ø�xŠx˜
Ñ#Ô#Ð#rÄ   r  rè  r  r  c                ó  — | j          }|r| j        n| j         d         }|                     || ¦  «        }|d         }|d         }	|r-|s+|                     |                     |	¦  «        d¬¦  «        }
n|                     ||	¬¦  «        }
|
S )Nrƒ  r  r  r¾   ©Úexplicit_correlate_fromsÚimplicit_correlate_froms)r†  rè  rs  Ú_get_display_fromsÚ
difference)r  Úselect_stmtry  rµ  rÉ  rð  r”  r  r  r  ry  s              rÂ   Ú_display_froms_for_selectz%SQLCompiler._display_froms_for_select°  s¾   € ð ”z�>ˆØ-5ÐI�Ô)Ð)¸4¼:Àb¼>ˆà#×:Ò:¸;ÈÑMÔMˆàÐ 1Ô2ˆØ˜^Ô,ˆàð 	˜'ð 	Ø!×4Ò4Ø)8×)CÒ)CØ ñ*ô *ð *,ð	 5ñ ô ˆEˆEð "×4Ò4Ø)8Ø)5ð 5ñ ô ˆEð ˆrÄ   Útranslate_select_structurec	           
     óÌ  ‡ ‡‡‡‡‡‡— |�
J d¦   «         ‚d|	d<    ‰j         ‰‰ fi |	¤Ž}
|
j        |	d<   |
j        Š‰ j         }|r‰ j        s|
‰ _        |d up|}‰ j        r0 ‰ j        ‰fd‰i|	¤Ž}|‰ur|
}‰}|Š ‰j         ‰‰ fi |	¤Ž}
|
j        Š|r‰ j        n‰ j        d         }|p+|                     dd¦  «        p|                     dd¦  «        xŠŠ|rdŠ‰sd	|	v r|	d	= ‰                      ‰|
|‰||¦  «        }|	 	                    ¦   «         Š‰ 
                    ddd
œ¦  «         d}‰j        r#‰                      ‰¦  «        \  }}|r||dz   z  }nd }‰j        r‰                      ‰|	¦  «         ‰j        r| ‰ j        ‰‰j        fi |	¤Žz  }| ‰ j        ‰fi |	¤Žz  }d„ ˆˆˆˆˆˆ fd„|
j        D ¦   «         D ¦   «         }‰rU|�St'          t)          d„ |
j        D ¦   «         d„ |j        D ¦   «         ¦  «        ¦  «        Šˆfd„‰ j        D ¦   «         ‰ _        ‰                      |‰|
|||||	¦  «        }‰j        r0ˆ fd„‰j        D ¦   «         }|r|d‰                      |¦  «        z   z  }‰ j        r5|r|r1|st5          ‰ j        ¦  «        nd }‰                      |¬¦  «        |z   }‰j        r|d ‰ j        ‰‰j        fi |	¤Žz   z  }‰ j                             d¦  «         |S )NzpSQLAlchemy 1.4 requires use of the translate_select_structure hook for structural translations of SELECT objectsFr‚  r­  ry  rƒ  r   r  rœ  )r—  r‚  zSELECT r!  c                ó   — g | ]}|®|‘ŒS r  r¾   r{  s     rÂ   r}  z,SQLCompiler.visit_select.<locals>.<listcomp>A  s)   € ð 
ð 
ð 
àð* ˆ}ð- ð, ˆ}ˆ}rÄ   c                óZ   •— g | ]'\  }}}}}‰                      ‰
|‰	‰‰||||‰¬ ¦
  «
        ‘Œ(S ))rú   r„  r…  rî  rï  rÞ  )rÀ   rú   r„  r…  r”   r†  ry  rà  rï  rò  r  r  s         €€€€€€rÂ   r}  z,SQLCompiler.visit_select.<locals>.<listcomp>C  sm   ø€ ð ð ð ñØØØ'ØØð# ×)Ò)ØØØ'ØØ&ØØ)Ø(;Ø'/Ø,Cð *ñ ô ðð ð rÄ   c                ó   — g | ]
\  }}}}}|‘ŒS r¾   r¾   ©rÀ   r1  r„  r…  rú   r†  s         rÂ   r}  z,SQLCompiler.visit_select.<locals>.<listcomp>a  ó9   € ð 	ð 	ð 	ñØØ&Ø/Ø Ø$ð ð	ð 	ð 	rÄ   c                ó   — g | ]
\  }}}}}|‘ŒS r¾   r¾   r  s         rÂ   r}  z,SQLCompiler.visit_select.<locals>.<listcomp>k  r  rÄ   c           
     óp   •— g | ]2\  }}}}t          ||t          ˆfd „|D ¦   «         ¦  «        |¦  «        ‘Œ3S )c              3  óD   •K  — | ]}‰                      ||¦  «        V — Œd S r  r¤  )rÀ   ÚoÚ	translates     €rÂ   r2  z6SQLCompiler.visit_select.<locals>.<listcomp>.<genexpr>z  s1   øè è € Ð$FÐ$F¸Q Y§]¢]°1°aÑ%8Ô%8Ð$FÐ$FÐ$FÐ$FÐ$FÐ$FrÄ   )rø   r4  )rÀ   r1  rú   rÏ  r  r  s        €rÂ   r}  z,SQLCompiler.visit_select.<locals>.<listcomp>x  sc   ø€ ð $ð $ð $ñ *�C˜˜s Eõ #Ø˜�uÐ$FÐ$FÐ$FÐ$FÀ#Ð$FÑ$FÔ$FÑFÔFÈñô ð$ð $ð $rÄ   c                ó:   •— g | ]\  }}|d ‰j         j        fv ¯|‘ŒS ©rÜ  ©r¦  rú   )rÀ   Údialect_nameÚhtr  s      €rÂ   r}  z,SQLCompiler.visit_select.<locals>.<listcomp>‹  s<   ø€ ð ð ð á&�\ 2Ø C¨¬Ô):Ð#;Ð;Ð;ð à;Ð;Ð;rÄ   ræ  )rs  Ú_ambiguous_table_name_mapr'  r†  r  r
  rè  r¥  Ú_setup_select_stackru  r,  Ú_hintsÚ_setup_select_hintsré  rê  r–  r•  Úget_select_precolumnsÚcolumns_plus_namesrí  rï  rš  Ú_compose_select_bodyÚ_statement_hintsr  rJ  r±  rí  r—  r|  )r  r  ry  Úinsert_intor|  rï  Úselect_wraps_forrµ  rÚ  rÐ  r  rð  Úis_embedded_selectÚnew_select_stmtÚcompile_state_wraps_forr”  ry  rÕ  Ú	hint_textÚbyfromÚinner_columnsÚper_dialectrç  rà  rï  rò  r  s   ```                    @@@@rÂ   Úvisit_selectzSQLCompiler.visit_selectÔ  s  øøøøøøø€ ð  Ð'Ð'ð-ñ (Ô'Ð'ð +0ˆÐ&Ñ'à:˜Ô:Ø˜ð
ð 
Ø!'ð
ð 
ˆð
 Ô3ð 	Ø&ñ	
ð $Ô-ˆà”z�>ˆàð 	/˜DÔ.ð 	/Ø!.ˆDÔà+°4Ð7ÐF¸;Ðð
 Ô*ð 	6Ø=˜dÔ=Øðð Ø$*ðØ.4ðð ˆOð  kÐ1Ð1Ø*7Ð'Ø#.Ð Ø-�à B Ô BØ ð!ð !Ø)/ð!ð !�ð ,Ô5�à-5ÐI�Ô)Ð)¸4¼:Àb¼>ˆð ð >Ø�yŠyÐ7¸Ñ?Ô?ð>à�yŠyÐ5°uÑ=Ô=ð	
ÐÐ5ð ð 	(Ø"'Ðð
 #ð 	,Ð':¸fÐ'DÐ'DØÐ*Ð+à×(Ò(Ø˜¨¨v°wÀñ
ô 
ˆð $Ÿ[š[™]œ]ÐØ×!Ò!Ø$)ÀEÐJÐJñ	
ô 	
ð 	
ð ˆàÔð 	Ø $× 8Ò 8¸Ñ EÔ EÑˆI�vØð (Ø˜	 C™Ñ'�øàˆFàÔ(ð 	AØ×+Ò+¨K¸Ñ@Ô@Ð@àÔ ð 	ØÐ+�DÔ+Ø˜[Ô2ðð Ø6<ðð ñ ˆDð 	Ð*�Ô*¨;ÐAÐA¸&ÐAÐAÑAˆð
ð 
ðð ð ð ð ð ð ð ð ð& #Ô5ð'ñ ô ð
ñ 
ô 
ˆð4 ð "	Ð#3Ð#?õ Ýð	ð 	ð +Ô=ð	ñ 	ô 	ð	ð 	ð 5ÔGð	ñ 	ô 	ñô ñô ˆIð2$ð $ð $ð $ð .2Ô-Að	$ñ $ô $ˆDÔ ð ×(Ò(ØØØØØØØØñ	
ô 	
ˆð Ô'ð 	Hðð ð ð à*5Ô*Fðñ ô ˆKð
 ð HØ˜˜d×:Ò:¸;ÑGÔGÑGÑG�ð Œ9ð 	OÐ0ð 	O°Hð 	OØ3;ÐE�C ¤
™OœO˜OÀˆMØ×*Ò*¸Ð*ÑGÔGÈ$ÑNˆDàÔ ð 	Ø�CÐ1˜$Ô1Ø˜[Ô2ðð Ø6<ðð ñ ñ ˆDð 	Œ
�Š�rÑÔÐàˆrÄ   r›   r"  úTuple[str, _FromHintsType]c                ó€   ‡ — ˆ fd„|j                              ¦   «         D ¦   «         }‰                      |¦  «        }||fS )Nc           	     óv   •— i | ]5\  \  }}}|d ‰j         j        fv ¯||d|                     ‰d¬¦  «        iz  “Œ6S )rÜ  rú   T)r{  ©r¦  rú   rÓ  )rÀ   r�  r¦  rö  r  s       €rÂ   r^  z3SQLCompiler._setup_select_hints.<locals>.<dictcomp>¤  sh   ø€ ð 
ð 
ð 
ñ +Ñ �˜ (Ø˜3 ¤Ô 1Ð2Ð2Ð2ð �8Ø�u×/Ò/°¸TÐ/ÑBÔBÐCñDð 3Ð2Ð2rÄ   )r  r°  rù  )r  r›   r)  r(  s   `   rÂ   r  zSQLCompiler._setup_select_hints¡  s[   ø€ ð
ð 
ð 
ð 
ð /5¬m×.AÒ.AÑ.CÔ.Cð
ñ 
ô 
ˆð ×-Ò-¨fÑ5Ô5ˆ	Ø˜&Ð Ð rÄ   c           	     ó.  — |d         }|d         }|dk    r||d<   nf|rd|d         }	t          |	j        ¦  «        }
t          |j        ¦  «        |
k    r0t          j        dd|
|dz   t          |j        ¦  «        fz  ¦  «        ‚|r-|s+|                     |                     |¦  «        d¬¦  «        }n|                     ||¬¦  «        }t          t          |Ž ¦  «        }| 	                    |¦  «        }||||d	œ}| j
                             |¦  «         |S )
Nr  r  r   r!  z}All selectables passed to CompoundSelect must have identical numbers of columns; select #%d has %d columns, select #%d has %dr   r¾   r  )r  r  r$   r  )r±  r~  r   r8   rî  r  r  rq   r+   r�   r†  r›  )r  r›   r  r”  ry  rµ  rï  r  r  r!  Únumcolsry  Únew_correlate_fromsÚall_correlate_fromsrñ  s                  rÂ   r  zSQLCompiler._setup_select_stack­  su  € ð  Ð 1Ô2ˆØ˜^Ô,ˆà˜QÒÐØ &ˆE�*ÑÐØð 	Ø˜ZÔ(ˆHÝ˜(Ô8Ñ9Ô9ˆGå�=Ô3Ñ4Ô4¸Ò?Ð?ÝÔ&ð!ð
 ØØ&¨Ñ*Ý˜FÔ8Ñ9Ô9ð	ñ		ñô ð ð ð 	˜'ð 	Ø!×4Ò4Ø)8×)CÒ)CØ ñ*ô *ð *,ð	 5ñ ô ˆEˆEð "×4Ò4Ø)8Ø)5ð 5ñ ô ˆEõ
 "¥-°Ð"7Ñ8Ô8ÐØ1×7Ò7¸ÑHÔHÐð 0Ø2Ø Ø*ð	*
ð *
ˆ	ð 	Œ
×Ò˜)Ñ$Ô$Ð$àˆrÄ   c	                ój  ‡ ‡‡‡— |d                      |¦  «        z  }‰ j        t          z  r5t          i t	          ¦   «         ¦  «        Š‰ j        t
          z  }	|r‰‰ _        nd Šd}	|s|                     ¦   «         }|r[|dz  }|j        r(|d                      ˆˆˆˆ fd„|D ¦   «         ¦  «        z  }n>|d                      ˆˆˆ fd„|D ¦   «         ¦  «        z  }n|‰  	                    ¦   «         z  }|j
        r ‰ j        |j
        fd‰i‰¤Ž}
|
r|d|
z   z  }|	r‰€J ‚‰                     ¦   «          |j        r| ‰ j        |fi ‰¤Žz  }|j        r ‰ j        |j        fi ‰¤Ž}
|
r|d|
z   z  }|j        r| ‰ j        |fi ‰¤Žz  }|j        r| ‰ j        |fi ‰¤Žz  }|j        �| ‰ j        |fi ‰¤Žz  }|S )	NrÑ   Fz 
FROM c           	     ó4   •— g | ]} |j         ‰fd ‰‰dœ‰¤Ž‘ŒS )T)ry  r|  rÚ  rÒ  )rÀ   Úfr)  rÚ  rÐ  r  s     €€€€rÂ   r}  z4SQLCompiler._compose_select_body.<locals>.<listcomp>  sZ   ø€ ð 	ð 	ð 	ð ð -˜Ô,Ø ðà#'Ø&,Ø(3ð	ð ð
 %ðð ð	ð 	ð 	rÄ   c                ó2   •— g | ]} |j         ‰fd ‰dœ‰¤Ž‘ŒS )T©ry  rÚ  rÒ  )rÀ   r7  rÚ  rÐ  r  s     €€€rÂ   r}  z4SQLCompiler._compose_select_body.<locals>.<listcomp>  sW   ø€ ð ð ð ð ð -˜Ô,Ø ðà#'Ø(3ðð ð %ð	ð ðð ð rÄ   rÚ  z 
WHERE z	 
HAVING )ry   rX  rm  rq  rq   rn  rÚ  Úrstripr  rt  Ú_where_criteriar  r�  Ú_group_by_clausesrw  Ú_having_criteriaÚ_order_by_clausesrx  ry  rz  Ú_for_update_argÚfor_update_clause)r  rÕ  r›   r  r*  ry  r)  rð  rÐ  Úwarn_lintingÚtrÚ  s   `     ` `  @rÂ   r!  z SQLCompiler._compose_select_bodyá  sÈ  øøøø€ ð 	�—	’	˜-Ñ(Ô(Ñ(ˆàŒ<Õ4Ñ4ð 	!Ý$ R­©¬Ñ/Ô/ˆKØœ<­,Ñ6ˆLØð /Ø#.�Ô øàˆKØ ˆLð ð 	!Ø—;’;‘=”=ˆDàð 	(Ø�JÑˆDàŒ}ð Ø˜Ÿ	š	ð	ð 	ð 	ð 	ð 	ð 	ð 	ð "'ð	ñ 	ô 	ñô ñ ��ð ˜Ÿ	š	ðð ð ð ð ð ð "'ðñ ô ñ
ô 
ñ 
��ð �D×%Ò%Ñ'Ô'Ñ'ˆDàÔ!ð 	(Ø1�Ô1ØÔ&ðð Ø4?ðØCIðð ˆAð ð (Ø˜ a™Ñ'�àð 	ØÐ*Ð*Ð*Ø×ÒÑÔÐàÔ#ð 	;ØÐ(�DÔ(¨Ð:Ð:°6Ð:Ð:Ñ:ˆDàÔ"ð 	)Ø1�Ô1ØÔ'ðð Ø+1ðð ˆAð ð )Ø˜ qÑ(Ñ(�àÔ#ð 	;ØÐ(�DÔ(¨Ð:Ð:°6Ð:Ð:Ñ:ˆDàÔ*ð 	=ØÐ*�DÔ*¨6Ð<Ð<°VÐ<Ð<Ñ<ˆDàÔ!Ð-ØÐ*�DÔ*¨6Ð<Ð<°VÐ<Ð<Ñ<ˆDàˆrÄ   c                ó\   ‡ ‡— d                      ˆˆ fd„|D ¦   «         ¦  «        }|r|dz  }|S )Nr!  c              3  ób   •K  — | ])\  }}|d v s|‰j         j        k    ¯ |j        ‰fi ‰¤ŽV — Œ*dS ))NrÜ  Nr0  )rÀ   Úprefixr  rÉ  r  s      €€rÂ   r2  z1SQLCompiler._generate_prefixes.<locals>.<genexpr>A  sb   øè è € ð 
ð 
á$�˜Ø˜{Ð*Ð*¨l¸d¼lÔ>OÒ.OÐ.Oð &ˆFÔ% dÐ1Ð1¨bÐ1Ð1à.OÐ.OÐ.OÐ.Oð
ð 
rÄ   r  )r  rw  rª  rÉ  r,  s   `  ` rÂ   r•  zSQLCompiler._generate_prefixes@  sZ   øø€ Ø—’ð 
ð 
ð 
ð 
ð 
à(0ð
ñ 
ô 
ñ 
ô 
ˆð
 ð 	Ø�c‰MˆFØˆrÄ   c                ó0  — | j         sdS |rš|dk    r”t          j        ¦   «         }t          | j                              ¦   «         ¦  «        D ]Y}| j        |                     ¦   «                  \  }}}|j        p|j        }||k    p
|o||dz   k    }	|r|	sŒI| j         |         ||<   ŒZn| j         }|sdS t          d„ |D ¦   «         ¦  «        }
|  	                    |
¦  «        dz   }|d 
                    d„ |                     ¦   «         D ¦   «         ¦  «        z  }|dz  }|ry|dk    rst          |                     ¦   «         ¦  «        D ]Q}| j        |                     ¦   «                  \  }}}| j         |= | j        ||f= | j        |                     ¦   «         = ŒR|S )zå
        include_following_stack
            Also render the nesting CTEs on the next stack. Useful for
            SQL structures like UNION or INSERT that can wrap SELECT
            statements containing nesting CTEs.
        r–  r   c                ó   — g | ]	}|j         ‘Œ
S r¾   )r’  )rÀ   ry  s     rÂ   r}  z2SQLCompiler._render_cte_clause.<locals>.<listcomp>n  s   € Ð<Ð<Ð<°˜cœmÐ<Ð<Ð<rÄ   r!  ú, 
c                ó   — g | ]}|‘ŒS r¾   r¾   )rÀ   Útxts     rÂ   r}  z2SQLCompiler._render_cte_clause.<locals>.<listcomp>q  s   € Ð >Ð >Ð >¨ Ð >Ð >Ð >rÄ   z
 )rJ  r&   r�  rˆ  ÚkeysrL  r‹  rŒ  ri   Úget_cte_preamblery   rÂ  rK  )r  rç  rr  rJ  ry  rŸ  r›  rt  rŒ  Úis_rendered_levelrM  Úcte_texts               rÂ   rí  zSQLCompiler._render_cte_clauseJ  sí  € ð Œyð 	Ø�2ð ð 	˜]¨QÒ.Ð.ÝÔ#Ñ%Ô%ˆDÝ˜DœIŸNšNÑ,Ô,Ñ-Ô-ð +ð +�Ø04Ô0FØ×*Ò*Ñ,Ô,ô1Ñ-�	˜8 Xð œ+Ð9¨Ô)9�Ø$-°Ò$>ð %Ø+ÐN°	¸]ÈQÑ=NÒ0Nð "ð  ð Ð$5ð Øà œI cœN��S‘	�	ð+ð ”9ˆDàð 	Ø�2ÝÐ<Ð<°tÐ<Ñ<Ô<Ñ=Ô=ˆà×(Ò(¨Ñ8Ô8¸3Ñ>ˆØ�F—K’KÐ >Ð >°·²±´Ð >Ñ >Ô >Ñ?Ô?Ñ?ˆØ�EÑˆàð 	E˜]¨QÒ.Ð.Ý˜DŸIšI™KœKÑ(Ô(ð Eð E�Ø04Ô0FØ×*Ò*Ñ,Ô,ô1Ñ-�	˜8 Xð ”I˜c�NØÔ+¨Y¸Ð,AÐBØÔ*¨3×+AÒ+AÑ+CÔ+CÐDÐDàˆrÄ   c                ó   — |rdS dS )NzWITH RECURSIVEÚWITHr¾   )r  r’  s     rÂ   rL  zSQLCompiler.get_cte_preamble  s   € Øð 	Ø#Ð#à�6rÄ   c                óR   — |j         rt          j        dd¬¦  «         |j        rdndS )zcCalled when building a ``SELECT`` statement, position is just
        before column list.

        a  DISTINCT ON is currently supported only by the PostgreSQL dialect.  Use of DISTINCT ON for other backends is currently silently ignored, however this usage is deprecated, and will raise CompileError in a future release for all backends that do not support this syntax.z1.4©ÚversionrÕ   r–  )Ú_distinct_onr&   Úwarn_deprecatedÚ	_distinct©r  r›   rÉ  s      rÂ   r  z!SQLCompiler.get_select_precolumns…  sG   € ð
 Ôð 	ÝÔ ð3ð
 ðñ ô ð ð %Ô.Ð6ˆ{ˆ{°BÐ6rÄ   c                óf   —  | j         |j        t          t          j                 fi |¤Ž}|rd|z   S dS )z5allow dialects to customize how GROUP BY is rendered.z
 GROUP BY r–  )r
  r<  r™  r!   Úcomma_op)r  r›   rÉ  Úgroup_bys       rÂ   rw  zSQLCompiler.group_by_clause•  sO   € ð 1�4Ô0ØÔ$¥iµ	Ô0BÔ&Cð
ð 
ØGIð
ð 
ˆð ð 	Ø (Ñ*Ð*à�2rÄ   c                óf   —  | j         |j        t          t          j                 fi |¤Ž}|rd|z   S dS )z5allow dialects to customize how ORDER BY is rendered.z
 ORDER BY r–  )r
  r>  r™  r!   rY  )r  r›   rÉ  rE  s       rÂ   rx  zSQLCompiler.order_by_clause   sO   € ð 1�4Ô0ØÔ$¥iµ	Ô0BÔ&Cð
ð 
ØGIð
ð 
ˆð ð 	Ø (Ñ*Ð*à�2rÄ   c                ó   — dS )Nz FOR UPDATEr¾   rW  s      rÂ   r@  zSQLCompiler.for_update_clause¬  s   € Øˆ}rÄ   rw  rC   Úreturning_colsúSequence[ColumnElement[Any]]rò  c               óª   ‡ ‡‡‡— ˆˆˆ ˆfd„‰                      dt          j        |¦  «        ¬¦  «        D ¦   «         }dd                     |¦  «        z   S )Nc           
     óF   •— g | ]\  }}}}} ‰j         ‰	|‰f||||d œ‰¤Ž‘ŒS ))r…  rî  rú   r„  )rá  )
rÀ   rú   r„  r…  r”   r†  rÉ  rò  r  rw  s
         €€€€rÂ   r}  z0SQLCompiler.returning_clause.<locals>.<listcomp>·  st   ø€ ð 
ð 
ð 
ñØØØ#ØØð )ˆDÔ(ØØØ#ð	ð %8Ø#+ØØ%ð	ð 	ð ð	ð 	ð
ð 
ð 
rÄ   T)Úcolsú
RETURNING rÑ   )r”  r   Ú_select_iterablesry   ©r  rw  r]  rò  rÉ  rÕ  s   `` `` rÂ   Úreturning_clausezSQLCompiler.returning_clause¯  s}   øøøø€ ð
ð 
ð 
ð 
ð 
ð 
ð 
ð" ×2Ò2Ø�4Ô1°.ÑAÔAð 3ñ ô ð#
ñ 
ô 
ˆð, ˜dŸiši¨Ñ0Ô0Ñ0Ð0rÄ   c                ó¢   — d}|j         �|d | j        |j         fi |¤Žz   z  }|j        �%|j         €|dz  }|d | j        |j        fi |¤Žz   z  }|S )Nr–  z
 LIMIT z

 LIMIT -1z OFFSET )Ú_limit_clauser±  Ú_offset_clause)r  r›   rÉ  rÕ  s       rÂ   r‚  zSQLCompiler.limit_clauseÏ  s}   € ØˆØÔÐ+Ø�K , $¤,¨vÔ/CÐ"JÐ"JÀrÐ"JÐ"JÑJÑJˆDØÔ Ð,ØÔ#Ð+Ø˜Ñ%�Ø�J  ¤¨fÔ.CÐ!JÐ!JÀrÐ!JÐ!JÑJÑJˆDØˆrÄ   c                ó˜  — |€|j         }|j        }ndddœ}d}|j        �I|j        }|r)|                     |¦  «        r|                     ¦   «         } | j        |fi |¤Ž}	|d|	z  z  }n|r|dz  }|�X|r)|                     |¦  «        r|                     ¦   «         }|d | j        |fi |¤Ž›|d         rdnd›d	|d
         rdnd›�z  }|S )NF)rû  Ú	with_tiesr–  z
 OFFSET %s ROWSz
 OFFSET 0 ROWSz
 FETCH FIRST rû  z PERCENTz ROWS rj  z	WITH TIESÚONLY)r€  Ú_fetch_clause_optionsrh  Ú_simple_int_clauseÚrender_literal_executer±  )
r  r›   r�  Úrequire_offsetÚ"use_literal_execute_for_simple_intrÉ  Úfetch_clause_optionsrÕ  Úoffset_clauseÚ
offset_strs
             rÂ   r�  zSQLCompiler.fetch_clauseÙ  sI  € ð ÐØ!Ô/ˆLØ#)Ô#?Ð Ð à/4À5Ð#IÐ#IÐ àˆàÔ Ð,Ø"Ô1ˆMà2ðGà×-Ò-¨mÑ<Ô<ðGð !.× DÒ DÑ FÔ F�Ø%˜œ mÐ:Ð:°rÐ:Ð:ˆJØÐ'¨*Ñ4Ñ4ˆDˆDØð 	'ØÐ&Ñ&ˆDàÐ#à2ðEà×-Ò-¨lÑ;Ô;ðEð  ,×BÒBÑDÔD�ØˆDØ�”˜\Ð0Ð0¨RÐ0Ð0Ð0Ø2°9Ô=ÐE�
�
À2ÐEÐEØ3°KÔ@ÐL��ÀfÐLðñ ˆDð
 ˆrÄ   c	                ó2  — |r|j         |j        |<   |s|�r | j                             |¦  «        }
|r@|
r>| j                             |
¦  «        dz   | j                             |j        ¦  «        z   }n~| j                             |j        ¦  «        }|
s]|r[|j        |v rR|                      d||j                 ¦  «        }||                      | j         	                    d |¦  «        ¦  «        z   }|r"||v r|  
                    ||||         |¦  «        }|S dS )Nr  r°  r–  )Úfullnamery  rŸ  r¶  r·  r´  rú   r˜  r™  r“  r¼  )r  r�   ry  r´  r{  r|  Ú
use_schemarÚ  r­  rÐ  rº  rj  Ú	anon_names                rÂ   Úvisit_tablezSQLCompiler.visit_table  s`  € ð ð 	6Ø',¤~ˆKÔ˜eÑ$àð 	�Vñ 	Ø#œ}×>Ò>¸uÑEÔEÐàð Ð.ð à”M×.Ò.Ð/?Ñ@Ô@Øñà”m×)Ò)¨%¬*Ñ5Ô5ñ6ð �ð ”m×)Ò)¨%¬*Ñ5Ô5�ð )ðà0ðð œ
Ð&>Ð>Ð>à $× :Ò :ØÐ!9¸%¼*Ô!Eñ!ô !�Ið  × ?Ò ?Øœ×2Ò2°4¸ÑCÔCñ!ô !ñ �Cð ð ˜U iÐ/Ð/Ø×0Ò0Ø˜ 	¨%Ô 0°&ñô �ð ˆJà�2rÄ   c                óz  — |r[|j                              t          j        t	          |j        j        ¦  «        t	          |j        j        ¦  «        ¦  «        ¦  «         |j        rd}n|j	        rd}nd} |j        j
        | fd|dœ|¤Ž|z    |j        j
        | fd|dœ|¤Žz   dz    |j        j
        | fd|i|¤Žz   S )Nz FULL OUTER JOIN z LEFT OUTER JOIN z JOIN Tr9  ú ON rÚ  )rz  r,  rÀ  rÝ  r*   rz   r+   rŽ   rw   ÚisouterrÓ  Úonclause)r  ry   ry  rÚ  rÐ  Ú	join_types         rÂ   Ú
visit_joinzSQLCompiler.visit_join2  s-  € Øð 	ØÔ×$Ò$ÝÔ!Ý˜dœiÔ5Ñ6Ô6Ý˜dœjÔ6Ñ7Ô7ñô ñô ð ð Œ9ð 	!Ø+ˆIˆIØŒ\ð 	!Ø+ˆIˆIà ˆIà(ˆDŒIÔ(ØðØ!¨{ðð Ø>Dðð ð ñð ,ˆdŒjÔ+ØðØ!¨{ðð Ø>Dðð ñ	ð ñð /ˆdŒmÔ.Øðð Ø"-ðØ17ðð ñð	
rÄ   c                ó¸   ‡ — ˆ fd„|j                              ¦   «         D ¦   «         }|j        |v r(‰                      ||j        ||j                 d¦  «        }||fS )Nc                óB   •— i | ]\  \  }}}|d ‰j         j        fv ¯||“ŒS r  r  )rÀ   r�   r¦  r(  r  s       €rÂ   r^  z1SQLCompiler._setup_crud_hints.<locals>.<dictcomp>Q  sC   ø€ ð 
ð 
ð 
á+Ñ �˜ )Ø˜3 ¤Ô 1Ð2Ð2Ð2ð �9à2Ð2Ð2rÄ   T)r  r°  r�   r¼  )r  rw  Ú
table_textÚdialect_hintss   `   rÂ   Ú_setup_crud_hintszSQLCompiler._setup_crud_hintsP  s|   ø€ ð
ð 
ð 
ð 
à/3¬{×/@Ò/@Ñ/BÔ/Bð
ñ 
ô 
ˆð
 Œ:˜Ð&Ð&Ø×3Ò3Ø˜DœJ¨°d´jÔ(AÀ4ñô ˆJð ˜jÐ(Ð(rÄ   r�   rK   rD  c                óD  — | j         j        }|j        }|j        }|€dS |j        r!| j                             |j        d¦  «        }n | j                             |j        d¦  «        }||z  r|S |j	        r+t          j        d|d         › d| j         j        › d�¦  «        ‚dS )a)  given a :class:`.Table`, return a usable sentinel column or
        columns for this dialect if any.

        Return None if no sentinel columns could be identified, or raise an
        error if a column was marked as a sentinel explicitly but isn't
        compatible with this dialect.

        Nr   zColumn z@ can't be explicitly marked as a sentinel column when using the a�   dialect, as the particular type of default generation on this column is not currently compatible with this dialect's specific INSERT..RETURNING syntax which can receive the server-generated value in a deterministic way.  To remove this error, remove insert_sentinel=True from primary key autoincrement columns; these columns are automatically used as sentinels for supported dialects in any case.)r¦  Ú"insertmanyvalues_implicit_sentinelÚ _sentinel_column_characteristicsrÕ  Ú
is_autoincÚ_sentinel_col_autoinc_lookupr¥  Údefault_characterizationÚ _sentinel_col_non_autoinc_lookupÚis_explicitr8   r3  rú   )r  r�   Úsentinel_optsÚsentinel_characteristicsÚ	sent_colsÚbitmasks         rÂ   Ú_get_sentinel_column_for_tablez*SQLCompiler._get_sentinel_column_for_table|  sé   € ð œÔGˆØ#(Ô#IÐ à,Ô4ˆ	àÐØ�4à#Ô.ð 	ØÔ7×;Ò;Ø(ÔAÀ1ñô ˆGˆGð Ô;×?Ò?Ø(ÔAÀ1ñô ˆGð ˜7Ñ"ð 	ØÐà#Ô/ð 	õ Ô)ð
@˜) Aœ,ð 
@ð 
@à”<Ô$ð
@ð 
@ð 
@ñô ð ð ˆtrÄ   rY   Úgeneric_setinputsizesrN  rR  r@  rB  ú Iterator[_InsertManyValuesBatch]c              #  óL  ‡ ‡‡‡*‡+‡,‡-‡.‡/‡0‡1K  — ‰ j         }|€J ‚t          ‰¦  «        }|j        r‰ j        j        sd}d}	n,‰ j        j        r|r‰ j        r|j        �|j        rd}d}	nd}d}	|r@t          t          d‰¦  «        d¦  «        D ]\  }
Š1t          |‰1‰‰1g||
|||	¦	  «	        V — Œ d S d|j        › d�}|                     |d¦  «        }‰ j        j        }|rCt          ‰ j        ¦  «        }t          |j        ¦  «        }||z
  }t#          |||z
  |z  ¦  «        }t%          ‰¦  «        }d }d}
||z  ||z  rdndz   }|j        }|€J ‚dxŠ.Š/‰ j        s¤‰ j        r‰ j        Š,ni Š,t+          ‰d         ¦  «        }ˆ,ˆ fd	„Š+|j        rd
}nd}dd                     ˆ+fd„|D ¦   «         ¦  «        › |› d�}|                     ˆ,fd„|D ¦   «         ¦  «        }ˆfd„|                     |¦  «        D ¦   «         }dŠ-nýd}t+          ¦   «         }i }|j        rd|j        › d�Š-nd|j        › d�Š-t+          ¦   «         Š*|j        D ]}‰*                     |d         ¦  «         Œ‰*r_‰ j        }|€J ‚ˆ*fd„t          |¦  «        D ¦   «         }t#          |¦  «        Š.t9          |¦  «        dz   Š/t          |¦  «        ‰/‰.z
  k    sJ ‚‰ j        r2t=          j        ‰ j         ¦  «        }t=          j!        |› d�d‰-¦  «        Š-|�r¨t          d|d|…         ¦  «        }g |d|…<   ‰r2d„ ˆfd„tE          t          |¦  «        ¦  «        D ¦   «         D ¦   «         }‰ j        �rR|j#        }|t          |d         ¦  «        k    rdx}} |}!n/|d         d ‰.…         }|d         ‰/d …         } ˆ.ˆ/fd„|D ¦   «         }!|j        r7d                     ˆ-fd„t          |¦  «        D ¦   «         ¦  «        d d…         }"n‰-t          |¦  «        z  d d…         }"‰ j        rR|dk    rL| rJ ‚‰.dz   }#|t          |¦  «        z  |#z   }$tI          ˆ fd„tE          |#|$¦  «        D ¦   «         ¦  «        }%|"|%z  }"|                     d|"¦  «        }&tI          tJ          j&         '                    |!¦  «        ¦  «        }'||'z   | z   }'nØg }(| (                    ¦   «         }'t          |¦  «        D ]‰\  Š0Š1|                     dtS          ‰0¦  «        ¦  «        })|j        r#|)                     dtS          ‰0¦  «        ¦  «        })|( *                    |)¦  «         |'                     ˆ0ˆ1fd „|D ¦   «         ¦  «         ŒŠ|                     dd                     |(¦  «        ¦  «        }&t          |&|'||||
||d¦	  «	        V — |
dz  }
|�°¦d S d S )!NTFrP  r   r  r  Ú__EXECMANY_TOKEN__r   c                ó˜   •— | D ]E}‰                      ||¦  «        }|                     ‰j        d|iz  ‰j        d|› d�iz  ¦  «        }ŒF|S )Nrú   Ú__EXECMANY_INDEX__)r¥  rÓ  r3  )rK  Ú	formattedr1  rE  r  s      €€rÂ   Úapply_placeholderszISQLCompiler._deliver_insertmanyvalues_batches.<locals>.apply_placeholders!  sq   ø€ Øð ð �CØ,×0Ò0°°cÑ:Ô:�CØ )× 1Ò 1ØÔ)¨V°S¨MÑ9ØÔ)Ø! cÐ#=Ð#=Ð#=Ð>ñ?ñ!ô !�I�Ið
 !Ð rÄ   z, _IMV_VALUES_COUNTERr–  rÑ   c              3  ó:   •K  — | ]\  }}}} ‰||¦  «        V — Œd S r  r¾   )rÀ   r  r—  Ú	bind_keysr˜  s       €rÂ   r2  z@SQLCompiler._deliver_insertmanyvalues_batches.<locals>.<genexpr>/  sL   øè è € ð 6ð 6á.�A�q˜) Yð #Ð" 9¨iÑ8Ô8ð6ð 6ð 6ð 6ð 6ð 6rÄ   c              3  óX   •K  — | ]$\  }}}}|D ]}‰                      ||¦  «        V — ŒŒ%d S r  r¤  )rÀ   r  rš  r1  rE  s       €rÂ   r2  z@SQLCompiler._deliver_insertmanyvalues_batches.<locals>.<genexpr>4  sf   øè è € ð 4ð 4á&�A�q˜!˜YØ$ð4ð 4ð ð #×&Ò& s¨CÑ0Ô0ð4ð 4ð 4ð 4ð 4ð 4ð 4rÄ   c                ó.   •— i | ]}|‰d          |         “ŒS )r   r¾   )rÀ   r1  r(  s     €rÂ   r^  zASQLCompiler._deliver_insertmanyvalues_batches.<locals>.<dictcomp>9  s4   ø€ ð ð ð àð �Z ”] 3Ô'ðð ð rÄ   z, _IMV_VALUES_COUNTER), z), r  c                ó"   •— h | ]\  }}|‰v ¯	|’ŒS r¾   r¾   )rÀ   rg  rú   Úall_names_we_will_expands      €rÂ   rÃ   z@SQLCompiler._deliver_insertmanyvalues_batches.<locals>.<setcomp>V  s3   ø€ ð (ð (ð (á!˜˜TØÐ7Ð7Ð7ð à7Ð7Ð7rÄ   z\d+r—  r  c                ó    — g | ]\  }}}|||f‘ŒS r¾   r¾   )rÀ   Únew_keyÚlen_rþ  s       rÂ   r}  zASQLCompiler._deliver_insertmanyvalues_batches.<locals>.<listcomp>p  s5   € ð +ð +ð +á*˜  sð ˜d CÐ(ð+ð +ð +rÄ   c              3  ó>   •K  — | ]}‰D ]\  }}}|› d |› �||fV — ŒŒdS )r  Nr¾   )rÀ   rx  r1  r¡  rþ  r‘  s        €rÂ   r2  z@SQLCompiler._deliver_insertmanyvalues_batches.<locals>.<genexpr>r  si   øè è € ð /ð /à!Ø.Cð/ð /ñ +˜C  sð  Ð)Ð) %Ð)Ð)¨4°Ð5ð/ð /ð /ð /ð /ð /ð /rÄ   r¾   c              3  ó,   •K  — | ]}|‰‰…         V — Œd S r  r¾   )rÀ   r]  Úexpand_pos_lower_indexÚexpand_pos_upper_indexs     €€rÂ   r2  z@SQLCompiler._deliver_insertmanyvalues_batches.<locals>.<genexpr>„  sC   øè è € ð &ð &àð Ð0Ð1GÐGÔHð&ð &ð &ð &ð &ð &rÄ   c              3  ód   •K  — | ]*\  }}‰                      d t          |¦  «        ¦  «        V — Œ+dS )Ú_IMV_VALUES_COUNTERN)rÓ  r¿   )rÀ   r  r  Úexecutemany_values_w_commas      €rÂ   r2  z@SQLCompiler._deliver_insertmanyvalues_batches.<locals>.<genexpr>‹  sX   øè è € ð  ð  ñ !%  1ð 7×>Ò>Ø 5µs¸1±v´vñô ð ð  ð  ð  ð  ð  rÄ   éþÿÿÿc              3  ó.   •K  — | ]}‰j         › |› �V — Œd S r  r'  ©rÀ   r  r  s     €rÂ   r2  z@SQLCompiler._deliver_insertmanyvalues_batches.<locals>.<genexpr>¨  sE   øè è € ð &ð &àð  Ô>ÐCÀÐCÐCð&ð &ð &ð &ð &ð &rÄ   ÚEXECMANY_INDEX__r§  c                ó,   •— i | ]}|› d ‰› �‰|         “ŒS )Ú__r¾   )rÀ   r1  r  Úparams     €€rÂ   r^  zASQLCompiler._deliver_insertmanyvalues_batches.<locals>.<dictcomp>É  s)   ø€ ÐNÐNÐN°s˜C˜˜ 1˜˜¨¨c¬
ÐNÐNÐNrÄ   )+rA  r±  r<  r¦  Úsupports_default_metavalueÚsupports_multivalues_insertrš  rE  rC  r  r   rK  r=  rÓ  Úinsertmanyvalues_max_parametersr/  r?  Úminrˆ  rd  rE  rq   rI  ry   r=  r  r,  r,  r_  r:  rR  rS  r5  r¨  ÚrangerA  r4  rÀ  rÁ  Úfrom_iterableru  r¿   r›  )2r  r'  r(  r‘  rR  rB  rÝ  Ú	lenparamsÚuse_row_at_a_timeÚ
downgradedrS  Úexecutemany_valuesÚ
max_paramsÚtotal_num_of_paramsÚnum_params_per_batchÚnum_params_outside_of_batchÚbatchesrO  rT  r?  Úall_keysÚimv_values_counterÚformatted_values_clauseÚkeys_to_replaceÚbase_parametersrÌ  r,  Úall_expand_positionsÚescapedrQ  Únum_ins_paramsÚextra_params_leftÚextra_params_rightÚbatch_iteratorÚexpanded_values_stringrƒ  rk   rž  rL  rM  Úreplaced_values_clausesÚfmvrž  r˜  rE  r¨  r¤  r¥  r  r¯  s2   ` ``                                      @@@@@@@@rÂ   Ú!_deliver_insertmanyvalues_batchesz-SQLCompiler._deliver_insertmanyvalues_batchesº  s±  øøøøøøøøøøøè è € ð Ô$ˆØˆˆˆå˜
‘O”Oˆ	ØÔð 	 t¤|Ô'Nð 	ð !%ÐØˆJˆJØ”Ô9ð 	Ø#ð	àÔ$ð	ð Ô%Ð-°Ô1NÐ-ð
 !%ÐØˆJˆJà %ÐØˆJàð 	Ý#,ÝÐ:¸JÑGÔGÈñ$ô $ð ð ‘�˜%õ -ØØØ)Ø�GØØØØ+Øñ
ô 
ð 
ð 
ð 
ð 
ð ˆFà: Ô!7Ð:Ð:Ð:ÐØ×%Ò%Ð&8Ð:NÑOÔOˆ	ð ”\ÔAˆ
Øð 	Ý"% d¤oÑ"6Ô"6ÐÝ#& sÔ'=Ñ#>Ô#>Ð à#Ð&:Ñ:ð (õ ØàÐ"=Ñ=Ø+ñ,ñô ˆJõ �zÑ"Ô"ˆàGKÐØˆØ! ZÑ/Ø˜ZÑ'Ð.ˆAˆA¨Qñ
ˆð !Ô3ÐØ!Ð-Ð-Ð-ð ;<Ð;ÐÐ!7àŒð M	ØÔ&ð (Ø%)Ô%<Ð"Ð"à%'Ð"å˜: aœ=Ñ)Ô)ˆHð!ð !ð !ð !ð !ð !ð Ô'ð (Ø%<Ð"Ð"à%'Ð"ð''¨D¯IªIð 6ð 6ð 6ð 6à2Dð6ñ 6ô 6ñ -ô -ð ''ð "ð''ð ''ð ''Ð#ð
 '×3Ò3ð 4ð 4ð 4ð 4à*<ð4ñ 4ô 4ñ ô ˆOð
ð ð ð à#×.Ò.¨Ñ?Ô?ðñ ô ˆOð *,Ð&Ð&à&(Ð#Ý!™eœeˆOØ ˆOàÔ'ð MàH˜Ô.ÐHÐHÐHð +Ð*ð .M°Ô1GÐ-LÐ-LÐ-LÐ*å14±´Ð$ØÔ.ð 9ð 9�Ø(×/Ò/°°Q´Ñ8Ô8Ð8Ð8ð (ð Ø"Ô.�Ø"Ð.Ð.Ð.ð(ð (ð (ð (å%.¨{Ñ%;Ô%;ð(ñ (ô (Ð$õ
 *-Ð-AÑ)BÔ)BÐ&Ý),Ð-AÑ)BÔ)BÀQÑ)FÐ&åÐ,Ñ-Ô-Ø-Ð0FÑFòGð Gð Gð Gð Ô"ð Ýœ) DÔ$GÑHÔH�Ý-/¬VØÐ$Ð$Ð$ dÐ,Fñ.ô .Ð*ð ñ t	Ý˜¨'°!°J°,Ô*?Ñ@Ô@ˆEØ$&ˆG�A�j�LÑ!à$ð ð+ð +ð/ð /ð /ð /å%*­3¨u©:¬:Ñ%6Ô%6ð/ñ /ô /ð+ñ +ô +Ð'ð Œñ UØ!$Ô!B�ð "¥S¨¨q¬¡]¤]Ò2Ð2Ø=?Ð?Ð%Ð(:Ø%*�N�Nà(-¨a¬Ð1HÐ2HÐ1HÔ(IÐ%Ø).¨q¬Ð2HÐ2IÐ2IÔ)JÐ&ð&ð &ð &ð &ð &à!&ð&ñ &ô &�Nð
 Ô+ð àŸšð  ð  ð  ð  õ )2°%Ñ(8Ô(8ð	 ñ  ô  ñ ô ð �r�cô.Ð*Ð*ð 4µc¸%±j´jÑ@Ø�r�cô.Ð*ð Ô&ð P¨>¸AÒ+=Ð+=ð  2Ð1Ð1Ð1à2°QÑ6�EØ(­C°©J¬JÑ7¸%Ñ?�Cõ !&ð &ð &ð &ð &å!& u¨cÑ!2Ô!2ð&ñ &ô &ñ !ô !�Ið .DÀiÑ-OÐ*à%.×%6Ò%6Ø(Ð*@ñ&ô &Ð"õ ',Ý”O×1Ò1°.ÑAÔAñ'ô 'Ð#ð
 &Ø)ñ*à(ñ)ð $Ð#ð +-Ð'Ø&5×&:Ò&:Ñ&<Ô&<Ð#å )¨%Ñ 0Ô 0ð 
ð 
‘H�A�uØ1×9Ò9Ø*­C°©F¬Fñô �Cð Ô/ð IØ!ŸkškÐ*?ÅÀQÁÄÑHÔH˜à+×2Ò2°3Ñ7Ô7Ð7Ø'×.Ò.ØNÐNÐNÐNÐN¸oÐNÑNÔNñô ð ð ð &/×%6Ò%6Ø(Ø—I’IÐ5Ñ6Ô6ñ&ô &Ð"õ
 )Ø"Ø#Ø'ØØØØØ'Øñ
ô 
ð 
ð 
ð 
ð ˜‰MˆHði ñ t	ð t	ð t	ð t	ð t	rÄ   c                ól  ‡ —  |j         |‰ fi |¤Ž}|j        }‰ j         }|r#d‰ _        ‰ j        s|‰ _        ‰ j        s|‰ _        ‰ j                             t          ¦   «         t          ¦   «         |dœ¦  «         d}d }‰ j        rd|v }|sg }t          j
        ‰ |||fd|i|¤Ž}‰ j        r7|�5t          |¦  «        }‰ j        r‰ j        �‰ xj        |z  c_        n|‰ _        |j        }	|	sE‰ j        j        s9‰ j        j        s-‰ j        j        s!t'          j        d‰ j        j        z  ¦  «        ‚|j        r^‰ j        j        s!t'          j        d‰ j        j        z  ¦  «        ‚‰ j        s|j        r|j        rt'          j        d¦  «        ‚|j        }	n|j        }	‰ j        }
‰ j        j        }d	}|j        r| ‰ j        ||j        fi |¤Žz  }|d
z  }|
                     |j        ¦  «        }|j         r‰  !                    ||¦  «        \  }}|j"        r‰  #                    ||¦  «         ||z  }|	s|s%|dd $                    d„ |	D ¦   «         ¦  «        z  z  }|j%        }d }d }d}‰ j        p|j        }|rÜ|j&        }|�«|sJ ‚d„ |	D ¦   «         }g }|D ]B}||vrd } n9‰  '                    |¦  «        }|||         vrd } n|                     |¦  «         ŒC|€3‰ j        j(        tR          j*        z  rd}n|d         j+        r
J d¦   «         ‚tY          |¦  «        tY          |¦  «        z   }‰  -                    |||¬¦  «        }‰ j.        r|d|z   z  }nd }|j/        �w ‰ j0        ‰ j        d         d         fddi|¤Ž}‰ j1        rE‰ j        j2        r9|st          ‰ j        ¦  «        nd }|d‰  3                    |d¬¦  «        ›|›�z  }�n×|d|z  z  }�nÍ|	s]|r[|dz  }|rRti          d‰ j        j5        tm          d|	¦  «        ||j        |j7        d u||rt          |¦  «        nd|¬¦	  «	        ‰ _8        �nn|j        r,|dd $                    d„ |j9        D ¦   «         ¦  «        ›�z  }�n;d $                    d„ tm          d|	¦  «        D ¦   «         ¦  «        }|�r|rª‰ j        j(        tR          j:        z  r‘|j;        sŠd}‰ j        j(        tR          j<        z  }d $                    d„ t{          |	¦  «        D ¦   «         ¦  «        }|r/d $                    ˆ fd„t{          |	¦  «        D ¦   «         ¦  «        }n|}|d |› d!|› d"|› d#�z  }nd}|d$|› d%�z  }ti          d|tm          d|	¦  «        ||j        |j7        d u||rt          |¦  «        nd|||¬&¦  «        ‰ _8        n	|d$|› d%�z  }|j7        � ‰ j0        |j7        fi |¤Ž}|r|d|z   z  }|r‰ j.        s|d|z   z  }‰ j1        r>‰ j        j2        s2|st          ‰ j        ¦  «        nd }‰  3                    |d¬¦  «        |z   }‰ j         >                    d¦  «         |S )'NTrå  r   r~  rl  zWThe '%s' dialect with current database version settings does not support empty inserts.zcThe '%s' dialect with current database version settings does not support in-place multirow inserts.zcRETURNING cannot be determinstically sorted when using an INSERT which includes multi-row values().zINSERT zINTO ú (%s)rÑ   c                ó   — g | ]	\  }}}}|‘Œ
S r¾   r¾   )rÀ   r  r"  s      rÂ   r}  z,SQLCompiler.visit_insert.<locals>.<listcomp>Q  s    € Ð>Ð>Ð>™-˜!˜T 1 a�Ð>Ð>Ð>rÄ   Fc                ó   — i | ]
\  }}}}||“ŒS r¾   r¾   )rÀ   rù  r  Úparam_namess       rÂ   r^  z,SQLCompiler.visit_insert.<locals>.<dictcomp>j  s2   € ð "ð "ð "á.˜˜Q  ;ð ˜ð"ð "ð "rÄ   zTsentinel selection rules should have prevented us from getting here for this dialect©rò  r!  rƒ  r#  r#  rq  r¸  z DEFAULT VALUESr>  )rB  rC  rE  rF  rH  z VALUES c              3  óZ   K  — | ]&}d d                      d„ |D ¦   «         ¦  «        z  V — Œ'dS )r  rÑ   c              3  ó$   K  — | ]\  }}}}|V — Œd S r  r¾   ©rÀ   r  rÍ  s      rÂ   r2  z5SQLCompiler.visit_insert.<locals>.<genexpr>.<genexpr>Ó  s*   è è € Ð LÐ L©>¨1¨a°¸ Ð LÐ LÐ LÐ LÐ LÐ LrÄ   Nr  )rÀ   Úcrud_param_sets     rÂ   r2  z+SQLCompiler.visit_insert.<locals>.<genexpr>Ñ  s\   è è € ð ð ð 'ð Ø—y’yÐ LÐ L¸^Ð LÑ LÔ LÑLÔLñNðð ð ð ð ð rÄ   c                ó   — g | ]	\  }}}}|‘Œ
S r¾   r¾   rÖ  s      rÂ   r}  z,SQLCompiler.visit_insert.<locals>.<listcomp>Ù  s0   € ð ð ð á&˜˜1˜e Qð ðð ð rÄ   c              3  ó&   K  — | ]\  }}d |› �V — ŒdS ©ÚpNr¾   )rÀ   r  r  s      rÂ   r2  z+SQLCompiler.visit_insert.<locals>.<genexpr>ø  s=   è è € ð )ð )Ù$( A q˜˜A˜˜ð)ð )ð )ð )ð )ð )rÄ   c              3  óš   •K  — | ]E\  }^}}‰                      |j        |j                             ‰j        ¦  «        d |› �¦  «        V — ŒFdS rÚ  )rÍ  rþ   rü  r¦  )rÀ   r  rù  r  r  s       €rÂ   r2  z+SQLCompiler.visit_insert.<locals>.<genexpr>  st   øè è € ð 4ð 4ñ !-  9 C¨!ð !×1Ò1Ø #¤Ø #¤× @Ò @ÀÄÑ NÔ NØ ' A  ñô ð4ð 4ð 4ð 4ð 4ð 4rÄ   z SELECT z FROM (VALUES (z)) AS imp_sen(z#, sen_counter) ORDER BY sen_counterz	 VALUES (r  )r<  r=  r?  rA  rB  rC  rE  rF  rG  rH  rI  )?rs  r'  r†  r&  r¡  r  r›  rq   rd  r   Ú_get_crud_paramsr±  r:  rG  Úsingle_paramsr¦  Úsupports_default_valuesr°  Úsupports_empty_insertr8   rî  rú   Ú_has_multi_parametersr±  r,  Ú
_returningÚ_sort_by_parameter_orderrŸ  r–  r•  Úformat_tabler�   r  rƒ  ré  rê  ry   Úuse_insertmanyvaluesÚuse_sentinel_columnsrH  r…  rX  ra  Ú_insert_sentinelrˆ  re  r0  r›   r±  rJ  Úcte_follows_insertrí  r;  Údefault_metavalue_tokenr   Ú_post_values_clauserA  Úall_multi_paramsrc  Úis_default_metavalue_onlyrd  r  r|  ) r  Úinsert_stmtrl  rÉ  r  rð  Úcounted_bindparamÚhas_visiting_cteÚcrud_params_structÚcrud_params_singlerŸ  rß  rÕ  r�  r  rå  Únamed_sentinel_paramsÚadd_sentinel_colsrH  r]  Ú_params_by_colÚ_add_sentinel_colÚ
param_namere  Úselect_textrç  rx  Úembed_sentinel_valueÚrender_bind_castsÚcolnamesÚcolnames_w_castÚpost_values_clauses    `                               rÂ   Úvisit_insertzSQLCompiler.visit_insertÞ  sÂ	  ø€ Ø:˜Ô:Ø˜ð
ð 
Ø!#ð
ð 
ˆð $Ô-ˆà”z�>ˆàð 	3Ø ˆDŒMØÔ)ð 7Ø)6�Ô&ØÔ%ð 3Ø%2�Ô"àŒ
×Òå#&¡5¤5Ý #¡¤Ø)ðð ñ	
ô 	
ð 	
ð Ðð !Ðð Œ?ð 	'ð
  .°Ð3ÐØ#ð 'Ø$&Ð!å!Ô2ØØØØð	
ð 
ð
 0ð
ð ð
ð 
Ðð Œ?ð 	?Ð0Ð<Ý #Ð$5Ñ 6Ô 6ÐØÔ"ð ?ØÔ)Ð5ØÐ*Ô*Ð.?Ñ?Ð*Ô*Ð*à->�DÔ*à/Ô=Ðð #ð
	à”LÔ8ð
	ð ”LÔ;ð
	ð ”LÔ6ð	
	õ Ô"ðà!œ\Ô.ñ/ñô ð ð Ô.ð 	BØ”<Ô;ð ÝÔ&ð1à37´<Ô3DñEñô ð ð Ô'ðØ+6Ô+AðàÔ6ðõ Ô&ðIñô ð ð "4Ô!AÐÐà!3Ô!AÐà”=ˆØ"&¤,Ô"FÐàˆàÔ ð 	ØÐ+�DÔ+Ø˜[Ô2ðð Ø68ðð ñ ˆDð 	�‰ˆØ×*Ò*¨;Ô+<Ñ=Ô=ˆ
àÔð 	LØ ×2Ò2°;À
ÑKÔK‰MˆAˆzàÔ(ð 	=Ø×+Ò+¨K¸Ñ<Ô<Ð<à�
Ñˆàð 	Ð%<ð 	Ø�G˜dŸišiØ>Ð>Ð+=Ð>Ñ>Ô>ñô ñ ñ ˆDð  2ÔFÐØ9=ÐØ ÐØ!ÐàÔ0ÐJ°KÔ4JˆØð I	$Ø 2Ô GÐà Ð,Ø+Ð+Ð+Ð+ð"ð "à2Dð"ñ "ô "�ð )+Ð%Ø):ð 
=ð 
=Ð%Ø(°Ð>Ð>Ø04Ð-Ø˜Ø!%×!CÒ!CØ)ñ"ô "�Jð "¨Ð8IÔ)JÐJÐJØ04Ð-Ø˜Ø)×0Ò0°Ñ<Ô<Ð<Ð<à(Ð0ð œÔGÝ6ÔHñIðð -1Ð)Ð)ð $5°QÔ#7Ô#Hð ð ðDñô ð õ "& nÑ!5Ô!5½Ð=NÑ8OÔ8OÑ!O�à#×4Ò4ØØØ$,ð  5ñ  ô  Ðð Ô-ð /Ø˜Ð.Ñ.Ñ.�øð  $ÐàÔÐ)à&˜$œ,Ø”
˜2”Ð3Ô4ðð ØBFðØJLðð ˆKð Œyð 
,˜Tœ\Ô<ð 
,Ø7?Ð I¥ D¤J¡¤ ÀT�Ø�Ø×+Ò+Ø&3Ø04ð ,ñ ô ð ð  �Kðñ �‘ð ˜ Ñ+Ñ+�‘Ø#ð z	AÐ(?ð z	AØÐ%Ñ%ˆDØ#ð Ý):ØØ”LÔ8ÝØ9Ð;Mñô ð &à#Ô<ð $Ô7¸tÐCà%6à(ð*­Ð->Ñ)?Ô)?Ð)?àØ&7ð#*ñ *ô *�Ô&ùð& Ô0ð d	AØˆDØ—	’	ð ð ð +=Ô*Mðñ ô ñ ô ð ðñ ˆD‰Dð )-¯	ª	ðð å*.Ø9Ø*ñ+ô +ðñ ô ñ)ô )Ð%ð $ñ QAà%ð6Eð œÔGÝ6ÔMñNð6Eð 0ÔIð6Eð ,0Ð(ð œÔGÝ6ÔNñOð &ð
  $Ÿyšyð )ð )Ý,5Ð6HÑ,IÔ,Ið)ñ )ô )ñ  ô  �Hð )ð 3ð +/¯)ª)ð 4ð 4ð 4ð 4õ 1:Ð:LÑ0MÔ0Mð4ñ 4ô 4ñ +ô +˜˜ð +3˜àð/ ?ð /ð /Ø$=ð/ð /à&.ð/ð /ð /ñ�D�Dð ,1Ð(ØÐDÐ(AÐDÐDÐDÑD�Då):Ø$)Ø'@Ý'+Ø9Ø*ñ(ô (ð 3Dà#Ô<ð $Ô7¸tÐCà%6à(ð*­Ð->Ñ)?Ô)?Ð)?àØ(=Ø&7Ø)=ð)*ñ *ô *�Ô&Ð&ð0 Ð@Ð$=Ð@Ð@Ð@Ñ@�àÔ*Ð6Ø!- ¤ØÔ/ð"ð "Ø35ð"ð "Ðð "ð 1Ø˜Ð0Ñ0Ñ0�àð 	+ DÔ$Bð 	+Ø�CÐ*Ñ*Ñ*ˆDàŒ9ð 	˜Tœ\Ô<ð 	Ø3;ÐE�C ¤
™OœO˜OÀˆMà×'Ò'Ø"/Ø,0ð (ñ ô ð ñ	ð ð 	Œ
�Š�rÑÔÐàˆrÄ   c                ó   — dS )z3Provide a hook for MySQL to add LIMIT to the UPDATENr¾   )r  Úupdate_stmts     rÂ   Úupdate_limit_clausezSQLCompiler.update_limit_clauseM  s   € àˆtrÄ   c                ó,   — d|d<    |j         | fddi|¤ŽS )z|Provide a hook to override the initial table clause
        in an UPDATE statement.

        MySQL overrides this.

        Try  r´  rÒ  )r  rÿ  Ú
from_tableÚextra_fromsrÉ  s        rÂ   Úupdate_tables_clausez SQLCompiler.update_tables_clauseQ  s-   € ð ˆˆ8‰Ø,ˆzÔ,¨TÐEÐE¸$ÐEÀ"ÐEÐEÐErÄ   c                ó    — t          d¦  «        ‚)z~Provide a hook to override the generation of an
        UPDATE..FROM clause.

        MySQL and MSSQL override this.

        zCThis backend does not support multiple-table criteria within UPDATErÌ  ©r  rÿ  r  r  Ú
from_hintsrÉ  s         rÂ   Úupdate_from_clausezSQLCompiler.update_from_clause[  s   € õ "ð%ñ
ô 
ð 	
rÄ   c                ól  ‡—  |j         || fi |¤Ž}|j        }| j         }|r#d| _        | j        s|| _        | j        s|| _        | j        t          z  r5t          i t          ¦   «         ¦  «        }| j        t          z  }|r|| _        nd }d}|j        }t          |¦  «        }|rEt          t          |j        ¦  «        ¦  «        Šˆfd„|D ¦   «         }	‰                     |¦  «        }
n
g }	|j        h}
| j                             |
|
|dœ¦  «         d}|j        r| | j        ||j        fi |¤Žz  } | j        ||j        |	fd|i|¤Ž}t+          j        | |||fi |¤Ž}|j        }|j        r|                      ||¦  «        \  }}nd }|j        r|                      ||¦  «         ||z  }|dz  }|d                     d	„ t;          d
|¦  «        D ¦   «         ¦  «        z  }| j        s|j        r1| j         r*|d|  !                    || j        p|j        |¬¦  «        z   z  }|r" | j"        ||j        |	|fd|i|¤Ž}|r|d|z   z  }|j#        r | j$        |j#        fd|i|¤Ž}|r|d|z   z  }|  %                    |¦  «        }|r|d|z   z  }| j        s|j        r1| j         s*|d|  !                    || j        p|j        |¬¦  «        z   z  }| j&        r1|stO          | j        ¦  «        nd }|  (                    |¬¦  «        |z   }|r|€J ‚| )                    d¬¦  «         | j         *                    d¦  «         |S )NTFc                ó   •— g | ]}|‰v¯|‘Œ	S r¾   r¾   )rÀ   r7  Ú
main_fromss     €rÂ   r}  z,SQLCompiler.visit_update.<locals>.<listcomp>†  s*   ø€ ð "ð "ð "Ø¨!°:Ð*=Ð*=�Ð*=Ð*=Ð*=rÄ   rå  zUPDATE rÚ  z SET rÑ   c              3  ó0   K  — | ]\  }}}}|d z   |z   V — ŒdS )ú=Nr¾   )rÀ   r  r"  rÍ  s       rÂ   r2  z+SQLCompiler.visit_update.<locals>.<genexpr>¶  sG   è è € ð 
ð 
á!��4˜ ð �3‰J˜Ñð
ð 
ð 
ð 
ð 
ð 
rÄ   zList[Tuple[Any, str, str, Any]]r!  rÓ  ú WHERE ræ  ÚUPDATE©rŽ  rƒ  )+rs  r'  r†  r'  r¡  r  rX  rm  rq  rq   rn  rÚ  Ú_extra_fromsr  r+   r�   r�   r›  r–  r•  r  r   rÝ  rÞ  r  rƒ  ré  rê  ry   r   r,  râ  r0  re  r  r;  r  r   rJ  r±  rí  r�  r|  )r  rÿ  rÉ  r  rð  rÚ  rA  r  Úis_multitableÚrender_extra_fromsr  rÕ  r�  rð  Úcrud_paramsr‚  Úextra_from_textrB  r‚  rç  r  s                       @rÂ   Úvisit_updatezSQLCompiler.visit_updatei  sé  ø€ Ø:˜Ô:Ø˜ð
ð 
Ø!#ð
ð 
ˆð $Ô-ˆà”z�>ˆØð 	3Ø ˆDŒMØÔ)ð 7Ø)6�Ô&ØÔ%ð 3Ø%2�Ô"àŒ<Õ4Ñ4ð 	!Ý$ R­©¬Ñ/Ô/ˆKØœ<­,Ñ6ˆLØð /Ø#.�Ô øàˆKØ ˆLà#Ô0ˆÝ˜[Ñ)Ô)ˆàð 		2å�]¨;Ô+<Ñ=Ô=Ñ>Ô>ˆJð"ð "ð "ð "Ø&ð"ñ "ô "Ðð )×.Ò.¨{Ñ;Ô;ˆOˆOà!#ÐØ*Ô0Ð1ˆOàŒ
×Òà#2Ø /Ø)ðð ñ	
ô 	
ð 	
ð ˆàÔ ð 	ØÐ+�DÔ+Ø˜[Ô2ðð Ø68ðð ñ ˆDð /�TÔ.ØØÔØð
ð 
ð $ð	
ð
 ð
ð 
ˆ
õ "Ô2Ø�+˜}¨hð
ð 
Ø:<ð
ð 
Ðð )Ô6ˆàÔð 	!Ø(,×(>Ò(>Ø˜Zñ)ô )Ñ%ˆM˜:˜:ð !ˆMàÔ(ð 	=Ø×+Ò+¨K¸Ñ<Ô<Ð<à�
Ñˆà�‰ˆØ�—	’	ð 
ð 
å%)Ø1°;ñ&ô &ð
ñ 
ô 
ñ 
ô 
ñ 	
ˆð Ô"ð 	 kÔ&<ð 	ØÔ-ð Ø˜˜d×3Ò3ØØÔ+ÐE¨{Ô/EØ(0ð 4ñ ô ñ ñ �ð ð 
	.Ø5˜dÔ5ØØÔ!Ø"Øð	ð ð
 (ðð ðð ˆOð ð .Ø˜˜oÑ-Ñ-�àÔ&ð 	&Ø1�Ô1ØÔ+ðð Ø9DðØHJðð ˆAð ð &Ø˜	 A™Ñ%�à×/Ò/°Ñ<Ô<ˆØð 	'Ø�C˜,Ñ&Ñ&ˆDð Ô#ð	Ø'2Ô'=ð	àÔ0ð	ð �C˜$×/Ò/ØØÔ'ÐA¨;Ô+AØ$,ð 0ñ ô ñ ñ ˆDð Œ9ð 	OØ3;ÐE�C ¤
™OœO˜OÀˆMØ×*Ò*¸Ð*ÑGÔGÈ$ÑNˆDàð 	1ØÐ*Ð*Ð*Ø×Ò xÐÑ0Ô0Ð0àŒ
�Š�rÑÔÐàˆrÄ   c                ó    — t          d¦  «        ‚)zÀProvide a hook to override the generation of an
        DELETE..FROM clause.

        This can be used to implement DELETE..USING for example.

        MySQL and MSSQL override this.

        zCThis backend does not support multiple-table criteria within DELETErÌ  r  s         rÂ   Údelete_extra_from_clausez$SQLCompiler.delete_extra_from_clauseñ  s   € õ "ð%ñ
ô 
ð 	
rÄ   c                ó$   —  |j         | fdddœ|¤ŽS )NT)ry  r´  rÒ  )r  Údelete_stmtr  r  rÉ  s        rÂ   Údelete_table_clausezSQLCompiler.delete_table_clause  s3   € Ø,ˆzÔ,Øð
Ø dð
ð 
Ø.0ð
ð 
ð 	
rÄ   c                óÚ  —  |j         || fi |¤Ž}|j        }| j         }|r#d| _        | j        s|| _        | j        s|| _        | j        t          z  r5t          i t          ¦   «         ¦  «        }| j        t          z  }|r|| _        nd }d}|j        }|j        h                     |¦  «        }| j                             |||dœ¦  «         d}	|j        r|	 | j        ||j        fi |¤Žz  }	|	dz  }		 |                      ||j        ||¬¦  «        }
nJ# t&          $ r= |                      ||j        |¦  «        }
|r|                      |j        |¬¦  «        }Y nw xY wt+          j        | |||fi |¤Ž |j        r|                      ||
¦  «        \  }}
nd }|j        r|                      ||¦  «         |	|
z  }	| j        s|j        r1| j        r*|	d|                      || j        p|j        |¬¦  «        z   z  }	|r" | j        ||j        ||fd	|i|¤Ž}|r|	d|z   z  }	|j         r | j!        |j         fd	|i|¤Ž}|r|	d
|z   z  }	| j        s|j        r1| j        s*|	d|                      || j        p|j        |¬¦  «        z   z  }	| j"        r1|stG          | j        ¦  «        nd }|  $                    |¬¦  «        |	z   }	|r|€J ‚| %                    d¬¦  «         | j         &                    d¦  «         |	S )NTFrå  zDELETE úFROM )rÚ  r!  rÓ  rÚ  r  ræ  ÚDELETEr  rƒ  )'rs  r'  r†  r%  r¡  r  rX  rm  rq  rq   rn  rÚ  r  r�   r�   r›  r–  r•  r  Ú	TypeErrorr±  r   rÝ  r  rƒ  ré  rê  r,  râ  r0  re  r  r;  r  rJ  r±  rí  r�  r|  )r  r  rÉ  r  rð  rÚ  rA  r  r  rÕ  r�  r  r‚  r  rB  rç  s                   rÂ   Úvisit_deletezSQLCompiler.visit_delete  sb  € Ø:˜Ô:Ø˜ð
ð 
Ø!#ð
ð 
ˆð $Ô-ˆà”z�>ˆØð 	3Ø ˆDŒMØÔ)ð 7Ø)6�Ô&ØÔ%ð 3Ø%2�Ô"àŒ<Õ4Ñ4ð 	!Ý$ R­©¬Ñ/Ô/ˆKØœ<­,Ñ6ˆLØð /Ø#.�Ô øàˆKØ ˆLà#Ô0ˆà&Ô,Ð-×3Ò3°KÑ@Ô@ˆØŒ
×Òà#2Ø /Ø)ðð ñ	
ô 	
ð 	
ð ˆàÔ ð 	ØÐ+�DÔ+Ø˜[Ô2ðð Ø68ðð ñ ˆDð 	�‰ˆð	MØ×1Ò1ØØÔ!ØØ'ð	 2ñ ô ˆJˆJøõ ð 	Mð 	Mð 	Mð ×1Ò1Ø˜[Ô.°ñô ˆJð ð MØ—L’L Ô!2À�LÑLÔL�øøð	Møøøõ 	Ô˜d K°ÀÐOÐOÈBÐOÐOÐOàÔð 	!Ø(,×(>Ò(>Ø˜Zñ)ô )Ñ%ˆM˜:˜:ð !ˆMàÔ(ð 	=Ø×+Ò+¨K¸Ñ<Ô<Ð<à�
Ñˆð Ô#ð	Ø'2Ô'=ð	àÔ,ð	ð �C˜$×/Ò/ØØÔ'ÐA¨;Ô+AØ$,ð 0ñ ô ñ ñ ˆDð ð 
	.Ø;˜dÔ;ØØÔ!ØØð	ð ð
 (ðð ðð ˆOð ð .Ø˜˜oÑ-Ñ-�àÔ&ð 	&Ø1�Ô1ØÔ+ðð Ø9DðØHJðð ˆAð ð &Ø˜	 A™Ñ%�ð Ô#ð	Ø'2Ô'=ð	àÔ0ð	ð �C˜$×/Ò/ØØÔ'ÐA¨;Ô+AØ$,ð 0ñ ô ñ ñ ˆDð Œ9ð 	OØ3;ÐE�C ¤
™OœO˜OÀˆMØ×*Ò*¸Ð*ÑGÔGÈ$ÑNˆDàð 	1ØÐ*Ð*Ð*Ø×Ò xÐÑ0Ô0Ð0àŒ
�Š�rÑÔÐàˆs   Ã2D ÄAEÅEc                ó<   — d| j                              |¦  «        z  S )NzSAVEPOINT %s©rŸ  Úformat_savepoint©r  Úsavepoint_stmtrÉ  s      rÂ   Úvisit_savepointzSQLCompiler.visit_savepoint€  s   € Ø ¤× >Ò >¸~Ñ NÔ NÑNÐNrÄ   c                ó<   — d| j                              |¦  «        z  S )NzROLLBACK TO SAVEPOINT %sr"  r$  s      rÂ   Úvisit_rollback_to_savepointz'SQLCompiler.visit_rollback_to_savepointƒ  s&   € Ø)¨D¬M×,JÒ,JØñ-
ô -
ñ 
ð 	
rÄ   c                ó<   — d| j                              |¦  «        z  S )NzRELEASE SAVEPOINT %sr"  r$  s      rÂ   Úvisit_release_savepointz#SQLCompiler.visit_release_savepointˆ  s&   € Ø%¨¬×(FÒ(FØñ)
ô )
ñ 
ð 	
rÄ   )r¦  r^   r'  r•  r£  r¢  rV  r+  rW  r  rX  rk  rÐ  r   )r	  r=  )r	  r+  )r	  rŠ  )r	  r�  )r	  rÊ  )r	  rÖ  )NT)rÖ  r×  rÚ  r  r	  r&  )NNTNTF)rÖ  r×  rØ  rÙ  rÚ  r  rå  ræ  rç  r  ra  r  r	  r]   ©F)r(  r]   rb  r  r	  r&  )r	  rE  )NFFNr¾   )NTr¾   N)r”   rª  rœ  r«  r¬  r  r�  rû   r­  r®  rÐ  r   r	  r¿   r  )NF)rL  r[  rœ  r«  rÐ  r   r	  r¿   )FNrä  )NFNN)FFFFF)r[  r¿   rú   rE   r	  r¿   )rú   r¿   r	  r¿   )FFNNNN)rú   r¿   r7  r  r8  r  rh  r=  r9  ri  rj  rk  rl  r?  rÉ  r   r	  r¿   )ry  rN   ry  r  r{  r  r|  r}  r~  r  rÚ  r€  rt  r�  rÐ  r   r	  r=  )FFFNFFNN)
rù   r¿   rú   r¿   rü   rû   r  rý   r	  r
  )NNNTFFT)FFNNNFN)r›   r"  r	  r-  ©
rw  rC   r]  r^  rò  r  rÉ  r   r	  r¿   )NFF)FFFNTNN)r�   rK   r	  rD  )r'  r¿   r(  rY   r‘  rN  rR  r@  rB  r  r	  r’  )ùr   r  r  r  ÚEXTRACT_MAPrQ  r&   ræ  r"  r  rã  ÚCOMPOUND_KEYWORDSrt  r%  r&  r'  r)  r*  r,  r-  r0  r1  r2  r6  r7  r8  r9  r:  r;  r<  r>  r@  rA  rB  Ú	frozensetrC  rD  rå  rE  rA  Úpostfetch_lastrowidrF  r,  rG  rH  rI  rR  rT  r.  rÄ  Úpatternr©  rç  r¶  rP  rl  r´  r9  rx  Úro_memoized_propertyr  r�  r†  r‰  Úmemoized_propertyrŒ  Úmemoized_instancemethodr�  Ú
contextlibÚcontextmanagerr•  rr  rq  rÕ  rß  rá  rÎ  rä  rÞ  r  rÖ  rs  Úpreload_modulerB  rH  rd  rr  rt  rz  r}  rŽ  r”  r¡  r¥  r©  r½  rÂ  rÆ  rÈ  rÍ  rÖ  r³  rã  ró  rø  rþ  r  r
  r  r  r  r'  r.  r2  r6  r=  rG  rJ  rO  rT  rZ  rV  rj  rg  rd  r~  rz  r#  r�  r•  r˜  r�  r   r¥  r¨  r³  r±  rÉ  r*  r£  rá  rã  rå  rç  ré  r§  r‹  rŒ  rò  rô  rü  r   r  r  r  r  r  r  r  r  r  r  rù  rÿ  r  r  r'  r)  r-  r0  r2  rG  rÍ  r/   r)  r  r<  r˜  rg  rÜ  rê  r$   Ú_CTEOptsr‘  r°  r²  r¯  rÀ  r®  rÇ  rÐ  rÖ  rØ  r™  rì  rá  rß  r¼  rù  rô  rþ  r  rp  r   rè  r	  r
  r,  r  r  r!  r•  rí  rL  r  rw  rx  r@  re  r‚  r�  rx  r~  rƒ  r-   Ú
CLIENTSIDErX  rb  ÚSENTINEL_DEFAULTÚNONEr_  r`  rŠ  r�   r^  rˆ  r�  rÍ  rý  r   r  r  r  r  r  r   r&  r(  r*  r¾   rÄ   rÂ   r  r    s÷  € € € € € € ðð ð €Kð 	ˆÔàØØØØØØØð		
ð 		
ñ	ô 	ð ð ð ð ñ ðð: /Ð.Ð.Ñ.Ø6Ð6Ð6Ñ6à€Fà)Ðà€HÐÐÐÑØ€HÐÐÐÑØ€HÐÐÐÑðð
 +Ð*Ð*Ñ*ð%ð .0€OÐ/Ð/Ð/Ñ/ðð .0€OÐ/Ð/Ð/Ñ/ð$ð BFÐÐEÐEÐEÑEðð €KÐÐÐÑà(Ð(Ð(Ñ(ØIà-Ð-Ð-Ñ-ð6ð %Ð$Ð$Ñ$ð4ð ',ÐÐ+Ð+Ð+Ñ+ðð 5:Ð+Ð9Ð9Ð9Ñ9ðð
 "€OÐ!Ð!Ð!Ñ!ðð ÐÐÑØBà!Ð!Ð!Ñ!ðð (Ð'Ð'Ñ'ðð
 .Ð-Ð-Ñ-ðð
 &+ÐÐ*Ð*Ð*Ñ*ðð "€OÐ!Ð!Ð!Ñ!ðð "ÐÐ!Ð!Ð!Ñ!ðð ).ÐÐ-Ð-Ð-Ñ-ðð !€NÐ Ð Ð Ñ ðð !&ÐÐ%Ð%Ð%Ñ%ðð =AÐ Ð@Ð@Ð@Ñ@ðð +/ÐÐ.Ð.Ð.Ñ.ðð
 6:ÐÐ9Ð9Ð9Ñ9à59ÐÐ9Ð9Ð9Ñ9à=AÐÐAÐAÐAÑAà<E¸I¹K¼KÐÐGÐGÐGÑGðð
 :C¸¹¼ÐÐDÐDÐDÑDðð
 8<´ÐÐFÐFÐFÑFðð
 Ððð  Ðð%ð 	ð ð ð ð ñ ðð (,€KÐ+Ð+Ð+Ñ+ðð .2ÐÐ1Ð1Ð1Ñ1à.2ÐÐ2Ð2Ð2Ñ2à€FÐÐÐÑà,Ð,Ð,Ñ,ð 3Ð2Ð2Ñ2ð GÐFÐFÑFàÐÐÑà&˜BœJÐ'LÑMÔMÐØ"˜œ
Ð#4Ñ5Ô5ÐØ$˜"œ*ØÔ$ÐFÐFÐ'<Ô'DÐFÐFñô Ðð ð#ð #ñ „[ð#ð ðCð Cñ „[ðCð )-Ø/3Ø %Ø%ð}ñ }ð }ð }ð }ð~ ñ=ð =ð =ñ „Xð=ð$ 
Ôñð ð ñ Ôðð0 ð(ð (ñ „Xð(ð ð Mð  Mñ „Xð MðD ðGð Gñ „XðGð 
Ôñð ð ñ Ôðð 
Ô!ñð ð ñ "Ô!ðð. Ôðð ñ Ôðð.Cð Cð CðJQð Qð Qðf 
Ôñ
ð 
ð 
ñ Ôð
ð0 
Ôñ,ð ,ð ,ñ Ôð,ð #ð #ð #ð ðð ñ „Xðð
 6:Ø!ñ
ñ 
ð 
ð 
ð 
ð2 6:ØGKØ!Ø'+ØØ %ñ~ñ ~ð ~ð ~ð ~ð@ 
Ô!ð$ð $ñ "Ô!ð$ðL ð
3ð 
3ñ „Xð
3ð  %ñCñ Cð Cð Cð CðJ €TÔÐ3Ñ4Ô4ð
ð 
ñ 5Ô4ð
ð 4Ð3Ð3Ñ3à	Ôñð ð ñ Ôðð 
ÔØ€TÔÐ3Ñ4Ô4ðNð Nñ 5Ô4ñ ÔðNð` 
ÔØ€TÔÐ3Ñ4Ô4ð(ð (ñ 5Ô4ñ Ôð(ðTð ð ñOð Oð Oð OðOð Oð Oð .3ñ-
ð -
ð -
ð -
ð` .3ñ+ð +ð +ð +ð` Ø!Ø#Ø"Øñ/ð /ð /ð /ðb
ð 
ð 
ð
/ð /ð /ð ;?Ø"Ø.0ØEIñ9Oñ 9Oð 9Oð 9Oð 9OðvAð Að Aðð ð ðð ð ð
ð 
ð 
ðð ð ð
ð ð ñ

ð 
ð 
ð 
ð4 05ñ2ð 2ð 2ð 2ðhð ð ðð ð ðð ð ð
ð 
ð 
ðð ð ð"@ð @ð @ðLð Lð Lðð ð ð&ð ð ð&Kð Kð Kð
ð 
ð 
ð
ð 
ð 
ð,
ð 
ð 
ð:
ð 
ð 
ð
ð 
ð 
ð
ð 
ð 
ð7ð 7ð 7ð ;?ñ,ñ ,ð ,ð ,ð ,ð\8ð 8ð 8ð
ð 
ð 
ðCð Cð Cð 04ñ?ð ?ð ?ð ?ðB3ð 3ð 3ð-ð -ð -ð ACñ$ð $ð $ð $ðLð ð ð0ð ð ð"Bð Bð BðBð Bð Bð
ð 
ð 
ð

ð 
ð 
ð4ð 4ð 4ð$
ð 
ð 
ð ;?ñH*ð H*ð H*ð H*ðTM1ð M1ð M1ðd ØØØ ñ6ð 6ð 6ð 6ðp8ð 8ð 8ðð ð ð
ð 
ð 
ð
ð 
ð 
ð

ð 
ð 
ð 05ñð ð ð ð*Gð Gð GðGð Gð Gð 
ÔðIð Iñ ÔðIðJð Jð JðAð Að AðEð Eð EðBð Bð BðFð Fð FðAð Að AðEð Eð EðBð Bð BðFð Fð FðAð Að AðEð Eð EðBð Bð BðFð Fð Fð

ð 

ð 

ð	
ð 	
ð 	
ðAð Að AðEð Eð Eð
ð 
ð 
ð
ð 
ð 
ð
ð 
ð 
ð
ð 
ð 
ð
ð 
ð 
ð $ØØ"ØØ ñbð bð bð bðH$ð $ð $ð $Ø!%ð	Dð Dð Dð DðB#ð #ð #ðJð ð ñð ð ð ñ*$ð $ð $ð $ð #ØØ&*Ø48Ø48Ø15ñAñ Añ Að Að AñFCð Cð Cð ØØ.2Ø&*Ø,0Ø(;¨
Ô(;¸EÑ(BÔ(BðIñ Iñ Ið Ið IñV3ð 3ð 3ñ0ð 0ð 0ð ØØØØØØØñ`ñ `ð `ð `ñD0ð 0ð 0ñ?ð ?ð ?ññ ð ð ñ"ð "ð "ñ$ñ $ð $ð $ñL9ð 9ð 9ñ(ð (ð (ñ
ñ 
ð 
ð 
ð* EIñ
ñ 
ð 
ð 
ð8 ØØ Ø"Ø Ø %ØñbJñ bJð bJð bJñHð ð ñð ð ñð ð ñð ð ñ$ð $ð $ñ .Ð-Ñ-Ñ-àÔð 
Ø1˜tÔ1Ù  ¡¤Ð-±À	À	ÁÄÐ/LÐMñ 
ô  
Ðð
 ,1ññ ð ð ð: '+ÐÐ*Ð*Ñ*Ñ*ðð ØØØØØØñKñ Kð Kð KñZ
!ñ 
!ð 
!ð 
!ñ2ð 2ð 2ñh]ð ]ð ]ñ~ð ð ð Ø %ñ3ñ 3ð 3ð 3ñjð ð ñ7ð 7ð 7ñ 	ð 	ð 	ñ
ð 
ð 
ñð ð ñ1ñ 1ð 1ð 1ñ@ð ð ð ØØ+0ñ'ñ 'ð 'ð 'ðX ØØØØØØ!%ñ.ñ .ð .ð .ñ`
ñ 
ð 
ð 
ñ<
)ð 
)ð 
)ð" (: tÔ'9à,Ô7Ø,Ô>à,Ô=Ø,Ô>à,Ô1Ø,Ô>à,Ô5Ø,Ô5à,Ô5Ø,Ô5ð	
ñ(ô (Ð$ð& $D×#IÒ#Ià,Ô1Ø,Ô:ð	
ñ$ô $Ð ñ<ñ <ð <ð <ñ|bñ bð bð bñH	mñ mð mð mñ^ð ð ñFð Fð Fñ
ð 
ð 
ñFð Fð FñP
ð 
ð 
ñ 
ð 
ð 
ñ
xð xð xñtOð Oð Oñ
ð 
ð 
ñ

ð 
ð 
ð 
ð 
rÄ   r  c                  ó¤   ‡ — e Zd ZdZd„ Z ej        d¦  «        ˆ fd„¦   «         Zd„ Z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ˆ xZS )ÚStrSQLCompilera“  A :class:`.SQLCompiler` subclass which allows a small selection
    of non-standard SQL features to render into a string value.

    The :class:`.StrSQLCompiler` is invoked whenever a Core expression
    element is directly stringified without calling upon the
    :meth:`_expression.ClauseElement.compile` method.
    It can render a limited set
    of non-standard SQL constructs to assist in basic stringification,
    however for more substantial custom or dialect-specific SQL constructs,
    it will be necessary to make use of
    :meth:`_expression.ClauseElement.compile`
    directly.

    .. seealso::

        :ref:`faq_sql_expression_string`

    c                ó   — dS )Nz<name unknown>r¾   r¤  s     rÂ   r¥  z$StrSQLCompiler._fallback_column_name¢  s   € ØÐrÄ   zsqlalchemy.engine.urlc                ór  •— |j         dk    rŠt          j        j        } |j                             |j         ¦  «                             ¦   «         ¦   «         }|                     |d ¦  «        }t          |t          ¦  «        s| 
                    |¦  «        S t          ¦   «                              ||¦  «        S )Nr¡   )Ústringify_dialectr&   r>  Ú
engine_urlÚURLr•   Úget_dialectÚstatement_compilerr¯  r=  r±  r·  rÊ  )r  rÇ  rÈ  rÉ  Úurlr¦  Úcompilerrº  s          €rÂ   rÊ  z,StrSQLCompiler.visit_unsupported_compilation¥  sš   ø€ àÔ$¨	Ò1Ð1Ý”.Ô+ˆCØM�c”g—n’n WÔ%>Ñ?Ô?×KÒKÑMÔMÑOÔOˆGà×1Ò1°'¸4Ñ@Ô@ˆHÝ˜h­Ñ7Ô7ð 1Ø×'Ò'¨Ñ0Ô0Ð0å‰wŒw×4Ò4°W¸cÑBÔBÐBrÄ   c                óV   —  | j         |j        fi |¤Ž›d | j         |j        fi |¤Ž›d�S )Nr  r   )r±  rz   rŽ   r”  s       rÂ   Úvisit_getitem_binaryz#StrSQLCompiler.visit_getitem_binary±  sJ   € àˆDŒL˜œÐ+Ð+¨Ð+Ð+Ð+Ð+ØˆDŒL˜œÐ,Ð,¨Ð,Ð,Ð,Ð,ð
ð 	
rÄ   c                ó    —  | j         ||fi |¤ŽS r  ©rH  r”  s       rÂ   Úvisit_json_getitem_op_binaryz+StrSQLCompiler.visit_json_getitem_op_binary·  ó   € Ø(ˆtÔ(¨°Ð@Ð@¸RÐ@Ð@Ð@rÄ   c                ó    —  | j         ||fi |¤ŽS r  rJ  r”  s       rÂ   Ú!visit_json_path_getitem_op_binaryz0StrSQLCompiler.visit_json_path_getitem_op_binaryº  rL  rÄ   c                ó<   — d| j                              |¦  «        z  S )Nz<next sequence value: %s>)rŸ  Úformat_sequence)r  ÚseqrÉ  s      rÂ   rg  zStrSQLCompiler.visit_sequence½  s   € Ø*¨T¬]×-JÒ-JÈ3Ñ-OÔ-OÑOÐOrÄ   rw  rC   r]  r^  rò  r  rÉ  r   r	  r¿   c               ót   ‡ — ˆ fd„t          j        |¦  «        D ¦   «         }dd                     |¦  «        z   S )Nc           	     óB   •— g | ]}‰                      d |ddi ¦  «        ‘ŒS )NTFrÞ  ©rÀ   r|  r  s     €rÂ   r}  z3StrSQLCompiler.returning_clause.<locals>.<listcomp>È  s?   ø€ ð 
ð 
ð 
àð ×%Ò% d¨A¨t°U¸BÑ?Ô?ð
ð 
ð 
rÄ   rb  rÑ   )r   rc  ry   rd  s   `     rÂ   re  zStrSQLCompiler.returning_clauseÀ  sO   ø€ ð
ð 
ð 
ð 
åÔ+¨NÑ;Ô;ð
ñ 
ô 
ˆð ˜dŸiši¨Ñ0Ô0Ñ0Ð0rÄ   c                ó^   ‡ ‡‡— d‰d<   dd                      ˆˆˆ fd„|D ¦   «         ¦  «        z   S )NTry  r  rÑ   c              3  ó8   •K  — | ]} |j         ‰fd ‰i‰¤ŽV — ŒdS ©r|  NrÒ  ©rÀ   rB  r  rÉ  r  s     €€€rÂ   r2  z4StrSQLCompiler.update_from_clause.<locals>.<genexpr>Ò  sQ   øè è € ð #
ð #
àð !ˆAÔ  ÐBÐB°ÐB¸rÐBÐBð#
ð #
ð #
ð #
ð #
ð #
rÄ   r  r  s   `   ``rÂ   r  z!StrSQLCompiler.update_from_clauseÎ  s]   øøø€ ð ˆˆ8‰Ø˜Ÿšð #
ð #
ð #
ð #
ð #
ð #
à ð#
ñ #
ô #
ñ 
ô 
ñ 
ð 	
rÄ   c                ó^   ‡ ‡‡— d‰d<   dd                      ˆˆˆ fd„|D ¦   «         ¦  «        z   S )NTry  rÑ   c              3  ó8   •K  — | ]} |j         ‰fd ‰i‰¤ŽV — ŒdS rW  rÒ  rX  s     €€€rÂ   r2  z:StrSQLCompiler.delete_extra_from_clause.<locals>.<genexpr>Û  sQ   øè è € ð  
ð  
àð !ˆAÔ  ÐBÐB°ÐB¸rÐBÐBð 
ð  
ð  
ð  
ð  
ð  
rÄ   r  r  s   `   ``rÂ   r  z'StrSQLCompiler.delete_extra_from_clause×  s]   øøø€ ð ˆˆ8‰Ø�d—i’ið  
ð  
ð  
ð  
ð  
ð  
à ð 
ñ  
ô  
ñ 
ô 
ñ 
ð 	
rÄ   c                ó   — dS )NzSELECT 1 WHERE 1!=1r¾   rï  s      rÂ   r±  z#StrSQLCompiler.visit_empty_set_exprà  s   € Ø$Ð$rÄ   c                ó   — d|z  S )Nz[%s]r¾   rü  s      rÂ   rô  z!StrSQLCompiler.get_from_hint_textã  s   € Ø˜‰}ÐrÄ   c                ó    —  | j         |dfi |¤ŽS )Nz
 <regexp> ©r§  r”  s       rÂ   r-  z+StrSQLCompiler.visit_regexp_match_op_binaryæ  s   € Ø,ˆtÔ,¨V°\ÐHÐHÀRÐHÐHÐHrÄ   c                ó    —  | j         |dfi |¤ŽS )Nz <not regexp> r^  r”  s       rÂ   r0  z/StrSQLCompiler.visit_not_regexp_match_op_binaryé  s    € Ø,ˆtÔ,¨VÐ5EÐLÐLÈÐLÐLÐLrÄ   c                óX   — d |j         j        | fi |¤Ž›d |j        j        | fi |¤Ž›d�S )Nz<regexp replace>(rÑ   r  )rz   rÓ  rŽ   r”  s       rÂ   r2  z-StrSQLCompiler.visit_regexp_replace_op_binaryì  sN   € € à*ˆFŒKÔ*¨4Ð6Ð6°2Ð6Ð6Ð6Ð6Ø+ˆFŒLÔ+¨DÐ7Ð7°BÐ7Ð7Ð7Ð7ð
ð 	
rÄ   c                óX   — d |j         j        | fi |¤Ž›d |j        j        | fi |¤Ž›d�S )Nz	TRY_CAST(rÓ   r  )r,  rÓ  rÌ  )r  r   rÐ  s      rÂ   Úvisit_try_castzStrSQLCompiler.visit_try_castò  sN   € € à*ˆDŒKÔ*¨4Ð:Ð:°6Ð:Ð:Ð:Ð:Ø.ˆDŒOÔ.¨tÐ>Ð>°vÐ>Ð>Ð>Ð>ð
ð 	
rÄ   r,  )r   r  r  r  r¥  r&   r7  rÊ  rH  rK  rN  rg  re  r  r  r±  rô  r-  r0  r2  rb  rè  ré  s   @rÂ   r=  r=  Ž  sH  ø€ € € € € ðð ð& ð  ð  ð €TÔÐ0Ñ1Ô1ð	Cð 	Cð 	Cð 	Cñ 2Ô1ð	Cð
ð 
ð 
ðAð Að AðAð Að AðPð Pð Pð1ð 1ð 1ð 1ð
ð 
ð 
ð
ð 
ð 
ð%ð %ð %ðð ð ðIð Ið IðMð Mð Mð
ð 
ð 
ð
ð 
ð 
ð 
ð 
ð 
ð 
rÄ   r=  c                  óz  — e Zd ZdZer	 	 	 dCdDd„Zej        d„ ¦   «         Zej        d„ ¦   «         Z		 	 	 dEdFd„Z
d„ Zd„ Zd„ Zd„ ZdGd„Z	 dHd„Zd „ Zd!„ Zd"„ Z	 dId#„Zd$„ ZdGd%„Zd&„ Zd'„ Zd(„ Zd)„ Zd*„ Zd+„ Zd,„ Zd-„ ZdHd.„Zd/„ Z d0„ Z!d1„ Z"d2„ Z#d3„ Z$d4„ Z%d5„ Z&d6„ Z'd7„ Z(d8„ Z)d9„ Z*d:„ Z+d;„ Z,d<„ Z-d=„ Z.d>„ Z/d?„ Z0d@„ Z1dA„ Z2dB„ Z3dS )JÚDDLCompilerT.r¦  r^   r'  rA   rœ  r›  r§  r  r¨  r©  c                ó   — d S r  r¾   r³  s         rÂ   r´  zDDLCompiler.__init__þ  s	   € ð ˆCrÄ   c                óP   — | j                              | j         d | j        ¬¦  «        S )N)rœ  )r¦  rD  rœ  r5  s    rÂ   rÎ  zDDLCompiler.sql_compiler  s-   € àŒ|×.Ò.ØŒL˜$°TÔ5Nð /ñ 
ô 
ð 	
rÄ   c                ó   — | j         j        S r  )r¦  rË  r5  s    rÂ   Útype_compilerzDDLCompiler.type_compiler  s   € àŒ|Ô2Ð2rÄ   NrÖ  r×  rØ  rÙ  rÚ  r	  rÛ  c                ó   — d S r  r¾   rÝ  s       rÂ   rÞ  zDDLCompiler.construct_params  s	   € ð ˆtrÄ   c                ó  — |j         }t          |j        t          j        ¦  «        r½|                     ¦   «         }| j        }|                     |j        ¦  «        }t          |¦  «        dk    r|d         d}}n|d         |d         }}| 	                    d|¦  «         | 	                    d|¦  «         | 	                    d| 
                    |j        ¦  «        ¦  «         | j                             |j        |z  ¦  «        S )Nr   r   r–  rƒ  r�   r#   ru  )Úcontextr¯  Útargetr#   rK   ru  rŸ  Úformat_table_seqr±  rÍ  rä  rÎ  rÖ  r'  )r  ÚddlrÐ  rk  rŸ  Úpathr�   Úschs           rÂ   Ú	visit_ddlzDDLCompiler.visit_ddl  sè   € à”+ˆÝ�c”j¥&¤,Ñ/Ô/ð 	NØ—l’l‘n”nˆGà”}ˆHØ×,Ò,¨S¬ZÑ8Ô8ˆDÝ�4‰yŒy˜AŠ~ˆ~Ø! !œW b�s��à! "œX t¨A¤w�s�à×Ò˜w¨Ñ.Ô.Ð.Ø×Ò˜x¨Ñ-Ô-Ð-Ø×Ò˜z¨8×+@Ò+@ÀÄÑ+LÔ+LÑMÔMÐMàÔ ×2Ò2°3´=À7Ñ3JÑKÔKÐKrÄ   c                ób   — d}|j         r|dz  }|| j                             |j        ¦  «        z   S )NzCREATE SCHEMA úIF NOT EXISTS )Úif_not_existsrŸ  Úformat_schemarÇ  )r  r•   rÉ  rÕ  s       rÂ   Úvisit_create_schemazDDLCompiler.visit_create_schema-  s:   € ØˆØÔð 	%ØÐ$Ñ$ˆDØ�d”m×1Ò1°&´.ÑAÔAÑAÐArÄ   c                ó~   — d}|j         r|dz  }|| j                             |j        ¦  «        z  }|j        r|dz  }|S )NzDROP SCHEMA ú
IF EXISTS ú CASCADE)Ú	if_existsrŸ  ru  rÇ  Úcascade©r  ÚdroprÉ  rÕ  s       rÂ   Úvisit_drop_schemazDDLCompiler.visit_drop_schema3  sP   € ØˆØŒ>ð 	!Ø�LÑ ˆDØ�”×+Ò+¨D¬LÑ9Ô9Ñ9ˆØŒ<ð 	Ø�JÑˆDØˆrÄ   c                óÎ  — |j         }| j        }d}|j        r |d                     |j        ¦  «        dz   z  }|dz  }|j        r|dz  }||                     |¦  «        dz   z  }|                      |¦  «        }|r||dz   z  }|dz  }d}d}|j        D ]�}	|	j         }
	 |                      |	|
j	        o| ¬¦  «        }|�||z  }d	}|d
|z   z  }|
j	        rd}ŒD# t          j        $ r8}t          j        d|j        ›d|
j        ›d|j        d         ›�¦  «        |‚d }~ww xY w|                      ||j        ¬¦  «        }|r||d
z   |z   z  }|d|                      |¦  «        z  z  }|S )Nz
CREATE r!  zTABLE rs  r  ú
F©Úfirst_pkrH  ú	Tz(in table 'z', column 'z'): r   )Ú _include_foreign_key_constraintsz
)%s

)rÇ  rŸ  r–  ry   rt  rä  Úcreate_table_suffixrÕ  r±  r_  r8   rî  Údescriptionrú   ÚargsÚcreate_table_constraintsÚinclude_foreign_key_constraintsÚpost_create_table)r  r•   rÉ  r�   rŸ  rÕ  r…  r	  r‚  Úcreate_columnr”   Ú	processedÚceÚconsts                 rÂ   Úvisit_create_tablezDDLCompiler.visit_create_table<  sþ  € Ø”ˆØ”=ˆàˆØŒ?ð 	4Ø�C—H’H˜Uœ_Ñ-Ô-°Ñ3Ñ3ˆDà�ÑˆØÔð 	%ØÐ$Ñ$ˆDà�×%Ò% eÑ,Ô,¨sÑ2Ñ2ˆà"×6Ò6°uÑ=Ô=ÐØð 	.ØÐ'¨#Ñ-Ñ-ˆDà�‰ˆàˆ	ð ˆØ#œ^ð 	ð 	ˆMØ"Ô*ˆFðØ ŸLšLØ!¨FÔ,>Ð,OÀxÀ<ð )ñ ô �	ð Ð(Ø˜IÑ%�DØ &�IØ˜D 9Ñ,Ñ,�DØÔ%ð $Ø#�HøøÝÔ#ð ð ð ÝÔ&Ð&àÔ(Ð(Ð(¨&¬+¨+¨+°r´w¸q´z°zðCñô ð ðøøøøðøøøð ×-Ò-ØØ-3Ô-Sð .ñ 
ô 
ˆð ð 	-Ø�I Ñ$ uÑ,Ñ,ˆDà�˜d×4Ò4°UÑ;Ô;Ñ;Ñ;ˆØˆs   Â9CÃDÃ&3DÄDFc                ó¶   ‡ — |j         }|j        rd S ‰                      ||¬¦  «        }d                     ˆ fd„|j        D ¦   «         ¦  «        }|r|d|z   z  }|S )Nr�  r!  c              3  óB   •K  — | ]}‰                      |¦  «        V — Œd S r  )r±  ©rÀ   r²   r  s     €rÂ   r2  z2DDLCompiler.visit_create_column.<locals>.<genexpr>w  s@   øè è € ð 
ð 
Ø)3ˆD�LŠL˜Ñ$Ô$ð
ð 
ð 
ð 
ð 
ð 
rÄ   )rÇ  ÚsystemÚget_column_specificationry   Úconstraints)r  r•   r‚  rÉ  r”   rÕ  rŽ  s   `      rÂ   Úvisit_create_columnzDDLCompiler.visit_create_columnp  sŠ   ø€ Ø”ˆàŒ=ð 	Ø�4à×,Ò,¨V¸hÐ,ÑGÔGˆØ—’ð 
ð 
ð 
ð 
Ø7=Ô7Ið
ñ 
ô 
ñ 
ô 
ˆð ð 	 Ø�C˜%‘KÑˆDàˆrÄ   c                óL  ‡ ‡‡— g }‰j         r|                     ‰j         ¦  «         ‰j        }|�|                     |¦  «        Šnt	          ¦   «         Š|                     ˆˆfd„‰j        D ¦   «         ¦  «         d                     d„ ˆ fd„|D ¦   «         D ¦   «         ¦  «        S )Nc                ó.   •— g | ]}|‰j         u¯|‰v¯|‘ŒS r¾   )r_  )rÀ   r|  Ú	omit_fkcsr�   s     €€rÂ   r}  z8DDLCompiler.create_table_constraints.<locals>.<listcomp>�  s;   ø€ ð ð ð àØ˜EÔ-Ð-Ð-°!¸9Ð2DÐ2Dð à2DÐ2DÐ2DrÄ   z, 
	c              3  ó   K  — | ]}|®|V — Œ	d S r  r¾   )rÀ   rÛ  s     rÂ   r2  z7DDLCompiler.create_table_constraints.<locals>.<genexpr>–  s4   è è € ð 
ð 
àð ˆ}ð ð ˆ}ˆ}ˆ}ð
ð 
rÄ   c              3  ó¦   •K  — | ]K}|                      ‰¦  «        ¯‰j        j        rt          |d d¦  «        °4‰                     |¦  «        V — ŒLdS )Ú	use_alterFN)Ú_should_create_for_compilerr¦  Úsupports_alterr_  r±  r’  s     €rÂ   r2  z7DDLCompiler.create_table_constraints.<locals>.<genexpr>˜  s|   øè è € ð ð àØ×:Ò:¸4Ñ@Ô@ðð
 œÔ3ðõ # :¨{¸EÑBÔBðØ—’˜ZÑ(Ô(ðð ð ð ð ð rÄ   )r_  r›  Úforeign_key_constraintsr  rq   r-  Ú_sorted_constraintsry   )r  r�   r„  rÉ  r•  Úall_fkcsr™  s   ``    @rÂ   rˆ  z$DDLCompiler.create_table_constraints  sø   øøø€ ð
 ˆØÔð 	2Ø×Ò˜uÔ0Ñ1Ô1Ð1àÔ0ˆØ+Ð7Ø ×+Ò+Ð,LÑMÔMˆIˆIå™œˆIà×Òðð ð ð ð àÔ2ðñ ô ñ	
ô 	
ð 	
ð �}Š}ð 
ð 
ðð ð ð à"-ðñ ô ð
ñ 
ô 
ñ 
ô 
ð 	
rÄ   c                ób   — d}|j         r|dz  }|| j                             |j        ¦  «        z   S )Nz
DROP TABLE rx  )rz  rŸ  rä  rÇ  r|  s       rÂ   Úvisit_drop_tablezDDLCompiler.visit_drop_table¤  s8   € ØˆØŒ>ð 	!Ø�LÑ ˆDØ�d”m×0Ò0°´Ñ>Ô>Ñ>Ð>rÄ   c                óF   — d| j                              |j        ¦  «        z   S )Nz
DROP VIEW ©rŸ  rä  rÇ  ©r  r}  rÉ  s      rÂ   Úvisit_drop_viewzDDLCompiler.visit_drop_viewª  s   € Ø ¤× :Ò :¸4¼<Ñ HÔ HÑHÐHrÄ   c                óL   — |j         €t          j        d|j        z  ¦  «        ‚d S )Nz,Index '%s' is not associated with any table.)r�   r8   rî  rú   ©r  rx  s     rÂ   Ú_verify_index_tablezDDLCompiler._verify_index_table­  s1   € ØŒ;ÐÝÔ"ØAÀEÄJÑNñô ð ð ÐrÄ   c           	     ó„  ‡ — |j         }‰                      |¦  «         ‰ j        }d}|j        r|dz  }|j        €t          j        d¦  «        ‚|dz  }|j        r|dz  }|‰                      ||¬¦  «        ›d| 	                    |j
        |¬¦  «        ›d	d
                     ˆ fd„|j        D ¦   «         ¦  «        ›d�z  }|S )NzCREATE úUNIQUE z0CREATE INDEX requires that the index have a namezINDEX rs  ©Úinclude_schemarz  ©rv  rÒ  rÑ   c              3  óR   •K  — | ]!}‰j                              |d d¬¦  «        V — Œ"dS )FT©r¬  r5  N)rÎ  r±  )rÀ   r"  r  s     €rÂ   r2  z1DDLCompiler.visit_create_index.<locals>.<genexpr>Ê  sX   øè è € ð ð ð ð Ô!×)Ò)Ø¨¸Tð *ñ ô ðð ð ð ð ð rÄ   r  )rÇ  rª  rŸ  rœ   rú   r8   rî  rt  Ú_prepared_index_namerä  r�   ry   Úexpressions)r  r•   r®  Úinclude_table_schemarÉ  rx  rŸ  rÕ  s   `       rÂ   Úvisit_create_indexzDDLCompiler.visit_create_index³  s&  ø€ ð ”ˆØ× Ò  Ñ'Ô'Ð'Ø”=ˆØˆØŒ<ð 	Ø�IÑˆDØŒ:ÐÝÔ"ØBñô ð ð 	�ÑˆØÔð 	%ØÐ$Ñ$ˆDàØ×%Ò% e¸NÐ%ÑKÔKÐKÐKØ×!Ò!Ø”Ð(<ð "ñ ô ð ð ð �IŠIð ð ð ð ð "Ô-ð	ñ ô ñ ô ð ð ð
ñ 	
ˆð ˆrÄ   c                ó–   — |j         }|j        €t          j        d¦  «        ‚d}|j        r|dz  }||                      |d¬¦  «        z   S )Nz.DROP INDEX requires that the index have a namez
DROP INDEX rx  Tr­  )rÇ  rú   r8   rî  rz  r²  )r  r}  rÉ  rx  rÕ  s        rÂ   Úvisit_drop_indexzDDLCompiler.visit_drop_indexÓ  sb   € Ø”ˆàŒ:ÐÝÔ"Ø@ñô ð ð ˆØŒ>ð 	!Ø�LÑ ˆDà�d×/Ò/°ÀdÐ/ÑKÔKÑKÐKrÄ   c                óâ   — |j         � | j                             |j         ¦  «        }nd }|r|r| j                             |¦  «        }nd }| j                             |¦  «        }|r|dz   |z   }|S ©Nr  )r�   rŸ  r¶  r·  Úformat_index)r  rx  r®  rº  Úschema_nameÚ
index_names         rÂ   r²  z DDLCompiler._prepared_index_nameà  sŠ   € ØŒ;Ð"Ø#œ}×>Ò>¸u¼{ÑKÔKÐÐà#ÐØð 	Ð.ð 	Øœ-×4Ò4Ð5EÑFÔFˆKˆKàˆKà”]×/Ò/°Ñ6Ô6ˆ
àð 	8Ø$ sÑ*¨ZÑ7ˆJØÐrÄ   c                ó†   — d| j                              |j        j        ¦  «        ›d|                      |j        ¦  «        ›�S )NúALTER TABLE z ADD )rŸ  rä  rÇ  r�   r±  ©r  r•   rÉ  s      rÂ   Úvisit_add_constraintz DDLCompiler.visit_add_constraintð  s@   € € àŒM×&Ò& v¤~Ô';Ñ<Ô<Ð<Ð<Ø�LŠL˜œÑ(Ô(Ð(ð
ð 	
rÄ   c                ó´   — d| j                              |j        ¦  «        ›d| j                             |j        j        t          j        ¦   «         ¦  «        ›�S )NzCOMMENT ON TABLE rÔ   )rŸ  rä  rÇ  rÎ  r  Úcommentr%   ÚStringr¿  s      rÂ   Úvisit_set_table_commentz#DDLCompiler.visit_set_table_commentö  sV   € € àŒM×&Ò& v¤~Ñ6Ô6Ð6Ð6ØÔ×2Ò2Ø”Ô&­¬Ñ(9Ô(9ñô ð ð
ð 	
rÄ   c                óF   — d| j                              |j        ¦  «        z  S )NzCOMMENT ON TABLE %s IS NULLr¥  r¦  s      rÂ   Úvisit_drop_table_commentz$DDLCompiler.visit_drop_table_commentþ  s(   € Ø,¨t¬}×/IÒ/IØŒLñ0
ô 0
ñ 
ð 	
rÄ   c                óº   — d| j                              |j        dd¬¦  «        ›d| j                             |j        j        t          j        ¦   «         ¦  «        ›�S )NzCOMMENT ON COLUMN T)Ú	use_tablerv  rÔ   )rŸ  Úformat_columnrÇ  rÎ  r  rÂ  r%   rÃ  r¿  s      rÂ   Úvisit_set_column_commentz$DDLCompiler.visit_set_column_comment  sj   € € àŒM×'Ò'Ø”¨$¸4ð (ñ ô ð ð ð Ô×2Ò2Ø”Ô&­¬Ñ(9Ô(9ñô ð ð	
ð 	
rÄ   c                óJ   — d| j                              |j        d¬¦  «        z  S )NzCOMMENT ON COLUMN %s IS NULLT)rÈ  )rŸ  rÉ  rÇ  r¦  s      rÂ   Úvisit_drop_column_commentz%DDLCompiler.visit_drop_column_comment  s0   € Ø-°´×0KÒ0KØŒL Dð 1Lñ 1
ô 1
ñ 
ð 	
rÄ   c                óF   — t          j        | t          |¦  «        ¦  «        ‚r  rÄ  r¿  s      rÂ   Úvisit_set_constraint_commentz(DDLCompiler.visit_set_constraint_comment  s   € ÝÔ-¨dµD¸±L´LÑAÔAÐArÄ   c                óF   — t          j        | t          |¦  «        ¦  «        ‚r  rÄ  r¦  s      rÂ   Úvisit_drop_constraint_commentz)DDLCompiler.visit_drop_constraint_comment  s   € ÝÔ-¨dµD¸±J´JÑ?Ô?Ð?rÄ   c                óR  — g }|j         �|                     d|j         z  ¦  «         |j        �|                     d|j        z  ¦  «         |j        �|                     d|j        z  ¦  «         |j        �|                     d|j        z  ¦  «         |j        �|                     d¦  «         |j        �|                     d¦  «         |j        �|                     d|j        z  ¦  «         |j        �|                     |j        rdnd	¦  «         d
 	                    |¦  «        S )NzINCREMENT BY %dzSTART WITH %dzMINVALUE %dzMAXVALUE %dzNO MINVALUEzNO MAXVALUEzCACHE %dÚCYCLEzNO CYCLEr!  )
Ú	incrementr›  rƒ  ÚminvalueÚmaxvalueÚ
nominvalueÚ
nomaxvalueÚcacheÚcyclery   )r  Úidentity_optionsrÕ  s      rÂ   Úget_identity_optionsz DDLCompiler.get_identity_options  s*  € ØˆØÔ%Ð1Ø�KŠKÐ)Ð,<Ô,FÑFÑGÔGÐGØÔ!Ð-Ø�KŠK˜Ð*:Ô*@Ñ@ÑAÔAÐAØÔ$Ð0Ø�KŠK˜Ð(8Ô(AÑAÑBÔBÐBØÔ$Ð0Ø�KŠK˜Ð(8Ô(AÑAÑBÔBÐBØÔ&Ð2Ø�KŠK˜Ñ&Ô&Ð&ØÔ&Ð2Ø�KŠK˜Ñ&Ô&Ð&ØÔ!Ð-Ø�KŠK˜
Ð%5Ô%;Ñ;Ñ<Ô<Ð<ØÔ!Ð-Ø�KŠKÐ#3Ô#9ÐI˜˜¸zÑJÔJÐJØ�xŠx˜‰~Œ~ÐrÄ   c                ó¼   — d}|j         r|dz  }|| j                             |j        ¦  «        z  }|r||z  }|                      |j        ¦  «        }|r|d|z   z  }|S )NzCREATE SEQUENCE rs  r!  )rt  rŸ  rP  rÇ  rÛ  )r  r•   rE  rÉ  rÕ  Úoptionss         rÂ   Úvisit_create_sequencez!DDLCompiler.visit_create_sequence,  sz   € Ø!ˆØÔð 	%ØÐ$Ñ$ˆDØ�”×-Ò-¨f¬nÑ=Ô=Ñ=ˆàð 	Ø�F‰NˆDØ×+Ò+¨F¬NÑ;Ô;ˆØð 	"Ø�C˜'‘MÑ!ˆDØˆrÄ   c                ób   — d}|j         r|dz  }|| j                             |j        ¦  «        z   S )NzDROP SEQUENCE rx  )rz  rŸ  rP  rÇ  r|  s       rÂ   Úvisit_drop_sequencezDDLCompiler.visit_drop_sequence9  s8   € ØˆØŒ>ð 	!Ø�LÑ ˆDØ�d”m×3Ò3°D´LÑAÔAÑAÐArÄ   c                ó  — |j         }|j        �| j                             |¦  «        }nd }|€t	          j        d|j         z  ¦  «        ‚d| j                             |j         j        ¦  «        ›d|j        rdnd›|›|j	        rdnd›�S )Nz<Can't emit DROP CONSTRAINT for constraint %r; it has no namer¾  z DROP CONSTRAINT rx  r–  ry  )
rÇ  rú   rŸ  Úformat_constraintr8   rî  rä  r�   rz  r{  )r  r}  rÉ  r²   Úformatted_names        rÂ   Úvisit_drop_constraintz!DDLCompiler.visit_drop_constraint?  s­   € Ø”\ˆ
ØŒ?Ð&Ø!œ]×<Ò<¸ZÑHÔHˆNˆNà!ˆNàÐ!ÝÔ"ð!Ø#'¤<ñ0ñô ð ð "ð ŒM×&Ò& t¤|Ô'9Ñ:Ô:Ð:Ð:Ø œNÐ2ˆLˆL°Ð2ØˆNØœ,Ð.ˆJˆJ¨BÐ.ð	
ð 	
rÄ   c                ó¾  — | j                              |¦  «        dz   | j        j                             |j        |¬¦  «        z   }|                      |¦  «        }|�|d|z   z  }|j        � |d|                      |j        ¦  «        z   z  }|j        �,| j        j	        r |d|                      |j        ¦  «        z   z  }|j
        s|j        r| j        j	        s|dz  }|S )Nr!  )rÊ  z	 DEFAULT z	 NOT NULL)rŸ  rÉ  r¦  rË  r±  rþ   Úget_column_default_stringÚcomputedÚidentityÚsupports_identity_columnsÚnullable)r  r”   rÐ  Úcolspecr¡   s        rÂ   r”  z$DDLCompiler.get_column_specificationR  s  € àŒM×'Ò'¨Ñ/Ô/ØñàŒlÔ1×9Ò9Ø”¨Vð :ñ ô ñð 	ð ×0Ò0°Ñ8Ô8ˆØÐØ�{ WÑ,Ñ,ˆGàŒ?Ð&Ø�s˜TŸ\š\¨&¬/Ñ:Ô:Ñ:Ñ:ˆGð ŒOÐ'Ø”Ô6ð (ð �s˜TŸ\š\¨&¬/Ñ:Ô:Ñ:Ñ:ˆGàŒð 	#Ø”ð	#Ø'+¤|Ô'Mð	#ð �{Ñ"ˆGØˆrÄ   c                ó   — dS ©Nr–  r¾   ©r  r�   s     rÂ   r…  zDDLCompiler.create_table_suffixm  ó   € ØˆrrÄ   c                ó   — dS rí  r¾   rî  s     rÂ   rŠ  zDDLCompiler.post_create_tablep  rï  rÄ   c                ó‚   — t          |j        t          j        ¦  «        r|                      |j        j        ¦  «        S d S r  )r¯  Úserver_defaultr#   ÚDefaultClauseÚrender_default_stringÚargr¤  s     rÂ   ræ  z%DDLCompiler.get_column_default_strings  s9   € Ý�fÔ+­VÔ-AÑBÔBð 	Ø×-Ò-¨fÔ.CÔ.GÑHÔHÐHà�4rÄ   c                ó®   — t          |t          ¦  «        r%| j                             |t          j        ¦  «        S | j                             |d¬¦  «        S )NT)r5  )r¯  r¿   rÎ  r  r%   rñ  r±  )r  r¡   s     rÂ   rô  z!DDLCompiler.render_default_stringy  sV   € Ý�g�sÑ#Ô#ð 	JØÔ$×9Ò9Ø�Ô,ñô ð ð Ô$×,Ò,¨WÀDÐ,ÑIÔIÐIrÄ   c                ód   — |j         r|                      |¦  «        S |                      |¦  «        S r  )Úis_column_levelÚvisit_column_check_constraintÚvisit_check_constraint©r  r²   rÉ  s      rÂ   Ú&visit_table_or_column_check_constraintz2DDLCompiler.visit_table_or_column_check_constraint�  s5   € ØÔ%ð 	;Ø×5Ò5°jÑAÔAÐAà×.Ò.¨zÑ:Ô:Ð:rÄ   c                óà   — d}|j         �$| j                             |¦  «        }|�|d|z  z  }|d| j                             |j        dd¬¦  «        z  z  }||                      |¦  «        z  }|S ©Nr–  úCONSTRAINT %s z
CHECK (%s)FTr±  ©rú   rŸ  râ  rÎ  r±  rJ  Údefine_constraint_deferrability©r  r²   rÉ  rÕ  rã  s        rÂ   rú  z"DDLCompiler.visit_check_constraint‡  óŽ   € ØˆØŒ?Ð&Ø!œ]×<Ò<¸ZÑHÔHˆNØÐ)ØÐ(¨>Ñ9Ñ9�Ø�˜tÔ0×8Ò8ØÔ¨eÀ4ð  9ñ  
ô  
ñ 
ñ 	
ˆð 	�×4Ò4°ZÑ@Ô@Ñ@ˆØˆrÄ   c                óà   — d}|j         �$| j                             |¦  «        }|�|d|z  z  }|d| j                             |j        dd¬¦  «        z  z  }||                      |¦  «        z  }|S rþ  r   r  s        rÂ   rù  z)DDLCompiler.visit_column_check_constraint“  r  rÄ   c                ó:  ‡ — t          |¦  «        dk    rdS d}|j        �$‰ j                             |¦  «        }|�|d|z  z  }|dz  }|dd                     ˆ fd„|j        r|j        n|j        D ¦   «         ¦  «        z  z  }|‰                      |¦  «        z  }|S )Nr   r–  rÿ  zPRIMARY KEY r  rÑ   c              3  óV   •K  — | ]#}‰j                              |j        ¦  «        V — Œ$d S r  ©rŸ  r´  rú   rT  s     €rÂ   r2  z;DDLCompiler.visit_primary_key_constraint.<locals>.<genexpr>¨  sI   øè è € ð #
ð #
àð ŒM×Ò ¤Ñ'Ô'ð#
ð #
ð #
ð #
ð #
ð #
rÄ   )	r±  rú   rŸ  râ  ry   Ú_implicit_generatedÚcolumns_autoinc_firstrÕ  r  r  s   `    rÂ   Úvisit_primary_key_constraintz(DDLCompiler.visit_primary_key_constraintŸ  sÙ   ø€ Ýˆz‰?Œ?˜aÒÐØ�2ØˆØŒ?Ð&Ø!œ]×<Ò<¸ZÑHÔHˆNØÐ)ØÐ(¨>Ñ9Ñ9�Ø�ÑˆØ�˜Ÿšð #
ð #
ð #
ð #
ð Ô1ð(�
Ô0Ð0àÔ'ð#
ñ #
ô #
ñ 
ô 
ñ 
ñ 	
ˆð 	�×4Ò4°ZÑ@Ô@Ñ@ˆØˆrÄ   c           
     ó   ‡— | j         Šd}|j        �$| j                              |¦  «        }|�|d|z  z  }t          |j        ¦  «        d         j        j        }|dd                     ˆfd„|j        D ¦   «         ¦  «        ›d|                      ||‰¦  «        ›dd                     ˆfd	„|j        D ¦   «         ¦  «        ›d
�z  }||  	                    |¦  «        z  }||  
                    |¦  «        z  }||                      |¦  «        z  }|S )Nr–  rÿ  r   zFOREIGN KEY(rÑ   c              3  óV   •K  — | ]#}‰                      |j        j        ¦  «        V — Œ$d S r  )r´  Úparentrú   ©rÀ   r7  rŸ  s     €rÂ   r2  z;DDLCompiler.visit_foreign_key_constraint.<locals>.<genexpr>¼  óD   øè è € ð ð Ø23�—’˜qœxœ}Ñ-Ô-ðð ð ð ð ð rÄ   z) REFERENCES rÒ  c              3  óV   •K  — | ]#}‰                      |j        j        ¦  «        V — Œ$d S r  )r´  r”   rú   r  s     €rÂ   r2  z;DDLCompiler.visit_foreign_key_constraint.<locals>.<genexpr>Â  r  rÄ   r  )rŸ  rú   râ  rˆ  r   r”   r�   ry   Údefine_constraint_remote_tableÚdefine_constraint_matchÚdefine_constraint_cascadesr  )r  r²   rÉ  rÕ  rã  Úremote_tablerŸ  s         @rÂ   Úvisit_foreign_key_constraintz(DDLCompiler.visit_foreign_key_constraint³  sm  ø€ Ø”=ˆØˆØŒ?Ð&Ø!œ]×<Ò<¸ZÑHÔHˆNØÐ)ØÐ(¨>Ñ9Ñ9�Ý˜JÔ/Ñ0Ô0°Ô3Ô:Ô@ˆØˆØ�IŠIð ð ð ð Ø7AÔ7Jðñ ô ñ ô ð ð ð ×/Ò/Ø˜L¨(ñô ð ð ð �IŠIð ð ð ð Ø7AÔ7Jðñ ô ñ ô ð ð ð

ñ 
	
ˆð 	�×,Ò,¨ZÑ8Ô8Ñ8ˆØ�×/Ò/°
Ñ;Ô;Ñ;ˆØ�×4Ò4°ZÑ@Ô@Ñ@ˆØˆrÄ   c                ó,   — |                      |¦  «        S )z=Format the remote table clause of a CREATE CONSTRAINT clause.)rä  )r  r²   r�   rŸ  s       rÂ   r  z*DDLCompiler.define_constraint_remote_tableË  s   € ð ×$Ò$ UÑ+Ô+Ð+rÄ   c                ó*  ‡ — t          |¦  «        dk    rdS d}|j        �$‰ j                             |¦  «        }|�|d|z  z  }|d ‰ j        |fi |¤Ž›dd                     ˆ fd„|D ¦   «         ¦  «        ›d�z  }|‰                      |¦  «        z  }|S )	Nr   r–  rÿ  r¬  r  rÑ   c              3  óV   •K  — | ]#}‰j                              |j        ¦  «        V — Œ$d S r  r  rT  s     €rÂ   r2  z6DDLCompiler.visit_unique_constraint.<locals>.<genexpr>Ú  s5   øè è € ÐFÐF°a�d”m×)Ò)¨!¬&Ñ1Ô1ÐFÐFÐFÐFÐFÐFrÄ   r  )r±  rú   rŸ  râ  Ú!define_unique_constraint_distinctry   r  r  s   `    rÂ   Úvisit_unique_constraintz#DDLCompiler.visit_unique_constraintÐ  sÉ   ø€ Ýˆz‰?Œ?˜aÒÐØ�2ØˆØŒ?Ð&Ø!œ]×<Ò<¸ZÑHÔHˆNØÐ)ØÐ(¨>Ñ9Ñ9�ØˆØ2ˆDÔ2°:ÐDÐDÀÐDÐDÐDÐDØ�IŠIÐFÐFÐFÐF¸:ÐFÑFÔFÑFÔFÐFÐFð
ñ 	
ˆð 	�×4Ò4°ZÑ@Ô@Ñ@ˆØˆrÄ   c                ó   — dS rí  r¾   rû  s      rÂ   r  z-DDLCompiler.define_unique_constraint_distinctß  rï  rÄ   c                óÒ   — d}|j         �+|d| j                             |j         t          ¦  «        z  z  }|j        �+|d| j                             |j        t
          ¦  «        z  z  }|S )Nr–  z ON DELETE %sz ON UPDATE %s)ÚondeleterŸ  Úvalidate_sql_phraseÚFK_ON_DELETEÚonupdateÚFK_ON_UPDATE©r  r²   rÕ  s      rÂ   r  z&DDLCompiler.define_constraint_cascadesâ  s|   € ØˆØÔÐ*Ø�O d¤m×&GÒ&GØÔ#¥\ñ'ô 'ñ ñ ˆDð ÔÐ*Ø�O d¤m×&GÒ&GØÔ#¥\ñ'ô 'ñ ñ ˆDð ˆrÄ   c                ó    — d}|j         �|j         r|dz  }n|dz  }|j        �+|d| j                             |j        t          ¦  «        z  z  }|S )Nr–  z DEFERRABLEz NOT DEFERRABLEz INITIALLY %s)r³   r­   rŸ  r  ÚFK_INITIALLYr"  s      rÂ   r  z+DDLCompiler.define_constraint_deferrabilityî  so   € ØˆØÔ Ð,ØÔ$ð *Ø˜Ñ%��àÐ)Ñ)�ØÔÐ+Ø�O d¤m×&GÒ&GØÔ$¥lñ'ô 'ñ ñ ˆDð ˆrÄ   c                ó2   — d}|j         �|d|j         z  z  }|S )Nr–  z	 MATCH %s)r4  r"  s      rÂ   r  z#DDLCompiler.define_constraint_matchû  s'   € ØˆØÔÐ'Ø�K *Ô"2Ñ2Ñ2ˆDØˆrÄ   c                óŠ   — d| j                              |j        dd¬¦  «        z  }|j        du r|dz  }n|j        du r|dz  }|S )NzGENERATED ALWAYS AS (%s)FTr±  z STOREDz VIRTUAL)rÎ  r±  rJ  Ú	persisted)r  Ú	generatedrÉ  rÕ  s       rÂ   Úvisit_computed_columnz!DDLCompiler.visit_computed_column  sj   € Ø)¨DÔ,=×,EÒ,EØÔ¨UÀ$ð -Fñ -
ô -
ñ 
ˆð Ô $Ð&Ð&Ø�IÑˆDˆDØÔ  EÐ)Ð)Ø�JÑˆDØˆrÄ   c                ób   — d|j         rdnd›d�}|                      |¦  «        }|r|d|z  z  }|S )Nz
GENERATED ÚALWAYSz
BY DEFAULTz AS IDENTITYrÏ  )ÚalwaysrÛ  )r  rè  rÉ  rÕ  rÝ  s        rÂ   Úvisit_identity_columnz!DDLCompiler.visit_identity_column  sP   € € à œÐ9ˆHˆH¨\Ð9Ð9ð
ˆð ×+Ò+¨HÑ5Ô5ˆØð 	&Ø�G˜gÑ%Ñ%ˆDØˆrÄ   )...)
r¦  r^   r'  rA   rœ  r›  r§  r  r¨  r©  rá  râ  r+  r  )FT)4r   r  r  rä  r   r´  r&   r3  rÎ  rh  rÞ  rq  rv  r~  r�  r–  rˆ  r£  r§  rª  rµ  r·  r²  rÀ  rÄ  rÆ  rÊ  rÌ  rÎ  rÐ  rÛ  rÞ  rà  rä  r”  r…  rŠ  ræ  rô  rü  rú  rù  r
  r  r  r  r  r  r  r  r)  r-  r¾   rÄ   rÂ   rd  rd  ù  sP  € € € € € Ø€Fàð 
ð FIØ,/Ø03ð	ð 	ð 	ð 	ð 	ð 
Ôð
ð 
ñ Ôð
ð
 
Ôð3ð 3ñ Ôð3ð
 6:ØGKØ!ð	ð ð ð ð ðLð Lð Lð&Bð Bð Bðð ð ð2ð 2ð 2ðhð ð ð ð  7;ð#
ð #
ð #
ð #
ðJ?ð ?ð ?ðIð Ið Iðð ð ð BFðð ð ð ð@Lð Lð Lðð ð ð ð 
ð 
ð 
ð
ð 
ð 
ð
ð 
ð 
ð

ð 
ð 
ð
ð 
ð 
ð
Bð Bð Bð@ð @ð @ðð ð ð(ð ð ð ðBð Bð Bð
ð 
ð 
ð&ð ð ð6ð ð ðð ð ðð ð ðJð Jð Jð;ð ;ð ;ð
ð 
ð 
ð
ð 
ð 
ðð ð ð(ð ð ð0,ð ,ð ,ð
ð ð ðð ð ð
ð 
ð 
ðð ð ðð ð ðð ð ðð ð ð ð rÄ   rd  c                  ó$  — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd0d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d „ Z!d!„ Z"d"„ Z#d#„ Z$d$„ Z%d%„ Z&d&„ Z'd'„ Z(d(„ Z)d)„ Z*d*„ Z+d+„ Z,d,„ Z-d-„ Z.d.„ Z/d/„ Z0dS )1ÚGenericTypeCompilerc                ó   — dS )NÚFLOATr¾   rï  s      rÂ   Úvisit_FLOATzGenericTypeCompiler.visit_FLOAT  ó   € ØˆwrÄ   c                ó   — dS )NÚDOUBLEr¾   rï  s      rÂ   Úvisit_DOUBLEz GenericTypeCompiler.visit_DOUBLE  ó   € ØˆxrÄ   c                ó   — dS )NzDOUBLE PRECISIONr¾   rï  s      rÂ   Úvisit_DOUBLE_PRECISIONz*GenericTypeCompiler.visit_DOUBLE_PRECISION  s   € Ø!Ð!rÄ   c                ó   — dS )NÚREALr¾   rï  s      rÂ   Ú
visit_REALzGenericTypeCompiler.visit_REAL  rù  rÄ   c                ó^   — |j         €dS |j        €dd|j         iz  S d|j         |j        dœz  S )NÚNUMERICzNUMERIC(%(precision)s)Ú	precisionz!NUMERIC(%(precision)s, %(scale)s)©r?  Úscaler@  rï  s      rÂ   Úvisit_NUMERICz!GenericTypeCompiler.visit_NUMERIC"  óJ   € ØŒ?Ð"Ø�9ØŒ[Ð Ø+¨{¸E¼OÐ.LÑLÐLà6Ø"œ_Øœð:ð :ñ ð rÄ   c                ó^   — |j         €dS |j        €dd|j         iz  S d|j         |j        dœz  S )NÚDECIMALzDECIMAL(%(precision)s)r?  z!DECIMAL(%(precision)s, %(scale)s)r@  r@  rï  s      rÂ   Úvisit_DECIMALz!GenericTypeCompiler.visit_DECIMAL-  rC  rÄ   c                ó   — dS )NÚINTEGERr¾   rï  s      rÂ   Úvisit_INTEGERz!GenericTypeCompiler.visit_INTEGER8  ó   € ØˆyrÄ   c                ó   — dS )NÚSMALLINTr¾   rï  s      rÂ   Úvisit_SMALLINTz"GenericTypeCompiler.visit_SMALLINT;  ó   € ØˆzrÄ   c                ó   — dS )NÚBIGINTr¾   rï  s      rÂ   Úvisit_BIGINTz GenericTypeCompiler.visit_BIGINT>  r7  rÄ   c                ó   — dS )NÚ	TIMESTAMPr¾   rï  s      rÂ   Úvisit_TIMESTAMPz#GenericTypeCompiler.visit_TIMESTAMPA  s   € Øˆ{rÄ   c                ó   — dS )NÚDATETIMEr¾   rï  s      rÂ   Úvisit_DATETIMEz"GenericTypeCompiler.visit_DATETIMED  rN  rÄ   c                ó   — dS )NÚDATEr¾   rï  s      rÂ   Ú
visit_DATEzGenericTypeCompiler.visit_DATEG  rù  rÄ   c                ó   — dS )NÚTIMEr¾   rï  s      rÂ   Ú
visit_TIMEzGenericTypeCompiler.visit_TIMEJ  rù  rÄ   c                ó   — dS )NÚCLOBr¾   rï  s      rÂ   Ú
visit_CLOBzGenericTypeCompiler.visit_CLOBM  rù  rÄ   c                ó   — dS )NÚNCLOBr¾   rï  s      rÂ   Úvisit_NCLOBzGenericTypeCompiler.visit_NCLOBP  r3  rÄ   Nc                óp   — |}|r	|d|z  z  }n|j         r|d|j         z  z  }|j        r|d|j        z  z  }|S )Nú(%d)z COLLATE "%s")ÚlengthrÀ  )r  r  rú   Úlength_overriderÕ  s        rÂ   Ú_render_string_typez'GenericTypeCompiler._render_string_typeS  s[   € ØˆØð 	*Ø�F˜_Ñ,Ñ,ˆDˆDØŒ\ð 	*Ø�F˜Uœ\Ñ)Ñ)ˆDØŒ?ð 	6Ø�O e¤oÑ5Ñ5ˆDØˆrÄ   c                ó.   — |                       |d¦  «        S )NÚCHAR©rh  rï  s      rÂ   Ú
visit_CHARzGenericTypeCompiler.visit_CHAR]  ó   € Ø×'Ò'¨¨vÑ6Ô6Ð6rÄ   c                ó.   — |                       |d¦  «        S )NÚNCHARrk  rï  s      rÂ   Úvisit_NCHARzGenericTypeCompiler.visit_NCHAR`  s   € Ø×'Ò'¨¨wÑ7Ô7Ð7rÄ   c                ó.   — |                       |d¦  «        S )NÚVARCHARrk  rï  s      rÂ   Úvisit_VARCHARz!GenericTypeCompiler.visit_VARCHARc  s   € Ø×'Ò'¨¨yÑ9Ô9Ð9rÄ   c                ó.   — |                       |d¦  «        S )NÚNVARCHARrk  rï  s      rÂ   Úvisit_NVARCHARz"GenericTypeCompiler.visit_NVARCHARf  s   € Ø×'Ò'¨¨zÑ:Ô:Ð:rÄ   c                ó.   — |                       |d¦  «        S )NÚTEXTrk  rï  s      rÂ   Ú
visit_TEXTzGenericTypeCompiler.visit_TEXTi  rm  rÄ   c                ó   — dS )NÚBLOBr¾   rï  s      rÂ   Ú
visit_BLOBzGenericTypeCompiler.visit_BLOBl  rù  rÄ   c                ó.   — d|j         r
d|j         z  pdz   S )NÚBINARYre  r–  ©rf  rï  s      rÂ   Úvisit_BINARYz GenericTypeCompiler.visit_BINARYo  s    € Ø˜5œ<ÐA¨F°U´\Ñ,AÐGÀRÑHÐHrÄ   c                ó.   — d|j         r
d|j         z  pdz   S )NÚ	VARBINARYre  r–  r  rï  s      rÂ   Úvisit_VARBINARYz#GenericTypeCompiler.visit_VARBINARYr  s    € Ø˜eœlÐD¨v¸¼Ñ/DÐJÈÑKÐKrÄ   c                ó   — dS )NÚBOOLEANr¾   rï  s      rÂ   Úvisit_BOOLEANz!GenericTypeCompiler.visit_BOOLEANu  rJ  rÄ   c                ó2   — |                       |dd¬¦  «        S )Nrj  é    )rg  rk  rï  s      rÂ   Ú
visit_uuidzGenericTypeCompiler.visit_uuidx  s   € Ø×'Ò'¨¨vÀrÐ'ÑJÔJÐJrÄ   c                ó   —  | j         |fi |¤ŽS r  )r|  rï  s      rÂ   Úvisit_large_binaryz&GenericTypeCompiler.visit_large_binary{  ó   € ØˆtŒ˜uÐ+Ð+¨Ð+Ð+Ð+rÄ   c                ó   —  | j         |fi |¤ŽS r  )r†  rï  s      rÂ   Úvisit_booleanz!GenericTypeCompiler.visit_boolean~  ó   € Ø!ˆtÔ! %Ð.Ð.¨2Ð.Ð.Ð.rÄ   c                ó   —  | j         |fi |¤ŽS r  )r]  rï  s      rÂ   Ú
visit_timezGenericTypeCompiler.visit_time�  rŒ  rÄ   c                ó   —  | j         |fi |¤ŽS r  )rW  rï  s      rÂ   Úvisit_datetimez"GenericTypeCompiler.visit_datetime„  ó   € Ø"ˆtÔ" 5Ð/Ð/¨BÐ/Ð/Ð/rÄ   c                ó   —  | j         |fi |¤ŽS r  )rZ  rï  s      rÂ   Ú
visit_datezGenericTypeCompiler.visit_date‡  rŒ  rÄ   c                ó   —  | j         |fi |¤ŽS r  )rQ  rï  s      rÂ   Úvisit_big_integerz%GenericTypeCompiler.visit_big_integerŠ  ó   € Ø ˆtÔ  Ð-Ð-¨"Ð-Ð-Ð-rÄ   c                ó   —  | j         |fi |¤ŽS r  )rM  rï  s      rÂ   Úvisit_small_integerz'GenericTypeCompiler.visit_small_integer�  r”  rÄ   c                ó   —  | j         |fi |¤ŽS r  )rI  rï  s      rÂ   Úvisit_integerz!GenericTypeCompiler.visit_integer�  r�  rÄ   c                ó   —  | j         |fi |¤ŽS r  )r<  rï  s      rÂ   Ú
visit_realzGenericTypeCompiler.visit_real“  rŒ  rÄ   c                ó   —  | j         |fi |¤ŽS r  )r2  rï  s      rÂ   Úvisit_floatzGenericTypeCompiler.visit_float–  s   € ØˆtÔ Ð,Ð,¨Ð,Ð,Ð,rÄ   c                ó   —  | j         |fi |¤ŽS r  )r6  rï  s      rÂ   Úvisit_doublez GenericTypeCompiler.visit_double™  r™  rÄ   c                ó   —  | j         |fi |¤ŽS r  )rB  rï  s      rÂ   Úvisit_numericz!GenericTypeCompiler.visit_numericœ  r�  rÄ   c                ó   —  | j         |fi |¤ŽS r  ©rs  rï  s      rÂ   Úvisit_stringz GenericTypeCompiler.visit_stringŸ  r�  rÄ   c                ó   —  | j         |fi |¤ŽS r  r§  rï  s      rÂ   Úvisit_unicodez!GenericTypeCompiler.visit_unicode¢  r�  rÄ   c                ó   —  | j         |fi |¤ŽS r  ©ry  rï  s      rÂ   Ú
visit_textzGenericTypeCompiler.visit_text¥  rŒ  rÄ   c                ó   —  | j         |fi |¤ŽS r  r¬  rï  s      rÂ   Úvisit_unicode_textz&GenericTypeCompiler.visit_unicode_text¨  rŒ  rÄ   c                ó   —  | j         |fi |¤ŽS r  r§  rï  s      rÂ   Ú
visit_enumzGenericTypeCompiler.visit_enum«  r�  rÄ   c                ó0   — t          j        d|z  ¦  «        ‚)NzKCan't generate DDL for %r; did you forget to specify a type on this Column?r£  rï  s      rÂ   rø  zGenericTypeCompiler.visit_null®  s$   € ÝÔð#à%*ñ+ñ
ô 
ð 	
rÄ   c                óN   —  | j         |                     | j        ¦  «        fi |¤ŽS r  )r±  Útype_enginer¦  rï  s      rÂ   Úvisit_type_decoratorz(GenericTypeCompiler.visit_type_decoratorµ  s,   € ØˆtŒ|˜E×-Ò-¨d¬lÑ;Ô;ÐBÐB¸rÐBÐBÐBrÄ   c                ó   —  |j         di |¤ŽS rä  )Úget_col_specrï  s      rÂ   Úvisit_user_definedz&GenericTypeCompiler.visit_user_defined¸  s   € Ø!ˆuÔ!Ð'Ð' BÐ'Ð'Ð'rÄ   r  )1r   r  r  r2  r6  r9  r<  rB  rF  rI  rM  rQ  rT  rW  rZ  r]  r`  rc  rh  rl  rp  rs  rv  ry  r|  r€  rƒ  r†  r‰  r‹  rŽ  r‘  r“  r–  r˜  r›  r�  rŸ  r¡  r£  r¥  r¨  rª  r­  r¯  r±  rø  rµ  r¸  r¾   rÄ   rÂ   r/  r/    s×  € € € € € ðð ð ðð ð ð"ð "ð "ðð ð ð	ð 	ð 	ð	ð 	ð 	ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ð ð7ð 7ð 7ð8ð 8ð 8ð:ð :ð :ð;ð ;ð ;ð7ð 7ð 7ðð ð ðIð Ið IðLð Lð Lðð ð ðKð Kð Kð,ð ,ð ,ð/ð /ð /ð,ð ,ð ,ð0ð 0ð 0ð,ð ,ð ,ð.ð .ð .ð0ð 0ð 0ð/ð /ð /ð,ð ,ð ,ð-ð -ð -ð.ð .ð .ð/ð /ð /ð/ð /ð /ð/ð /ð /ð,ð ,ð ,ð,ð ,ð ,ð/ð /ð /ð
ð 
ð 
ðCð Cð Cð(ð (ð (ð (ð (rÄ   r/  c                  ó,   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚStrSQLTypeCompilerc                ó`   — 	 |j         } || fi |¤ŽS # t          $ r  | j        |fi |¤ŽcY S w xY wr  )rÓ  ÚAttributeErrorÚ_visit_unknown)r  r  rÉ  rÓ  s       rÂ   r±  zStrSQLTypeCompiler.process½  si   € ð	2Ø!&Ô!9Ðð &Ð% dÐ1Ð1¨bÐ1Ð1Ð1øõ ð 	4ð 	4ð 	4Ø&�4Ô& uÐ3Ð3°Ð3Ð3Ð3Ð3Ð3ð	4øøøs   ‚ ’-¬-c                óX   — |                      d¦  «        r| j        S t          |¦  «        ‚)Nr„  )rf  r½  r¼  )r  r1  s     rÂ   Ú__getattr__zStrSQLTypeCompiler.__getattr__Å  s-   € Ø�>Š>˜(Ñ#Ô#ð 	&ØÔ&Ð&å  Ñ%Ô%Ð%rÄ   c                ó�   — |j         j        |j         j                             ¦   «         k    r|j         j        S t          |¦  «        S r  )rº  r   ÚupperÚreprrï  s      rÂ   r½  z!StrSQLTypeCompiler._visit_unknownË  s:   € ØŒ?Ô# u¤Ô'?×'EÒ'EÑ'GÔ'GÒGÐGØ”?Ô+Ð+å˜‘;”;ÐrÄ   c                ó   — dS rõ  r¾   rï  s      rÂ   rø  zStrSQLTypeCompiler.visit_nullÑ  rù  rÄ   c                ó`   — 	 |j         } |di |¤ŽS # t          $ r t          |¦  «        cY S w xY wrä  )r·  r¼  rÂ  )r  r  rÉ  r·  s       rÂ   r¸  z%StrSQLTypeCompiler.visit_user_definedÔ  sV   € ð	&Ø Ô-ˆLð  �<Ð%Ð% "Ð%Ð%Ð%øõ ð 	ð 	ð 	Ý˜‘;”;ÐÐÐð	øøøs   ‚ ‘-¬-N)r   r  r  r±  r¿  r½  rø  r¸  r¾   rÄ   rÂ   rº  rº  ¼  s_   € € € € € ð2ð 2ð 2ð&ð &ð &ðð ð ðð ð ð&ð &ð &ð &ð &rÄ   rº  c                  ó   — e Zd Zdd„ZdS )Ú_SchemaForObjectCallablerÏ  r   r	  r¿   c                ó   — d S r  r¾   )r  rÏ  s     rÂ   r  z!_SchemaForObjectCallable.__call__Þ  ó   € ØˆrÄ   N)rÏ  r   r	  r¿   r  r¾   rÄ   rÂ   rÆ  rÆ  Ý  ó(   € € € € € ðð ð ð ð ð rÄ   rÆ  c                  ó   — e Zd Zdd„ZdS )rC  rù  rª  r	  r¿   c                ó   — d S r  r¾   )r  rù  s     rÂ   r  z _BindNameForColProtocol.__call__ã  rÈ  rÄ   N)rù  rª  r	  r¿   r  r¾   rÄ   rÂ   rC  rC  â  rÉ  rÄ   rC  c                  ó¬  — e Zd ZU dZeZeZeZ	de
d<   de
d<   de
d<    ej        d¦  «        Zde
d	<   	 d
Zde
d<   	 	 	 	 	 d8d„Zd„ Zd„ Zd9d„Zd9d„Zd„ Zd9d„Zd:d„Zd„ Zd;d<d„Zd;d=d„Zd „ Zd>d!„Z	 d;d?d&„Z	 d;d@d)„Zd;d*„Z ej         d+¦  «        d>d,„¦   «         Z!d>d-„Z"d>d.„Z#d/„ Z$d0„ Z%dAd1„Z&d2„ Z'	 d;d3„Z(	 	 	 	 	 dBd4„Z)d>d5„Z*ej+        d6„ ¦   «         Z,d7„ Z-dS )Crž  z@Handle quoting and case-folding of identifiers based on options.r¿   Úinitial_quoteÚfinal_quotezMutableMapping[str, str]Ú_stringsr#   rÆ  r¶  Fr  Ú_includes_none_schema_translaterŒ  NTc                óº   — || _         || _        |p| j        | _        || _        | j        dz  | _        || _        || _        i | _        | j         j        dv | _	        dS )as  Construct a new ``IdentifierPreparer`` object.

        initial_quote
          Character that begins a delimited identifier.

        final_quote
          Character that ends a delimited identifier. Defaults to
          `initial_quote`.

        omit_schema
          Prevent prepending schema name. Useful for databases that do
          not support schemae.
        r7   )rÊ   rÈ   N)
r¦  rÍ  rÎ  Úescape_quoteÚescape_to_quoteÚomit_schemaÚquote_case_sensitive_collationsrÏ  re  rÒ  )r  r¦  rÍ  rÎ  rÒ  rÕ  rÔ  s          rÂ   r´  zIdentifierPreparer.__init__  so   € ð. ˆŒØ*ˆÔØ&Ð<¨$Ô*<ˆÔØ(ˆÔØ#Ô0°1Ñ4ˆÔØ&ˆÔØ/NˆÔ,ØˆŒØ $¤Ô 7ð <
ð !
ˆÔÐÐrÄ   c                ó²   ‡— | j                              | j         ¦  «        }|j                             | j        ¦  «         d |v Šˆfd„}||_        ‰|_        |S )Nc                ó¤   •— | j         }| j        r;|€‰r7|�d|v sd|v rt          j        d|z  ¦  «        ‚t	          d|pdz  d¬¦  «        S | j         S )Nr  r   zJSquare bracket characters ([]) not supported in schema translate name '%s'z__[SCHEMA_%s]Ú_noneF©r´  )r#   Ú_use_schema_mapr8   rî  r1   )rÏ  rú   Úincludes_nones     €rÂ   Úsymbol_getterz@IdentifierPreparer._with_schema_translate.<locals>.symbol_getter.  sˆ   ø€ Ø”:ˆDØÔ"ð 
"¨Ð(8¸MÐ(8ØÐ#¨°¨¨¸¸t¸¸ÝÔ*ð8Ø:>ñ?ñô ð õ #Ø# t ¨wÑ7¸uðñ ô ð ð ”zÐ!rÄ   )rº  Ú__new__Ú__dict__r,  r¶  rÐ  )r  rœ  ÚpreprÜ  rÛ  s       @rÂ   r¬  z)IdentifierPreparer._with_schema_translate(  sm   ø€ ØŒ~×%Ò% d¤nÑ5Ô5ˆØŒ×Ò˜Tœ]Ñ+Ô+Ð+àÐ 4Ð4ˆð	"ð 	"ð 	"ð 	"ð 	"ð "/ˆÔØ/<ˆÔ,ØˆrÄ   c                ó–   ‡ ‡— |Šd ‰v r&‰ j         st          j        d¦  «        ‚‰d          ‰d<   ˆˆ fd„}t          j        d||¦  «        S )Nzâschema translate map which previously did not have `None` present as a key now has `None` present; compiled statement may lack adequate placeholders.  Please use consistent keys in successive schema_translate_map dictionaries.rØ  c                óî   •— |                       d¦  «        }|‰v r	‰|         }n|dv rt          j        d¦  «        ‚|}|s"‰j        j        }|st          j        d¦  «        ‚‰                     |¦  «        S )Nr7   )NrØ  zâschema translate map which previously had `None` present as a key now no longer has it present; don't know how to apply schema for compiled statement. Please use consistent keys in successive schema_translate_map dictionaries.zLDialect has no default schema name; can't use None as dynamic schema target.)rˆ   r8   r3  r¦  Údefault_schema_namerî  r·  )r˜  rú   rº  Údr  s      €€rÂ   rÓ  z=IdentifierPreparer._render_schema_translates.<locals>.replaceN  s¡   ø€ Ø—7’7˜1‘:”:ˆDØ�qˆyˆyØ#$ T¤7Ð Ð à˜?Ð*Ð*ÝÔ1ð=ñô ð ð $(Ð à#ð Ø#'¤<Ô#CÐ Ø'ð åÔ*ð=ñô ð ð ×$Ò$Ð%5Ñ6Ô6Ð6rÄ   z(__\[SCHEMA_([^\]]+)\]))rÐ  r8   r3  rR  r¨  )r  r'  rœ  rÓ  rã  s   `   @rÂ   r²  z,IdentifierPreparer._render_schema_translates@  s{   øø€ Ø ˆØ�1ˆ9ˆ9ØÔ7ð ÝÔ-ð9ñô ð ð ˜4œˆAˆg‰Jð	7ð 	7ð 	7ð 	7ð 	7ð 	7õ2 ŒvÐ0°'¸9ÑEÔEÐErÄ   rÍ  r	  c                ó€   — |                      | j        | j        ¦  «        }| j        r|                      dd¦  «        }|S )z€Escape an identifier.

        Subclasses should override this to provide database-dependent
        escaping behavior.
        r  rÐ  )rÓ  rÒ  rÓ  rÒ  ©r  rÍ  s     rÂ   Ú_escape_identifierz%IdentifierPreparer._escape_identifieri  s@   € ð —’˜dÔ/°Ô1EÑFÔFˆØÔ ð 	-Ø—M’M # tÑ,Ô,ˆEØˆrÄ   c                óB   — |                      | j        | j        ¦  «        S )z±Canonicalize an escaped identifier.

        Subclasses should override this to provide database-dependent
        unescaping behavior that reverses _escape_identifier.
        )rÓ  rÓ  rÒ  rå  s     rÂ   Ú_unescape_identifierz'IdentifierPreparer._unescape_identifieru  s   € ð �}Š}˜TÔ1°4Ô3DÑEÔEÐErÄ   c                ót   — |�5|                      |¦  «        s t          j        d|›d|j        ›d�¦  «        ‚|S )zýkeyword sequence filter.

        a filter for elements that are intended to represent keyword sequences,
        such as "INITIALLY", "INITIALLY DEFERRED", etc.   no special characters
        should be present.

        .. versionadded:: 1.3

        NzUnexpected SQL phrase: z (matching against r  )r4  r8   rî  r1  )r  rÇ  rU  s      rÂ   r  z&IdentifierPreparer.validate_sql_phrase~  sN   € ð Ð s§y¢y°Ñ'9Ô'9ÐÝÔ"Ð"à�7�7˜CœK˜K˜Kð)ñô ð ð ˆrÄ   c                óL   — | j         |                      |¦  «        z   | j        z   S )z~Quote an identifier.

        Subclasses should override this to provide database-dependent
        quoting behavior.
        )rÍ  ræ  rÎ  rå  s     rÂ   Úquote_identifierz#IdentifierPreparer.quote_identifier�  s0   € ð ÔØ×%Ò% eÑ,Ô,ñ-àÔñð	
rÄ   c                ó¶   — |                      ¦   «         }|| j        v p<|d         | j        v p-| j                             t          |¦  «        ¦  «         p||k    S )z5Return True if the given identifier requires quoting.r   )r`  Úreserved_wordsÚillegal_initial_charactersÚlegal_charactersr4  r¿   )r  rÍ  Úlc_values      rÂ   r˜  z#IdentifierPreparer._requires_quotes�  sd   € à—;’;‘=”=ˆà˜Ô+Ð+ð #Ø�QŒx˜4Ô:Ð:ð#àÔ(×.Ò.­s°5©z¬zÑ:Ô:Ð:ð#ð ˜EÒ!ð		
rÄ   c                óR   — | j                              t          |¦  «        ¦  «         S )zjReturn True if the given identifier requires quoting, but
        not taking case convention into account.)rï  r4  r¿   rå  s     rÂ   r^  z1IdentifierPreparer._requires_quotes_illegal_chars§  s$   € ð Ô(×.Ò.­s°5©z¬zÑ:Ô:Ð:Ð:rÄ   Úforcer   c                ó\   — |�t          j        dd¬¦  «         |                      |¦  «        S )a  Conditionally quote a schema name.


        The name is quoted if it is a reserved word, contains quote-necessary
        characters, or is an instance of :class:`.quoted_name` which includes
        ``quote`` set to ``True``.

        Subclasses can override this to provide database-dependent
        quoting behavior for schema names.

        :param schema: string schema name
        :param force: unused

            .. deprecated:: 0.9

                The :paramref:`.IdentifierPreparer.quote_schema.force`
                parameter is deprecated and will be removed in a future
                release.  This flag has no effect on the behavior of the
                :meth:`.IdentifierPreparer.quote` method; please refer to
                :class:`.quoted_name`.

        NzÚThe IdentifierPreparer.quote_schema.force parameter is deprecated and will be removed in a future release.  This flag has no effect on the behavior of the IdentifierPreparer.quote method; please refer to quoted_name().ú0.9rR  )r&   rU  r´  )r  r#   rò  s      rÂ   r·  zIdentifierPreparer.quote_schema¬  sD   € ð. Ðõ Ô ð!ð ðñ ô ð ð �zŠz˜&Ñ!Ô!Ð!rÄ   r‰  c                óJ  — |�t          j        dd¬¦  «         t          |dd¦  «        }|€`|| j        v r| j        |         S |                      |¦  «        r|                      |¦  «        | j        |<   n
|| j        |<   | j        |         S |r|                      |¦  «        S |S )a  Conditionally quote an identifier.

        The identifier is quoted if it is a reserved word, contains
        quote-necessary characters, or is an instance of
        :class:`.quoted_name` which includes ``quote`` set to ``True``.

        Subclasses can override this to provide database-dependent
        quoting behavior for identifier names.

        :param ident: string identifier
        :param force: unused

            .. deprecated:: 0.9

                The :paramref:`.IdentifierPreparer.quote.force`
                parameter is deprecated and will be removed in a future
                release.  This flag has no effect on the behavior of the
                :meth:`.IdentifierPreparer.quote` method; please refer to
                :class:`.quoted_name`.

        NzÓThe IdentifierPreparer.quote.force parameter is deprecated and will be removed in a future release.  This flag has no effect on the behavior of the IdentifierPreparer.quote method; please refer to quoted_name().rô  rR  r´  )r&   rU  r_  rÏ  r˜  rë  )r  r‰  rò  s      rÂ   r´  zIdentifierPreparer.quoteÓ  sÏ   € ð, Ðõ Ô ð!ð ðñ ô ð õ ˜˜w¨Ñ-Ô-ˆàˆ=Ø˜œÐ%Ð%Ø”} UÔ+Ð+à×(Ò(¨Ñ/Ô/ð 1Ø+/×+@Ò+@ÀÑ+GÔ+G�D”M %Ñ(Ð(à+0�D”M %Ñ(Ø”} UÔ+Ð+Øð 	Ø×(Ò(¨Ñ/Ô/Ð/àˆLrÄ   c                ó>   — | j         r|                      |¦  «        S |S r  )rÕ  r´  )r  Úcollation_names     rÂ   r¿  z#IdentifierPreparer.format_collation  s%   € ØÔ/ð 	"Ø—:’:˜nÑ-Ô-Ð-à!Ð!rÄ   c                ó°   — |                       |j        ¦  «        }|                      |¦  «        }| j        s|r|�|                      |¦  «        dz   |z   }|S r¹  )r´  rú   r¶  rÔ  r·  )r  rh  rv  rú   rº  s        rÂ   rP  z"IdentifierPreparer.format_sequence  sk   € Ø�zŠz˜(œ-Ñ(Ô(ˆà×1Ò1°(Ñ;Ô;Ðð Ô ð	Dàð	Dð !Ð,à×$Ò$Ð%5Ñ6Ô6¸Ñ<¸tÑCˆDØˆrÄ   rõ  ú
Label[Any]rú   r=  c                ó:   — |                       |p|j        ¦  «        S r  ©r´  rú   )r  rõ  rú   s      rÂ   r›  zIdentifierPreparer.format_label  s   € ð �zŠz˜$Ð, %¤*Ñ-Ô-Ð-rÄ   r°  úOptional[AliasedReturnsRows]c                ól   — |€|€J ‚|                       |j        ¦  «        S |                       |¦  «        S r  rû  )r  r°  rú   s      rÂ   r“  zIdentifierPreparer.format_alias  s;   € ð ˆ<ØÐ$Ð$Ð$Ø—:’:˜eœjÑ)Ô)Ð)à—:’:˜dÑ#Ô#Ð#rÄ   c                ól   — |p|j         }|                      |¦  «        r|                      |¦  «        }|S r  )r‰  r˜  rë  )r  Ú	savepointrú   r‰  s       rÂ   r#  z#IdentifierPreparer.format_savepoint(  s>   € ð Ð'˜	œˆØ× Ò  Ñ'Ô'ð 	1Ø×)Ò)¨%Ñ0Ô0ˆEØˆrÄ   zsqlalchemy.sql.namingc                ó   — t           j        j        }|j        t          u r |                     ||j        ¦  «        }|€d S n|j        }|j        dk    r|                      ||¬¦  «        S |  	                    ||¬¦  «        S )Nrx  )Ú_alembic_quote)
r&   r>  Ú
sql_namingrú   r,   Ú_constraint_name_for_tabler�   r  Útruncate_and_render_index_nameÚ#truncate_and_render_constraint_name)r  r²   r	  Únamingrú   s        rÂ   râ  z$IdentifierPreparer.format_constraint1  s¤   € å”Ô*ˆàŒ?�jÐ(Ð(Ø×4Ò4Ø˜JÔ,ñô ˆDð ˆ|Ø�tð ð ”?ˆDàÔ$¨Ò/Ð/Ø×6Ò6Ø ^ð 7ñ ô ð ð ×;Ò;Ø ^ð <ñ ô ð rÄ   c                ó`   — | j         j        p| j         j        }|                      |||¦  «        S r  )r¦  Úmax_index_name_lengthrj  Ú _truncate_and_render_maxlen_name©r  rú   r	  Úmax_s       rÂ   r	  z1IdentifierPreparer.truncate_and_render_index_nameH  s?   € ð
 ŒLÔ.ð 2ØŒ|Ô1ð 	ð ×4Ò4Ø�$˜ñ
ô 
ð 	
rÄ   c                ó`   — | j         j        p| j         j        }|                      |||¦  «        S r  )r¦  Úmax_constraint_name_lengthrj  r		  r
	  s       rÂ   r	  z6IdentifierPreparer.truncate_and_render_constraint_nameT  s?   € ð
 ŒLÔ3ð 2ØŒ|Ô1ð 	ð ×4Ò4Ø�$˜ñ
ô 
ð 	
rÄ   c                ó  — t          |t          j        ¦  «        rAt          |¦  «        |k    r-|d|dz
  …         dz   t	          j        |¦  «        dd …         z   }n| j                             |¦  «         |s|S |                      |¦  «        S )Nr   rZ  r  éüÿÿÿ)	r¯  r   rE   r±  r&   Úmd5_hexr¦  Úvalidate_identifierr´  )r  rú   r	  r	  s       rÂ   r		  z3IdentifierPreparer._truncate_and_render_maxlen_name`  s�   € Ý�d�HÔ5Ñ6Ô6ð 	3Ý�4‰yŒy˜4ÒÐØ˜A  q¡˜LÔ)¨CÑ/µ$´,¸tÑ2DÔ2DÀRÀSÀSÔ2IÑI�øàŒL×,Ò,¨TÑ2Ô2Ð2àð 	$ØˆKà—:’:˜dÑ#Ô#Ð#rÄ   c                ó,   — |                       |¦  «        S r  )râ  r©  s     rÂ   rº  zIdentifierPreparer.format_indexl  s   € Ø×%Ò% eÑ,Ô,Ð,rÄ   c                ó¸   — |€|j         }|                      |¦  «        }|                      |¦  «        }| j        s|r|r|                      |¦  «        dz   |z   }|S )z'Prepare a quoted table and schema name.Nr  )rú   r´  r¶  rÔ  r·  )r  r�   rv  rú   rc  rº  s         rÂ   rä  zIdentifierPreparer.format_tableo  su   € ð ˆ<Ø”:ˆDà—’˜DÑ!Ô!ˆà×1Ò1°%Ñ8Ô8ÐàÔð 	H Jð 	HÐ3Cð 	HØ×&Ò&Ð'7Ñ8Ô8¸3Ñ>ÀÑGˆFØˆrÄ   c                ó,   — |                       |¦  «        S )zPrepare a quoted schema name.rÙ  rf  s     rÂ   ru  z IdentifierPreparer.format_schema}  s   € ð �zŠz˜$ÑÔÐrÄ   c                óŽ   — |�/t          |t          j        ¦  «        r|                     |¦  «        }|                      |¦  «        S )úPrepare a quoted column name.)r¯  r   rE   r^  r´  )r  rú   rk  s      rÂ   rˆ  z$IdentifierPreparer.format_label_name‚  sF   € ð Ð¥JØ•(Ô+ñ%
ô %
Ðð —>’> (Ñ+Ô+ˆDà�zŠz˜$ÑÔÐrÄ   c                ó€  — |€|j         }|�/t          |t          j        ¦  «        r|                     |¦  «        }t          |dd¦  «        sM|r6|                      |j        ||¬¦  «        dz   |                      |¦  «        z   S |                      |¦  «        S |r#|                      |j        ||¬¦  «        dz   |z   S |S )r	  Nr±  F)rv  rú   r  )	rú   r¯  r   rE   r^  r_  rä  r�   r´  )r  r”   rÈ  rú   Ú
table_namerv  rk  s          rÂ   rÉ  z IdentifierPreparer.format_column�  s  € ð ˆ<Ø”;ˆDàÐ¥JØ•(Ô+ñ%
ô %
Ðð —>’> (Ñ+Ô+ˆDå�v˜|¨UÑ3Ô3ð 	Øð 	(à×%Ò%Øœ°À*ð &ñ ô ð ñð —j’j Ñ&Ô&ñ	'ðð —z’z $Ñ'Ô'Ð'ð
 ð 	à×%Ò%Øœ°À*ð &ñ ô ð ñð ñ	ðð �rÄ   c                óÊ   — |                       |¦  «        }| j        s0|r.|r,|                      |¦  «        |                      |d¬¦  «        fS |                      |d¬¦  «        fS )z(Format table name and schema as a tuple.Fr¯  )r¶  rÔ  r·  rä  )r  r�   rv  rº  s       rÂ   rm  z#IdentifierPreparer.format_table_seq½  s…   € ð  ×1Ò1°%Ñ8Ô8ÐàÔð 	A Jð 	AÐ3Cð 	Aà×!Ò!Ð"2Ñ3Ô3Ø×!Ò! %°EÐ!Ñ:Ô:ðð ð
 ×%Ò% e¸Ð%Ñ>Ô>Ð@Ð@rÄ   c                ó¦   — d„ | j         | j        |                      | j        ¦  «        fD ¦   «         \  }}}t          j        d|||dœz  ¦  «        }|S )Nc              3  ó>   K  — | ]}t          j        |¦  «        V — Œd S r  )rR  rS  r  s     rÂ   r2  z4IdentifierPreparer._r_identifiers.<locals>.<genexpr>Ð  s>   è è € ð )
ð )
àõ ŒI�a‰LŒLð)
ð )
ð )
ð )
ð )
ð )
rÄ   zM(?:(?:%(initial)s((?:%(escaped)s|[^%(final)s])+)%(final)s|([^\.]+))(?=\.|$))+)ÚinitialÚfinalrÅ  )rÍ  rÎ  ræ  rR  rT  )r  r	  r	  Úescaped_finalÚrs        rÂ   Ú_r_identifiersz!IdentifierPreparer._r_identifiersÎ  s   € ð)
ð )
ð Ô"ØÔ Ø×'Ò'¨Ô(8Ñ9Ô9ðð)
ñ )
ô )
Ñ%ˆ�˜õ ŒJð$ð "¨E¸mÐLÐLñMñ
ô 
ˆð ˆrÄ   c                óh   ‡ — ‰ j         }ˆ fd„d„ |                     |¦  «        D ¦   «         D ¦   «         S )z:Unpack 'schema.table.column'-like strings into components.c                ó:   •— g | ]}‰                      |¦  «        ‘ŒS r¾   )rè  r«  s     €rÂ   r}  z;IdentifierPreparer.unformat_identifiers.<locals>.<listcomp>ä  s7   ø€ ð 
ð 
ð 
àð ×%Ò% aÑ(Ô(ð
ð 
ð 
rÄ   c                ó   — g | ]	\  }}|p|‘Œ
S r¾   r¾   )rÀ   Úar]  s      rÂ   r}  z;IdentifierPreparer.unformat_identifiers.<locals>.<listcomp>æ  s    € Ð@Ð@Ð@¡  A�a�f˜1Ð@Ð@Ð@rÄ   )r 	  Úfindall)r  Úidentifiersr	  s   `  rÂ   Úunformat_identifiersz'IdentifierPreparer.unformat_identifiersà  sR   ø€ ð Ôˆð
ð 
ð 
ð 
à@Ð@¨¯ª°;Ñ)?Ô)?Ð@Ñ@Ô@ð
ñ 
ô 
ð 	
rÄ   )rŒ  NrŒ  TF)rÍ  r¿   r	  r¿   )rÍ  r¿   r	  r  r  )r#   r¿   rò  r   r	  r¿   )r‰  r¿   rò  r   r	  r¿   )T)rõ  rù  rú   r=  r	  r¿   )r°  rü  rú   r=  r	  r¿   )TN)FNNFN).r   r  r  r  ÚRESERVED_WORDSrí  ÚLEGAL_CHARACTERSrï  ÚILLEGAL_INITIAL_CHARACTERSrî  r  rK  Ú
attrgetterr¶  rÐ  r´  r¬  r²  ræ  rè  r  rë  r˜  r^  r·  r´  r¿  rP  r›  r“  r#  r&   r7  râ  r	  r	  r		  rº  rä  ru  rˆ  rÉ  rm  r3  r 	  r'	  r¾   rÄ   rÂ   rž  rž  ç  s	  € € € € € € àJÐJà#€Nà'Ðà!;ÐàÐÐÑàÐÐÑà&Ð&Ð&Ñ&à2E°(Ô2EÀhÑ2OÔ2OÐÐOÐOÐOÑOðð -2Ð#Ð1Ð1Ð1Ñ1ð
 ØØØ(,Øð"
ð "
ð "
ð "
ðHð ð ð0'Fð 'Fð 'FðR
ð 
ð 
ð 
ðFð Fð Fð Fðð ð ð$
ð 
ð 
ð 
ð
ð 
ð 
ð 
ð;ð ;ð ;ð
%"ð %"ð %"ð %"ð %"ðN2ð 2ð 2ð 2ð 2ðh"ð "ð "ðð ð ð ð 8<ð.ð .ð .ð .ð .ð JNð$ð $ð $ð $ð $ðð ð ð ð €TÔÐ0Ñ1Ô1ðð ð ñ 2Ô1ðð,

ð 

ð 

ð 

ð

ð 

ð 

ð 

ð
$ð 
$ð 
$ð-ð -ð -ðð ð ð ð ð  ð  ð ð ð  ð  ð  ð" ØØØØð+ð +ð +ð +ðZAð Að Að Að" 
Ôðð ñ Ôðð"
ð 
ð 
ð 
ð 
rÄ   rž  )ìr  Ú
__future__r   r}  Úcollections.abcÚabcrÁ  r5  Úenumr   rÀ  rK  rR  Útimer   rp  r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r–  r   r   r   r   r    r!   r"   r#   r$   r%   r&   rV  Ú_typingr(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   Útype_apir4   Úvisitorsr5   r6   r8   r9   Úutil.typingr:   r;   r<   Ú
annotationr=   r>   r?   r£  r@   rn  rA   ÚdmlrB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   Úengine.cursorrV   Úengine.interfacesrW   rX   rY   rZ   r[   r\   r]   r^   r_   r¿   Ú_FromHintsTyper(	  rT  ÚIr)	  ÚLEGAL_CHARACTERS_PLUS_SPACEr´  r�   r*	  r  r!  r$  ÚUNICODErâ  rá  rg  rh  r  Úor_ro  Úmulr¨  ÚmodÚnegÚltÚleÚneÚgtÚgeÚeqÚis_distinct_fromÚis_not_distinct_fromÚ	concat_opr¤  Únot_match_opr°  r¯  rY  r�  rš  rL  rM  r    ÚexistsÚdistinct_opÚinvÚany_opÚall_opÚdesc_opÚasc_opÚnulls_first_opÚnulls_last_opÚbitwise_xor_opÚbitwise_or_opÚbitwise_and_opÚbitwise_not_opÚbitwise_lshift_opÚbitwise_rshift_opr™  r×   rµ   r·   r¼   r¸   r¯   r»   rÞ   rß   r¹   r�   ÚcubeÚrollupÚgrouping_setsrä   r  r-  Ú_CompoundSelectKeywordrô   Ú	UNION_ALLrõ   Ú
EXCEPT_ALLrö   ÚINTERSECT_ALLr.  rø   r  r  r  r  r  r  r  r&  r;  rK  rX  rf  rk  r4  rl  rm  rn  ro  Ú
namedtuplerq  r”  ÚEnsureKWArgrë  ÚBinaryElementRoleÚCompilerColumnElementrô  r	  r  r=  rd  r/  rº  rÆ  rC  rž  r¾   rÄ   rÂ   ú<module>re	     s#  ððð ð ð" #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø )Ð )Ð )Ð )Ð )Ð )Ø Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø 	€	€	€	Ø Ð Ð Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø &Ð &Ð &Ð &Ð &Ð &Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø %Ð %Ð %Ð %Ð %Ð %Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø "Ð "Ð "Ð "Ð "Ð "Ø #Ð #Ð #Ð #Ð #Ð #à	Ôð #;Ø+Ð+Ð+Ð+Ð+Ð+Ø,Ð,Ð,Ð,Ð,Ð,Ø"Ð"Ð"Ð"Ð"Ð"Ø#Ð#Ð#Ð#Ð#Ð#Ø)Ð)Ð)Ð)Ð)Ð)ØÐÐÐÐÐØÐÐÐÐÐØÐÐÐÐÐØ*Ð*Ð*Ð*Ð*Ð*Ø'Ð'Ð'Ð'Ð'Ð'Ø&Ð&Ð&Ð&Ð&Ð&Ø'Ð'Ð'Ð'Ð'Ð'ØÐÐÐÐÐØ#Ð#Ð#Ð#Ð#Ð#ØÐÐÐÐÐØ.Ð.Ð.Ð.Ð.Ð.Ø/Ð/Ð/Ð/Ð/Ð/ØÐÐÐÐÐØ&Ð&Ð&Ð&Ð&Ð&Ø+Ð+Ð+Ð+Ð+Ð+Ø'Ð'Ð'Ð'Ð'Ð'Ø"Ð"Ð"Ð"Ð"Ð"Ø'Ð'Ð'Ð'Ð'Ð'Ø,Ð,Ð,Ð,Ð,Ð,Ø0Ð0Ð0Ð0Ð0Ð0Ø4Ð4Ð4Ð4Ð4Ð4Ø<Ð<Ð<Ð<Ð<Ð<Ø:Ð:Ð:Ð:Ð:Ð:Ø<Ð<Ð<Ð<Ð<Ð<Ø=Ð=Ð=Ð=Ð=Ð=Ø3Ð3Ð3Ð3Ð3Ð3Ø=Ð=Ð=Ð=Ð=Ð=ØCÐCÐCÐCÐCÐCØ+Ð+Ð+Ð+Ð+Ð+Ø:Ð:Ð:Ð:Ð:Ð:à�l CÐ'Ô(€ð_ð _ð _€ðB �2”:Ð.°´Ñ5Ô5Ð Ø(˜bœjÐ):¸B¼DÑAÔAÐ Ø;Ð;¨e¨e°A°r©l¬lÐ;Ñ;Ô;×AÒAÀ3À%ÑHÔHÐ àˆrŒzØ<¸b¼dñô €ð ˆrŒzØ<¸b¼dñô €ð ˆrŒzÐ5°r´tÑ<Ô<€ØˆbŒjÐAÀ2Ä:ÑNÔN€Ø�"”*Ð9¸2¼:ÑFÔF€à$Ð à"ØØØØ$Øðð €ð.à„N�Gð.ð „M�6ð.ð „M�5ð	.ð
 „M�5ð.ð „M�5ð.ð „M�5ð.ð „M�3ð.ð „L�%ð.ð „L�&ð.ð „L�&ð.ð „L�%ð.ð „L�&ð.ð „L�%ð.ð ÔÐ 4ð.ð  Ô"Ð$<ð!.ð" Ô˜ð#.ð$ Ô˜	ð%.ð .ð& Ô˜Mð'.ð( „O�Vð).ð* Ô˜ð+.ð, Ô˜ð-.ð. „O�Xð/.ð0 „M�6ð1.ð2 „M�6ð3.ð4 Ô�jð5.ð6 Ô�{ð7.ð: Ô�ið;.ð< Ô˜;ð=.ð> „M�6ð?.ð@ Ô�fðA.ðB Ô�fðC.ðF Ô�wðG.ðH Ô�fðI.ðJ Ô˜nðK.ð .ðL Ô˜]àÔ˜eØÔ˜UØÔ˜eØÔ˜cØÔ ØÔ ð[.ð .€	ðb Ô˜
ØÔ˜NØÔ˜NØÔÐ!4ØÔ˜NØÔ˜ØÔÐ.ØÔ�hØÔ�yØÔ˜NØ„N�FØ„N�FØÔ�hØÔ˜_ð-€	ð ð ð ñ ð& ØØØØØØØØØØØ"Ø"Ø$Ø(ðð €ð& Ô%Ô+¨WØÔ%Ô/°ØÔ%Ô,¨hØÔ%Ô0°,ØÔ%Ô/°ØÔ%Ô3°_ðÐ ðð ð ð ð ˜ñ ô ð ð>ð ð ð ð ˜ñ ô ð ð  !Ð Ð  Ð  Ð  Ñ  Ø€Ð Ð Ð Ñ Ø€
Ð Ð Ð Ñ Ø€Ð Ð Ð Ñ ðð ð ð ð ˜iñ ô ð ð$ð $ð $ð $ð $Ð1¸ð $ñ $ô $ð $ð:ð :ð :ð :ð :�Jñ :ô :ð :ðzpð pð pð pð p˜
ñ pô pð pðfð ð ð ð ˜Zñ ô ð ð0!ð !ð !ð !ð ! ;ñ !ô !ð !ð$ð ð ð ð �Gñ ô ð ð ð ð ð ð ˆgñ ô ð ð. FKÀUØñFô FÑ B€
Ð&¨°lð
?#ð ?#ð ?#ð ?#ð ?#Ð'�Ô'¨°wÀÐ6HÑIÔIñ ?#ô ?#ð ?#ðDI'ð I'ð I'ð I'ð I'ñ I'ô I'ð I'ðXFð Fð Fð Fð F�4Ô#ñ Fô Fð Fð0ð ð ð ð Ø	Ô˜CÔ  (Ô"@ñô ð ð4#
ð #
ð #
ð #
ð #
Ø	Ô˜CÔ  (Ô"@ñ#
ô #
ð #
ðLDR
ð DR
ð DR
ð DR
ð DR
�(ñ DR
ô DR
ð DR
ðNdh
ð h
ð h
ð h
ð h
�[ñ h
ô h
ð h
ðVYð Yð Yð Yð Y�(ñ Yô Yð Yðxd(ð d(ð d(ð d(ð d(˜,ñ d(ô d(ð d(ðN&ð &ð &ð &ð &Ð,ñ &ô &ð &ðBð ð ð ð ˜xñ ô ð ð
ð ð ð ð ˜hñ ô ð ð
@
ð @
ð @
ð @
ð @
ñ @
ô @
ð @
ð @
ð @
rÄ   