§
    öÛgAQ ã                   ó2  — d Z ddlZddlZddlZddlmZ ddlmZmZm	Z	 ddl
mZ ddlmZ ddlmZ ddlmZ  ed¦  «        Z ed	¦  «        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(m)Z) d
dl*m+Z+ d
dl,m-Z-m.Z. d
dl,m/Z0 d
dl1m2Z3 d
dl1m4Z5 d
dl1m6Z7 d
dl8m9Z9 d
dl:m;Z; d
dlm<Z= d
dl<m>Z? d
dl@mZA ddlBZBe9d         d e9d!         d"e9d#         d$e9d%         d&e9d'         d(e9d)         d*e9d+         d,e9d-         d.e9d/         d0e9d1         d2e9d3         d4e9d5         d6iZC[9 eDd7„ eC E                    ¦   «         D ¦   «         ¦  «        ZF e5jG        d8¦  «        ZHdqd:„ZI	 	 	 drd<„ZJd=„ ZKd>„ ZL G d?„ d@e!jM        ¦  «        ZM G dA„ dBeN¦  «        ZO G dC„ dDeOe!jP        ¦  «        ZP G dE„ dFeP¦  «        ZQ G dG„ dHeQ¦  «        ZR G dI„ dJeQ¦  «        ZS G dK„ dLeP¦  «        ZT G dM„ dNeT¦  «        ZU G dO„ dPeT¦  «        ZV G dQ„ dReOe!jW        ¦  «        ZW G dS„ dTe!jX        ¦  «        ZY G dU„ dVe!jZ        ¦  «        ZZeZZ[ G dW„ dXe!j\        ¦  «        Z\ G dY„ dZeN¦  «        Z] G d[„ d\e!j^        ¦  «        Z^ G d]„ d^e!j_        ¦  «        Z_ G d_„ d`e!j`        ¦  «        Z` G da„ dbe!ja        ¦  «        Za G dc„ ddea¦  «        Zb G de„ dfeb¦  «        Zc G dg„ dhec¦  «        Zd G di„ djec¦  «        Ze G dk„ dleb¦  «        Zf G dm„ dneb¦  «        Zg G do„ dpe!jh        ¦  «        ZhdS )sz7
PG-API interface for PostgreSQL using PQ version 3.0.
é    N)Úformat_exception)ÚrepeatÚchainÚcount©Úpartial)Úabstractmethod)Úlookup)Ú
itemgetteré   é   )Úlib)Úversionstring)Úiri)Ú
exceptions)Ústring)Úapi)Úmessage)Úget_python_name)Úquote_ident)Ú	interlaceÚchunk©ÚSocketFactory)Úprocess_tupleÚprocess_chunk)ÚComposition)Úxact3)Úelement3)Úclient3)Úmessage_types©ÚNotificationManager)Útypes)ÚioéS   ÚseverityéC   ÚcodeéM   r   éD   ÚdetailéH   ÚhintéW   ÚcontextéP   Úpositionép   Úinternal_positionéq   Úinternal_queryéF   ÚfileéL   ÚlineéR   Úfunctionc              #   ó$   K  — | ]\  }}||fV — Œd S ©N© ©Ú.0ÚkÚvs      úK/granary/edev/quantum/lib/python3.11/site-packages/postgresql/driver/pq3.pyú	<genexpr>rE   B   s;   è è € ð ð ÙˆQ�€!€Q€ðð ð ð ð ð ó    ))ó   SÚFATAL)ó   CÚ08001)ó   Mz(could not establish connection to serverúpy:c                 ó@   — |t          t          | ¦  «        ¦  «        z   S r>   )ÚhexÚid)ÚsÚtitleÚIDNSs      rD   ÚIDrS   M   s   € Ø�s•2�a‘5”5‰zŒzÑÐrF   Tc                 óh   — d| z   }|du r|dz  }|du r|dz  }|dz  }|du r|dz  }n|dz  }|dz   |z   S )	NzDECLARE Tz INSENSITIVEz SCROLLz CURSORz
 WITH HOLDz WITHOUT HOLDz FOR r?   )Ú	cursor_idÚstatement_stringÚinsensitiveÚscrollÚholdrP   s         rD   Údeclare_statement_stringrZ   P   sm   € ð �)Ñ€Ø�4ÐÐØ€~Ñ€!Ø
ˆd€N€NØ€y�.€!Ø€i�€ØˆD€L€LØ€|Ñ€!€!à€Ñ€!Ø	ˆG‰Ð&Ñ&Ð&rF   c                 óˆ   — |                       ¦   «         }|dk    rdS |dk    rdS t          dt          | ¦  «        z   ¦  «        ‚)NÚFORWARDTÚBACKWARDFúinvalid direction )ÚupperÚ
ValueErrorÚrepr)ÚstrrP   s     rD   Údirection_str_to_boolrc   c   sE   € Ø‡Y‚Y�[„[€Øˆ‚N€NØ	ˆØˆ:‚o€oØ	ˆåÐ'­$¨s©)¬)Ñ3Ñ4Ô4Ð4rF   c                 óœ   — t          | t          ¦  «        rt          | ¦  «        S | dur#| durt          dt	          | ¦  «        z   ¦  «        ‚| S )NTFr^   )Ú
isinstancerb   rc   Ú	TypeErrorra   )rC   s    rD   Údirection_to_boolrg   l   sR   € Ýˆq•#ÑÔð Ý	˜qÑ	!Ô	!Ð!Øˆt€m€m˜ ˜˜ÝÐ&­¨a©¬Ñ0Ñ1Ô1Ð1à	
€(rF   c                   óü  ‡ — e Zd ZdZdZddefZˆ fd„Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zd„ Zefd„Zefd„Zd„ Zd„ Zd„ Zefd„Zd„ Zd„ Zdej        ef	 	 	 	 	 d<d„Zd„ Zej        fd„Zej        fd„Ze j!        e j"        fd„Z#i ej$        j%        dfd „Z&ee'd!j(        f	 	 	 	 	 	 	 	 	 	 	 	 	 d=d0„Z)d1„ Z*d>d2„Z+e,j-        fd3„Z.e,j/        fd4„Z0d>d5„Z1e2j3        fd6„Z4d7„ Z5d8„ Z6de7j8        fd9„Z9de7j8        fd:„Z:e2j;        fd;„Z<ˆ xZ=S )?ÚTypeIOzË
	A class that manages I/O for a given configuration. Normally, a connection
	would create an instance, and configure it based upon the version and
	configuration of PostgreSQL that it is connected to.
	©ÚdatabaseNc                 ó®  •— || _         d | _        | j        }t          j        |t          j        |t          j        |t          j        |t          j        |t          j	        |t          j
        |t          j        |t          j        |t          j        |t          j        |t          j        |i| _        i | _        t%          ¦   «                              ¦   «          d S r>   )rk   ÚencodingÚstrioÚpg_typesÚ
ACLITEMOIDÚNAMEOIDÚ	BPCHAROIDÚ
VARCHAROIDÚ
CSTRINGOIDÚTEXTOIDÚ
REGTYPEOIDÚ
REGPROCOIDÚREGPROCEDUREOIDÚ
REGOPEROIDÚREGOPERATOROIDÚREGCLASSOIDÚ_cacheÚtypinfoÚsuperÚ__init__)Úselfrk   rn   Ú	__class__s      €rD   r   zTypeIO.__init__}   s¨   ø€ Ø€$„-Ø€$„-Ø
Œ*€%õ Ô˜ÝÔ�eÝÔ˜ÝÔ˜ÝÔ˜ÝÔ�eÝÔ˜ÝÔ˜ÝÔ˜eÝÔ˜ÝÔ˜UÝÔ˜%ð€$„+ð €$„,Ý�'„'×ÒÑÔÐÐÐrF   c                 ó@   — | j         j                             |¦  «        S r>   )rk   ÚsysÚlookup_type©r€   Útypids     rD   Úlookup_type_infozTypeIO.lookup_type_info“   s   € Ø	ŒÔ	×	&Ò	& uÑ	-Ô	-Ð-rF   c                 ó@   — | j         j                             |¦  «        S r>   )rk   rƒ   Úlookup_compositer…   s     rD   Úlookup_composite_type_infoz!TypeIO.lookup_composite_type_info–   s   € Ø	ŒÔ	×	+Ò	+¨EÑ	2Ô	2Ð2rF   c                 óæ   — | j         j        d d…         dk    r|                      |¦  «        S |rA| j         j                             |¦  «        }|d         d         s|S |d         d         }|°?d S d S )Nr   ©é   é   r   )rk   Úversion_infoÚlookup_domain_basetype_84rƒ   Úlookup_basetype©r€   r†   Úrs      rD   Úlookup_domain_basetypezTypeIO.lookup_domain_basetype™   s�   € Ø	„]Ô   Ô# vÒ-Ð-Ø
×
(Ò
(¨Ñ
/Ô
/Ð/àð Ø„}Ô×(Ò(¨Ñ/Ô/€1Ø
ˆAŒ$ˆqŒ'ð Ø€LàˆaŒD�ŒG€Eð 	ð ð ð ð ð rF   c                 ó\   — | j         j                             |¦  «        }|d         d         S ©Nr   )rk   rƒ   Úlookup_basetype_recursiver’   s      rD   r�   z TypeIO.lookup_domain_basetype_84¤   s'   € Ø
„mÔ×1Ò1°%Ñ8Ô8€!Ø	
ˆ1ŒˆaŒ€.rF   c                 óÎ   — |                      ¦   «                              ¦   «         | _        t          | j        ¦  «        }t	          |p| j        ¦  «        }|^| _        | _        }dS )z 
		Set a new client encoding.
		N)ÚlowerÚstriprm   r   Úlookup_codecsÚ_encodeÚ_decode)r€   ÚvalueÚencÚciÚ_s        rD   Úset_encodingzTypeIO.set_encoding¨   sV   € ð —+’+‘-”-×%Ò%Ñ'Ô'€$„-Ý˜œÑ&Ô&€#Ý�SÐ)˜DœMÑ*Ô*€"Ø#%Ð €$„,�”˜q˜q˜qrF   c                 ó8   — |                       |¦  «        d         S r–   )rœ   )r€   Ústring_datas     rD   ÚencodezTypeIO.encode±   s   € Ø	�Š�kÑ	"Ô	" 1Ô	%Ð%rF   c                 ó8   — |                       |¦  «        d         S r–   )r�   )r€   Ú
bytes_datas     rD   ÚdecodezTypeIO.decode´   s   € Ø	�Š�jÑ	!Ô	! !Ô	$Ð$rF   c                 óJ   — t          t          | j        |f¦  «        |¦  «        S )zB
		Encode the items in the iterable in the configured encoding.
		)ÚmapÚcomposerœ   ©r€   ÚiterÚget0s      rD   ÚencodeszTypeIO.encodes·   ó#   € õ 
�W�d”l DÐ)Ñ*Ô*¨DÑ	1Ô	1Ð1rF   c                 óJ   — t          t          | j        |f¦  «        |¦  «        S )zD
		Decode the items in the iterable from the configured encoding.
		)rª   r«   r�   r¬   s      rD   ÚdecodeszTypeIO.decodes½   r°   rF   c                 óF   — |                       |¦  «        d         p| j        S r–   )Úresolver¥   r…   s     rD   Úresolve_packzTypeIO.resolve_packÃ   ó    € Ø	�Š�eÑ	Ô	˜QÔ	Ð	. 4¤;Ð.rF   c                 óF   — |                       |¦  «        d         p| j        S )Nr   )r´   r¨   r…   s     rD   Úresolve_unpackzTypeIO.resolve_unpackÆ   r¶   rF   c                 ó„   — t          |                      |                     ¦   «         ¦  «        t          ¦   «         ¦  «        S r>   )Úzipr²   Úkeysr   )r€   Úpq_descriptors     rD   Úattribute_mapzTypeIO.attribute_mapÉ   s.   € Ý	ˆT�\Š\˜-×,Ò,Ñ.Ô.Ñ/Ô/µ±´Ñ	9Ô	9Ð9rF   c                 óø   — |t           j        v rt           j        |         S || j        v r*| j        |         ^}}} ||¦  «        dz    ||¦  «        z   S t           j                             |¦  «        }|rd|z  S d S )Nú.zpg_catalog.%s)ro   Úoid_to_sql_namer}   Úoid_to_nameÚget)r€   ÚoidÚqiÚnspÚnamer¡   s         rD   Úsql_type_from_oidzTypeIO.sql_type_from_oidÌ   sŠ   € Ø�HÔ$Ð$Ð$Ý
Ô
" 3Ô
'Ð'ØˆDŒLÐÐØ”< Ô$€=€3ˆˆqØ
ˆ"ˆS‰'Œ'�C‰-˜"˜"˜T™(œ(Ñ
"Ð"Ý	Ô	×	!Ò	! #Ñ	&Ô	&€$Ø	ð Ø
˜DÑ
 Ð à
ˆ$rF   c                 ó>   — || j         v r| j         |         d         }|S )Nr   )r|   )r€   rÃ   Útyps      rD   Útype_from_oidzTypeIO.type_from_oidØ   s%   € ØˆDŒKÐÐØ	Œ�SÔ	˜!Ô	€3Ø	€*rF   c                 ó$   ‡ ‡— ˆˆ fd„|D ¦   «         S )z6create a sequence of I/O routines from a pq descriptorc                 óV   •— g | ]%}‰                      |d          ¦  «        pd‰         ‘Œ&S )é   ©NN)r´   )rA   ÚxÚindexr€   s     €€rD   ú
<listcomp>z-TypeIO.resolve_descriptor.<locals>.<listcomp>ß   s@   ø€ ð 
ð 
ð 
Ø34€D‡L‚L��1”ÑÔÐ&˜,¨Ô.ð
ð 
ð 
rF   r?   )r€   ÚdescrÐ   s   ` `rD   Úresolve_descriptorzTypeIO.resolve_descriptorÝ   s4   øø€ ð
ð 
ð 
ð 
ð 
Ø8<ð
ñ 
ô 
ð rF   r?   r†   ú<The Oid of the type to resolve pack and unpack routines for.Úfrom_resolution_ofú7Sequence of typid's used to identify infinite recursionÚbuiltinsútypes.io.resolvec                 ó  — |r||v rt          d||fz  ¦  «        ‚t          |¦  «        }d }|| j        v r| j        |         }n1 ||¦  «        }|�$|j        t          ur ||| ¦  «        }|| j        |<   |�€Ž|                      |¦  «        }|��o|\	  }}}	}
}}}}}||||rt          |¦  «        nd f| j        |<   |�rJi }g }g }g }d}|                      |¦  «        D ]Ì}|||d         <   |                     |d         ¦  «         |d         r|  	                    |d         ¦  «        }n|d         }|                     |d         ¦  «         |  
                    |t          |¦  «        |gz   ¦  «        }|                     |d         p| j        |d         p| j        f¦  «         |dz  }ŒÍ|                      |||t          t          | j        |¦  «        ¦  «        || ||¦  «        dz    ||¦  «        z   ¦  «        x| j        |<   }nþ|�u|  
                    t          |¦  «        t          |¦  «        |gz   ¬¦  «        pd}|                      |d         p| j        |d         p| j        |||¦  «        }|| j        |<   n‡d }|	dk    r>|  	                    |¦  «        }|  
                    |t          |¦  «        |gz   ¬¦  «        }n&|	d	k    r |d
k    r|dk    r|                      ¦   «         }|s| j        }|| j        |<   n| j        }|S )Nz(type, %d, is already being looked up: %rr   r   r   r¿   )rÕ   rÎ   ó   dó   pÚ
pg_catalogÚrecord)rf   Úintr|   r�   Útupler‡   r}   rŠ   Úappendr”   r´   Úlistr¥   r¨   Úrecord_io_factoryrª   rÇ   Úarray_io_factoryÚanon_record_io_factoryrn   )r€   r†   rÕ   r×   r   ÚtypioÚtiÚtypnamespaceÚtypnameÚtyptypeÚtyplenÚtypelemÚtyprelidÚae_typidÚae_hasbin_inputÚae_hasbin_outputÚattmapÚcioÚtypidsÚattnamesÚirÏ   Ú
fieldtypidÚteÚbasetypes                            rD   r´   zTypeIO.resolveä   sÉ  € ð ð ˜EÐ%7Ð7Ð7Ý	Ø.Ø
Ðð1ñ ñ
ô 
ð õ
 ˆe‰*Œ*€%Ø
€%à
ˆdŒkÐÐØŒ;�uÔ€5€5àˆ8�E‰?Œ?€5ØÐð „�eÐ#Ð#ØˆU�5˜$ÑÔ€UØ€D„K�Ñà
�]ð 	×Ò˜eÑ$Ô$€2Ø�nà35ñ1€L�'˜7 F¨G°XØˆÐ 0à�7˜H°hÐ&H¥c¨'¡l¤l lÀDð€D„L�Ñð ñ ? ð €VØ€SØ€VØ€XØ	
€QØ×-Ò-¨hÑ7Ô7ð ð ˆØ€fˆQˆqŒT�lØ‡o‚o�a˜”dÑÔÐØ	
ˆ1Œð à×/Ò/°°!´Ñ5Ô5€z€zà�a”D€zØ‡m‚m�A�a”DÑÔÐØ�<Š<Ø•4Ð*Ñ+Ô+¨u¨gÑ5ñô €bð 
‡j‚j�"�Q”%Ð&˜4œ;¨¨1¬Ð(<°´Ð=Ñ>Ô>Ð>Øˆ1�f€a€aØ"&×"8Ò"8Ø	ˆ6�6�4Ý
ˆ4Ô! 6Ñ*Ô*ñô à	ØØ€k�,ÑÔ #Ñ%Ø€k�'ÑÔññ#ô #ð €T„[�Ñ˜%˜%ð 
Ð	à
�,Š,Ý	ˆ'�l„lÝÐ 2Ñ3Ô3°u°gÑ=ð ñ ô ð ð ð ð ×"Ò"Øˆ„eÐˆtŒ{Øˆ„eÐˆtŒ{ØØØñô €Uð  €T„[�ÑÐà€UØ�4ŠˆØ×,Ò,¨UÑ3Ô3€hØ�lŠlØÝ Ð!3Ñ4Ô4¸°wÑ>ð ñ ô €e€eð �TŠ/ˆ/˜l¨lÒ:Ð:¸wÈ(Ò?RÐ?Rà×)Ò)Ñ+Ô+€eàð ØŒj€eà€T„[�ÑÐð ŒJ€EØ	€,rF   c                 ó6  ‡ — t          |                     ¦   «         ¦  «        }d„ |D ¦   «         }t          ‰ j        j                             d„ |D ¦   «         ¦  «        ¦  «        }‰ j                             ˆ fd„t          ||¦  «        D ¦   «         ¦  «         dS )zm
		Explicitly designate the I/O handler for the specified type.

		Primarily used in cases involving UDTs.
		c                 óB   — g | ]}t          j        |d          ¦  «        ‘ŒS ©r   )Úpg_types_ior´   ©rA   rÏ   s     rD   rÑ   z#TypeIO.identify.<locals>.<listcomp>V  s'   € Ð/Ð/Ð/ q�Ô	˜Q˜qœTÑ	"Ô	"Ð/Ð/Ð/rF   c                 ó   — g | ]
}|d          ‘ŒS ©r   r?   rü   s     rD   rÑ   z#TypeIO.identify.<locals>.<listcomp>W  s   € Ð);Ð);Ð);°1¨!¨A¬$Ð);Ð);Ð);rF   c                 óR   •— g | ]#\  }}||j         t          u r|n ||‰¦  «        f‘Œ$S r?   ©r�   rß   )rA   rÃ   r%   r€   s      €rD   rÑ   z#TypeIO.identify.<locals>.<listcomp>Y  sL   ø€ ð ð ð á€sˆBð ˆrŒ|�uÐ$Ð$ˆˆ¨"¨"¨S°$©-¬-Ð8ðð ð rF   N)rá   Úitemsrk   rƒ   Úregtypesr|   Úupdaterº   )r€   Úidentity_mappingsrO   ÚiosÚoidss   `    rD   ÚidentifyzTypeIO.identifyN  s³   ø€ õ Ð×#Ò#Ñ%Ô%Ñ&Ô&€"Ø/Ð/¨BÐ/Ñ/Ô/€#Ý	ˆdŒmÔ×(Ò(Ð);Ð);¸Ð);Ñ);Ô);Ñ<Ô<Ñ	=Ô	=€$à„+×Òð ð ð ð å�d˜C‘.”.ðñ ô ñ ô ð ð ð rF   c                 ól   — |j         |ur ||¦  «        }|                     ¦   «         |j        |j        fS r>   )r�   ÚelementsÚ
dimensionsÚlowerbounds)r€   ÚarrayÚ	ArrayTypes      rD   Úarray_partszTypeIO.array_parts^  sA   € Ø
„_˜IÐ%Ð%àˆ9�UÑÔ€5à‡>‚>ÑÔØÔØÔð
ð rF   c           	      ón   — |\  }}}|                      ||d„ t          ||¦  «        D ¦   «         ¬¦  «        S )Nc                 ó$   — g | ]\  }}||z   d z
  ‘ŒS rþ   r?   )rA   rÏ   Úlbs      rD   rÑ   z+TypeIO.array_from_parts.<locals>.<listcomp>m  s$   € ÐGÐGÐG¡  B�!�b‘&˜1‘*ÐGÐGÐGrF   )r  Úupperbounds)Úfrom_elementsrº   )r€   Úpartsr  r	  r
  r  s         rD   Úarray_from_partszTypeIO.array_from_partsh  sL   € Ø&+Ñ#€(ˆJ˜Ø	×	 Ò	 ØØØGÐG­#¨j¸+Ñ*FÔ*FÐGÑGÔGð 
!ñ 
ô 
ð rF   c                 óœ   ‡‡‡‡‡— t          j        ‰¦  «        }|r| j        fˆˆˆfd„	}	nd }	|r| j        fˆˆfd„	}
nd }
|	|
t          j        fS )Nc                 óZ   •—  || ¦  «        \  }}} ‰d‰||ˆfd„|D ¦   «         f¦  «        S )Nr   c              3   ó6   •K  — | ]}|€|n
 ‰|¦  «        V — Œd S r>   r?   )rA   rÏ   Úpack_elements     €rD   rE   zATypeIO.array_io_factory.<locals>.pack_an_array.<locals>.<genexpr>‚  s3   øè è € Ð<Ð<¨aˆ1ˆ9€a€a˜,˜, q™/œ/Ð<Ð<Ð<Ð<Ð<Ð<rF   r?   )ÚdataÚ	get_partsr	  r
  r  Ú
array_packr  Útypoids        €€€rD   Úpack_an_arrayz.TypeIO.array_io_factory.<locals>.pack_an_array}  sQ   ø€ Ø(1¨	°$©¬Ñ%€Hˆj˜+Øˆ:ØØˆZ˜Ø<Ð<Ð<Ð<°8Ð<Ñ<Ô<ðñ ô ð rF   c                 óZ   •—  ‰| ¦  «        \  }}}}} |ˆfd„|D ¦   «         ||f¦  «        S )Nc              3   ó6   •K  — | ]}|€|n
 ‰|¦  «        V — Œd S r>   r?   )rA   rÏ   Úunpack_elements     €rD   rE   zCTypeIO.array_io_factory.<locals>.unpack_an_array.<locals>.<genexpr>‹  s5   øè è € ÐVÐVÈ 1 9˜a˜a°.°.ÀÑ2CÔ2CÐVÐVÐVÐVÐVÐVrF   r?   )	r  r  Úflagsr  ÚdimsÚlbsr	  Úarray_unpackr!  s	          €€rD   Úunpack_an_arrayz0TypeIO.array_io_factory.<locals>.unpack_an_array‰  sL   ø€ Ø)5¨°dÑ);Ô);Ñ&€Eˆ6�4˜˜hØÐÐVÐVÐVÐVÈXÐVÑVÔVÐX\Ð^aÐbÑcÔcÐcrF   )Úio_libÚ
ulong_packr  r  ro   ÚArray)r€   r  r!  r  Úhasbin_inputÚhasbin_outputr  r%  Úpacked_typoidr  r&  s    ```  ``   rD   rã   zTypeIO.array_io_factorys  s¯   øøøøø€ õ Ô# FÑ+Ô+€-Øð 
Ø'+Ô'7ð ð ð ð ð ð ð ð ð ð €=àð Ø04Ô0Eð dð dð dð dð dð dð dð dð
 €?à
˜­(¬.Ð	9Ð9rF   c                 ó"   — t          ||¦  «        S r>   r   )r€   r½   Ú_RowÚcomposite_relids       rD   ÚRowTypeFactoryzTypeIO.RowTypeFactory’  s   € Ý	��}Ñ	%Ô	%Ð%rF   zFfailed to {0} attribute {1}, {2}::{3}, of composite {4} from wire dataÚ	column_ioú:sequence (pack,unpack) tuples corresponding to the columnsrò   ú?sequence of type Oids; index must correspond to the composite'srð   ú&mapping of column name to index numberÚtypnamesú#sequence of sql type names in orderró   ú$sequence of attribute names in orderr/  úoid of the composite relationÚcomposite_nameúthe name of the composite typec                 óž  ‡ ‡‡‡‡‡
‡‡‡‡‡— t          t          ||¦  «        ¦  «        Št          t          |	|¦  «        ¦  «        Š‰                      ||¬¦  «        }ˆˆˆ
ˆ ˆfd„Šˆˆˆ
ˆ ˆfd„Št          j        t
          |fˆˆfd„	}t          |                     ¦   «         |	¬¦  «        Št          j        t
          fˆˆˆˆfd„	}||t           fS )N)r½   r/  c                 ó&  •— t          ||         ¦  «        }t          |¦  «        dk    r|d d…         dz   }‰                     t          j        ddd ‰d|‰|         ‰	|         ‰¦  «        fd|fd	t          |¦  «        ff¦  «        | ¬
¦  «         d S )Nr1   éK   ú ...©rI   z--cIO©rG   ÚERRORrK   Úpackó   Wó   P©Úcause©ra   ÚlenÚraise_client_errorÚelementÚClientErrorrb   ©
rF  ÚprocsÚtupÚitemnumr  ró   r9  Ú
fmt_errmsgr€   r5  s
        €€€€€rD   Úraise_pack_tuple_errorz8TypeIO.record_io_factory.<locals>.raise_pack_tuple_error¨  s´   ø€ Ý
ˆs�7Œ|Ñ
Ô
€4Ý	ˆ$�i„i�"‚n€nà���Œ9�vÑ€DØ×Ò�7Ô.ØØØ	ˆ:ˆ:�f˜g x°Ô'8¸(À7Ô:KÈ^Ñ\Ô\Ð^Ø	ˆ4€MØ	�3ˆw‰<Œ<Ðð0ñ ô ð ð ñ ô ð ð ð rF   c                 ó&  •— t          ||         ¦  «        }t          |¦  «        dk    r|d d…         dz   }‰                     t          j        ddd ‰d|‰|         ‰	|         ‰¦  «        fd|fd	t          |¦  «        ff¦  «        | ¬
¦  «         d S )Nr1   r=  r>  r?  r@  rK   ÚunpackrC  rD  rE  rG  rL  s
        €€€€€rD   Úraise_unpack_tuple_errorz:TypeIO.record_io_factory.<locals>.raise_unpack_tuple_errorµ  s´   ø€ Ý
ˆs�7Œ|Ñ
Ô
€4Ý	ˆ$�i„i�"‚n€nà���Œ9�vÑ€DØ×Ò�7Ô.ØØØ	ˆ:ˆ:�h ¨°'Ô):¸HÀWÔ<MÈ~Ñ^Ô^Ð`Ø	ˆ4€MØ	�3ˆw‰<Œ<Ðð0ñ ô ð ð ñ ô ð ð ð rF   c                 ót   •— t          d„  || ¦  «        D ¦   «         ¦  «        }  | |‰| ‰¦  «        ¦  «        S )Nc                 ó   — g | ]
}|d          ‘ŒS rþ   r?   rü   s     rD   rÑ   zETypeIO.record_io_factory.<locals>.unpack_a_record.<locals>.<listcomp>Ç  s   € Ð,Ð,Ð,˜!��1”Ð,Ð,Ð,rF   )rß   )r  rS  r   Úrow_constructorÚfunpackrT  s       €€rD   Úunpack_a_recordz1TypeIO.record_io_factory.<locals>.unpack_a_recordÂ  sH   ø€ õ
 Ð,Ð,˜v˜v d™|œ|Ð,Ñ,Ô,Ñ
-Ô
-€4Ø
ˆ/˜-˜-¨°Ð7OÑPÔPÑ
QÔ
QÐQrF   ©Úkeyc                 óÈ   •‡ — t          ‰ t          ¦  «        rˆ fd„‰D ¦   «         Š  |t          t          ‰ |‰t          ‰ ¦  «        ‰¦  «        ¦  «        ¦  «        ¦  «        S )Nc                 ó@   •— g | ]\  }}‰                      |¦  «        ‘ŒS r?   )rÂ   )rA   rB   r¡   r  s      €rD   rÑ   zCTypeIO.record_io_factory.<locals>.pack_a_record.<locals>.<listcomp>Ð  s'   ø€ Ð/Ð/Ð/™C˜A˜aˆD�HŠH�Q‰KŒKÐ/Ð/Ð/rF   )re   Údictrß   rº   )r  rB  r   ÚfpackrQ  Úsorted_attsrò   s   `  €€€€rD   Úpack_a_recordz/TypeIO.record_io_factory.<locals>.pack_a_recordË  sy   øø€ õ �•tÑÔð 0Ø/Ð/Ð/Ð/ ;Ð/Ñ/Ô/€DØ
ˆ$Ý	�#ØØ€]�5�% ™+œ+Ð'=Ñ>Ô>ñô ñ ô ñô ð rF   )	rß   rª   r0  r'  Úrecord_unpackr   Úsortedr  Úrecord_pack)r€   r1  rò   rð   r5  ró   r/  r9  r®   Úget1rP  rW  rY  ra  r_  rX  rQ  rT  r`  s   ` ` `` `  `   @@@@@rD   râ   zTypeIO.record_io_factory˜  sI  øøøøøøøøøøø€ õ •�D˜)Ñ$Ô$Ñ
%Ô
%€%Ý•#�d˜IÑ&Ô&Ñ'Ô'€'Ø×'Ò'¸ÐRaÐ'ÑbÔb€/ðð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð õ Ô Ý Ø$ðRð Rð Rð Rð Rð Rð Rõ �v—|’|‘~”~¨TÐ2Ñ2Ô2€+å
Ô
Ý ðð ð ð ð ð ð ð ð ð ˜­%Ð	0Ð0rF   c                 óH   ‡ ‡— ˆ fd„Št           j        t          fˆˆ fd„	}d |fS )Nc                 ó  •— t          ||         ¦  «        }t          |¦  «        dk    r|d d…         dz   }‰                     t          j        dddd                     |¦  «        fd|fd	t          |¦  «        ff¦  «        | ¬
¦  «         d S )Nr1   r=  r>  r?  r@  rK   z1Could not unpack element {} from anonymous recordrC  rD  rE  )ra   rH  rI  rJ  rK  Úformatrb   )rF  rM  rN  rO  r  r€   s        €rD   rT  z?TypeIO.anon_record_io_factory.<locals>.raise_unpack_tuple_errorÚ  s§   ø€ Ý
ˆs�7Œ|Ñ
Ô
€4Ý	ˆ$�i„i�"‚n€nà���Œ9�vÑ€DØ×Ò�7Ô.ØØØ	Ð>×EÒEÀgÑNÔNÐOØ	ˆ4€MØ	�3ˆw‰<Œ<Ðð0ñ ô ð ð ñ ô ð ð ð rF   c                 ó  •— t           || ¦  «        ¦  «        }t          d„ |D ¦   «         ¦  «        }t          ‰j        |¦  «        }t          ˆfd„|D ¦   «         ¦  «        }t          d„ |D ¦   «         ¦  «        }  ||| ‰¦  «        S )Nc              3   ó&   K  — | ]}|d          V — ŒdS )r   Nr?   rü   s     rD   rE   zHTypeIO.anon_record_io_factory.<locals>._unpack_record.<locals>.<genexpr>é  s&   è è € Ð(Ð(˜A�1�Q”4Ð(Ð(Ð(Ð(Ð(Ð(rF   c              3   ó6   •K  — | ]}|d          p‰j         V — ŒdS ©r   N©r¨   )rA   Úcr€   s     €rD   rE   zHTypeIO.anon_record_io_factory.<locals>._unpack_record.<locals>.<genexpr>ë  s.   øè è € Ð<Ð<°˜˜1œÐ, ¤Ð<Ð<Ð<Ð<Ð<Ð<rF   c              3   ó&   K  — | ]}|d          V — ŒdS rl  r?   rü   s     rD   rE   zHTypeIO.anon_record_io_factory.<locals>._unpack_record.<locals>.<genexpr>í  s&   è è € Ð%Ð%˜��!”Ð%Ð%Ð%Ð%Ð%Ð%rF   )rá   rß   rª   r´   )	r  rS  r   rÝ   ÚcoloidsÚcolioÚcolumn_unpackrT  r€   s	          €€rD   Ú_unpack_recordz5TypeIO.anon_record_io_factory.<locals>._unpack_recordç  s˜   ø€ Ý��˜‘”ÑÔ€6ÝÐ(Ð( Ð(Ñ(Ô(Ñ(Ô(€7ÝˆtŒ|˜WÑ%Ô%€5ÝÐ<Ð<Ð<Ð<°eÐ<Ñ<Ô<Ñ<Ô<€=å
Ð%Ð%˜fÐ%Ñ%Ô%Ñ
%Ô
%€4à
ˆ-˜ tÐ-EÑ
FÔ
FÐFrF   )r'  rb  r   )r€   rs  rT  s   ` @rD   rä   zTypeIO.anon_record_io_factoryÙ  s^   øø€ ðð ð ð ð õ %+Ô$8Í-ð Gð Gð Gð Gð Gð Gð Gð �Ð	ÐrF   c                 ó  — d„ |                      ¦   «         D ¦   «         }|                     d¦  «        }|                     d¦  «        }|                      |¦  «        } ||||d|p| j        ¬¦  «        }| j        |_        |�||‚|‚)Nc                 óB   — i | ]\  }}|t           v ¯t           |         |“ŒS r?   ©Únotice_field_to_namer@   s      rD   ú
<dictcomp>z-TypeIO.raise_client_error.<locals>.<dictcomp>ô  s;   € ð ð ð á€qˆ!àÕÐÐõ ˜Ô˜Qð  ÐÐrF   r)   r   ÚCLIENT©r)   ÚdetailsÚsourceÚcreator)r  ÚpopÚlookup_exceptionrk   )r€   Úerror_messagerF  r}  Úmrn  ÚmsÚclient_errors           rD   rI  zTypeIO.raise_client_erroró  s£   € ðð à×"Ò"Ñ$Ô$ðñ ô €!ð ‡e‚eˆF�m„m€!Ø‡u‚uˆYÑÔ€"Ø×&Ò& qÑ)Ô)€,Ø�˜b¨°aÀ(ÐV]ÐVnÐaeÔanÐoÑoÔo€,Øœ-€,ÔØ
ÐØ	˜5Ð à	ÐrF   c                 ó   —  ||¦  «        S r>   r?   )r€   r)   Úerrorlookups      rD   r  zTypeIO.lookup_exception  s   € Ø	ˆ�TÑ	Ô	ÐrF   c                 ó   —  ||¦  «        S r>   r?   )r€   r)   Úwarninglookups      rD   Úlookup_warningzTypeIO.lookup_warning  s   € Ø	ˆ�tÑ	Ô	ÐrF   c                 ó  — t          |                      |¦  «        ¦  «        }|                     d¦  «        }|                     d¦  «        }|                      |¦  «        } ||||d|p| j        ¬¦  «        }| j        |_        |�||‚|‚)Nr)   r   ÚSERVERrz  )r^  Údecode_noticer~  r  rk   )r€   r€  rF  r}  r�  rn  r‚  Úserver_errors           rD   Úraise_server_errorzTypeIO.raise_server_error
  s’   € Ý
ˆ4×Ò˜mÑ,Ô,Ñ-Ô-€!Ø‡e‚eˆF�m„m€!Ø‡u‚uˆYÑÔ€"Ø×&Ò& qÑ)Ô)€,Ø�˜b¨°aÀ(ÐV]ÐVnÐaeÔanÐoÑoÔo€,Øœ-€,ÔØ
ÐØ	˜5Ð à	ÐrF   c                 ó¦   — d|vr%t          | j        d| j        ¦  «        p| j        |d<   |j        |u r | j        |fi |¤Ž d S  | j        |fi |¤Ž d S )Nr}  Ú_controller)Úgetattrrk   r�   rI  r�  )r€   r€  rK  Úkws       rD   Úraise_errorzTypeIO.raise_error  s}   € Ø�bÐÐÝ˜4œ=¨-¸¼ÑGÔGÐXÈ4Ì=€2€i�=àÔ Ð+Ð+Ø€4Ô˜=Ð/Ð/¨BÐ/Ð/Ð/Ð/Ð/à€4Ô˜=Ð/Ð/¨BÐ/Ð/Ð/Ð/Ð/rF   c              #   óF  K  — | j         }t          |¦  «        }|D ]…}	 |d         }|d          ||¦  «        d         fV — |D ]%}|d         }|d          ||¦  «        d         fV — Œ&ŒO# t          $ r* |d         t          |d         ¦  «        dd…         fV — Y Œ‚w xY wd S )Nr   r   r   éÿÿÿÿ)r�   r­   ÚUnicodeDecodeErrorra   )r€   r  r¨   rô   rÏ   rC   s         rD   Ú_decode_failsafezTypeIO._decode_failsafe!  sî   è è € ØŒ<€&Ý
ˆ4�j„j€!Øð #ð #€að#à	ˆ!Œ€AØˆQŒ4��˜‘”˜1”Ð
ÐÐÐØð  ð  ˆØ	
ˆ1Œ€QØˆaŒD�&�&˜‘)”)˜A”,ÐÐÐÐÐð øõ ð #ð #ð #ð
 ˆQŒ4•�a˜”d‘”˜A˜b˜DÔ!Ð
"Ð"Ð"Ð"Ð"Ð"ð#øøøð#ð #s   žAA*Á*1BÂBc                 óh   — |                       |                     ¦   «         ¦  «        }d„ |D ¦   «         S )Nc                 óB   — i | ]\  }}|t           v ¯t           |         |“ŒS r?   rv  r@   s      rD   rx  z(TypeIO.decode_notice.<locals>.<dictcomp>5  s;   € ð 
ð 
ð 
á€qˆ!àÕÐÐõ ˜Ô˜Qð  ÐÐrF   )r–  r  )r€   Únotices     rD   r‹  zTypeIO.decode_notice3  s>   € Ø× Ò  §¢¡¤Ñ0Ô0€&ð
ð 
àð
ñ 
ô 
ð rF   c                 óJ  — |                       |¦  «        }|                     d¦  «        }|                     d¦  «        }|d                              ¦   «         dk    r|                      |¦  «        } |||||d¬¦  «        }| j        |_        |                     ¦   «          |S )Nr   r)   r'   ÚWARNINGrŠ  ©r)   r{  r}  r|  )r‹  r~  r_   rˆ  rk   Úemit©r€   r   r}  ÚMessageTypeÚfieldsr�  rn  s          rD   Úemit_server_messagezTypeIO.emit_server_message<  s¥   € ð ×Ò˜gÑ&Ô&€&Ø‡j‚j�ÑÔ€!Ø‡j‚j�ÑÔ€!àˆJÔ×ÒÑÔ 9Ò,Ð,Ø×$Ò$ QÑ'Ô'€;àˆK˜ !¨vØ˜xð)ñ )ô )€'à”]€'ÔØ	‡,‚,�.„.€.Ø	€.rF   c                 ó\  — d„ |                      ¦   «         D ¦   «         }|                     d¦  «        }|                     d¦  «        }|d                              ¦   «         dk    r|                      |¦  «        } |||||d¬¦  «        }| j        |_        |                     ¦   «          |S )Nc                 óB   — i | ]\  }}|t           v ¯t           |         |“ŒS r?   rv  r@   s      rD   rx  z.TypeIO.emit_client_message.<locals>.<dictcomp>O  s;   € ð ð ð á€qˆ!àÕÐÐõ ˜Ô˜Qð  ÐÐrF   r   r)   r'   r›  ry  rœ  )r  r~  r_   rˆ  rk   r�  rž  s          rD   Úemit_client_messagezTypeIO.emit_client_messageL  s¸   € ðð à�}Š}‰Œðñ ô €&ð ‡j‚j�ÑÔ€!Ø‡j‚j�ÑÔ€!àˆJÔ×ÒÑÔ 9Ò,Ð,Ø×$Ò$ QÑ'Ô'€;àˆK˜ !¨vØ˜xð)ñ )ô )€'à”]€'ÔØ	‡,‚,�.„.€.Ø	€.rF   c                 óL   — |j         |u r | j        |fi |¤ŽS  | j        |fi |¤ŽS r>   )r�   r¤  r¡  )r€   r   ÚClientNoticer‘  s       rD   Úemit_messagezTypeIO.emit_messagea  sF   € ØÔ˜,Ð&Ð&Ø
"ˆ$Ô
" 7Ð
1Ð
1¨bÐ
1Ð
1Ð1à
"ˆ$Ô
" 7Ð
1Ð
1¨bÐ
1Ð
1Ð1rF   )r†   rÔ   rÕ   rÖ   r×   rØ   )r1  r2  rò   r3  rð   r4  r5  r6  ró   r7  r/  r8  r9  r:  rÎ   )>Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú
_e_factorsrb   rn   r   r‡   rŠ   r”   r�   r¢   r¥   r¨   r®   r¯   r²   rµ   r¸   r½   r   rÇ   rÊ   rÓ   rû   r´   r  ro   r)  r  r  r'  r  r%  rã   ÚRowÚfrom_sequencer0  re  rh  râ   rä   rI  Úpg_excÚErrorLookupr  ÚWarningLookuprˆ  r�  rJ  rK  r’  r–  r‹  Úpg_msgÚMessager¡  r¤  r¦  r§  Ú__classcell__©r�   s   @rD   ri   ri   t   s‹  ø€ € € € € ðð ð
 €Ø
��cÐ	€ðð ð ð ð ð,.ð .ð .ð3ð 3ð 3ð	ð 	ð 	ðð ð ð&ð &ð &ð&ð &ð &ð%ð %ð %ð !%ð 2ð 2ð 2ð 2ð !%ð 2ð 2ð 2ð 2ð/ð /ð /ð/ð /ð /ð:ð :ð :ð (3ð 
ð 
ð 
ð 
ðð ð ð
ð ð ð ?AØ"-Ô"5ØðhØ
Hðhð <ðhð  ð	hð hð hð hðTð ð ð  +3¬.ð ð ð ð ð 08¬~ð ð ð ð ð  Ô ØÔ$ð:ð :ð :ð :ð> +-°X´\Ô5OÐcgð &ð &ð &ð &ð 
Ø	ØWÔ^ð?1ØJð?1àLð?1ð 4ð?1ð 3ð	?1ð
 4ð?1ð 4ð?1ð 4ð?1ð ?1ð ?1ð ?1ðB ð  ð  ð4ð ð ð ð" 17Ô0Bð ð ð ð ð 17Ô0Dð ð ð ð ð
ð 
ð 
ð 
ð 5<Ô4Gð 0ð 0ð 0ð 0ð#ð #ð #ð$ð ð ð 37Ø”ðð ð ð ð  37Ø”ðð ð ð ð* 18Ô0Dð 2ð 2ð 2ð 2ð 2ð 2ð 2ð 2rF   ri   c                   ó>  — e Zd ZdZdZdZdZdZdZdZ	dZ
dZed„ ¦   «         Zej        efd„Zd„ Zd„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zefd„Zefd„Z efd„Z!d„ Z"e#d„ ¦   «         Z$e#d„ ¦   «         Z%e#d„ ¦   «         Z&e#d„ ¦   «         Z'e#d„ ¦   «         Z(d„ Z)d„ Z*dS )ÚOutputNFc                 ó   — dS )z7
		Bind a cursor based on the configured parameters.
		Nr?   ©r€   s    rD   Ú_initzOutput._initw  ó   € € € rF   c                 óÆ  — || _         | j        �E| j        }|j        | _        |j        | _        |j        | _        |j        pd| _        |j        | _        | j        j         	                    |¦  «        | _
        | || ¦  «        k    r%| j        j                             | | j
        ¦  «         d|                     dd¦  «        z   dz   | _        |                      ¦   «          d S )Nr?   ú"ú"")rU   Ú	statementÚ_outputÚ
_output_ioÚ_row_constructorÚ_output_formatsÚ_output_attmaprk   rå   r¥   Ú_pq_cursor_idÚpqÚregister_cursorÚreplaceÚ_quoted_cursor_idrº  )r€   rU   ÚwrefrS   Ústmts        rD   r   zOutput.__init__~  sÏ   € Ø€$„.Ø	„^ÐØ
Œ.€4Ø”,€4„<Ø”_€4„?ØÔ0€4ÔØÔ.Ð4°"€4ÔØÔ,€4Ôà”}Ô*×1Ò1°)Ñ<Ô<€$Ôà�"�"�T‘(”(ÒÐØ„=Ô×#Ò# D¨$Ô*<Ñ=Ô=Ð=Ø ×!2Ò!2°3¸Ñ!=Ô!=Ñ=ÀÑC€$ÔØ‡*‚*�,„,€,€,€,rF   c                 ó   — | S r>   r?   r¹  s    rD   Ú__iter__zOutput.__iter__�  s   € Ø	€+rF   c                 ón   — | j         du r$| j        j                             | j        ¦  «         d| _         d S ©NFT)Úclosedrk   rÆ  Útrash_cursorrÅ  r¹  s    rD   ÚclosezOutput.close’  s6   € Ø	„[�EÐÐØ„=Ô× Ò  Ô!3Ñ4Ô4Ð4Ø€$„+€+€+rF   c                 ó8   — t          j        |d| j        j        iŽS )NÚ	asynchook)ÚxactÚInstructionrk   Ú_receive_async)r€   Úargss     rD   Ú_inszOutput._ins—  s   € Ý	Ô	˜4Ð	J¨T¬]Ô-IÐ	JÐ	JÐJrF   c                 ó6   — t          j        | j        ¦  «        fS r>   )rJ  ÚDescribePortalrÅ  r¹  s    rD   Ú_pq_xp_describezOutput._pq_xp_describeš  s   € Ý
Ô
  Ô!3Ñ
4Ô
4Ð	6Ð6rF   c                 óª   — t          j        | j        | j        j        | j        j        | j                             | j        ¦  «        | j        ¦  «        fS r>   )	rJ  ÚBindrÅ  r¿  Ú_pq_statement_idÚ_input_formatsÚ_pq_parametersÚ
parametersrÃ  r¹  s    rD   Ú_pq_xp_bindzOutput._pq_xp_bind�  sL   € å
„<ØÔØ„NÔ#Ø„NÔ!Ø„N×!Ò! $¤/Ñ2Ô2ØÔñô ð
ð rF   c                 óÈ   — t          j        d| j        j        | j        j        | j                             | j        ¦  «        | j        ¦  «        t          j        dd¦  «        fS )NrF   ì   ÿÿ )	rJ  rÞ  r¿  rß  rà  rá  râ  rÃ  ÚExecuter¹  s    rD   Ú_pq_xp_fetchallzOutput._pq_xp_fetchall¨  sZ   € å
„<ØØ„NÔ#Ø„NÔ!Ø„N×!Ò! $¤/Ñ2Ô2ØÔñô õ „?�3˜
Ñ#Ô#ð	
ð 	rF   c                 ó|  — t          j        d| j        j                             t          t          | j        ¦  «        t          | j        j	        ¦  «        ¦  «        ¦  «        d¦  «        t          j
        dd| j        j        | j                             | j        ¦  «        d¦  «        t          j        dd¦  «        fS )NrF   r?   r   )rJ  ÚParserk   rå   r¥   rZ   rb   rÉ  r¿  r   rÞ  rà  rá  râ  ræ  r¹  s    rD   Ú_pq_xp_declarezOutput._pq_xp_declare´  s©   € å
„=��d”mÔ)×0Ò0ÝÝ	ˆ$Ô
 Ñ!Ô!Ý	ˆ$Œ.Ô
Ñ Ô ñô ñô ð
 
ñô õ „<ØˆˆdŒnÔ+Ø„N×!Ò! $¤/Ñ2Ô2°Bñô õ „?�3˜ÑÔð
ð rF   c                 ó8   — t          j        | j        |¦  «        fS r>   )rJ  ræ  rÅ  )r€   Úquantitys     rD   Ú_pq_xp_executezOutput._pq_xp_executeÄ  s   € å
„?�4Ô% xÑ0Ô0ð
ð rF   c                 ó6  — d|rdndz   }|€|dz   | j         z   }n|t          |¦  «        z   dz   | j         z   }t          j        d| j        j                             |¦  «        d¦  «        t          j        dddd| j        ¦  «        t          j	        dd¦  «        fS )	NzFETCH zFORWARD z	BACKWARD zALL IN z IN rF   r?   rå  )
rÉ  rb   rJ  ré  rk   rå   r¥   rÞ  rÃ  ræ  )r€   Ú	directionrì  Úqstrs       rD   Ú_pq_xp_fetchzOutput._pq_xp_fetchÉ  s®   € ð 
 9Ð=�Z�Z°+Ñ	>€$ØÐØ
�Ñ
˜TÔ3Ñ
3€4€4à
Ý	ˆ(�m„mñØñØ#Ô5ñ6€4õ „=��d”mÔ)×0Ò0°Ñ6Ô6¸Ñ;Ô;Ý
„<��S˜"˜b $Ô"6Ñ7Ô7å
„?�3˜
Ñ#Ô#ð	
ð rF   c                 óè   — t          j        dd|z   dz   |z   dz   | j        j                             | j        ¦  «        z   d¦  «        t          j        ddddd¦  «        t          j        dd¦  «        fS )NrF   s   MOVE ó    s    IN r?   r   )rJ  ré  rk   rå   r¥   rÉ  rÞ  ræ  )r€   r2   Úwhences      rD   Ú_pq_xp_movezOutput._pq_xp_moveÙ  s{   € å
„=�ØˆvÑ˜Ñ˜xÑ'¨'Ñ1Ø„MÔ×Ò˜tÔ5Ñ6Ô6ñ7àñô õ
 „<��S˜"˜b "Ñ%Ô%Ý
„?�3˜ÑÔð
ð rF   c                 ór   — |r4|d         j         t          us|d         j         t          urd„ |D ¦   «         S |S )Nr   r”  c                 ó.   — g | ]}|j         t          u ¯|‘ŒS r?   ©r�   Úbytes©rA   Úys     rD   rÑ   z.Output._process_copy_chunk.<locals>.<listcomp>ç  s+   € ð ð ð Ø�Q”[¥EÐ)Ð)€QÐ)Ð)Ð)rF   rø  ©r€   rÏ   s     rD   Ú_process_copy_chunkzOutput._process_copy_chunkä  sS   € Øð Øˆ„d„n�EÐ!Ð! Q r¤U¤_½EÐ%AÐ%Aðð Øðñ ô ð ð 
€(rF   c                 ó’  ‡‡— | j         d         Šd„ |D ¦   «         Š |t          ‰¦  «        ¦  «        }	 ˆˆfd„|D ¦   «         S # t          $ r" t                               ¦   «         d         }Y nw xY w	 t          |¦  «        }n# t          $ r t          ‰¦  «        }Y nw xY w|                      || j         ‰|         fd¦  «         d S )Nr   c                 ó   — g | ]
}|d          ‘ŒS rú   r?   rú  s     rD   rÑ   z6Output._process_tuple_chunk_Column.<locals>.<listcomp>ð  s   € ÐÐÐ�€qˆ„tÐÐÐrF   c                 ó2   •— g | ]} ‰‰|         ¦  «        ‘ŒS r?   r?   )rA   rô   ÚlrS  s     €€rD   rÑ   z6Output._process_tuple_chunk_Column.<locals>.<listcomp>õ  s%   ø€ Ð
#Ð
#Ð
#˜Aˆ6ˆ6�!�A”$‰<Œ<Ð
#Ð
#Ð
#rF   r   )rÁ  rH  Ú	Exceptionrƒ   Úexc_infoÚnextÚStopIterationÚ_raise_column_tuple_error)r€   rÏ   Úranger“   rF  rô   r  rS  s         @@rD   Ú_process_tuple_chunk_Columnz"Output._process_tuple_chunk_Columní  sï   øø€ ØŒ?˜1Ô€&àÐ�QÐÑÔ€!ð €e�C�‰FŒF�m„m€!ðØ
#Ð
#Ð
#Ð
#Ð
# Ð
#Ñ
#Ô
#Ð#øÝ	ð ð ð Ý�<Š<‰>Œ>˜!Ô€5€5€5ðøøøðÝˆA�w„w€1€1øÝ	ð ð ð Ý
ˆ1�v„v€1€1€1ðøøøà× Ò  ¨¬¸!¸A¼$¸À!ÑDÔDÐDÐDÐDs#   µA Á)A0Á/A0Á4B ÂB ÂB c                 óX   ‡— | j         Šˆfd„ || j        || j        ¦  «        D ¦   «         S )Nc                 ó&   •— g | ]} ‰|¦  «        ‘ŒS r?   r?   )rA   rû  Úrcs     €rD   rÑ   z3Output._process_tuple_chunk_Row.<locals>.<listcomp>  s1   ø€ ð 
ð 
ð 
àð €2€a�5„5ð
ð 
ð 
rF   )rÂ  rÁ  r  )r€   rÏ   Úprocr  s      @rD   Ú_process_tuple_chunk_RowzOutput._process_tuple_chunk_Rowÿ  sK   ø€ ð Ô€"ð
ð 
ð 
ð 
àˆD�” ! TÔ%CÑDÔDð
ñ 
ô 
ð rF   c                 ó0   —  || j         || j        ¦  «        S r>   )rÁ  r  )r€   rÏ   r  s      rD   Ú_process_tuple_chunkzOutput._process_tuple_chunk	  s   € Ø	ˆˆdŒo˜q $Ô"@Ñ	AÔ	AÐArF   c                 ó–  — t          ||         ¦  «        }t          |¦  «        dk    r|dd…         dz   }t          j        dddd|›d	| j        |         ›d
| j        j                             | j        j	        |         ¦  «        pd›d�fd|fddt          |¦  «        ff¦  «        }| j        j                             || |¬¦  «         dS )zfor column processingr1   Nr=  r>  r@  ©rI   z--CIOrK   zfailed to unpack column ú, ú::ú	<unknown>ú, from wire dataó   D©ó   Hz!Try casting the column to 'text'.rD  ©r}  rF  )ra   rH  rJ  rK  Úcolumn_namesrk   rå   rÇ   r¿  Úpg_column_typesrb   rI  )r€   rF  rM  rN  rO  r  Úems          rD   r  z Output._raise_column_tuple_error  só   € õ 
ˆc�'ŒlÑ	Ô	€$Ýˆ�Y„Y�‚^€^à
ˆs�ˆsŒ)�fÑ
€4åÔØØØ€DØ€W€WØ	Ô�wÔÐÐØ	„]Ô×*Ò*Ø
„nÔ$ WÔ-ñô ð à
ðð ðð ð 	ˆ$€<Ø.Ø�#ˆg‰,Œ,Ððñ ô €"ð „-Ô×(Ò(¨°tÀUÐ(ÑKÔKÐKÐKÐKrF   c                 ó   — | j         rdS dS )NrÐ  Úopen)rÐ  r¹  s    rD   ÚstatezOutput.state%  s   € à	„[ð Ø
ˆ(à
ˆ&rF   c                 óš   — | j         �Ct          | j        j                             | j                              ¦   «         ¦  «        ¦  «        S d S r>   )rÀ  rá   rk   rå   r²   r»   r¹  s    rD   r  zOutput.column_names,  sA   € à	„\ÐÝ
ˆtŒ}Ô"×*Ò*¨4¬<×+<Ò+<Ñ+>Ô+>Ñ?Ô?Ñ
@Ô
@Ð@ð ÐrF   c                 ó<   ‡ — ‰ j         �ˆ fd„‰ j         D ¦   «         S d S )Nc                 óZ   •— g | ]'}‰j         j                             |d          ¦  «        ‘Œ(S ©rÍ   ©rk   rå   rÊ   ©rA   rÏ   r€   s     €rD   rÑ   z'Output.column_types.<locals>.<listcomp>5  s0   ø€ Ð
IÐ
IÐ
I°qˆ4Œ=Ô×,Ò,¨Q¨q¬TÑ2Ô2Ð
IÐ
IÐ
IrF   ©rÀ  r¹  s   `rD   Úcolumn_typeszOutput.column_types2  s/   ø€ à	„\ÐØ
IÐ
IÐ
IÐ
I¸D¼LÐ
IÑ
IÔ
IÐIð ÐrF   c                 ó6   — | j         �d„ | j         D ¦   «         S d S )Nc                 ó   — g | ]
}|d          ‘ŒS r#  r?   rü   s     rD   rÑ   z*Output.pg_column_types.<locals>.<listcomp>;  ó   € Ð
&Ð
&Ð
&�Aˆ1ˆQŒ4Ð
&Ð
&Ð
&rF   r&  r¹  s    rD   r  zOutput.pg_column_types8  s(   € à	„\ÐØ
&Ð
&˜œÐ
&Ñ
&Ô
&Ð&ð ÐrF   c                 ó*   ‡ — ˆ fd„‰ j         D ¦   «         S )Nc                 óN   •— g | ]!}‰j         j                             |¦  «        ‘Œ"S r?   ©rk   rå   rÇ   r%  s     €rD   rÑ   z+Output.sql_column_types.<locals>.<listcomp>@  s<   ø€ ð 
ð 
ð 
àð „=Ô×(Ò(¨Ñ+Ô+ð
ð 
ð 
rF   )r  r¹  s   `rD   Úsql_column_typeszOutput.sql_column_types>  s1   ø€ ð
ð 
ð 
ð 
àÔ ð
ñ 
ô 
ð rF   c                 ól   — | j         �,| j                              ¦   «                              d¦  «        S dS )z+The completion message's command identifierNÚascii)Ú_complete_messageÚextract_commandr¨   r¹  s    rD   ÚcommandzOutput.commandE  s6   € à	ÔÐ'Ø
Ô
 ×
0Ò
0Ñ
2Ô
2×
9Ò
9¸'Ñ
BÔ
BÐBð (Ð'rF   c                 óF   — | j         �| j                              ¦   «         S dS )z%The completion message's count numberN)r1  Úextract_countr¹  s    rD   r   zOutput.countJ  s(   € à	ÔÐ'Ø
Ô
 ×
.Ò
.Ñ
0Ô
0Ð0ð (Ð'rF   )+r¨  r©  rª  rÀ  rÁ  rÃ  rÄ  rÐ  rU   r¿  râ  r1  r	   rº  ÚweakrefÚrefrS   r   rÍ  rÒ  rÙ  rÜ  rã  rç  rê  rí  rñ  rõ  rý  r  r  r   r  r  r  Úpropertyr  r  r'  r  r.  r3  r   r?   rF   rD   r·  r·  j  s3  € € € € € Ø€Ø€Ø€Ø€à
€Ø€Ø€Ø€àÐàðð ñ „.ðð '.¤k¸ð ð ð ð ð"ð ð ðð ð ð
Kð Kð Kð7ð 7ð 7ð	ð 	ð 	ð
ð 
ð 
ðð ð ð ð ð ð
ð ð ð 	ð 	ð 	ðð ð ð 38ð Eð Eð Eð Eð& 
ðð ð ð ð +8ð Bð Bð Bð BðLð Lð Lð2 ðð ñ „(ðð ðAð Añ „(ðAð
 ðJð Jñ „(ðJð
 ð'ð 'ñ „(ð'ð
 ðð ñ „(ððCð Cð Cð
1ð 1ð 1ð 1ð 1rF   r·  c                   ó   — e Zd ZdS )ÚChunksN)r¨  r©  rª  r?   rF   rD   r:  r:  O  s   € € € € € Ø€rF   r:  c                   ó¢   — e Zd ZdZd„ Zd„ Zej        j        ej	        j        ej
        j        ej        j        fd„Zeefej	        j        fd„ZdS )ÚFetchAll)r¿  râ  c              #   ó:   K  — dt          | ¦  «        j        fV — d S )NÚtype)r>  r¨  r¹  s    rD   Ú_e_metaszFetchAll._e_metas[  s&   è è € Ø	•�d‘”Ô$Ð%Ð%Ð%Ð%Ð%Ð%rF   c                 óp   — || _         || _        |j        | _        t                               | d¦  «         d S )NÚ )r¿  râ  rk   r·  r   )r€   r¿  râ  s      rD   r   zFetchAll.__init__^  s4   € Ø€$„.Ø€$„/ØÔ$€$„-Ý‡/‚/�$˜ÑÔÐÐÐrF   c           
      óà  — | j         }|                      |                      ¦   «         t          j        fz   ¦  «        | _        | j                             | j        | ¦  «         | j        j        }| j        j	        t          j        k    �re |¦   «          | j                             ¦   «         D �]#}|j        t          u s||j        k    r d S |j        |k    r#| j                             ¦   «          d | _         d S |j        |k    r*|| _        | j                             ¦   «          d | _         d S |j        ||fv rŒŽ| j                             ¦   «          | j        j        €od| j        _        t          j        ddddt)          |j        ¦  «        z   ff¦  «        | j        _        | j        j                             | j        j        | ¬¦  «          d S | j        j	        t          j        k    �°cd S d S )NFr@  )rI   z--000rK   zunexpected message type ©r}  )Ú_expectrÙ  rç  rJ  ÚSynchronizeMessageÚ_xactrk   Ú_pq_pushÚ_pq_stepr  rÕ  ÚCompleteÚmessages_receivedr�   rß   r>  Ú_pq_completer1  ÚfatalrK  ra   r€  rå   rI  )r€   ÚnullÚcompleteÚbindcompleteÚparsecompleteÚexpectÚSTEPrÏ   s           rD   rº  zFetchAll._initd  sè  € ð Œ<€&Ø�yŠyØ×ÒÑÔ�WÔ7Ð9Ñ9ñô €$„*ð „-×Ò˜œ TÑ*Ô*Ð*ð 
ŒÔ	€$ØŒ
Ô�DœMÒ)Ñ)Ø€4�6„6€6ØŒJ×(Ò(Ñ*Ô*ð  ñ  €qØ„{•eÐÐ˜v¨¬Ò/Ð/à€V€VØ	
Œ�4Šˆà	„]×ÒÑ!Ô!Ð!Ø€T„ZØ€V€VØ	
Œ�8Ò	Ð	Ø€TÔØ	„]×ÒÑ!Ô!Ð!ð €T„ZØ€V€VØ	
Œ�L -Ð0Ð	0Ð	0à	ð 
„]×ÒÑ!Ô!Ð!ØŒ
ÔÐ Ø€d„jÔÝ!(Ô!4ØØØÐ(­4°´©<¬<Ñ7Ð8ð6ñ "	ô "	€d„jÔð
 „mÔ×,Ò,¨T¬ZÔ-EÐQUÐ,ÑVÔVÐVØ€V€VðE 	Œ
Ô�DœMÒ)Ñ)Ð)Ð)Ð)Ð)rF   c                 óv  ‡— | j         }|€t          ‚| j        j        }|j        t
          j        ur+|j        s$ |¦   «          |j        t
          j        ur|j        ¯$|j        �7| j        j	         
                    |j        t          | d| ¦  «        p| ¬¦  «         |j        s"d | _         |                      ¦   «          t          ‚ˆfd„|j        d         d         D ¦   «         }|                      |¦  «        }|j        d         d         dd …         D ]}t          |dd ¦  «        |k    r|| _        Œ|j        d= |S )Nr�  rC  c                 ó&   •— g | ]}|j         ‰v ¯|‘ŒS r?   rµ  )rA   rû  Ú
data_typess     €rD   rÑ   z%FetchAll.__next__.<locals>.<listcomp>²  s0   ø€ ð ð ð Ø	
Ø„k�ZÐÐð ØÐÐrF   r   r   éýÿÿÿr>  )rF  r  rk   rH  r  rÕ  rI  Ú	completedrL  rå   r’  r€  r�  rÒ  Ú_process_chunkr1  )r€   rU  rN  rÏ   rR  r   r“   rû  s    `      rD   Ú__next__zFetchAll.__next__–  s\  ø€ ð „j€!à€YÝ	Ðð 
ŒÔ	€$Ø	Œ•t”}Ð$Ð$¨Q¬[Ð$Ø€4�6„6€6ð 	
Œ•t”}Ð$Ð$¨Q¬[Ð$ð „WÐØ„=Ô×"Ò" 1¤?½gÀdÈMÐ[_Ñ>`Ô>`Ð>hÐdhÐ"ÑiÔiÐið 
Œð à€4„:Ø‡:‚:�<„<€<Ý	Ððð ð ð ØŒk˜!Œn˜QÔðñ ô €%ð ×Ò˜%Ñ Ô €!ð Œ;�qŒ>˜!Ô˜R˜S˜SÔ!ð ð €aÝˆa�˜ÑÔ (Ò*Ð*Ø€DÔøð „k�!€nØ	
€(rF   N)r¨  r©  rª  r¬  r?  r   rJ  ÚNullr>  rI  ÚBindCompleteÚParseCompleterº  rß   rù  rY  r?   rF   rD   r<  r<  Y  s—   € € € € € Ø*€ð&ð &ð &ðð ð ð 
ŒÔ	ØÔÔ"ØÔ%Ô*ØÔ'Ô,ð	0ð 0ð 0ð 0ðf �eˆ}ØÔÔ"ð,ð ,ð ,ð ,ð ,ð ,rF   r<  c                   ó4   — e Zd Zej        j        Zej        Z	dS )ÚSingleXactCopyN)
r¨  r©  rª  rJ  ÚCopyToBeginr>  rD  r<  rý  rX  r?   rF   rD   r^  r^  Ä  s!   € € € € € ØÔÔ#€ØÔ.€€€rF   r^  c                   ó&   — e Zd Zej        j        ZdS )ÚSingleXactFetchN)r¨  r©  rª  rJ  ÚTupler>  rD  r?   rF   rD   ra  ra  È  s   € € € € € ØŒ=Ô€€€rF   ra  c                   óh   — e Zd ZdZej        Zd„ Zd„ Ze	d„ ¦   «         Z
e	d„ ¦   «         Zd„ Zefd„ZdS )	ÚMultiXactStreami   c              #   ó@   K  — d| j         fV — d| j        j        fV — d S )NÚ	chunksizer>  )rf  r�   r¨  r¹  s    rD   r?  zMultiXactStream._e_metasÐ  s5   è è € Ø	�d”nÐ%Ð%Ð%Ð%Ø	�”Ô(Ð)Ð)Ð)Ð)Ð)Ð)rF   c                 óŽ   — || _         || _        |j        | _        t                               | |pt          | ¦  «        ¦  «         d S r>   )r¿  râ  rk   r·  r   rS   )r€   r¿  râ  rU   s       rD   r   zMultiXactStream.__init__Ô  s?   € Ø€$„.Ø€$„/ØÔ$€$„-Ý‡/‚/�$˜	Ð-¥R¨¡X¤XÑ.Ô.Ð.Ð.Ð.rF   c                 ó   — dS ©z6
		Generate the commands needed to bind the cursor.
		Nr?   r¹  s    rD   Ú_bindzMultiXactStream._bindÚ  r»  rF   c                 ó   — dS ri  r?   r¹  s    rD   Ú_fetchzMultiXactStream._fetchà  r»  rF   c                 óà   — |                       ¦   «         | _        |                      |                      ¦   «         | j        z   ¦  «        | _        | j                             | j        | ¦  «         d S r>   )rl  Ú_commandrÙ  rj  rF  rk   rG  r¹  s    rD   rº  zMultiXactStream._initæ  sS   € Ø—+’+‘-”-€$„-Ø�yŠy˜Ÿš™œ¨¬Ñ5Ñ6Ô6€$„*Ø„-×Ò˜œ TÑ*Ô*Ð*Ð*Ð*rF   c                 óâ  ‡— | j         }|€t          ‚| j        j        j        |u r| j                             ¦   «          ˆfd„|                     ¦   «         D ¦   «         }t          |¦  «        | j        k    r@|  	                    | j
        ¦  «        | _         | j                             | j         | ¦  «         n$d | _         |                      ¦   «          |st          ‚|                      |¦  «        }|S )Nc                 ó&   •— g | ]}|j         ‰u ¯|‘ŒS r?   rµ  )rA   rû  Ú
tuple_types     €rD   rÑ   z,MultiXactStream.__next__.<locals>.<listcomp>ô  s,   ø€ ð ð ð Ø	
 q¤{°jÐ'@Ð'@€1Ð'@Ð'@Ð'@rF   )rF  r  rk   rÆ  rÕ  rK  rJ  rH  rf  rÙ  rn  rG  rÒ  rX  )r€   rq  rÏ   r   s    `  rD   rY  zMultiXactStream.__next__ë  só   ø€ Ø
„j€!Ø€YÝ	Ðà	„]ÔÔ˜aÐÐØ„=×ÒÑÔÐðð ð ð Ø×!Ò!Ñ#Ô#ðñ ô €%õ 	ˆ�Z„Z�4”>Ò!Ð!à—	’	˜$œ-Ñ(Ô(€4„:Ø„=×Ò˜$œ* dÑ+Ô+Ð+Ð+ð €4„:Ø‡:‚:�<„<€<Ø
ð å
ÐØ
×
Ò
˜eÑ
$Ô
$€%Ø	€,rF   N)r¨  r©  rª  rf  r·  r  rX  r?  r   r	   rj  rl  rº  rß   rY  r?   rF   rD   rd  rd  Ë  s�   € € € € € Ø€àÔ-€ð*ð *ð *ð/ð /ð /ð ðð ñ „.ðð
 ðð ñ „.ðð
+ð +ð +ð
 "'ð ð ð ð ð ð rF   rd  c                   ó"   — e Zd Zej        Zd„ ZdS )ÚMultiXactInsideBlockc                 óR   — |                       | j        ¦  «        t          j        fz   S r>   )rí  rf  rJ  rE  r¹  s    rD   rl  zMultiXactInsideBlock._fetch
  s*   € ð 
×	Ò	˜Tœ^Ñ	,Ô	,ÝÔÐ ñ
!ð !rF   N)r¨  r©  rª  rd  rã  rj  rl  r?   rF   rD   rs  rs    s+   € € € € € Ø	Ô	$€ð!ð !ð !ð !ð !rF   rs  c                   ó"   — e Zd Zej        Zd„ ZdS )ÚMultiXactOutsideBlockc                 óT   — |                       d| j        ¦  «        t          j        fz   S )NT)rñ  rf  rJ  rE  r¹  s    rD   rl  zMultiXactOutsideBlock._fetch  s,   € ð 
×	Ò	˜4 ¤Ñ	0Ô	0ÝÔÐ ñ
!ð !rF   N)r¨  r©  rª  rd  rê  rj  rl  r?   rF   rD   rv  rv    s+   € € € € € Ø	Ô	'€ð	!ð 	!ð 	!ð 	!ð 	!rF   rv  c                   ó˜   — e Zd Zej        Zd„ Zd„ Zd„ Zd„ Z	d„ Z
 ee	e
¬¦  «        Z[	[
d„ Zej        j        fd„Zd	„ Zdd„Zd„ Zdd„Zd
S )ÚCursorc              #   ó0   K  — d| j         rdndfV — dV — d S )Nrï  r\   ÚBACKWORD)r>  ry  )rï  r¹  s    rD   r?  zCursor._e_metas%  s4   è è € Ø	 4¤>ÐA�i�i°zÐBÐBÐBÐBØÐÐÐÐÐrF   c                 óV   —  t          | ¦  «        | j        | j        | j        d ¦  «        S r>   )r>  r¿  râ  rk   r¹  s    rD   ÚclonezCursor.clone)  s$   € Ø	�ˆd‰Œ�D”N D¤O°T´]ÀDÑ	IÔ	IÐIrF   c                 óÂ   — |p|j         | _         || _        || _        d| j        d<   | j        €d| _        t
                               | |pt          | ¦  «        ¦  «         d S )NTrï  )rk   rU   )rk   r¿  râ  Ú__dict__r¬  r·  r   rS   )r€   r¿  râ  rk   rU   s        rD   r   zCursor.__init__,  s_   € ØÐ0˜iÔ0€$„-Ø€$„.Ø€$„/Ø#€$„-�ÑØ	„^ÐØ.€4„?Ý‡/‚/�$˜	Ð-¥R¨¡X¤XÑ.Ô.Ð.Ð.Ð.rF   c                 ó   — | j         d         S ©Nrï  )r  r¹  s    rD   Úget_directionzCursor.get_direction5  s   € Ø	Œ�{Ô	#Ð#rF   c                 ó4   — t          |¦  «        | j        d<   d S r�  )rg   r  ©r€   rž   s     rD   Úset_directionzCursor.set_direction7  s   € Ý0°Ñ7Ô7€$„-�ÑÐÐrF   )ÚfgetÚfsetc                 óL   — |�t          |¦  «        }| j         | z   S | j        S r>   )rg   rï  )r€   rï  s     rD   Ú
_which_wayzCursor._which_way?  s2   € ØÐÝ  Ñ+Ô+€9à”NÐ"¨9 }Ñ5Ð
6Ð6à
Œ.ÐrF   c                 óZ  ‡— | j         �k|                      |                      ¦   «         t          j        fz   ¦  «        }| j                             || ¦  «         | j                             ¦   «          dS |                      |                      ¦   «         t          j        fz   ¦  «        }| j                             || ¦  «         | j                             ¦   «          | 	                    ¦   «         D ]¹}|j
        |k    r¬| j        j        Š|| _        ‰                     | j        ¦  «        | _        ‰                     | j        ¦  «        | _        ‰                     | j        d¦  «        | _        d„ | j        D ¦   «         | _        t)          ˆfd„| j        D ¦   «         ¦  «        | _        ŒºdS )z�
		Based on the cursor parameters and the current transaction state,
		select a cursor strategy for managing the response from the server.
		Nr   c                 óB   — g | ]}|€t           j        nt           j        ‘ŒS r>   )rJ  ÚStringFormatÚBinaryFormatrü   s     rD   rÑ   z Cursor._init.<locals>.<listcomp>`  s=   € ð ð ð ð ð 
ˆõ ÔÐåÔðð ð rF   c                 ó"   •— g | ]}|p‰j         ‘ŒS r?   rm  ©rA   rÏ   rå   s     €rD   rÑ   z Cursor._init.<locals>.<listcomp>f  s-   ø€ ð ð ð Ø€aÐˆ5Œ<ðð ð rF   )r¿  rÙ  rê  rJ  rE  rk   rG  rK  rÜ  rJ  r>  rå   rÀ  r½   rÄ  r0  rÂ  rÓ   rÁ  rÃ  rß   )r€   Ú	tupledescrÏ   r�  rå   s       @rD   rº  zCursor._initG  s®  ø€ ð 
„^ÐØ‡y‚y�×$Ò$Ñ&Ô&­'Ô*DÐ)FÑFÑGÔG€1Ø„=×Ò˜!˜TÑ"Ô"Ð"Ø„=×ÒÑÔÐÐÐà‡y‚y�×%Ò%Ñ'Ô'­7Ô+EÐ*GÑGÑHÔH€1Ø„=×Ò˜!˜TÑ"Ô"Ð"Ø„=×ÒÑÔÐØ×ÒÑ!Ô!ð ð €qØ„v�ÒÐØŒ]Ô €UØ€T„\Ø ×.Ò.¨t¬|Ñ<Ô<€TÔØ"×1Ò1°$Ô2EÑFÔF€TÔà×/Ò/Ø
„l�Añô €T„_ðð ð Œð	ñ ô €TÔõ ð ð ð ð Ø!%¤ðñ ô ñ ô €T„_øð!ð rF   c                 óZ   — |                       | j        d¦  «        }|st          ‚|d         S )Nr   r   )rl  rï  r  )r€   Úresults     rD   rY  zCursor.__next__j  s/   € Ø�;Š;�t”~ qÑ)Ô)€&Ø	ð Ý	Ðà
�Œ)ÐrF   Nc                 óh   — |dk    rg S |                       |¦  «        }|                      ||¦  «        S r–   )r‰  rl  )r€   rì  rï  Údirs       rD   ÚreadzCursor.readq  s5   € Ø�‚]€]Ø
€9Ø�Š˜	Ñ"Ô"€#Ø	�Š�S˜(Ñ	#Ô	#Ð#rF   c                 ó:  — |                       |                      ||¦  «        t          j        fz   ¦  «        }| j                             || ¦  «         | j                             ¦   «          |                      d„ |                     ¦   «         D ¦   «         ¦  «        S )Nc              3   ó6   K  — | ]}|j         t          u ¯|V — Œd S r>   r   rú  s     rD   rE   z Cursor._fetch.<locals>.<genexpr>~  s7   è è € ð ð Ø	
 q¤{µeÐ';Ð';€1Ð';Ð';Ð';Ð';ðð rF   )	rÙ  rñ  rJ  rE  rk   rG  rK  Ú_process_tuplerJ  )r€   rï  rì  rÏ   s       rD   rl  zCursor._fetchw  s¤   € Ø
‡i‚iØ×Ò�Y Ñ)Ô)ÝÔÐ ñ!ñô €!ð „-×Ò˜˜DÑ!Ô!Ð!Ø„-×ÒÑÔÐØ	×	Ò	ð ð Ø×!Ò!Ñ#Ô#ðñ ô ñ 
ô 
ð rF   ÚABSOLUTEc                 ó  — | j                              ||¦  «        }|�-|                     ¦   «         | j                              ¦   «         vrt	          d|›�¦  «        ‚|                     ¦   «         }|dk    r|dvr| j        du rdnd}n>|dk     r|dk    r| }d}| j        du r$|dk    r	|dk    rd}n|dk    r| }n|d	k    rd
}nd	}|dv ró|dk    rX|                      t          |¦  «                             d¦  «        t          |¦  «                             d¦  «        ¦  «        }�n6|dk     r8|                      t          | ¦  «                             d¦  «        d¦  «        }nø|                      t          |¦  «                             d¦  «        t          |¦  «                             d¦  «        ¦  «        }n¡|d	k    r7|                      t          |¦  «                             d¦  «        d¦  «        }nd|                      dd¦  «        |                      dd¦  «        z   |                      t          |¦  «                             d¦  «        d¦  «        z   }|  	                    |t          j        fz   ¦  «        }| j                             || ¦  «         | j                             ¦   «          d }t          j        j        }|                     ¦   «         D ]-}t%          |dd ¦  «        |k    r|                     ¦   «         } nŒ.|S )Nzunknown whence parameter, ÚALL)r]   r\   Fr]   r\   r   ÚRELATIVEr™  ÚFROM_END)rœ  r]   r\   r0  s   BACKWARDs   ABSOLUTErF   s   LASTs   NEXTr>  )Ú_seek_whence_maprÂ   r_   Úvaluesrf   rï  rõ  rb   r¥   rÙ  rJ  rE  rk   rG  rK  rI  r>  rJ  r�  r5  )	r€   Úoffsetrô  ÚrwhenceÚcmdrÏ   r   rN  Úcms	            rD   ÚseekzCursor.seek‚  s)  € ØÔ!×%Ò% f¨fÑ5Ô5€'Ø€_˜Ÿš™œØÔ×ÒÑ Ô ð!ð !å	ˆØ%+ VÐ-ñ
ô 
ð ð �MŠM‰OŒO€'àˆu‚_€_ØÐ,Ð,Ð,Ø œN¨eÐ3Ð3ˆjˆj¸€Gøàˆq‚j€j�W 
Ò*Ð*ØˆW€FØ€Gà
„n˜ÐÐØ�‚€˜7 iÒ/Ð/Ø€W€Wà�:ÒÐØˆw€f€fØ
�ZÒ
Ð
Ø€g€gà€gàÐ3Ð3Ð3Ø�‚o€oØ
×
Ò
Ýˆ�[„[×Ò˜Ñ Ô ¥# g¡,¤,×"5Ò"5°gÑ">Ô">ñô €C�Cð �‚z€zØ×ÒÝ	ˆ6ˆ'�l„l×Ò˜'Ñ"Ô" Kñô €S€Sð ×ÒÝ	ˆ&�k„k×Ò˜Ñ!Ô!¥3 w¡<¤<×#6Ò#6°wÑ#?Ô#?ñô €S€Sð �*ÒÐØ	×	Ò	�#˜f™+œ+×,Ò,¨WÑ5Ô5°{Ñ	CÔ	C€3€3ð 
×	Ò	˜#˜wÑ	'Ô	'Ø×Ò�S˜'Ñ"Ô"ñ
#à×Ò•S˜‘[”[×'Ò'¨Ñ0Ô0°+Ñ>Ô>ñ
?€3ð ‡i‚i�•wÔ1Ð3Ñ3Ñ5Ô5€!Ø„-×Ò˜˜DÑ!Ô!Ð!Ø„-×ÒÑÔÐà
€%ÝÔÔ"€(Ø×ÒÑ!Ô!ð 
ð 
€bÝˆb�&˜$ÑÔ 8Ò+Ð+Ø×ÒÑÔ€EØ	€Eð ,ð
 
€,rF   rÎ   )r™  )r¨  r©  rª  r·  r  r˜  r?  r}  r   r‚  r…  r8  rï  r‰  rJ  ÚTupleDescriptorr>  rº  rY  r•  rl  r¤  r?   rF   rD   ry  ry  #  s  € € € € € ØÔ1€ðð ð ðJð Jð Jð/ð /ð /ð$ð $ð $ð8ð 8ð 8àˆXØ	Ø	ðñ ô €ð �Mðð ð ð Ô%Ô*ð!ð !ð !ð !ðFð ð ð$ð $ð $ð $ð	ð 	ð 	ð?ð ?ð ?ð ?ð ?ð ?rF   ry  c                   óH   — 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S )ÚSingleExecutionNc                 ó   — |j         | _        d S r>   )ÚprepareÚ_prepare©r€   rk   s     rD   r   zSingleExecution.__init__Å  s   € ØÔ"€$„-€-€-rF   c                 ó<   —  |                       |¦  «        j        |Ž S r>   )rª  Ú	load_rows©r€   Úqueryrâ  s      rD   r­  zSingleExecution.load_rowsÈ  s   € Ø	'ˆ�Š�uÑ	Ô	Ô	'¨Ð	4Ð4rF   c                 ó<   —  |                       |¦  «        j        |Ž S r>   )rª  Úload_chunksr®  s      rD   r±  zSingleExecution.load_chunksË  s   € Ø	)ˆ�Š�uÑ	Ô	Ô	)¨:Ð	6Ð6rF   c                 ó2   —  |                       |¦  «        |Ž S r>   )rª  r®  s      rD   Ú__call__zSingleExecution.__call__Î  s   € Ø	ˆ�Š�uÑ	Ô	˜zÐ	*Ð*rF   c                 ó<   —  |                       |¦  «        j        |Ž S r>   )rª  Údeclarer®  s      rD   rµ  zSingleExecution.declareÑ  s   € Ø	%ˆ�Š�uÑ	Ô	Ô	% zÐ	2Ð2rF   c                 ó<   —  |                       |¦  «        j        |Ž S r>   )rª  Úrowsr®  s      rD   r·  zSingleExecution.rowsÔ  s   € Ø	"ˆ�Š�uÑ	Ô	Ô	" JÐ	/Ð/rF   c                 ó<   —  |                       |¦  «        j        |Ž S r>   )rª  Úchunksr®  s      rD   r¹  zSingleExecution.chunks×  ó   € Ø	$ˆ�Š�uÑ	Ô	Ô	$ jÐ	1Ð1rF   c                 ó<   —  |                       |¦  «        j        |Ž S r>   )rª  Úcolumnr®  s      rD   r¼  zSingleExecution.columnÚ  rº  rF   c                 ó<   —  |                       |¦  «        j        |Ž S r>   )rª  Úfirstr®  s      rD   r¾  zSingleExecution.firstÝ  s   € Ø	#ˆ�Š�uÑ	Ô	Ô	# ZÐ	0Ð0rF   )r¨  r©  rª  rk   r   r­  r±  r³  rµ  r·  r¹  r¼  r¾  r?   rF   rD   r§  r§  Ã  s    € € € € € Ø€ð#ð #ð #ð5ð 5ð 5ð7ð 7ð 7ð+ð +ð +ð3ð 3ð 3ð0ð 0ð 0ð2ð 2ð 2ð2ð 2ð 2ð1ð 1ð 1ð 1ð 1rF   r§  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ej        fd„Zd„ Zefd„Zd„ Zd„ Zed	efd
„¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zd„ Zd„ Z e!j"        e!j#        fd„Z$d„ Z%d„ Z&d„ Z'e'Z(d„ Z)d„ Z*d„ Z+d„ Z,d„ Z-d„ Z.d d„Z/dS )!Ú	StatementNc           	   #   ó¾  K  — d d| j         z   dz   fV — t          | j        d¦  «        �rÇ| j        j                             d¦  «        }|��¥|                     ¦   «         �r�	 t          |¦  «        }t          | j        ¦  «        }t          d 
                    |d |…                              ¦   «         ¦  «        ¦  «        }d 
                    |                     ¦   «         ¦  «        }|                     dd|¦  «        dz   }|                     dd	¦  «        }|                     dd|¦  «        dz   }|                     d|¦  «        }|d
k    rt          |¦  «        }|||…         }||z
  }|                     ¦   «         }|dz
  d	z  dz   d||fz  z   }|                     |¦  «         dt"          j         
                    |¦  «        fV — n%#  dd l}	d|	                     d¬¦  «        fV — Y nxY w| j        }
|
�d|
fV — | j        }| j        }|�C|�9ddd 
                    d„ t1          ||¦  «        D ¦   «         ¦  «        z   dz   fV — d S d|fV — d S |�d|fV — d S d S )Nú[ú]r€  rD  ú
r   r   ú	ú r”  ú^z [line %d, character %d] ÚLINEF)r   Úsql_parameter_typesÚresultsú(r  c                 ó@   — g | ]\  }}d                       ||¦  «        ‘ŒS )z	{!r} {!r})rh  )rA   ÚnÚts      rD   rÑ   z&Statement._e_metas.<locals>.<listcomp>  s9   € ð ð ð Ù#& 1 Q€k×Ò˜˜AÑÔðð ð rF   ú)Úsql_column_namesr.  )r  ÚhasattrrF  r€  rÂ   ÚisdigitrÞ   rb   r   rH  ÚjoinÚ
splitlinesr   rÈ  ÚrfindÚfindrà   ÚosÚlinesepÚ	tracebackÚ
format_excrÉ  r  r.  rº   )r€   ÚposÚqÚline_noÚbovÚeovÚviewÚdlinesÚmarkerrÙ  ÚsptÚcnÚcts                rD   r?  zStatement._e_metasê  sÍ  è è € Ø	ˆs�T”ZÑ #Ñ%Ð&Ð&Ð&Ð&ÝˆTŒZ˜Ñ)Ô)ñ '7ð 
ŒÔ	!×	%Ò	% dÑ	+Ô	+€3Ø	�o˜#Ÿ+š+™-œ-�oð!7Ýˆs‰8Œ8€Så	ˆTŒ[Ñ	Ô	€Qåˆt�yŠy˜˜4˜C˜4œ×+Ò+Ñ-Ô-Ñ.Ô.Ñ/Ô/€Sà	�Š�1—<’<‘>”>Ñ	"Ô	"€QØ�wŠw�t˜Q Ñ$Ô$ qÑ(€Wð 
�Š�4˜Ñ	Ô	€Qð �7Š7�4˜˜CÑ Ô  1Ñ$€Sà�6Š6�$˜ÑÔ€SØˆrŠ	ˆ	Ý�‰FŒF€cØˆc�#ˆgŒJ€Tàˆs‰7€Sà�oŠoÑÔ€VØ�A‘˜‰} Ñ#Ø! G¨S >Ñ1ñ€Vð ‡]‚]�6ÑÔÐØ•B”J—O’O FÑ+Ô+Ð,Ð,Ð,Ð,Ð,øð7ØÐÐÐØ�I×(Ò(¨uÐ(Ñ5Ô5Ð6Ð6Ð6Ð6Ð6Ð6øøøØÔ €#Ø€_Ø
 Ð	%Ð%Ð%Ð%ØÔ€"ØÔ€"Ø€^Ø€nàØˆ4�9Š9ð ð Ý*-¨b°©*¬*ðñ ô ñ ô ñ à
ñðð ð ð ð ð ð ˜rÐ
"Ð"Ð"Ð"Ð"Ð"Ø	€~Ø
˜bÐ	!Ð!Ð!Ð!Ð!Ð!ð €~s   Á"E)G Ç G.c                 ó˜   — |                       | j        d | j        ¦  «        }|                     ¦   «          |                     ¦   «          |S r>   )r�   rk   r   rº  Ú_fini)r€   Úpss     rD   r}  zStatement.clone&  s:   € Ø‡~‚~�d”m T¨4¬;Ñ7Ô7€"Ø‡(‚(�*„*€*Ø‡(‚(�*„*€*Ø	€)rF   c                 ó  — || _         || _        |pt          | ¦  «        | _        d | _        d | _        |j                             | j        ¦  «        d         | _        |s"|j	         
                    | | j        ¦  «         d S d S r–   )rk   r   rS   Ústatement_idrF  rÐ  rå   rœ   rß  rÆ  Úregister_statement)r€   rk   rê  r   rÊ  s        rD   r   zStatement.__init__,  s†   € ð €$„-Ø€$„+Ø"Ð.¥b¨¡h¤h€$ÔØ€$„*Ø€$„+Ø"œ.×0Ò0°Ô1BÑCÔCÀAÔF€$Ôà	ð ?à„;×!Ò! $¨Ô(=Ñ>Ô>Ð>Ð>Ð>ð?ð ?rF   c                 ó„   — d                      | j        j        | j        j        | j        j        j        | j        ¬¦  «        S )Nz<{mod}.{name}[{ci}] {state}>)ÚmodrÆ   r    r  )rh  r�   r©  r¨  rk   Ú	connectorÚ_pq_irir  r¹  s    rD   Ú__repr__zStatement.__repr__;  s?   € Ø	'×	.Ò	.Ø	ŒÔ	"Ø
Œ.Ô
!ØŒÔÔ'ØŒ:ð	 
/ñ 
ô 
ð rF   c                 ó0   —  || j         || j        ¦  «        S r>   )Ú	_input_ioÚ_raise_parameter_tuple_error)r€   râ  r  s      rD   rá  zStatement._pq_parametersC  s#   € Ø	ˆØ„>�:ØÔ$ñ
ô 
ð rF   c                 óš  — | j         j                             | j        |         ¦  «        pd}t	          ||         ¦  «        }t          |¦  «        dk    r|d d…         dz   }t          j        ddddd	t          |d
z   ¦  «        z   ›d|›d�fd|fddt          |¦  «        ff¦  «        }| j         j         	                    || |¬¦  «         d S )Nr  r1   r=  r>  r@  )rI   z--PIOrK   zcould not pack parameter ú$r   r  z for transferr  )r  z=Try casting the parameter to 'text', then to the target type.rD  r  )
rk   rå   rÇ   Úpg_parameter_typesra   rH  rJ  rK  rb   rI  )r€   rF  rM  rN  rO  rÉ   Úbad_datar  s           rD   ró  z&Statement._raise_parameter_tuple_errorM  s÷   € àŒÔ×-Ò-ØÔ˜7Ô#ñ	ô 	ð 	àð õ
 �#�g”,ÑÔ€(Ýˆ�]„]�RÒÐà�s˜�sŒm˜fÑ$€8åÔØØØ€DØ	�C�˜!‘ÑÔÑÐÐ˜s˜s˜sðð ð 	ˆ(ÐØJØ�#ˆg‰,Œ,Ðð
ñ 
ô 
€"ð „-Ô×(Ò(¨°tÀUÐ(ÑKÔKÐKÐKÐKrF   c                 ó�  — | j         j                             | j        |         ¦  «        pd}t	          ||         ¦  «        }t          |¦  «        dk    r|d d…         dz   }t          j        dddd|›d	| j        |         ›d
|›d�fd|fddt          |¦  «        ff¦  «        }| j         j         
                    || |¬¦  «         d S )Nr  r1   r=  r>  r@  r  rK   zcould not unpack column r  r  r  r  r  rD  r  )rk   rå   rÇ   r  ra   rH  rJ  rK  r  rb   rI  )r€   rF  rM  rN  rO  rÉ   r  r  s           rD   r  z#Statement._raise_column_tuple_errorh  sñ   € àŒÔ×-Ò-ØÔ˜Ô ñ	ô 	ð 	àð õ
 
ˆc�'ŒlÑ	Ô	€$Ýˆ�Y„Y�‚^€^à
ˆs�ˆsŒ)�fÑ
€4åÔØØØ€DØ€W€WˆdÔ Ô(Ð(Ð(¨#¨#¨#ðð ð 	ˆ$€<Ø.Ø�#ˆg‰,Œ,Ðð
ñ 
ô 
€"ð „-Ô×(Ò(¨°tÀUÐ(ÑKÔKÐKÐKÐKrF   Úreturnc                 ó<   — | j         r| j        �| j        �dS dS dS dS )NÚparsingÚ
describingrÐ  Úprepared)rÐ  rF  r   r¹  s    rD   r  zStatement.state�  s0   € à	„[ð Ø
„jÐØ„{ÐØˆIàˆLØ
ˆ(Ø	ˆrF   c                 óÐ   — | j         €|                      ¦   «          | j        �Ct          | j        j                             | j                             ¦   «         ¦  «        ¦  «        S d S r>   )rÐ  rç  rÀ  rá   rk   rå   r²   r»   r¹  s    rD   r  zStatement.column_namesŒ  sV   € à	„[ÐØ‡:‚:�<„<€<Ø	„\ÐÝ
ˆtŒ}Ô"×*Ò*¨4¬<×+<Ò+<Ñ+>Ô+>Ñ?Ô?Ñ
@Ô
@Ð@ð ÐrF   c                 ór   ‡ — ‰ j         €‰                      ¦   «          ‰ j        �ˆ fd„‰ j        D ¦   «         S d S )Nc                 óN   •— g | ]!}‰j         j                             |¦  «        ‘Œ"S r?   r$  r%  s     €rD   rÑ   z-Statement.parameter_types.<locals>.<listcomp>˜  s,   ø€ Ð
EÐ
EÐ
E°Aˆ4Œ=Ô×,Ò,¨QÑ/Ô/Ð
EÐ
EÐ
ErF   ©rÐ  rç  Ú_inputr¹  s   `rD   Úparameter_typeszStatement.parameter_types“  sD   ø€ à	„[ÐØ‡:‚:�<„<€<Ø	„[ÐØ
EÐ
EÐ
EÐ
E¸¼Ð
EÑ
EÔ
EÐEð ÐrF   c                 ór   ‡ — ‰ j         €‰                      ¦   «          ‰ j        �ˆ fd„‰ j        D ¦   «         S d S )Nc                 óZ   •— g | ]'}‰j         j                             |d          ¦  «        ‘Œ(S r#  r$  r%  s     €rD   rÑ   z*Statement.column_types.<locals>.<listcomp>Ÿ  s=   ø€ ð ð ð Ø01€D„MÔ×%Ò% a¨¤dÑ+Ô+ðð ð rF   ©rÐ  rç  rÀ  r¹  s   `rD   r'  zStatement.column_typesš  sU   ø€ à	„[ÐØ‡:‚:�<„<€<Ø	„\Ððð ð ð Ø59´\ðñ ô ð ð ÐrF   c                 óF   — | j         €|                      ¦   «          | j        S r>   r  r¹  s    rD   rö  zStatement.pg_parameter_types£  s   € à	„[ÐØ‡:‚:�<„<€<Ø	ŒÐrF   c                 ól   — | j         €|                      ¦   «          | j        �d„ | j        D ¦   «         S d S )Nc                 ó   — g | ]
}|d          ‘ŒS r#  r?   rü   s     rD   rÑ   z-Statement.pg_column_types.<locals>.<listcomp>®  r*  rF   r  r¹  s    rD   r  zStatement.pg_column_types©  s=   € à	„[ÐØ‡:‚:�<„<€<Ø	„\ÐØ
&Ð
&˜œÐ
&Ñ
&Ô
&Ð&ð ÐrF   c                 ór   ‡ — ‰ j         €‰                      ¦   «          ‰ j        �ˆ fd„‰ j        D ¦   «         S d S )Nc                 óN   •— g | ]!}‰j         j                             |¦  «        ‘Œ"S r?   r-  r%  s     €rD   rÑ   z.Statement.sql_column_types.<locals>.<listcomp>µ  ó<   ø€ ð ð ð à	ð 	„MÔ×)Ò)¨!Ñ,Ô,ðð ð rF   )rÐ  rç  rÀ  r  r¹  s   `rD   r.  zStatement.sql_column_types°  sV   ø€ à	„[ÐØ‡:‚:�<„<€<Ø	„\Ððð ð ð àÔ!ðñ ô ð ð ÐrF   c                 ór   ‡ — ‰ j         €‰                      ¦   «          ‰ j        �ˆ fd„‰ j        D ¦   «         S d S )Nc                 óN   •— g | ]!}‰j         j                             |¦  «        ‘Œ"S r?   r-  r%  s     €rD   rÑ   z1Statement.sql_parameter_types.<locals>.<listcomp>¿  r  rF   )rÐ  rç  r  rö  r¹  s   `rD   rÉ  zStatement.sql_parameter_typesº  sV   ø€ à	„[ÐØ‡:‚:�<„<€<Ø	„[Ððð ð ð àÔ$ðñ ô ð ð ÐrF   c                 ón   — | j         du r$| j        j                             | j        ¦  «         d| _         d S rÏ  )rÐ  rk   rÆ  Útrash_statementrß  r¹  s    rD   rÒ  zStatement.closeÄ  s6   € Ø	„[�EÐÐØ„=Ô×#Ò# DÔ$9Ñ:Ô:Ð:Ø€$„+€+€+rF   c                 óê  — | j         �l| j        j                             t	          | j         ¦  «        ¦  «        d         }t          j        | j        ¦  «        t          j        | j        |d¦  «        g}ng }| 	                    t          j
        | j        ¦  «        t
          j        f¦  «         t          j        || j        j        ¬¦  «        | _        | j                             | j        | ¦  «         dS )z¶
		Push initialization messages to the server, but don't wait for
		the return as there may be things that can be done while waiting
		for the return. Use the _fini() to complete.
		Nr   r?   ©rÔ  )r   rk   rå   rœ   rb   rJ  ÚCloseStatementrß  ré  ÚextendÚDescribeStatementrE  rÕ  rÖ  r×  rF  rG  )r€   rÜ  r¢  s      rD   rº  zStatement._initÉ  sØ   € ð 
„[ÐØ„}Ô×"Ò"¥3 t¤{Ñ#3Ô#3Ñ4Ô4°QÔ7€1åÔ˜4Ô0Ñ1Ô1Ý„M�$Ô'¨¨BÑ/Ô/ð
€3€3ð
 
€3Ø‡*‚*åÔ˜dÔ3Ñ4Ô4ÝÔðñô ð õ Ô °´Ô1MÐNÑNÔN€$„*Ø„-×Ò˜œ TÑ*Ô*Ð*Ð*Ð*rF   c                 óü  ‡‡‡— | j         €t          d¦  «        ‚| j         | j        j        j        u r1	 | j                             ¦   «          n# t          $ r	 d| _        ‚ w xY w| j                              ¦   «         �^ }}}}| j        j	        Š|�|t          j        u r$d| _        d| _        d| _        d| _        d| _        n°|| _        t#          ‰                     |¦  «        ¦  «        | _        | j        j	                             | j        ¦  «        | _        ‰                     |d¦  «        | _        ˆˆfd„| j        D ¦   «         | _        t+          ˆfd„| j        D ¦   «         ¦  «        | _        || _        g }g }|D ]T}	‰                     |	¦  «        pdd         }
|                     |
p‰j        ¦  «         |                     |	€‰n‰¦  «         ŒUt+          |¦  «        | _        || _        d	| _        d| _         dS )
z>
		Complete initialization that the _init() method started.
		Nz*_fini called prior to _init; invalid stateTr   c                 ó   •— g | ]}|€‰n‰‘Œ	S r>   r?   )rA   rÏ   ÚbinfmtÚstrfmts     €€rD   rÑ   z#Statement._fini.<locals>.<listcomp>   s1   ø€ ð ð ð à	ð ˆi€F€F˜Vðð ð rF   c                 ó"   •— g | ]}|p‰j         ‘ŒS r?   rm  r�  s     €rD   rÑ   z#Statement._fini.<locals>.<listcomp>  s-   ø€ ð ð ð Ø€AÐˆŒðð ð rF   rÎ   r   F)rF  ÚRuntimeErrorrk   rÆ  rÕ  rK  r  rÐ  rJ  rå   rJ  ÚNoDataMessagerÀ  rÄ  rÁ  rÃ  rÂ  r^  r½   r0  rÓ   rß   r  r´   rà   r¥   rò  rà  )r€   r  r  ÚheadÚargtypesÚtupdescÚlastÚpacksÚformatsrÏ   rB  rå   s    ``        @rD   rç  zStatement._finià  sJ  øøø€ ð
 
„ZÐÝ	ÐBÑ	CÔ	CÐCØ	„Z�4”=Ô#Ô(Ð(Ð(ð
Ø„M×ÒÑ Ô Ð Ð øÝ
ð 
ð 
ð 
Ø€D„KØ	ð
øøøð &*¤Z×%AÒ%AÑ%CÔ%CÑ"€Dˆ(�G˜Tà
Œ-Ô
€%Ø€_˜¥7Ô#8Ð8Ð8à€4„<Ø€4ÔØ€4„?Ø€4ÔØ€4ÔÐà€4„<ÝØ	×Ò˜Ñ Ô ñô €4Ôð  œ=Ô.×=Ò=¸dÔ>QÑRÔR€4Ôà×-Ò-¨g°qÑ9Ô9€4„?ðð ð ð ð àŒ_ðñ ô €4Ôõ ð ð ð ð Ø#œðñ ô ñ ô €4„?ð €$„+Ø
€%Ø€'Øð ð €aØ�=Š=˜ÑÔÐ*˜{¨AÔ
.€4Ø‡<‚<�Ð$˜œÑ%Ô%Ð%Ø
‡>‚>Øˆi€F€F˜Vñô ð ð õ ˜‘<”<€$„.Ø€$ÔØ€$„+Ø€$„*€*€*s   ³A ÁA c                 óÊ  — | j         �Xt          |¦  «        t          | j         ¦  «        k    r3t          dt          | j         ¦  «        t          |¦  «        fz  ¦  «        ‚| j        €t	          | |¦  «        }nt          | |¦  «        }|j        |_        | j        €,|                     ¦   «         }|�|| 	                    ¦   «         fS g }|D ]}| 
                    |¦  «         Œ|S ©Nú*statement requires %d parameters, given %d)r  rH  rf   rÀ  r^  ra  r  rX  r3  r   r  )r€   râ  rn  r¢  r“   rÏ   s         rD   r³  zStatement.__call__  sè   € Ø	„[ÐÝ	ˆ*�o„o�˜Tœ[Ñ)Ô)Ò)Ð)Ý
Ð@ÝˆŒÑÔ•s˜:‘”ðCñ ñ ô ð ð
 
„\Ðå�d˜JÑ'Ô'€1€1å�t˜ZÑ(Ô(€1ØÔ0€1Ôð
 
„\ÐØ	
�Š‰Œ€3Ø	€oØ�—’‘”ÐÐà€!Øð ð €aØ‡8‚8ˆA�;„;€;€;Ø	
€(rF   c                 ó$  — | j         €|                      ¦   «          | j        �Xt          |¦  «        t          | j        ¦  «        k    r3t	          dt          | j        ¦  «        t          |¦  «        fz  ¦  «        ‚t          | || j        d ¦  «        S r$  )rÐ  rç  r  rH  rf   ry  rk   ©r€   râ  s     rD   rµ  zStatement.declare2  s‡   € Ø	„[ÐØ‡:‚:�<„<€<Ø	„[ÐÝ	ˆ*�o„o�˜Tœ[Ñ)Ô)Ò)Ð)Ý
Ð@ÝˆŒÑÔ•s˜:‘”ðCñ ñ ô ð õ 
��j $¤-°Ñ	6Ô	6Ð6rF   c                 ój   —  | j         |i |¤Ž}|j        r|j        |_        t	          j        |¦  «        S r>   )r¹  rÁ  r  rX  r   Úfrom_iterable©r€   râ  r‘  r¹  s       rD   r·  zStatement.rows<  s?   € Øˆ4Œ;˜
Ð) bÐ)Ð)€&ØÔð ;Ø!Ô:€6ÔÝ	Ô	˜VÑ	$Ô	$Ð$rF   c                 óÀ  — | j         €|                      ¦   «          | j        �Xt          |¦  «        t          | j        ¦  «        k    r3t	          dt          | j        ¦  «        t          |¦  «        fz  ¦  «        ‚| j        €t          | |¦  «        S | j        j        j	        dk    r(| j
        �t          | |d ¦  «        S t          | |¦  «        S t          | |d ¦  «        S )Nr%  ó   I)rÐ  rç  r  rH  rf   rÀ  r^  rk   rÆ  r  r   rv  ra  rs  r'  s     rD   r¹  zStatement.chunksC  sÞ   € Ø	„[ÐØ‡:‚:�<„<€<Ø	„[ÐÝ	ˆ*�o„o�˜Tœ[Ñ)Ô)Ò)Ð)Ý
Ð@ÝˆŒÑÔ•s˜:‘”ðCñ ñ ô ð ð 
„\Ðå
˜˜zÑ
*Ô
*Ð*Ø	„]ÔÔ˜tÒ#Ð#ð „kÐÝ   z°4Ñ8Ô8Ð8õ
 ˜4 Ñ,Ô,Ð,õ ˜t Z°Ñ
6Ô
6Ð6rF   c                 ó\   —  | j         |i |¤Ž}|j        |_        t          j        |¦  «        S r>   )r¹  r  rX  r   r)  r*  s       rD   r¼  zStatement.column^  s4   € Øˆ4Œ;˜
Ð) bÐ)Ð)€&Ø Ô<€&ÔÝ	Ô	˜VÑ	$Ô	$Ð$rF   c           	      ó  — | j         €|                      ¦   «          | j        �Xt          |¦  «        t          | j        ¦  «        k    r3t	          dt          | j        ¦  «        t          |¦  «        fz  ¦  «        ‚| j        }| j        rt          | j        || j        ¦  «        }nd}t          j
        t          j        d| j        | j        || j        pd¦  «        t          j        dd¦  «        t          j        d¦  «        t          j        f|j        ¬¦  «        }|                     || ¦  «         |                     ¦   «          | j        r¹t          j        j        }|                     ¦   «         D ]}|j        t6          u r nŒd S t          | j        ¦  «        dk    r.|                      t          | j        || j        ¦  «        ¦  «        S |d         €d S | j        d         p| j        j        j        } ||d         ¦  «        S t          j         j        }|                     ¦   «         D ]}	tC          |	dd ¦  «        |k    r nŒd S |	 "                    ¦   «         }
|
€+|	 #                    ¦   «         }|�|                     d	¦  «        S |
S )
Nr%  r?   rF   rå  r  r   r   r>  r0  )$rÐ  rç  r  rH  rf   rk   rò  r   ró  rÕ  rÖ  rJ  rÞ  rß  rà  rÃ  ræ  ÚClosePortalrE  r×  rG  rK  rÁ  rb  r>  rJ  r�   rß   rÂ  r  rå   r¨   rI  r�  r5  r2  )r€   râ  ÚdbÚparamsrÏ   rq  Úxtr%   rN  r£  r   r3  s               rD   r¾  zStatement.firstc  s«  € Ø	„[Ðà‡:‚:�<„<€<Ø	„[Ðå	ˆ*�o„o�˜Tœ[Ñ)Ô)Ò)Ð)Ý
Ð@ÝˆŒÑÔ•s˜:‘”ðCñ ñ ô ð ð
 „}€"à	„^ð ÝØ„N�JØÔ%ñô €6€6ð
 €6õ ÔÝ„LØØ	ÔØ	ÔØØ	ÔÐ˜Rñô õ „O�C˜Ñ$Ô$ÝÔ˜ÑÔÝÔðð Ô ðñ ô €!ð  ‡+‚+ˆa�ÑÔÐØ‡/‚/ÑÔÐà	„_ð -õ ”Ô"€:Ø× Ò Ñ"Ô"ð ð €rØ	„|•uÐÐØ
€Uð ð ˆ4å	ˆ$Œ/ÑÔ˜QÒÐà× Ò ÝØ
„o�rØ
Ô$ñô ñô ð ð 
ˆ!„u€}ØˆDØ	Œ˜Ô	Ð	9˜tœ}Ô2Ô9€BØˆ2ˆb�Œe‰9Œ9Ðõ ÔÔ#€8Ø× Ò Ñ"Ô"ð ð €rõ ˆr�6˜4Ñ Ô  HÒ,Ð,Ø
€Uð -ð ˆ4à×ÒÑÔ€5Ø€mØ× Ò Ñ"Ô"€GØÐØ�NŠN˜7Ñ#Ô#Ð#Ø
€<rF   c           	      óF  — t          j        t          j        d| j        ddd¦  «        t          j        dd¦  «        t          j        f| j        j        ¬¦  «        }| j         	                    || ¦  «         | j        j
        }|j        t           j        ur< |¦   «          t          |d¦  «        r|j        |j        u rn`|j        t           j        u°<|j        pd|_        t          j        d¦  «        |_        | j        j                             |j        | ¬¦  «         |D ]<}t+          |¦  «        |_        |j        |j        ur |¦   «          |j        |j        u°Œ=|j        |_        | j                             ¦   «          | j        j                             ¦   «          d	S )
z–
		Given an chunks of COPY lines, execute the COPY ... FROM STDIN
		statement and send the copy lines produced by the iterable to
		the remote end.
		rF   r?   r   r  ÚCopyFailSequenceF)r@  ©rI   z--OPE)rK   z7_load_copy_chunks() used on a non-COPY FROM STDIN queryrC  N)rÕ  rÖ  rJ  rÞ  rß  ræ  rE  rk   r×  rG  rH  r  rI  rÑ  Úmessagesr4  rL  rK  r€  rå   rI  rá   ÚCopyDoneSequencerK  rÆ  Úsynchronize)r€   r¹  râ  rÏ   Ústepr   s         rD   Ú_load_copy_chunkszStatement._load_copy_chunks¼  s¬  € õ ÔÝ„LØØ	ÔØˆˆRñô õ
 „O�C˜ÑÔÝÔðð Œ}Ô+ð
ñ 
ô 
€!ð „-×Ò˜˜DÑ!Ô!Ð!ð 
ŒÔ	€$ð 	
Œ•t”}Ð$Ð$Ø€4�6„6€6ÝˆaÐ#Ñ$Ô$ð 
¨¬°qÔ7IÐ)IÐ)Ià	ð	 	
Œ•t”}Ð$Ð$ð ŒWÐ˜€1„7ÝÔ(ð *ñ ô €1„?ð „=Ô×)Ò)¨!¬/ÀTÐ)ÑJÔJÐJàð ð €eÝ�U‘”€1„:Ø	
Œ˜1Ô-Ð	-Ð	-ð
 	€D�F„F€Fð 
Œ˜1Ô-Ð	-Ð	-øð Ô!€!„*Ø„-×ÒÑÔÐØ„-Ô×ÒÑ Ô Ð Ð Ð rF   c                 ó–  ‡ ‡— ‰ j         Št          j        f}	 |D ]q}ˆˆ fd„|D ¦   «         }|                     |¦  «         ‰ j                             t          j        t          j	        |¦  «        ‰ j        j
        ¬¦  «        ‰ ¦  «         Œr‰ j                             ¦   «          d S #  ‰ j        j                             ¦   «          ‚ xY w)Nc                 óÀ   •— g | ]Z}t          j        d ‰j        ‰j        t	          ‰j        t          |¦  «        ‰¦  «        d¦  «        t          j        d d¦  «        f‘Œ[S )rF   r?   r   )rJ  rÞ  rß  rà  r   rò  rß   ræ  )rA   rÎ  Úpter€   s     €€rD   rÑ   z0Statement._load_tuple_chunks.<locals>.<listcomp>ô  s}   ø€ ð ð ð ð 
õ „lØ
ØÔØÔÝØŒ�˜a™œ #ñ	ô 	ð 
ñô õ „o�c˜1ÑÔððð ð rF   r  )ró  rJ  rE  rà   rk   rG  rÕ  rÖ  r   r)  r×  rK  rÆ  r8  )r€   r¹  r   r   Úbindingsr=  s   `    @rD   Ú_load_tuple_chunkszStatement._load_tuple_chunksï  sþ   øø€ ØÔ)€#Ý
Ô
$Ð	&€$ð&	Øð ð €uðð ð ð ð ð ðñ ô €Hð ‡O‚O�DÑÔÐØ„M×ÒÝ	ÔÝÔ˜(Ñ#Ô#Ø”-Ô.ðñ ô ð 
ñô ð ð ð „=×ÒÑÔÐÐÐøð	ð „=Ô×ÒÑ!Ô!Ð!Øøøøs   ˜BB' Â'!Cc                 óž   — | j         €|                      ¦   «          | j        r|r|                      |¦  «        S |                      |¦  «        S )z¡
		Execute the query for each row-parameter set in `iterable`.

		In cases of ``COPY ... FROM STDIN``, iterable must be an iterable of
		sequences of `bytes`.
		)rÐ  rç  r  r:  r?  )r€   r¹  râ  s      rD   r±  zStatement.load_chunks  sR   € ð 
„[ÐØ‡:‚:�<„<€<Ø	Œð *˜
ð *Ø
×
 Ò
  Ñ
(Ô
(Ð(à
×
!Ò
! &Ñ
)Ô
)Ð)rF   é   c                 óH   — |                       t          ||¦  «        ¦  «        S r>   )r±  r   )r€   r·  rf  s      rD   r­  zStatement.load_rows(  s    € Ø	×	Ò	�%  iÑ0Ô0Ñ	1Ô	1Ð1rF   )rA  )0r¨  r©  rª  r   rk   rê  r  rÀ  rÁ  rÃ  rÄ  r?  r}  r6  r7  r   rð  r   rá  ró  r  r8  rb   r  r  r  r'  rö  r  r.  rÉ  rÒ  rº  rJ  rŒ  r�  rç  r³  rµ  r·  rÍ  r¹  r¼  r¾  r:  r?  r±  r­  r?   rF   rD   rÀ  rÀ  à  s”  € € € € € Ø
€Ø€Ø€Ø
€Ø€Ø€Ø€Ø€ð:"ð :"ð :"ðxð ð ð 
Œð?ð ?ð ?ð ?ðð ð ð .;ð ð ð ð ðLð Lð Lð6Lð Lð Lð2 ð�Cð ð ð ñ „(ðð ðAð Añ „(ðAð ðFð Fñ „(ðFð ðð ñ „(ðð ðð ñ „(ðð
 ð'ð 'ñ „(ð'ð ðð ñ „(ðð ðð ñ „(ððð ð ð
+ð +ð +ð. "Ô.¸Ô9Mð 4ð 4ð 4ð 4ðlð ð ð87ð 7ð 7ð%ð %ð %ð
 €ð7ð 7ð 7ð6%ð %ð %ð
Wð Wð Wðr1!ð 1!ð 1!ðf)	ð )	ð )	ðV*ð *ð *ð2ð 2ð 2ð 2ð 2ð 2rF   rÀ  c                   ó0   — e Zd ZdZdZd„ Zd„ Zd„ Zdd„ZdS )	ÚStoredProcedure)rk   Úprocedure_idNc              #   ó    K  — d| j         fV — d S )NrÃ   )rÃ   r¹  s    rD   r?  zStoredProcedure._e_metas0  s   è è € Ø	�”ÐÐÐÐÐÐrF   c                 ó2   — d| j         ›d| j        j        ›d�S )Nú<ú:ú>)rE  r¿  r   r¹  s    rD   rð  zStoredProcedure.__repr__3  s'   € € àÔÐÐ�d”nÔ+Ð+Ð+ð
ð rF   c                 óî  ‡ ‡— ‰rþg }t          |¦  «        }	 ˆˆ fd„‰D ¦   «         }n0# t          $ r#}t          ‰ j        ›d|j        ›�¦  «        ‚d }~ww xY w|                     t          ¬¦  «         |                     d¦  «        }t          t          ¦  «        D ]f}||d         k    r1| 
                    |d         ¦  «         |                     d¦  «        }Œ?| 
                    |                     ¦   «         ¦  «         Œgn|}‰ j        du r:‰ j        du r ‰ j        j        |Ž S t!          t"           ‰ j        j        |Ž ¦  «        S ‰ j        du r ‰ j        |Ž d         S  ‰ j        |Ž d         d         S )Nc                 ó:   •— g | ]}‰|         ‰j         |         f‘ŒS r?   )Ú_input_attmap)rA   rB   r‘  r€   s     €€rD   rÑ   z,StoredProcedure.__call__.<locals>.<listcomp>=  s*   ø€ Ð;Ð;Ð;°1��A”˜Ô*¨1Ô-Ð.Ð;Ð;Ð;rF   z! got unexpected keyword argument rZ  r   r   T)r­   ÚKeyErrorrf   rÆ   r   Úsortre  r~  r  Úargcrà   r  ÚsrfÚ	compositer¿  r·  rª   r®   )	r€   rØ  r‘  ÚinputÚargiterÚword_idxrB   Úcurrent_wordrÏ   s	   ` `      rD   r³  zStoredProcedure.__call__8  s¢  øø€ Øð Ø€5Ý�$‰ZŒZ€7ðØ;Ð;Ð;Ð;Ð;¸Ð;Ñ;Ô;€H€HøÝ
ð ð ð Ý
Ø
„i€i€i�”�ðñ ô ð øøøøðøøøð
 ‡=‚=•t€=ÑÔÐØ—,’,˜q‘/”/€<Ý•$‰KŒKð "ð "€qØˆL˜ŒOÒÐØ
‡\‚\�,˜q”/Ñ"Ô"Ð"Ø—L’L ‘O”O€\€\à
‡\‚\�'—,’,‘.”.Ñ!Ô!Ð!Ð!ð"ð €5à	„X�ÐÐØ
„n˜ÐÐØˆ4Œ>Ô Ð&Ð&õ
 �tÐ(�T”^Ô(¨%Ð0Ñ1Ô1Ð1à
„n˜ÐÐØˆ4Œ>˜5Ð! !Ô$Ð$àˆ4Œ>˜5Ð! !Ô$ QÔ'Ð's   —' §
A±AÁAr?   c                 ó®  ‡‡— t          |t          ¦  «        r(‰j                             t          |¦  «        ¦  «        }n'‰j                             t          |¦  «        ¦  «        }|€t          dt          |¦  «        ›�¦  «        ‚|| _        |d         | _        |d         | _	        i | _
        |                     d¦  «        pd}t          t          |¦  «        ¦  «        D ]}||         }|�
|| j
        |<   Œ|d         Š‰D ]}‰j                             |¦  «         Œ‰                     d|d         ›d	d
                     ˆˆfd„t          t          ‰¦  «        ¦  «        D ¦   «         ¦  «        ›d|rd	d                     |¦  «        z   dz   pd›�¦  «        | _        t'          |                     d¦  «        ¦  «        | _        |d         | _        d S )Nzno function with identifier r   ÚpronameÚproargnamesr?   ÚproargtypeszSELECT * FROM Ú_proidrË  r  c                 ó`   •— g | ]*}d |dz   ‰j                              ‰|         ¦  «        fz  ‘Œ+S )z$%d::%sr   )rå   rÇ   )rA   rÏ   rk   Úproargss     €€rD   rÑ   z,StoredProcedure.__init__.<locals>.<listcomp>y  sK   ø€ ð ð ð à
ð �!�a‘%˜œ×9Ò9¸'À!¼*ÑEÔEÐFÑFðð ð rF   z	) AS funcú,rÏ  rA  Ú	proretsetrR  )re   rÞ   rƒ   Úlookup_procedure_oidÚlookup_procedure_rprb   ÚLookupErrorrE  rÃ   rÆ   rM  rÂ   r  rH  rå   r´   r©  rÓ  r¿  ÚboolrQ  rR  )	r€   Úidentrk   ÚdescriptionÚproctupÚargnamesrÏ   Úanr]  s	     `     @rD   r   zStoredProcedure.__init__\  sô  øø€ å�•sÑÔð :ØŒ\×.Ò.­s°5©z¬zÑ:Ô:€7€7àŒ\×-Ò-­c°%©j¬jÑ9Ô9€7Ø€_Ý	ˆ½¸E¹
¼
¸
ÐDÑ	EÔ	EÐEà€$ÔØ�QŒZ€$„(Ø�iÔ €$„)à€$ÔØ�[Š[˜Ñ'Ô'Ð-¨2€(Ý•�X‘”ÑÔð ð €aØ�Œ€2Ø€nØ€DÔ�rÑøà�MÔ"€'Øð ð €aà„>×Ò˜!ÑÔÐÐà×#Ò#Ð#àˆHÔÐÐà‡I‚Ið ð ð ð ð å•S˜‘\”\Ñ"Ô"ðñ ô ñ ô ð ð ð
 ð 'Øˆ3�8Š8�KÑ Ô Ñ  3Ñ&ð-Ø*,ð-ð
ñô €$„.õ �'—+’+˜kÑ*Ô*Ñ+Ô+€$„(Ø˜;Ô'€$„.€.€.rF   )r?   )	r¨  r©  rª  r¬  rE  r?  rð  r³  r   r?   rF   rD   rD  rD  ,  s`   € € € € € Ø*€Ø€ðð ð ðð ð ð
"(ð "(ð "(ðH'(ð '(ð '(ð '(ð '(ð '(rF   rD  c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )Ú
SettingsCMc                 ó"   — || _         || _        d S r>   )rk   Úsettings_to_set)r€   rk   rl  s      rD   r   zSettingsCM.__init__†  s   € Ø€$„-Ø(€$ÔÐÐrF   c                 ó  — t          | d¦  «        rt          d¦  «        ‚| j        j                             | j                             ¦   «         ¦  «        | _        | j        j                             | j        ¦  «         d S )NÚstored_settingszcannot re-use setting CMs)	rÑ  r  rk   ÚsettingsÚgetsetrl  r»   rn  r  r¹  s    rD   Ú	__enter__zSettingsCM.__enter__Š  sw   € ÝˆTÐ$Ñ%Ô%ð 3Ý	Ð1Ñ	2Ô	2Ð2ØœÔ/×6Ò6ØÔ×ÒÑÔñô €$Ôð „-Ô×Ò Ô 4Ñ5Ô5Ð5Ð5Ð5rF   c                 óN   — | j         j                             | j        ¦  «         d S r>   )rk   ro  r  rn  )r€   rÉ   ÚvalÚtbs       rD   Ú__exit__zSettingsCM.__exit__’  s$   € Ø„-Ô×Ò Ô 4Ñ5Ô5Ð5Ð5Ð5rF   N)r¨  r©  rª  r   rq  ru  r?   rF   rD   rj  rj  …  sA   € € € € € ð)ð )ð )ð6ð 6ð 6ð6ð 6ð 6ð 6ð 6rF   rj  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 edi  e¦   «         ¤ŽZdd„Zd„ Zd„ ZeZd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚSettingsrj   c                 ó"   — || _         i | _        d S r>   )rk   Úcacher«  s     rD   r   zSettings.__init__˜  s   € Ø€$„-Ø€$„*€*€*rF   c              #   óT   K  — d t          t          | j        ¦  «        ¦  «        fV — d S r>   )rb   rH  ry  r¹  s    rD   r?  zSettings._e_metasœ  s-   è è € Ø	�s•3�t”z‘?”?Ñ#Ô#Ð$Ð$Ð$Ð$Ð$Ð$rF   c                 ó8   — | j                              ¦   «          d S r>   )ry  Úclearr¹  s    rD   Ú_clear_cachezSettings._clear_cacheŸ  s   € Ø„*×ÒÑÔÐÐÐrF   c                 ó¼   — | j                              |¦  «        }|€?| j        j                             |¦  «        }|r|d         d         }nt          |¦  «        ‚|S r–   )ry  rÂ   rk   rƒ   Úsetting_getrN  )r€   rô   rC   r“   s       rD   Ú__getitem__zSettings.__getitem__¢  sZ   € Ø
„j‡n‚n�QÑÔ€!Ø€YØ„}Ô×$Ò$ QÑ'Ô'€1àð Ø	ˆ!ŒˆQŒ€A€Aå
�1‰+Œ+ÐØ	
€(rF   c                 óž   — | j                              |¦  «        }||k    rd S | j        j                             ||¦  «        }|| j         |<   d S r>   )ry  rÂ   rk   rƒ   Úsetting_set)r€   rô   rC   ÚcvÚsetass        rD   Ú__setitem__zSettings.__setitem__­  sL   € Ø„z‡~‚~�aÑÔ€"Øˆ1‚W€WØ	€6Ø
Œ-Ô
×
'Ò
'¨¨1Ñ
-Ô
-€%Ø€$„*ˆQ�-€-€-rF   c                 ó¤   — | j                              d|                     dd¦  «        z   dz   ¦  «         | j                             |d ¦  «         d S )NzRESET "r½  r¾  )rk   ÚexecuterÈ  ry  r~  )r€   rB   s     rD   Ú__delitem__zSettings.__delitem__´  sU   € Ø„-×ÒØˆq�yŠy˜˜dÑ#Ô#Ñ# cÑ)ñô ð ð „*‡.‚.��DÑÔÐÐÐrF   c                 ó>   — | j         j                             ¦   «         S r>   )rk   rƒ   Úsetting_lenr¹  s    rD   Ú__len__zSettings.__len__º  s   € Ø	ŒÔ	×	&Ò	&Ñ	(Ô	(Ð(rF   c                 ó,   — t          | j        |¦  «        S r>   )rj  rk   )r€   ro  s     rD   r³  zSettings.__call__½  s   € Ý	�D”M 8Ñ	,Ô	,Ð,rF   c                  ó4   — d„ } d„ }d„ }d}t          ¦   «         S )Nc                 ó6   — t          j        | d         ¦  «        S )NÚsearch_path)Úpg_strÚsplit_identr¹  s    rD   r†  zSettings.path.<locals>.fgetÁ  s   € Ý
Ô
˜T -Ô0Ñ
1Ô
1Ð1rF   c                 óJ   — d                      d„ |D ¦   «         ¦  «        | d<   d S )Nr^  c                 óB   — g | ]}d |                      d d¦  «        ›d �‘ŒS )r½  r¾  ©rÈ  rü   s     rD   rÑ   z/Settings.path.<locals>.fset.<locals>.<listcomp>Ä  s>   € ð #ð #ð #Ø()¨ˆQ�YŠY�s˜DÑ!Ô!Ð!Ð!Ð#ð#ð #ð #rF   r�  )rÓ  r„  s     rD   r‡  zSettings.path.<locals>.fsetÃ  s<   € ØŸšð #ð #Ø-2ð#ñ #ô #ñ ô €4ˆÑÐÐrF   c                 óŒ   — | j         j        j        �| j         j        j        | _        d S | j                              d¦  «         d S )NzRESET search_path)rk   rî  Úpathr‡  r¹  s    rD   ÚfdelzSettings.path.<locals>.fdelÇ  s@   € Ø
„mÔÔ"Ð.Ø”Ô'Ô,€D„I€I€Ià„M×ÒÐ-Ñ.Ô.Ð.Ð.Ð.rF   z structured search_path interface)Úlocals)r†  r‡  r—  Údocs       rD   r–  zSettings.pathÀ  s?   € ð2ð 2ð 2ðð ð ð/ð /ð /ð
 	+€#Ý	‰Œ€/rF   Nc                 ó¸   — || j         v r| j         |         S | j        }| j        j                             |¦  «        }|r|d         d         }|| j         |<   n|}|S r–   )ry  rk   rƒ   r  )r€   rB   Úaltr0  r“   rC   s         rD   rÂ   zSettings.getÐ  sd   € Øˆ$Œ*€_€_Ø
Œ*�QŒ-Ðà„}€"Ø
„mÔ×#Ò# AÑ&Ô&€!Øð Øˆ„tˆA„w€1Ø€4„:ˆa�=€=à
€1Ø	
€(rF   c                 óš  — i }g }|D ]9}| j                              |¦  «        }|�|||<   Œ$|                     |¦  «         Œ:|rˆ| j        j                             |¦  «        }| j                              |¦  «         |                     |¦  «         t          |¦  «        t          d„ |D ¦   «         ¦  «        z
  }|rt          |¦  «        ‚|S )Nc                 ó   — g | ]
}|d          ‘ŒS )rÆ   r?   rü   s     rD   rÑ   z#Settings.getset.<locals>.<listcomp>ë  s   € Ð0Ð0Ð0¨˜1˜Vœ9Ð0Ð0Ð0rF   )	ry  rÂ   rà   rk   rƒ   Úsetting_mgetr  ÚsetrN  )r€   r»   ÚsetmapÚrkeysrB   rC   r“   Úrems           rD   rp  zSettings.getsetÝ  s×   € Ø€&Ø
€%Øð ð €aØ„z‡~‚~�aÑÔ€1Ø€mØ€Fˆ1�I€Ià	‡L‚L��O„O€O€Oà
ð Ø„}Ô×%Ò% eÑ,Ô,€1Ø„:×Ò�QÑÔÐØ	‡=‚=�ÑÔÐÝ	ˆU‰Œ•cÐ0Ð0¨aÐ0Ñ0Ô0Ñ1Ô1Ñ	1€3Ø	ð Ý
�3‰-Œ-ÐØ	€-rF   c                 ód   — t          t          | j        j                             ¦   «         ¦  «        S r>   )rª   r®   rk   rƒ   Úsetting_keysr¹  s    rD   r»   zSettings.keysð  s#   € Ý	�T�4”=Ô$×1Ò1Ñ3Ô3Ñ	4Ô	4Ð4rF   c                 ód   — t          t          | j        j                             ¦   «         ¦  «        S r>   )rª   r®   rk   rƒ   Úsetting_valuesr¹  s    rD   rŸ  zSettings.valuesô  s#   € Ý	�T�4”=Ô$×3Ò3Ñ5Ô5Ñ	6Ô	6Ð6rF   c                 ó>   — | j         j                             ¦   «         S r>   )rk   rƒ   Úsetting_itemsr¹  s    rD   r  zSettings.items÷  s   € Ø	ŒÔ	×	(Ò	(Ñ	*Ô	*Ð*rF   c                 óÊ   — d„ t          |¦  «                             ¦   «         D ¦   «         }| j                             | j        j                             |¦  «        ¦  «         d S )Nc                 ó,   — g | ]}t          |¦  «        ‘ŒS r?   )rá   rü   s     rD   rÑ   z#Settings.update.<locals>.<listcomp>û  s   € Ð*Ð*Ð*�Q�ˆa‰ŒÐ*Ð*Ð*rF   )r^  r  ry  r  rk   rƒ   Úsetting_update)r€   ÚdÚkvls      rD   r  zSettings.updateú  sR   € Ø*Ð*�$˜q™'œ'Ÿ-š-™/œ/Ð*Ñ*Ô*€#Ø„*×Ò�D”MÔ%×4Ò4°SÑ9Ô9Ñ:Ô:Ð:Ð:Ð:rF   c                 óN  — t          | di ¦  «        }| j        j        j        } ||j        ¦  «        d         } ||j        ¦  «        d         }|                     |d¦  «        D ]} || j        ||¦  «         Œd |v r|d          D ]} || j        ||¦  «         Œ|| j        |<   d S )NÚ_subscriptionsr   r?   )r�  rk   rå   r�   rÆ   rž   rÂ   ry  )r€   ÚmsgÚsubsr¬  r[  rs  rÏ   s          rD   Ú_notifyzSettings._notifyþ  sÁ   € Ý	�Ð'¨Ñ	,Ô	,€$Ø
„mÔÔ!€!Ø	ˆˆ#Œ(‰Œ�AŒ€#Ø	ˆˆ#Œ)‰Œ�QŒ€#Ø�8Š8�C˜ÑÔð ð €aØ€1€T„]�C˜ÑÔÐÐØ	ˆT€\€\Ø�ŒJð ð €qØ€A€d„m�S˜#ÑÔÐÐØ€$„*ˆS�/€/€/rF   c                 ó˜   — t          | di ¦  «        x}| _        |                     |g ¦  «        }||vr|                     |¦  «         dS dS )aé  
		Subscribe to changes of the setting using the callback. When the setting
		is changed, the callback will be invoked with the connection, the key,
		and the new value. If the old value is locally cached, its value will
		still be available for inspection, but there is no guarantee.
		If `None` is passed as the key, the callback will be called whenever any
		setting is remotely changed.

		>>> def watch(connection, key, newval):
		...
		>>> db.settings.subscribe('TimeZone', watch)
		r¯  N)r�  r¯  Ú
setdefaultrà   ©r€   r[  Úcallbackr±  Ú	callbackss        rD   Ú	subscribezSettings.subscribe
  s^   € õ  ' tÐ-=¸rÑBÔBÐB€$ˆÔ	Ø�oŠo˜c 2Ñ&Ô&€)Ø�YÐÐØ×Ò�HÑÔÐÐÐð ÐrF   c                 óŠ   — t          | di ¦  «        }|                     |d¦  «        }||v r|                     |¦  «         dS dS )zä
		Stop listening for changes to a setting. The setting name(`key`), and
		the callback used to subscribe must be given again for successful
		termination of the subscription.

		>>> db.settings.unsubscribe('TimeZone', watch)
		r¯  r?   N)r�  rÂ   Úremoverµ  s        rD   ÚunsubscribezSettings.unsubscribe  sV   € õ 
�Ð'¨Ñ	,Ô	,€$Ø�hŠh�s˜BÑÔ€)Ø�ÐÐØ×Ò�HÑÔÐÐÐð ÐrF   r?   r>   )r¨  r©  rª  r¬  r   r?  r}  r€  r…  rˆ  r‹  r³  r–  r8  rÂ   rp  r»   rÍ  rŸ  r  r  r²  r¸  r»  r?   rF   rD   rw  rw  •  sN  € € € € € Ø€ðð ð ð%ð %ð %ðð ð ð	ð 	ð 	ðð ð ðð ð ð)ð )ð )ð-ð -ð -ðð ð ð 	ˆÐÐ�4�4‘6”6ÐÐ€ðð ð ð ðð ð ð&5ð 5ð 5à€ð7ð 7ð 7ð+ð +ð +ð;ð ;ð ;ð
ð 
ð 
ðð ð ð$ð ð ð ð rF   rw  c                   óº   — e Zd ZdZdZdZdZd„ Zdd„Zd„ Z	d„ Z
edd„¦   «         Zed„ ¦   «         Zd	„ ZeZed
„ ¦   «         Zd„ Zedj        fd„¦   «         Zd„ ZeZdS )ÚTransactionN)rk   Ú	isolationÚmodec              #   ó    K  — d | j         fV — d S r>   )r  r¹  s    rD   r?  zTransaction._e_metas1  s   è è € Ø	ˆtŒzÐÐÐÐÐÐrF   c                 óL   — || _         || _        || _        d| _        d | _        d S )NÚinitialized)rk   r¾  r¿  r  r>  )r€   rk   r¾  r¿  s       rD   r   zTransaction.__init__4  s)   € Ø€$„-Ø€$„.Ø€$„)Ø€$„*Ø€$„)€)€)rF   c                 ó.   — |                       ¦   «          | S r>   )Ústartr¹  s    rD   rq  zTransaction.__enter__;  s   € Ø‡*‚*�,„,€,Ø	€+rF   c                 ó   — |€Â| j         j        j        dk    rW| j         j        s|                      ¦   «          t          j        d¦  «        }| j         j                             || ¬¦  «         d S 	 |  	                    ¦   «          d S # t          j        $ r-}| j         j        sd| _        |                      ¦   «          ‚ d }~ww xY wt          |t          ¦  «        r"| j         j        s|                      ¦   «          d S d S d S )Nó   E)r@  )rI   Ú25P02)rK   z'invalid transaction block exit detected)r  z<Database was in an error-state, but no exception was raised.rC  r  )rk   rÆ  r  rÐ  ÚrollbackrJ  rK  rå   rI  Úcommitr¯  ÚActiveTransactionErrorÚ
issubclassr  )r€   rÉ   rž   rt  r  Úerrs         rD   ru  zTransaction.__exit__?  s  € Ø€[à
„mÔÔ Ò$Ð$ØŒ=Ôð Ø	‡]‚]�_„_€_å	Ô	ð ñ 
ô 
€Bð 	„MÔ×*Ò*¨2¸Ð*Ñ>Ô>Ð>Ð>Ð>ð	Ø	‡[‚[�]„]€]€]€]øõ Ô(ð ð ð ØŒMÔ ð à€d„jØ
‡m‚m�o„o€oØ
øøøøðøøøõ �#•yÑ!Ô!ð ð Œ-Ô
ð Ø‡M‚M�O„O€O€O€Oðð ðð s   Á0B ÂCÂ(B=Â=Cc                 óÄ   — d}| �+d| v rt          dt          |¦  «        z   ¦  «        ‚|d| z   z  }|�+d|v rt          dt          | ¦  «        z   ¦  «        ‚|d|z   z  }|dz   S )NzSTART TRANSACTIONú;zinvalid transaction isolation z ISOLATION LEVEL zinvalid transaction mode rÆ  )r`   ra   )r¾  r¿  rÜ  s      rD   Ú_start_xact_stringzTransaction._start_xact_string`  s�   € à€!ØÐØ	ˆYÐÐÝ
Ð5½¸T¹
¼
ÑBÑ
CÔ
CÐCØÐ˜iÑ'Ñ'€1Ø	ÐØ	ˆT€k€kÝ
Ð0µ4¸	±?´?ÑBÑ
CÔ
CÐCØˆˆd‰
�?€1Ø	
ˆS‰€.rF   c                 ó:   — d|                       dd¦  «        z   dz   S )NzSAVEPOINT "xact(r½  r¾  ú)";r”  ©rO   s    rD   Ú_savepoint_xact_stringz"Transaction._savepoint_xact_stringm  s    € à	˜bŸjšj¨¨dÑ3Ô3Ñ	3°eÑ	;Ð;rF   c                 óX  — | j         dk    rd S | j         dk    r5t          j        d¦  «        }| j        j                             || ¬¦  «         | j        j        j         dk    r)d| _        |                      | j	        | j
        ¬¦  «        }n}d| _        | j	        | j
        fd	k    r5t          j        d
¦  «        }| j        j                             || ¬¦  «         |                      t          t          | ¦  «        ¦  «        ¦  «        }| j                             |¦  «         d| _         d S )Nr  rÂ  )r@  r5  )rK   z transactions cannot be restarted)r  z?Create a new transaction object instead of re-using an old one.rC  r,  Úblock©r¾  r¿  Ú	savepointrÎ   )r@  r5  )rK   z6configured transaction used inside a transaction block)r  z(A transaction block was already started.)r  rJ  rK  rk   rå   rI  rÆ  r>  rÏ  r¾  r¿  rÓ  rN   rO   r‡  ©r€   r  rÜ  s      rD   rÄ  zTransaction.startq  s,  € Ø	„Z�6ÒÐØ	€6Ø	„Z�=Ò Ð ÝÔð ñ 	ô 	€2ð „=Ô×)Ò)¨"¸Ð)Ñ=Ô=Ð=à	„]ÔÔ˜tÒ#Ð#Ø€4„9Ø×ÒØ”ØŒ9ð ñ ô €1€1ð
 €4„9Ø„~�t”yÐ! [Ò0Ð0Ý	Ô	ð ñ 
ô 
€Bð 	„MÔ×*Ò*¨2¸Ð*Ñ>Ô>Ð>Ø×"Ò"¥3¥r¨$¡x¤x¡=¤=Ñ1Ô1€1Ø„-×Ò˜ÑÔÐØ€$„*€*€*rF   c                 ó:   — d|                       dd¦  «        z   dz   S )zrelease "";zRELEASE "xact(r½  r¾  rÑ  r”  rÒ  s    rD   Ú_release_stringzTransaction._release_string’  s"   € ð 
˜BŸJšJ s¨DÑ1Ô1Ñ	1°EÑ	9Ð9rF   c           	      ó�  — | j         dk    rd S | j         dk    rOt          j        ddddt          | j         ¦  «        z   ff¦  «        }| j        j                             || ¬¦  «         | j        dk    rd	}n/|                      t          t          | ¦  «        ¦  «        ¦  «        }| j                             |¦  «         d| _         d S )
NÚ	committedr  r@  r5  rK   z7commit attempted on transaction with unexpected state, rC  rÕ  ÚCOMMIT)r  rJ  rK  ra   rk   rå   rI  r>  rÚ  rN   rO   r‡  rØ  s      rD   rÉ  zTransaction.commit—  sÊ   € Ø	„Z�;ÒÐØ	€6Ø	„Z�6ÒÐÝÔØØØ	ÐDÅtÈDÌJÑGWÔGWÑWÐXðñ 	ô 	€2ð
 „=Ô×)Ò)¨"¸Ð)Ñ=Ô=Ð=à	„Y�'ÒÐØ€1€1à×Ò�C¥ 4¡¤™MœMÑ*Ô*€1Ø„-×Ò˜ÑÔÐØ€$„*€*€*rF   z-ROLLBACK TO "xact({0})"; RELEASE "xact({0})";c                 ó@   —  ||                       dd¦  «        ¦  «        S )Nr½  r¾  r”  )rO   Úfmts     rD   Ú_rollback_to_stringzTransaction._rollback_to_string©  s    € à	ˆˆR�ZŠZ˜˜TÑ"Ô"Ñ	#Ô	#Ð#rF   c           	      óì  — | j         dk    rd S | j         dvrOt          j        ddddt          | j         ¦  «        z   ff¦  «        }| j        j                             || ¬¦  «         | j        dk    rd	}n_| j        d
k    r0|                      t          t          | ¦  «        ¦  «        ¦  «        }n$t          dt          | j        ¦  «        z   ¦  «        ‚| j                             |¦  «         d| _         d S )NÚaborted)rý  r  r@  r5  rK   z6ABORT attempted on transaction with unexpected state, rC  rÕ  zABORT;r×  zunknown transaction type )r  rJ  rK  ra   rk   rå   rI  r>  rà  rN   rO   r  r‡  rØ  s      rD   rÈ  zTransaction.rollback­  sö   € Ø	„Z�9ÒÐØ	€6Ø	„ZÐ+Ð+Ð+ÝÔØØØ	ÐCÅdÈ4Ì:ÑFVÔFVÑVÐWðñ 	ô 	€2ð
 „=Ô×)Ò)¨"¸Ð)Ñ=Ô=Ð=à	„Y�'ÒÐØ€1€1Ø„y�KÒÐØ×Ò¥¥B t¡H¤H¡¤Ñ.Ô.€1€1å	Ð1µD¸¼±O´OÑCÑ	DÔ	DÐDØ„-×Ò˜ÑÔÐØ€$„*€*€*rF   rÎ   )r¨  r©  rª  rk   r¿  r¾  r¬  r?  r   rq  ru  ÚstaticmethodrÏ  rÓ  rÄ  ÚbeginrÚ  rÉ  rh  rà  rÈ  Úabortr?   rF   rD   r½  r½  )  s  € € € € € Ø€à€Ø€à/€ðð ð ðð ð ð ðð ð ðð ð ðB ð
ð 
ð 
ñ „,ð
ð ð<ð <ñ „,ð<ðð ð ð> 
€àð:ð :ñ „,ð:ðð ð ð$ Ø#RÔ#Yð $ð $ð $ñ „,ð$ðð ð ð& 
€€€rF   r½  c                   ó  ‡ — e Zd ZdZdZdZdZdZdZdZ	dZ
eZd„ Zd„ Zd„ Zd*d„Zdeddfd„Zej        ej        fd	ed
eddfd„Zd+d„Zdefdedefd„Zeefd„¦   «         Zdedefd„Zdeefdefd„Z dede!fd„Z"ede#fd„¦   «         Z$e%fd„Z&edefd„¦   «         Z'd„ Z(d„ Z)d„ Z*ˆ fd„Z+d*d„Z,d„ Z- e.¦   «         d         j/        fd „Z0de1j2        j        e1j3        j        e1j4        j        fd!„Z5d"„ Z6d#„ Z7d$„ Z8e9d%œd&„Z:e9d%œd'„Z;d*d(„Z<d)„ Z=ˆ xZ>S ),Ú
ConnectionNc              #   ó  K  — d d| j         z   dz   fV — | j        �d| j        fV — | j        �d| j        fV — | j        �d| j        fV — t	          | dd ¦  «        }|r¨d}|D ]¥}d                     t          t          |j        ¦  «        |j        d ¦  «        ¦  «        }t          |j
        ¦  «        }t          |d	¦  «        r|j        d
u rd|z   }nd|z   }dt          |¦  «        z   dz   |t          j        z   |z   fV — |dz  }Œ¤d S d S )NrÂ  rÃ  Úclient_addressÚclient_portÚversionÚfailuresr   rA  Ússl_negotiationTzSSL zNOSSL z	failures[r   )r  ré  rê  rë  r�  rÓ  r   r>  Úerrorrb   Úsocket_factoryrÑ  rí  r×  rØ  )r€   Úattr   rÏ   ÚerrstrÚfactinfos         rD   r?  zConnection._e_metasÑ  sk  è è € Ø	ˆs�T”ZÑ #Ñ%Ð&Ð&Ð&Ð&Ø	ÔÐ$Ø
˜DÔ/Ð	0Ð0Ð0Ð0Ø	ÔÐ!Ø
˜Ô)Ð	*Ð*Ð*Ð*Ø	„\ÐØ
�T”\Ð	"Ð"Ð"Ð"Ý��j $Ñ'Ô'€#Øð Ø€5Øð ð €qà�WŠWÕ%¥d¨1¬7¡m¤m°Q´W¸dÑCÔCÑDÔD€FÝ�1Ô#Ñ$Ô$€HÝˆqÐ#Ñ$Ô$ð %Ø	Ô˜TÐ!Ð!Ø˜(Ñ"€h€hà˜HÑ$€hà•3�u‘:”:Ñ Ñ#Ø•”
Ñ˜VÑ#ðð ð ð ð 
ˆQ�J€E€Eðð ðð rF   c           	      ó¤   — dt          | ¦  «        j        ›dt          | ¦  «        j        ›d| j        j        ›d| j        rdp| j        j        ››d�	S )NrH  r¿   rÂ  ú] rÐ  rJ  )r>  r©  r¨  rî  rï  rÐ  rÆ  r  r¹  s    rD   rð  zConnection.__repr__ë  s[   € € åˆ�:„:ÔÐÐÝˆ�:„:ÔÐÐØ„>ÔÐÐØ„;Ð�8Ð5 d¤g¤m mÐ5Ð5ð	
ð rF   c                 ó`   — |�t          |t          ¦  «        r|                      ¦   «          d S d S r>   )rË  r  rÒ  )r€   r>  rž   rt  s       rD   ru  zConnection.__exit__ó  s-   € à	€\•Z ¥iÑ0Ô0€\Ø‡:‚:�<„<€<€<€<ð €\rF   c                 ó<   — | j                              |¬¦  «         d S )N©Útimeout)rÆ  Ú	interrupt)r€   rø  s     rD   rù  zConnection.interruptø  s!   € Ø„'×Ò˜gÐÑ&Ô&Ð&Ð&Ð&rF   r¯  rù  c                 óò   — t          j        t          j        | j                             |¦  «        d         ¦  «        f| j        ¬¦  «        }|                      || ¦  «         |                      ¦   «          d S )Nr   r  )	rÕ  rÖ  rJ  ÚQueryrå   rœ   r×  rG  rK  )r€   r¯  rÜ  s      rD   r‡  zConnection.executeû  sv   € Ý
ÔÝ„M�$”*×$Ò$ UÑ+Ô+¨AÔ.Ñ/Ô/ðð Ô"ðñ ô €!ð
 ‡-‚-��4ÑÔÐØ×ÒÑÔÐÐÐrF   Úlanguager|  c                 óp   — d ||¦  «        z   dz    ||¦  «        z   dz   }|                       |¦  «         d S )NzDO z
 LANGUAGE rÎ  ©r‡  )r€   rü  r|  ÚqlitÚqidÚsqls         rD   ÚdozConnection.do	  sE   € ð 	���V‘”Ñ˜|Ñ+¨c¨c°(©m¬mÑ;¸cÑA€#Ø‡,‚,ˆsÑÔÐÐÐrF   c                 ó*   — t          | ||¬¦  «        }|S )NrÖ  )r½  )r€   r¾  r¿  rÏ   s       rD   rÕ  zConnection.xact	  s   € Ý�$ I°dÐ;Ñ;Ô;€!Ø	
€(rF   Úsql_statement_stringc                 óp   —  || ||¦  «        }|                      ¦   «          |                     ¦   «          |S r>   )rº  rç  )r€   r  rê  ÚClassrè  s        rD   r©  zConnection.prepare	  s7   € ð
 €uˆT�<Ð!5Ñ6Ô6€"Ø‡(‚(�*„*€*Ø‡(‚(�*„*€*Ø	€)rF   c                 ó   —  || ¦  «        S r>   r?   )r€   r  s     rD   r¯  zConnection.query	  s   € à	ˆˆt‰ŒÐrF   rê  c                 óx   — t          | |d ¦  «        }|                     ¦   «          |                     ¦   «          |S r>   )rÀ  rº  rç  )r€   rê  rè  s      rD   Ústatement_from_idzConnection.statement_from_id	  s2   € Ý��| TÑ*Ô*€"Ø‡(‚(�*„*€*Ø‡(‚(�*„*€*Ø	€)rF   Úproc_idc                 ó&   — t          || ¦  «        }|S r>   )rD  )r€   r
  Úsps      rD   r  zConnection.proc#	  s   € Ý�w Ñ%Ô%€"Ø	€)rF   rU   c                 óR   — t          d d | |¦  «        }|                     ¦   «          |S r>   )ry  rº  )r€   rU   rn  s      rD   Úcursor_from_idzConnection.cursor_from_id'	  s'   € ÝˆT�4˜˜yÑ)Ô)€!Ø‡'‚'�)„)€)Ø	
€(rF   c                 ó”   — t          | dd ¦  «        €dS t          | j        d¦  «        r| j        j        �| j        j        j        du S dS )NrÆ  TÚsocketF)r�  rÑ  rÆ  rÕ  rL  r¹  s    rD   rÐ  zConnection.closed,	  sM   € åˆT�4˜ÑÔÐ&Ø
ˆ$ÝˆTŒW�hÑÔð % D¤G¤LÐ$<Ø
Œ'Œ,Ô
 Ð
$Ð$Ø	ˆrF   c                 ó  —  || dd ¦  «        � || j         dd ¦  «        €d S  || j         dd ¦  «        }|�"|j        dur| j                              ¦   «          | j         j        €i| j                              t          j        ¦   «         ¦  «         | j                              ¦   «          | j         j        r| j                              ¦   «          | j         j        r,| j         j                             ¦   «          d | j         _        d S d S )NrÆ  r  rÕ  T)rÆ  rL  rN  rÕ  ÚpushÚClosingr  rÒ  )r€   r�  rÏ   s      rD   rÒ  zConnection.close4	  sÿ   € ð €WˆT�4˜ÑÔÐ&¨'¨'°$´'¸8ÀTÑ*JÔ*JÐ*Rà	€6à€gˆdŒg�v˜tÑ$Ô$€!Ø€]�q”w dÐ*Ð*à„7×ÒÑÔÐà	„W„\Ðà„7‡<‚<•”‘”ÑÔÐØ„7×ÒÑÔÐØ
„g„nð Ø„G×ÒÑÔÐð 
„W„^ð Ø„7„>×ÒÑÔÐØ€4„7„>€>€>ðð rF   c                 ó  — t          | d¦  «        sdS t          | d¦  «        rdS | j        rdS t          | j        j        t          j        ¦  «        rdS | j        j        €)| j        j        dk    rdS d	| j        j        d
k    rdndz   S dS )NrÆ  rÂ  rì  ÚfailedrÐ  ÚnegotiatingrÆ  zfailed blockÚidler,  z	 in blockrA  Úbusy)rÑ  rÐ  re   rÆ  rÕ  ÚNegotiationr  r¹  s    rD   r  zConnection.stateM	  s�   € å	��tÑ	Ô	ð Ø
ˆ-ÝˆT�:ÑÔð Ø
ˆ(Ø	„[ð Ø
ˆ(Ý�””�dÔ.Ñ/Ô/ð Ø
ˆ-Ø	„W„\ÐØ
„g„m�tÒÐØˆ>Ø
 4¤7¤=°DÒ#8Ð#8�K�K¸bÑ
AÐAà
ˆ&rF   c                 ó0   — |                       d¦  «         dS )zQ
		restore original settings, reset the transaction, drop temporary
		objects.
		zABORT; RESET ALL;Nrþ  r¹  s    rD   ÚresetzConnection.reset^	  s   € ð
 ‡,‚,Ð"Ñ#Ô#Ð#Ð#Ð#rF   c                 ó.   — |                       ¦   «          | S r>   )Úconnectr¹  s    rD   rq  zConnection.__enter__e	  s   € Ø‡,‚,�.„.€.Ø	€+rF   c                 ó&  — | j         du rdS t          | d¦  «        r=| j        j        }| j                             |j        t          |dd¦  «        | ¬¦  «         	 |                      ¦   «          dS # t          $ r |  
                    ¦   «          ‚ w xY w)z&Establish the connection to the serverFNrÆ  Ú	exception)rF  r}  )rÐ  rÑ  rÆ  rÕ  rå   r’  r€  r�  Ú
_establishr  rÒ  rü  s     rD   r  zConnection.connecti	  s¢   € à	„[�EÐÐà	€6åˆT�4ÑÔð bà„w„|€1Ø„:×Ò˜!œ/µ7¸1¸kÈ4Ñ3PÔ3PÐ\`ÐÑaÔaÐað	Ø‡?‚?ÑÔÐÐÐøÝ	ð 	ð 	ð 	à‡:‚:�<„<€<Øð	øøøs   ÁA0 Á0 Bc                 óä
  •— d | _         | j        j        }| j        j        pd}g }d }	 | j                             ¦   «         }n# t
          $ r}d}|}Y d }~nd }~ww xY w|dk    rct          t          t          d t          |¦  «        ¦  «        |¦  «        t          t          dt          |¦  «        ¦  «        |¦  «        ¦  «        }nì|dk    rct          t          t          dt          |¦  «        ¦  «        |¦  «        t          t          d t          |¦  «        ¦  «        |¦  «        ¦  «        }nƒ|dk    r,t          t          dt          |¦  «        ¦  «        |¦  «        }nQ|dk    r,t          t          d t          |¦  «        ¦  «        |¦  «        }nt          dt          |¦  «        z   ¦  «        ‚d}| j        j        }| j        j        }	t          j        }
|D �]ß\  }}|du rd}Œ |
|||	¬	¦  «        }t!          | d
¦  «        r| j        |_        |j        }|                     ||¬¦  «         t)          |dd¦  «        }|j        €‚|| _         t!          | j         j        d¦  «        r| j         j        j        | _        |du rdnd | _        t0          j        j        }|j        D ]"}|j        |k    r|                      |¦  «         Œ# �n|j        �|j                             ¦   «          |dk    r|du r|du rd}n,t!          |j        d¦  «        r|dk    r|du rd}n
|dk    r|€d}	 | j                             |j        j         ¦  «         n,# t
          $ r}||_!        d |_"        d |_#        Y d }~nd }~ww xY wt)          |j        dd ¦  «        �|j        j$        |j!        _%        | &                    |¦  «         �Œá|pd| _'        | j         (                    tR          | |¬¦  «         | j         j*        | _*        | j+        j,         -                    dd¦  «        }t]          j/        t]          j0        |¦  «        ¦  «        | _1        te          j3        | td          j4        ¦  «        | _4        | j1        d d…         }|dk    r| j4         5                    ¦   «         }n9|dk    r| j4         6                    ¦   «         }n| j4         7                    ¦   «         }|\  | _8        | _9        | _:        | _;        | j8         0                    ¦   «         d         | _        | j+         -                    d¦  «        }|�|dk    rn | <                    ¦   «         dvr
d| j+        d<   t{          ¦   «                              ¦   «          d S )NÚpreferr?   ÚallowTFÚrequireÚdisablezinvalid sslmode: )ÚpasswordÚtracer)Ússlrø  rí  r”  Úfilenor(  r  r  Úserver_versionz0.0r   )r�   r   )é	   r   r   Ústandard_conforming_strings)ÚonÚtrueÚyesr-  )>rÆ  rî  Úconnect_timeoutÚsslmodeÚsocket_factory_sequencer  r   rº   r   rH  r`   ra   Ú_startup_parametersÚ	_passwordÚclientrç  rÑ  r'  rÕ  r  r�  r  r)  ÚsecurityrJ  Ú
ShowOptionr>  Úasyncsr×  rÒ  rå   r’  r€  rî  r}  Ú__traceback__r  Ú	__cause__rà   rì  rI  Úcould_not_connectÚ
backend_idro  ry  rÂ   Ú
pg_versionÚ	normalizeÚsplitr�   Úpg_libÚBindingrƒ   Ústartup_data_only_versionÚstartup_data_92Ústartup_datarë  Úbackend_startré  rê  r™   r~   )r€   rø  r1  rì  ÚexcÚsocket_factoriesÚeÚcan_skipÚstartupr&  ÚConnection3r(  ÚsfrÆ  ÚnegÚdidsslÚshowoption_typerÏ   rî  ÚsvÚviÚsdÚscstrr�   s                          €rD   r   zConnection._establish|	  s­  ø€ à€$„'ð ŒNÔ*€'ØŒNÔ"Ð. h€'Ø€(Ø€#ðà”n×<Ò<Ñ>Ô>ÐÐøÝ	ð ð ð ØÐØ	
€3€3€3€3€3€3øøøøðøøøð �ÒÐåÝ�ˆt•SÐ)Ñ*Ô*Ñ+Ô+Ð-=Ñ>Ô>Ý�ˆt•SÐ)Ñ*Ô*Ñ+Ô+Ð-=Ñ>Ô>ñô ÐÐð �(ÒÐåÝ�ˆu•cÐ*Ñ+Ô+Ñ,Ô,Ð.>Ñ?Ô?Ý�ˆt•SÐ)Ñ*Ô*Ñ+Ô+Ð-=Ñ>Ô>ñô ÐÐð �)ÒÐÝ�& ¥sÐ+;Ñ'<Ô'<Ñ=Ô=Ð?OÑPÔPÐÐØ�)ÒÐå�& ¥sÐ+;Ñ'<Ô'<Ñ=Ô=Ð?OÑPÔPÐÐå	Ð'­$¨w©-¬-Ñ7Ñ	8Ô	8Ð8ð €(ØŒNÔ.€'ØŒ^Ô%€(ÝÔ!€+Ø#ð FQñ FQ�i€sˆBØ�$ÐÐà€HØØˆ�B˜¨HÐ6Ñ6Ô6€2Ýˆd�HÑÔð Ø”€B„Ið 
Œ€3Ø‡:‚:�C 7€:Ñ+Ô+Ð+å�BÐ)¨2Ñ.Ô.€6ð 	„g€oØ€D„GÝˆtŒwŒ~˜xÑ(Ô(ð )Ø”7”>Ô(€T„[Ø# t˜^˜^�E�E°€D„MÝÔ(Ô-€OØŒZð ð ˆØ	Œ�/Ò!Ð!Ø
×Ò˜!ÑÔÐøà	�EØ
Œ	Ðð „I‡O‚OÑÔÐð �ÒÐ˜c U˜l˜l¨v¸¨¨ð
 €H€HÝ�”˜Ñ%Ô%ð 
ð �(ÒÐ˜s e˜|˜|ð €X€XØ	�GÒ	Ð	  ð €XðØ„J×Ò˜2œ7Ô0Ñ1Ô1Ð1Ð1øÝ
ð ð ð Ø€B„Hà€E„Mà€EÔÐÐÐÐÐøøøøðøøøõ ˆbŒg�{ DÑ)Ô)Ð5ØœÔ*€B„HÔà‡?‚?�2ÑÔÐÑð �>˜r€4„=à„:× Ò Õ!2¸dÈCÐ ÑPÔPÐPð ”GÔ&€$„/à„}Ô×ÒÐ/°Ñ7Ô7€"Ý Ô*­:Ô+;¸BÑ+?Ô+?Ñ@Ô@€$ÔåŒ^˜D¥&¤*Ñ-Ô-€$„(àÔ˜˜!˜Ô€"Øˆ5‚[€[ØŒ×*Ò*Ñ,Ô,€2€2Ø	ˆU‚{€{ØŒ× Ò Ñ"Ô"€2€2àŒ×ÒÑÔ€2ð +-ñ(€$„,�Ô"ØÔ�tÔ'ð Œl× Ò Ñ"Ô" 1Ô%€$„)ð Œ-×
Ò
Ð9Ñ
:Ô
:€%Ø
€]�b˜E’k�kð Ø‡{‚{�}„}Ð/Ð/Ð/Ø26€4„=Ð.Ñ/å�'„'‡/‚/ÑÔÐÐÐs/   ¨A Á
AÁAÁAÌ'$MÍ
M5ÍM0Í0M5c                 óæ   — | j         j        }|�?| j                              ¦   «          |j        �| j                             |j        ¦  «         |�|| _        | j                              |¦  «         d S r>   )	rÆ  rÕ  rN  rL  rå   r’  r€  r�  r  )r€   rÕ  Ú
controllerrÏ   s       rD   rG  zConnection._pq_push
  sl   € Ø
„g„l€!Ø€]Ø„7×ÒÑÔÐØ„gÐØ„J×Ò˜1œ?Ñ+Ô+Ð+ØÐØ €4ÔØ„'‡,‚,ˆtÑÔÐÐÐrF   c                 óÄ   — | j         }|j        }|�O|                     ¦   «          |j        �0| j                             |j        t          |dd ¦  «        ¬¦  «         | `d S d S ©Nr  rE  )	rÆ  rÕ  rN  rL  rå   r’  r€  r�  r�  )r€   rÆ  rÏ   s      rD   rK  zConnection._pq_complete$
  sf   € Ø„w€"Ø„g€!Ø€]à‡;‚;�=„=€=à„gÐØ„J×Ò˜1œ?µG¸A¸{ÈDÑ4QÔ4QÐÑRÔRÐRØÐÐÐð €]rF   rÕ  c                 óÚ   — | j         }|j        }|�X|                     ¦   «          |j        |u r=|j        �0| j                             |j        t          |dd ¦  «        ¬¦  «         | `	d S d S d S rW  )
rÆ  rÕ  r9  r  rL  rå   r’  r€  r�  r�  )r€   Úcomplete_staterÆ  rÏ   s       rD   rH  zConnection._pq_step0
  s}   € Ø„w€"Ø„g€!Ø€]Ø‡7‚7�9„9€9ð „g�ÐÐØ„wÐØ	„Z×Ò˜AœOµW¸QÀÈTÑ5RÔ5RÐÑSÔSÐSØÐÐÐð €]ð  ÐrF   c                 ó  — |pt          | d| ¦  «        }|j        }||k    rY|j        dk    r2| j                             |j                             d¦  «        ¦  «         | j                             |¦  «         d S ||k    r| j         	                    ||¬¦  «        }d S ||k    r| j
                             |¦  «         d S | j                             t          j        ddddt          |¦  «        ff¦  «        |¬¦  «         d S )	Nr�  s   client_encodingr0  rC  )rI   z-1000)rG   r›  )rK   z0cannot process unrecognized asynchronous messager  )r�  r>  rÆ   rå   r¢   rž   r¨   ro  r²  r§  Ú	_notifiesrà   r¤  rJ  r¦  ra   )	r€   r°  rU  Ú
showoptionr™  Únotifyrn  rÉ   r�  s	            rD   r×  zConnection._receive_async<
  s"  € ð Ð6•G˜D -°Ñ6Ô6€!ØŒ€#ØˆJÒÐØ	„hÐ$Ò$Ð$Ø„J×Ò˜CœI×,Ò,¨WÑ5Ô5Ñ6Ô6Ð6Ø„=×Ò˜ÑÔÐÐÐØ
ˆf‚}€}Ø„z×Ò˜s¨aÐÑ0Ô0€1€1€1Ø
ˆf‚}€}Ø„>×Ò˜ÑÔÐÐÐà„:×!Ò!ÝÔØØØ?Ø
�D�‰IŒIÐð	ñ ô ð ð "ñ ô ð ð ð rF   c                 óZ   —  | j         | j        g|¢R i |¤Ž}|                     ¦   «          |S r>   )r�   rî  r  )r€   rØ  r‘  rn  s       rD   r}  zConnection.cloneW
  s7   € Ø€d„n�T”^Ð1 dÐ1Ð1Ð1¨bÐ1Ð1€!Ø‡)‚)�+„+€+Ø	
€(rF   c                 óø   — d}|r'|d                      d„ |D ¦   «         ¦  «        z  }|dz  }|r9|d                      d„ |                     ¦   «         D ¦   «         ¦  «        z  }|dz  }|                      |¦  «        S )NrA  rÎ  c              3   óî   K  — | ]p}|j         t          urd |                     dd¦  «        z   dz   nAd |d                              dd¦  «        z   dz   |d                              dd¦  «        z   dz   V — ŒqdS )	úNOTIFY "r½  r¾  r   ú",'r   ú'ú''N)r�   rß   rÈ  rü   s     rD   rE   z$Connection.notify.<locals>.<genexpr>_
  s¥   è è € ð ð ð 	
ð 	„{�%ÐÐð �—’˜3 Ñ%Ô%Ñ%¨Ñ+Ð+ð �!�A”$—,’,˜s DÑ)Ô)Ñ)¨IÑ5Ø€q„T‡\‚\�#�tÑÔñØ"ñ#ð	ð ð ð ð ð rF   c              3   óˆ   K  — | ]=\  }}d |                      dd¦  «        z   dz   |                      dd¦  «        z   dz   V — Œ>dS )ra  r½  r¾  rb  rc  rd  Nr”  )rA   ÚchannelÚpayloads      rD   rE   z$Connection.notify.<locals>.<genexpr>j
  sr   è è € ð ð ñ 	ˆ�ð �—’  dÑ+Ô+Ñ+¨iÑ7Ø‡O‚O�C˜ÑÔñØ!$ñ%ðð ð ð ð ð rF   )rÓ  r  r‡  )r€   ÚchannelsÚchannel_and_payloadÚnotifiess       rD   r]  zConnection.notify\
  s»   € Ø€(Øð 
Øˆs�xŠxð ð ð ðñ ô ñ ô ñ €8ð ˆs�?€8Øð Øˆs�xŠxð ð ð 0×5Ò5Ñ7Ô7ðñ ô ñ ô ñ €8ð
 ˆs�?€8Ø	�Š�hÑ	Ô	ÐrF   c                 óŒ   — | j         d d…         dk    r| j                             ¦   «         S | j                             ¦   «         S )Nr   rŒ   )r�   rƒ   Úlistening_channelsÚlistening_relationsr¹  s    rD   rl  zConnection.listening_channelsr
  sA   € Ø	Ô�r˜�rÔ˜UÒ"Ð"Ø
Œ(×
%Ò
%Ñ
'Ô
'Ð'à
Œ(×
&Ò
&Ñ
(Ô
(Ð(rF   )rH  c                ó´   — d}|D ]?} ||¦  «        dk    rt          d|z   ¦  «        ‚|d|                     dd¦  «        z   z  }Œ@|                      |¦  «        S )NrA  é?   úchannel name too long: z	; LISTEN r½  r¾  ©r`   rÈ  r‡  ©r€   rH  rh  rð  rÏ   s        rD   ÚlistenzConnection.listenx
  sl   € Ø	€$Øð .ð .€aà	€cˆ!�f„fˆr‚k€kÝ
Ð.°Ñ2Ñ
3Ô
3Ð3Øˆ;˜Ÿš 3¨Ñ-Ô-Ñ-Ñ-€4€4Ø	�Š�dÑ	Ô	ÐrF   c                ó´   — d}|D ]?} ||¦  «        dk    rt          d|z   ¦  «        ‚|d|                     dd¦  «        z   z  }Œ@|                      |¦  «        S )NrA  ro  rp  z; UNLISTEN r½  r¾  rq  rr  s        rD   ÚunlistenzConnection.unlisten�
  sl   € Ø	€$Øð 0ð 0€aà	€cˆ!�f„fˆr‚k€kÝ
Ð.°Ñ2Ñ
3Ô
3Ð3Øˆ=˜1Ÿ9š9 S¨$Ñ/Ô/Ñ/Ñ/€4€4Ø	�Š�dÑ	Ô	ÐrF   c              #   ób   K  — t          | |¬¦  «        }|D ]}|€d V — Œ	|d         D ]}|V — ŒŒd S )Nr÷  r   r"   )r€   rø  ÚnmrÏ   rû  s        rD   ÚiternotifieszConnection.iternotifiesŠ
  sd   è è € Ý˜4¨7Ð3Ñ3Ô3€"Øð ð €aØ€iØ
€J€J€J€JàˆqŒTð ð ˆØ€W€W€W€Wðð	ð rF   c                 óÔ   — || _         g | _        d| _        | j         j                             | ¦  «        | _        | j                             d¦  «         t          | ¦  «        | _        dS )z7
		Create a connection based on the given connector.
		r”  r0  N)rî  r[  r)  Údriverrå   r¢   rw  ro  )r€   rî  rØ  r‘  s       rD   r   zConnection.__init__“
  sZ   € ð €$„.à€$„.Ø€$„+ØŒ~Ô$×*Ò*¨4Ñ0Ô0€$„*Ø„*×Ò˜'Ñ"Ô"Ð"Ý˜4‘.”.€$„-€-€-rF   r>   rÎ   )?r¨  r©  rª  rî  r>  r�   rë  r6  r<  ré  rê  rw  ro  r?  rð  ru  rù  rb   r‡  r�  Úquote_literalr   r  rÕ  rÀ  r©  r8  r§  r¯  r	  rÞ   rD  r  ry  r  rc  rÐ  r�  rÒ  r  r  rq  r  r   rG  rK  ÚglobalsrI  rH  rJ  r7  ÚNoticeÚNotifyr×  r}  r]  rl  rH  rs  ru  rx  r   r´  rµ  s   @rD   rç  rç  Â  s  ø€ € € € € Ø€à€Ø€Ø€à€Ø€Ø€Ø€ð €ðð ð ð4ð ð ðð ð ð
'ð 'ð 'ð 'ð˜3ð  4ð ð ð ð ð 
Ô	ØÔðð ˜ð  sð ð ðð ð ð ðð ð ð ð Ø
ðð Øðð ð	ð ð ð ð Ø(ð ð ð ñ „(ðð¨Cð °Ið ð ð ð ð˜3 ˜*ð ¨ð ð ð ð ð cð ¨fð ð ð ð ð
 ð�Tð ð ð ñ „(ðð #ð ð ð ð ð2 ð�Cð ð ð ñ „(ðð $ð $ð $ðð ð ð	ð 	ð 	ð&[ð [ð [ð [ð [ðzð ð ð ð	ð 	ð 	ð &- W¡Y¤Y¨vÔ%6Ô%?ð 
ð 
ð 
ð 
ð ØÔ!Ô&ØŒ>ÔØŒ>Ôð	ð ð ð ð6ð ð ð
 ð  ð  ð,)ð )ð )ð $'ð ð ð ð ð ð &)ð ð ð ð ð ðð ð ð ð
!ð 
!ð 
!ð 
!ð 
!ð 
!ð 
!rF   rç  c                   óŠ   ‡ — e Zd ZdZed„ ¦   «         Zd„ Zd„ Zed„ ¦   «         Z		 	 	 	 	 	 	 	 dde
dd	d
dddddddddfˆ fd„Zˆ xZS )Ú	Connectorz¨
	All arguments to Connector are keywords. At the very least, user,
	and socket, may be provided. If socket, unix, or process is not
	provided, host and port must be.
	c                 óp   — t          j        d„ | j                             ¦   «         D ¦   «         d¬¦  «        S )Nc                 óP   — i | ]#\  }}|®|                      d¦  «        °|dv¯ ||“Œ$S )Nr¡   )rz  Úcategory)Ú
startswithr@   s      rD   rx  z%Connector._pq_iri.<locals>.<dictcomp>©
  sT   € ð ð ð Ùˆa�Ø€}˜QŸ\š\¨#Ñ.Ô.€}°1ð =ð 4ð 4ð ˆð4ð 4ð 4rF   T)Úobscure_password)Úpg_iriÚ	serializer  r  r¹  s    rD   rï  zConnector._pq_iri¦
  sK   € å	Ô	ðð Ø”]×(Ò(Ñ*Ô*ðñ ô ð ð
ñ 
ô 
ð rF   c              #   óF   K  — d d| j         j        z   dz   | j        z   fV — d S )NrÂ  rô  )r�   r¨  rï  r¹  s    rD   r?  zConnector._e_metas²
  s3   è è € Ø	ˆs�T”^Ô,Ñ,¨tÑ3°d´lÑBÐCÐCÐCÐCÐCÐCrF   c                 ó  ‡ — dt           j        z   dz                        ˆ fd„‰ j        D ¦   «         ¦  «        }d                     t          ‰ ¦  «        j        t          ‰ ¦  «        j        |rt           j        dz   |z   nd¬¦  «        S )Nr^  rÆ  c           	      óˆ   •— g | ]>}|                      d ¦  «        s't          ‰|d¦  «        ®(|›dt          ‰|d¦  «        ›�‘Œ?S )r¡   Nz = )r„  r�  )rA   rB   r€   s     €rD   rÑ   z&Connector.__repr__.<locals>.<listcomp>¶
  sa   ø€ ð ,ð ,ð ,Ø./Ø
�,Š,�sÑ
Ô
ð,å '¨¨a°Ñ 6Ô 6Ð Bð ˆqˆq•'˜$  4Ñ(Ô(Ð(Ð)Ø BÐ BÐ BrF   z{mod}.{name}({keywords})rA  )rí  rÆ   Úkeywords)r×  rØ  rÓ  r  rh  r>  r©  r¨  )r€   r‹  s   ` rD   rð  zConnector.__repr__µ
  sœ   ø€ Ø•B”JÑ Ñ$×*Ò*ð ,ð ,ð ,ð ,Ø37´=ð,ñ ,ô ,ñ ô €(ð 
$×	*Ò	*Ý	ˆd‰ŒÔ	Ý
ˆt‰*Œ*Ô
Ø-5Ð=�bŒj˜3Ñ Ñ)Ð)¸2ð 
+ñ 
ô 
ð rF   c                 ó   — dS )a&  
		Generate a list of callables that will be used to attempt to make the
		connection to the server. It is assumed that each factory will produce
		an object with a socket interface that is ready for reading and writing
		data.

		The callables in the sequence must take a timeout parameter.
		Nr?   r¹  s    rD   r2  z!Connector.socket_factory_sequenceÀ
  r»  rF   Nr0  Úserver_encodingzserver encoding hint for driverr1  )r#  r"  r$  r%  Ú
sslcrtfileÚfilepathÚ
sslkeyfileÚsslrootcrtfileÚsslrootcrlfilec	                 óx  •‡—  t          ¦   «         j        di |	¤Ž || _        || _        || _        || _        || _        || _        || _        || _	        | j	        �(t          j        d| ¬¦  «                             ¦   «          ddi}
| j        r›t          | j        ¦  «        }d| j        v ri|                     d¦  «        }|€| j                             d¦  «         n7t#          |t$          ¦  «        s"d                     d„ |D ¦   «         ¦  «        |d<   |
                     |¦  «         | j        |
d<   | j        �
| j        |
d	<   | j        pd
Št/          ˆfd„|
                     ¦   «         D ¦   «         ¦  «        | _        | j        pd                     ‰¦  «        | _        | j        | j        | j        dœ| _        d S )Nz.certificate revocation lists are *not* checkedrC  Úclient_min_messagesr›  r�  r^  c              3   ó>   K  — | ]}t          j        |¦  «        V — Œd S r>   )r�  r   rü   s     rD   rE   z%Connector.__init__.<locals>.<genexpr>ò
  s>   è è € ð !ð !Ø !…fÔ˜ÑÔð!ð !ð !ð !ð !ð !rF   Úuserrk   úutf-8c                 óÚ   •— g | ]g\  }}|                      d ¦  «        t          |¦  «        t          u r|                      ‰¦  «        n!t          |¦  «                              d ¦  «        f‘ŒhS )r—  )r¥   r>  rb   )rA   rB   rC   Úses      €rD   rÑ   z&Connector.__init__.<locals>.<listcomp>ÿ
  ss   ø€ ð 
$ð 
$ð 
$ñ €qˆ!ð ‡H‚HˆWÑÔõ ˜‘G”G�s�N�N€A‡H‚HˆR�L„L€L­¨A©¬¯ª°gÑ(>Ô(>ðð
$ð 
$ð 
$rF   rA  )ÚkeyfileÚcertfileÚca_certsr?   )r~   r   rz  r�  r0  r1  r�  rŽ  r‘  r’  r¯  ÚIgnoredClientParameterWarningr�  ro  r^  rÂ   r~  re   rb   rÓ  r  r–  rk   rß   r  r3  r&  r¥   r4  Ú_socket_secure)r€   r0  r�  r1  rŽ  r�  r‘  r’  rz  r‘  ÚtnkwrP   r  r™  r�   s                @€rD   r   zConnector.__init__Ë
  sÿ  øø€ ð …%�'„'ÔÐÐ�RÐÐÐØ€$„+à(€$ÔØ(€$ÔØ€$„,Ø€$„/Ø€$„/Ø&€$ÔØ&€$Ôà	ÔÐ$Ý	Ô'Ø4Øðñ ô ÷ 
‚T�V„V€Vð ˜9ð
€$ð 
„]ð 
ÝˆDŒMÑÔ€1Ø�t”}Ð$Ð$Ø	
�Šˆ}Ñ	Ô	€BØ	€zØ	„]×Ò�}Ñ%Ô%Ð%Ð%Ý˜�CÑ Ô ð ØŸšð !ð !Ø%'ð!ñ !ô !ñ ô €Q€}Ñð ‡;‚;ˆq�>„>€>à”€$€v�,Ø	„]ÐØ”m€4ˆ
ÑàÔÐ&˜w€"õ #ð 
$ð 
$ð 
$ð 
$ð �zŠz‰|Œ|ð
$ñ 
$ô 
$ñ 
ô 
€$Ôð ”MÐ' R×/Ò/°Ñ3Ô3€$„.àŒØ”ØÔ#ðð €$ÔÐÐrF   )NNNNNNNN)r¨  r©  rª  r«  r8  rï  r?  rð  r	   r2  rÞ   r   r´  rµ  s   @rD   r€  r€   
  s  ø€ € € € € ðð ð
 ð	ð 	ñ „(ð	ðDð Dð Dð	ð 	ð 	ð ðð ñ „.ðð Ø8<Ø8<Ø Ø Ø $Ø $ØðDð DØðDà5ðDð 6ðDð ð	Dð
 ðDð ðDð ðDð Dð Dð Dð Dð Dð Dð Dð Dð DrF   r€  c                   ó.   — e Zd ZdZed„ ¦   «         Zd„ ZdS )ÚSocketConnectorz/abstract connector for using `socket` and `ssl`c                 ó   — dS )zd
		Return a sequence of `SocketFactory`s for a connection to use to connect
		to the target host.
		Nr?   r¹  s    rD   r2  z'SocketConnector.socket_factory_sequence  r»  rF   c                 ó   — t          di |¤ŽS )Nr?   r   )r€   r1  s     rD   Úcreate_socket_factoryz%SocketConnector.create_socket_factory  s   € Ý	Ð	 Ð	 ˜Ð	 Ð	 Ð rF   N)r¨  r©  rª  r«  r	   r2  r¤  r?   rF   rD   r¡  r¡    sB   € € € € € Ø2Ð2Øðð ñ „.ðð!ð !ð !ð !ð !rF   r¡  c                   ó*   ‡ — e Zd Zd„ Zd„ Zˆ fd„Zˆ xZS )ÚIPConnectorc                 ó   — | j         S r>   ©Ú_socketcreatorsr¹  s    rD   r2  z#IPConnector.socket_factory_sequence  ó   € Ø	Ô	ÐrF   c                 óÔ   — || j         k    rt          d| j         z  ¦  «        ‚|€t          d¦  «        ‚|€t          d¦  «        ‚| j        t          j        f|t          |¦  «        fdœS )Nz'ipv' keyword must be '%d'z1'host' is a required keyword and cannot be 'None'z1'port' is a required keyword and cannot be 'None'©Úsocket_createÚsocket_connect)Úipvrf   Úaddress_familyr  ÚSOCK_STREAMrÞ   )r€   ÚhostÚportr¯  r‘  s        rD   Úsocket_factory_paramsz!IPConnector.socket_factory_params"  sv   € ØˆDŒH‚_€_Ý	Ð/°$´(Ñ:Ñ	;Ô	;Ð;Ø	€\Ý	ÐFÑ	GÔ	GÐGØ	€\Ý	ÐFÑ	GÔ	GÐGà Ô/µÔ1CÐDØ�S ™YœYÐ'ð
)ð 
)ð )rF   c                 óÂ   •—  | j         |||fi |¤Ž}|d         \  | _        | _         | j        di |¤Ž| _        | j        f| _         t          ¦   «         j        di |¤Ž d S ©Nr®  r?   )r´  r²  r³  r¤  Ú_socketcreatorr©  r~   r   )r€   r²  r³  r¯  r‘  r1  r�   s         €rD   r   zIPConnector.__init__-  s�   ø€ Ø%ˆ4Ô% d¨D°#Ð<Ð<¸Ð<Ð<€&ØÐ 0Ô1Ñ€$„)ˆTŒYà2˜Ô2Ð<Ð<°VÐ<Ð<€$ÔØÔ-Ð/€$ÔØ…%�'„'ÔÐÐ�RÐÐÐÐÐrF   )r¨  r©  rª  r2  r´  r   r´  rµ  s   @rD   r¦  r¦    sV   ø€ € € € € ðð ð ð	)ð 	)ð 	)ðð ð ð ð ð ð ð ð rF   r¦  c                   óF   ‡ — e Zd ZdZdZej        Z	 	 	 ddddefˆ fd„Z	ˆ xZ
S )	ÚIP4z+Connector for establishing IPv4 connectionsrŽ   Nr²  zIPv4 Address (str)r³  c                 ó@   •—  t          ¦   «         j        |||fi |¤Ž d S r>   ©r~   r   ©r€   r²  r³  r¯  r‘  r�   s        €rD   r   zIP4.__init__:  ó.   ø€ ð …%�'„'Ô�4˜˜sÐ)Ð) bÐ)Ð)Ð)Ð)Ð)rF   )NNrŽ   )r¨  r©  rª  r«  r¯  r  ÚAF_INETr°  rÞ   r   r´  rµ  s   @rD   r¹  r¹  5  so   ø€ € € € € Ø.Ð.Ø€Ø”.€ð !%ØØ	ð*ð *Ø	ð*à	ð*ð *ð *ð *ð *ð *ð *ð *ð *ð *rF   r¹  c                   óF   ‡ — e Zd ZdZdZej        Z	 	 	 ddddefˆ fd„Z	ˆ xZ
S )	ÚIP6z+Connector for establishing IPv6 connectionsé   Nr²  zIPv6 Address (str)r³  c                 ó@   •—  t          ¦   «         j        |||fi |¤Ž d S r>   r»  r¼  s        €rD   r   zIP6.__init__G  r½  rF   )NNrÁ  )r¨  r©  rª  r«  r¯  r  ÚAF_INET6r°  rÞ   r   r´  rµ  s   @rD   rÀ  rÀ  B  so   ø€ € € € € Ø.Ð.Ø€Ø”/€ð !%ØØ	ð*ð *Ø	ð*à	ð*ð *ð *ð *ð *ð *ð *ð *ð *ð *rF   rÀ  c                   ó0   ‡ — e Zd ZdZd„ Zd„ Zdˆ fd„	Zˆ xZS )ÚUnixz9Connector for establishing unix domain socket connectionsc                 ó   — | j         S r>   r¨  r¹  s    rD   r2  zUnix.socket_factory_sequenceQ  rª  rF   c                 óZ   — |€t          d¦  «        ‚t          j        t          j        f|dœS )Nz1'unix' is a required keyword and cannot be 'None'r¬  )rf   r  ÚAF_UNIXr±  )r€   Úunixs     rD   r´  zUnix.socket_factory_paramsT  s5   € Ø	€\Ý	ÐFÑ	GÔ	GÐGå"œN­FÔ,>Ð?Øð
ð 
ð rF   Nc                 ó¼   •— |                       |¦  «        }|d         | _         | j        di |¤Ž| _        | j        f| _         t          ¦   «         j        di |¤Ž d S r¶  )r´  rÉ  r¤  r·  r©  r~   r   )r€   rÉ  r‘  r1  r�   s       €rD   r   zUnix.__init__[  so   ø€ Ø×%Ò% dÑ+Ô+€&ØÐ%Ô&€$„)à2˜Ô2Ð<Ð<°VÐ<Ð<€$ÔØÔ-Ð/€$ÔØ…%�'„'ÔÐÐ�RÐÐÐÐÐrF   r>   )r¨  r©  rª  r«  r2  r´  r   r´  rµ  s   @rD   rÅ  rÅ  O  sa   ø€ € € € € Ø<Ð<ðð ð ðð ð ðð ð ð ð ð ð ð ð ð rF   rÅ  c            	       óN   ‡ — e Zd ZdZd„ Zd„ Z	 	 	 	 ddedeefdedd	fˆ fd
„Zˆ xZ	S )ÚHostzi
	Connector for establishing hostname based connections.

	This connector exercises socket.getaddrinfo.
	c                 ó|   ‡ — ˆ fd„t          j        ‰ j        ‰ j        ‰ j        t           j        ¦  «        D ¦   «         S )zW
		Return a list of `SocketCreator`s based on the results of
		`socket.getaddrinfo`.
		c                 óŠ   •— g | ]?} ‰j         di ‰                     |d d…         |d         dd…         ‰j        ¦  «        ¤Ž‘Œ@S )r   rÍ   rŽ   Nr   r?   )r¤  r´  rž  r%  s     €rD   rÑ   z0Host.socket_factory_sequence.<locals>.<listcomp>n  st   ø€ ð 
ð 
ð 
ð 	ð €4Ôð (ð ( ×!;Ò!;¸A¸aÀ¸c¼FÀAÀaÄDÈÈ!ÈÄHØÔ$ñ"&ô "&ð (ð (ð
ð 
ð 
rF   )r  Úgetaddrinfor²  r³  Ú_address_familyr±  r¹  s   `rD   r2  zHost.socket_factory_sequencei  sP   ø€ ð

ð 
ð 
ð 
õ ÔØ„IˆtŒy˜$Ô.µÔ0Bñô ð	
ñ 
ô 
ð rF   c                 ó   — |||dœS )N)r­  r®  Úsocket_securer?   )r€   ÚsocktypeÚaddressÚ	sslparamss       rD   r´  zHost.socket_factory_paramsw  s   € Ø#ØØð
 ð 
 ð  rF   Nr²  r³  r¯  r°  z'address family to use(AF_INET,AF_INET6)c                 óŠ  •— |€t          d¦  «        ‚|€t          d¦  «        ‚|�|�t          d¦  «        ‚|€|pt          j        | _        nO|dk    rt          j        | _        n7|dk    rt          j        | _        nt          dt          |¦  «        z   ¦  «        ‚|| _        || _         t          ¦   «         j
        di |¤Ž d S )Nz'host' is a required keywordz'port' is a required keywordz0'ipv' and 'address_family' on mutually exclusiverŽ   rÁ  z%unknown IP version selected: 'ipv' = r?   )rf   r  Ú	AF_UNSPECrÐ  r¾  rÃ  ra   r²  r³  r~   r   )r€   r²  r³  r¯  r°  r‘  r�   s         €rD   r   zHost.__init__|  sÕ   ø€ ð 
€\Ý	Ð1Ñ	2Ô	2Ð2Ø	€\Ý	Ð1Ñ	2Ô	2Ð2àÐ C OÝ	ÐEÑ	FÔ	FÐFà€[Ø(Ð<­FÔ,<€4ÔÐØ
ˆa‚x€xÝ œ.€4ÔÐØ
ˆa‚x€xÝ œ/€4ÔÐå	Ð:½TÀ#¹Y¼YÑFÑ	GÔ	GÐGØ€$„)Ø€$„)Ø…%�'„'ÔÐÐ�RÐÐÐÐÐrF   )NNNN)
r¨  r©  rª  r«  r2  r´  rb   rÞ   r   r´  rµ  s   @rD   rÌ  rÌ  c  s    ø€ € € € € ðð ð
ð ð ð ð  ð  ð ØØØ?Cð	ð Ø	ðà
ˆsˆðð 	ðð =ð	ð ð ð ð ð ð ð ð ð rF   rÌ  c                   óX   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Z	 	 	 ddefd„Z	de
fd	„Ze
efd
„ZdS )ÚDriverc              #   ój   K  — d t          | ¦  «        j        dz   t          | ¦  «        j        z   fV — d S )Nr¿   )r>  r©  r¨  r¹  s    rD   r?  zDriver._e_metas˜  s9   è è € Ø	�t�D‰zŒzÔ$ sÑ*­T°$©Z¬ZÔ-@Ñ@ÐAÐAÐAÐAÐAÐArF   c                 ó   — t          dd| i|¤ŽS ©Nrz  r?   )r¹  ©r€   r‘  s     rD   Úip4z
Driver.ip4›  ó   € Ý	Ð	!Ð	!�dÐ	!˜bÐ	!Ð	!Ð!rF   c                 ó   — t          dd| i|¤ŽS rÜ  )rÀ  rÝ  s     rD   Úip6z
Driver.ip6ž  rß  rF   c                 ó   — t          dd| i|¤ŽS rÜ  )rÌ  rÝ  s     rD   r²  zDriver.host¡  ó   € Ý	Ð	"Ð	"�tÐ	"˜rÐ	"Ð	"Ð"rF   c                 ó   — t          dd| i|¤ŽS rÜ  )rÅ  rÝ  s     rD   rÉ  zDriver.unix¤  rã  rF   Nrù  c                 óÂ  — |�1|�t          d¦  «        ‚|�t          d¦  «        ‚ | j        dd|i|¤ŽS |�|€t          d¦  «        ‚d|v rL	 t          j        t          j        |¦  «          | j        d||dœ|¤ŽS # t          j        t          f$ r Y nw xY w	 t          j        |¦  «          | j	        d||dœ|¤ŽS # t          j        $ r Y nw xY w | j
        d||dœ|¤ŽS )	z�
		Create the appropriate `postgresql.api.Connector` based on the
		parameters.

		This also protects against mutually exclusive parameters.
		Nz('unix' and 'host' keywords are exclusivez('unix' and 'port' keywords are exclusiverÉ  z-'host' and 'port', or 'unix' must be suppliedrI  )r²  r³  r?   )rf   rÉ  r  Ú	inet_ptonrÃ  rá  rî  Ú	NameErrorÚ	inet_atonrÞ  r²  )r€   rÉ  r²  r³  r‘  s        rD   Úfitz
Driver.fit§  sL  € ð 
ÐØ
ÐÝ
Ð>Ñ
?Ô
?Ð?Ø
ÐÝ
Ð>Ñ
?Ô
?Ð?Ø
ˆ$Œ)Ð
&Ð
&˜4Ð
& 2Ð
&Ð
&Ð&à
€l�d�lÝ
ÐCÑ
DÔ
DÐDð 
ˆT€k€kð
ÝÔ•f”o tÑ,Ô,Ð,ØˆDŒHÐ4˜D¨Ð4Ð4°Ð4Ð4Ð4øÝŒL�)Ð$ð 
ð 
ð 
Ø	€Tð
øøøð	Ý
Ô�TÑÔÐàˆ4Œ8Ð3˜4¨Ð3Ð3°Ð3Ð3Ð3øÝ
Œ,ð 	ð 	ð 	Ø€Dð	øøøð ˆ$Œ)Ð
3˜4¨Ð
3Ð
3°Ð
3Ð
3Ð3s$   Á.A; Á;BÂBÂ#B< Â<CÃCc                 óX   —   | j         di |¤Ž¦   «         }|                     ¦   «          |S )zl
		For information on acceptable keywords, see:

			`postgresql.documentation.driver`:Connection Keywords
		r?   )ré  r  )r€   r‘  rn  s      rD   r  zDriver.connectÑ  s1   € ð €h€d„h€n€n�€n€nÑÔ€!Ø‡)‚)�+„+€+Ø	
€(rF   c                 ó"   — || _         || _        d S r>   )Ú
connectionrå   )r€   rì  rå   s      rD   r   zDriver.__init__Û  s   € Ø€$„/Ø€$„*€*€*rF   )NNN)r¨  r©  rª  r?  rÞ  rá  r²  rÉ  r€  ré  rç  r  ri   r   r?   rF   rD   rÙ  rÙ  —  sÇ   € € € € € ðBð Bð Bð"ð "ð "ð"ð "ð "ð#ð #ð #ð#ð #ð #ð 
Ø	Ø	ð(4ð (4ð
 ð(4ð (4ð (4ð (4ðT˜Jð ð ð ð ð ",°Vð ð ð ð ð ð rF   rÙ  )NrL   )TTT)ir«  r×  r6  r  rÙ  r   Ú	itertoolsr   r   r   Ú	functoolsr   Úabcr	   Úcodecsr
   r›   Úoperatorr   r®   re  rA  r   r@  r   r=  r   r†  r   r¯  r   r�  r   Úpg_apir   r²  Úencodings.aliasesr   r   Úpython.itertoolsr   r   Úpython.socketr   Úpython.functoolsr   r   r   r«   Úprotocolr   rÕ  r   rJ  r    r5  Úprotocol.message_typesr!   Ú	notifymanr#   r$   ro   r%   rû   Útypes.ior'  Úwarningsrw  r^  r  Únotice_field_from_namerK  r;  rS   rZ   rc   rg   ri   Úobjectr·  r:  r<  r^  ra  rd  rs  rv  ry  Ú	Executionr§  rÀ  ÚPreparedStatementrD  rj  rw  r½  rç  r€  r¡  r¦  r¹  rÀ  rÅ  rÌ  rÙ  r?   rF   rD   ú<module>r      s/  ððð ð 
€	€	€	Ø €€€Ø €€€Ø &Ð &Ð &Ð &Ð &Ð &Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø *Ð *Ð *Ð *Ð *Ð *à Ð Ð Ð Ð Ð Ø€z�!�}„}€Ø€z�!�}„}€à Ð Ð Ð Ð Ð à *Ð *Ð *Ð *Ð *Ð *Ø Ð Ð Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø /Ð /Ð /Ð /Ð /Ð /Ø  Ð  Ð  Ð  Ð  Ð  à /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø )Ð )Ð )Ð )Ð )Ð )Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5à $Ð $Ð $Ð $Ð $Ð $Ø *Ð *Ð *Ð *Ð *Ð *Ø (Ð (Ð (Ð (Ð (Ð (Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2à +Ð +Ð +Ð +Ð +Ð +Ø  Ð  Ð  Ð  Ð  Ð  Ø %Ð %Ð %Ð %Ð %Ð %Ø $Ð $Ð $Ð $Ð $Ð $à €€€ð
 ˆwÔ˜*ØˆwÔ˜&ØˆwÔ˜)ØˆwÔ˜(ØˆwÔ˜&ØˆwÔ˜)ØˆwÔ˜*ØˆwÔÐ-ØˆwÔÐ*ØˆwÔ˜&ØˆwÔ˜&ØˆwÔ˜*ðÐ ð à˜ð ð Ø*×0Ò0Ñ2Ô2ðñ ô ñ ô Ð ð (�GÔ'ð )ñ ô Ð ðð ð ð ð Ø
Øð'ð 'ð 'ð 'ð&5ð 5ð 5ðð ð ðq2ð q2ð q2ð q2ð q2ˆVŒ]ñ q2ô q2ð q2ðlc1ð c1ð c1ð c1ð c1ˆVñ c1ô c1ð c1ðJð ð ð ð ˆV�V”]ñ ô ð ðið ið ið ið iˆvñ iô ið iðV/ð /ð /ð /ð /�Xñ /ô /ð /ðð ð ð ð �hñ ô ð ð8ð 8ð 8ð 8ð 8�fñ 8ô 8ð 8ðz!ð !ð !ð !ð !˜?ñ !ô !ð !ð!ð !ð !ð !ð !˜Oñ !ô !ð !ð ^ð ^ð ^ð ^ð ^ˆV�V”]ñ ^ô ^ð ^ð@1ð 1ð 1ð 1ð 1�fÔ&ñ 1ô 1ð 1ð:I	2ð I	2ð I	2ð I	2ð I	2�Ô ñ I	2ô I	2ð I	2ðT Ð ðW(ð W(ð W(ð W(ð W(�fÔ,ñ W(ô W(ð W(ðr6ð 6ð 6ð 6ð 6�ñ 6ô 6ð 6ð Rð Rð Rð Rð RˆvŒñ Rô Rð RðhWð Wð Wð Wð W�&Ô$ñ Wô Wð Wðr[!ð [!ð [!ð [!ð [!�Ô"ñ [!ô [!ð [!ð|oð oð oð oð o�Ô ñ oô oð oðd
!ð 
!ð 
!ð 
!ð 
!�iñ 
!ô 
!ð 
!ðð ð ð ð �/ñ ô ð ð.*ð *ð *ð *ð *ˆ+ñ *ô *ð *ð*ð *ð *ð *ð *ˆ+ñ *ô *ð *ðð ð ð ð ˆ?ñ ô ð ð(2ð 2ð 2ð 2ð 2ˆ?ñ 2ô 2ð 2ðhFð Fð Fð Fð FˆVŒ]ñ Fô Fð Fð Fð FrF   