+
    4O|j€÷  ã                  óô  € ^ RI Ht ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RIHtHtHtHtHtHtHtHtHt ^ RIHt ^ RIHtHt ^ RIHtHtHtHtH t  ^ RI!H"t"H#t#H$t$H%t%H&t&H't'H(t(H)t)H*t*H+t+H,t, ^ RI-H.t.H/t/ ^ R	I0H1t1H2t2 ^ R
I3H4t4H5t5H6t6 ^ RI7H8t8H9t9H:t:H;t; ^ RI<H=t=H>t> ^ RI?H@t@HAtAHBtB ^ RICHDtD ^ RIEHFtFHGtGHHtHHItI ^ RIJHKtK ^ RILHMtM ^ RINHOtO ^ RIPHQtQ ^ RIRHStS ^ RITHUtU ^ RIVHWtW ]'       dM   ^ RIHXtX ^ RIYHZtZ ^ RI[H\t\H]t]H^t^ ^ RI_H`t`Hata ^ RIbHctc ^ RIJHdtd ^ RIeHftf ^ RIRHgtg ^ RIhHitiHjtj ^ R IkHltlHmtm ^ R!InHoto R"tp ! R# R$4      tq ! R% R&]*4      tr ! R' R(4      ts ! R) R*4      tt ! R+ R,4      tuR# )-é    )ÚannotationsN)	ÚTYPE_CHECKINGÚAnyÚ	GeneratorÚMappingÚMutableMappingÚNoReturnÚOptionalÚSequenceÚUnion)ÚDEFAULT_CODEC_OPTIONS)Ú_csotÚhelpers_shared)ÚMAX_BSON_SIZEÚMAX_MESSAGE_SIZEÚMAX_WIRE_VERSIONÚMAX_WRITE_BATCH_SIZEÚORDERED_TYPES)ÚAutoReconnectÚConfigurationErrorÚDocumentTooLargeÚExecutionTimeoutÚInvalidOperationÚNetworkTimeoutÚNotPrimaryErrorÚOperationFailureÚPyMongoErrorÚWaitQueueTimeoutErrorÚ_CertificateError)ÚHelloÚHelloCompat)Ú_get_timeout_detailsÚformat_timeout_details)Ú
_cond_waitÚ_create_conditionÚ_create_lock)Ú_CONNECTION_LOGGERÚ_ConnectionStatusMessageÚ
_debug_logÚ _verbose_connection_error_reason)ÚConnectionCheckOutFailedReasonÚConnectionClosedReason)ÚNetworkingInterfaceÚreceive_messageÚsendall)ÚPoolOptions)Ú	SSLErrorsÚ_CancellationContextÚ_configured_socket_interfaceÚ_raise_connection_failure)ÚReadPreference)Ú_add_to_command)ÚSERVER_TYPE)ÚSocketChecker)Ú_validate_session_write_concern)Ú_handle_reauth)Úcommand)ÚCodecOptions)ÚObjectId)ÚSnappyContextÚZlibContextÚZstdContext)Ú_OpMsgÚ_OpReply)ÚReadConcern)Ú_ServerMode)Ú_AuthContext)ÚClientSession)ÚMongoClientÚ_MongoClientErrorHandler)Ú_AddressÚ_CollationIn)ÚWriteConcernTc                  óÐ  € ] tR t^stRtR R ltR R ltR R ltR R	 ltR
 R lt	R R lt
R R ltR R ltR R ltR R lt]]P"                  ]RRRRRRRRRRRR3R R ll4       tR R ltR R ltR R  ltR! R" ltR# R$ ltRDR% R& lltR' R( ltR) R* ltR+ R, ltR- R. ltR/ R0 ltR1 R2 ltR3 R4 lt R5 R6 lt!R7 R8 lt"R9 R: lt#R; R< lt$R= R> lt%R? R@ lt&RA RB lt'RCt(R# )EÚ
Connectiona  Store a connection with some metadata.

:param conn: a raw connection object
:param pool: a Pool instance
:param address: the server's (host, port)
:param id: the id of this socket in it's pool
:param is_sdam: SDAM connections do not call hello on creation
c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )é   Úconnr-   ÚpoolÚPoolÚaddressztuple[str, int]ÚidÚintÚis_sdamÚbool© )Úformats   "ÚQC:\Users\alokc\chatbot\backend\venv\Lib\site-packages\pymongo/synchronous/pool.pyÚ__annotate__ÚConnection.__annotate__}   s<   € ÷ 9"ñ 9"à!ð9"ð ð9"ð !ð	9"ð
 ð9"ð ñ9"ó    c                	ó
  € \         P                  ! V4      V n        Wn        W0n        W@n        WPn        R V n        \        P                  ! 4       V n
        R V n        R V n        \        V n        \        V n        \"        V n        \&        V n        R V n        R V n        R V n        R V n        VP2                  P4                  V n        VP8                  V n        VP:                  V n        VP2                  P<                  V n        RV n         \C        4       V n"        RV n#        RV n$        RV n%        VPL                  V n'        V PN                  PQ                  4       V n)        R V n*        \W        4       V n,        VP2                  V n        R V n-        RV n.        RV n/        R V n0        R V n1        R V n2        V P2                  Pf                  V n4        RV n5        VPl                  V n6        \        P                  ! 4       V n7        RV n8        R# )FNg        )9ÚweakrefÚrefÚpool_refrP   rS   rT   rV   ÚclosedÚtimeÚ	monotonicÚlast_checkin_timeÚperformed_handshakeÚis_writabler   Úmax_wire_versionr   Úmax_bson_sizer   Úmax_message_sizer   Úmax_write_batch_sizeÚsupports_sessionsÚhello_okÚ	is_mongosÚop_msg_enabledÚoptsÚ_event_listenersÚ	listenersÚenabled_for_cmapÚenabled_for_loggingÚ_compression_settingsÚcompression_settingsÚcompression_contextr8   Úsocket_checkerÚoidc_token_gen_idÚnegotiated_mechsÚauth_ctxÚgenÚpool_genÚget_overallÚ
generationÚreadyr2   Úcancel_contextÚmore_to_comeÚ
service_idÚserver_connection_idÚ
pinned_txnÚpinned_cursorÚactiveÚsocket_timeoutÚlast_timeoutÚconnect_rttÚ
_client_idÚcreation_timeÚ_cluster_time)ÚselfrP   rQ   rS   rT   rV   s   &&&&&&rZ   Ú__init__ÚConnection.__init__}   s�  € ô  Ÿš DÓ)ˆŒØŒ	ØŒØŒØŒØˆŒÜ!%§¢Ó!1ˆÔØ#(ˆÔ Ø!&ˆÔÜ 0ˆÔÜ*ˆÔÜ 0ˆÔÜ$8ˆÔ!Ø!&ˆÔØ#ˆŒØˆŒØ#ˆÔØŸ™×3Ñ3ˆŒØ $× 5Ñ 5ˆÔØ#'×#;Ñ#;ˆÔ Ø$(§I¡I×$CÑ$CˆÔ!ØY]ˆÔ Ü-:«_ˆÔØ04ˆÔà59ˆÔØ04ˆŒð Ÿ™ˆŒØŸ-™-×3Ñ3Ó5ˆŒØˆŒ
Ü4HÓ4JˆÔØ—I‘IˆŒ	Ø"'ˆÔà.2ˆŒØ37ˆÔ!ð  ˆŒØ"ˆÔØˆŒØ ŸI™I×4Ñ4ˆÔØˆÔØŸ/™/ˆŒÜ!Ÿ^š^Ó-ˆÔà!ˆÖr]   c               ó    € V ^8„  d   QhRRRR/# )rO   ÚtimeoutúOptional[float]ÚreturnÚNonerX   )rY   s   "rZ   r[   r\   ¸   s   € ÷ /ñ /¨ð /¸Dñ /r]   c                ó€   € WP                   8X  d   R# Wn         V P                  P                  P                  V4       R# )z?Cache last timeout to avoid duplicate calls to conn.settimeout.N)r‰   rP   Úget_connÚ
settimeout)rŽ   r’   s   &&rZ   Úset_conn_timeoutÚConnection.set_conn_timeout¸   s/   € à×'Ñ'Ô'ÙØ#ÔØ�	‰	×Ñ×%Ñ% gÖ.r]   c               ó$   € V ^8„  d   QhRRRRRR/# )rO   ÚclientzMongoClient[Any]Úcmdz"Optional[MutableMapping[str, Any]]r”   r“   rX   )rY   s   "rZ   r[   r\   ¿   s$   € ÷ ñ Ø&ðØ-Oðà	ñr]   c           
     	óü  € \         P                  ! 4       pVf:   V P                  '       g&   V P                  V P                  P
                  4       R # \         P                  ! 4       pVf   V P                  pW4,
          pV^ 8  dL   \        V P                  4      p\        V4      pRVR RVR RV 2p\        V^2R^ RVR^2/V P                  4      hVe   \        VR,          4      VR	&   V P                  V4       V# )
Nz5operation would exceed time limit, remaining timeout:z.5fz <= network round trip time:Ú ÚokÚerrmsgÚcodeéè  Ú	maxTimeMS)r   Ú	remainingr‚   r™   rp   rˆ   Úget_rttrŠ   r"   r#   r   rh   rU   )	rŽ   rœ   r�   r’   ÚrttÚmax_time_msÚtimeout_detailsÚ	formattedr¡   s	   &&&      rZ   Úapply_timeoutÚConnection.apply_timeout¿   s  € ô —/’/Ó#ˆØŠ?à×$×$Ð$Ø×%Ñ% d§i¡i×&>Ñ&>Ô?Ùä�mŠm‹oˆØŠ;Ø×"Ñ"ˆCØ•mˆØ˜Œ?Ü2°4·9±9Ó=ˆOÜ.¨Ó?ˆIàLÈWÐUXÈMÐYuÐvyÐz}Ðu~Ð~ð  AJð  @Kð  LˆFÜ"ØØØ�q˜( F¨F°BÐ7Ø×%Ñ%ó	ð ð Š?Ü" ;°Õ#5Ó6ˆC�ÑØ×Ñ˜gÔ&Øˆr]   c               ó   € V ^8„  d   QhRR/# ©rO   r”   r•   rX   )rY   s   "rZ   r[   r\   Þ   s   € ÷ &ñ &˜ñ &r]   c                	ó<   € R V n         V P                  '       d   Q hR# ©TN)r…   r†   ©rŽ   s   &rZ   Úpin_txnÚConnection.pin_txnÞ   s   € ØˆŒØ×%×%Ð%Ð%Ð%Ñ%r]   c               ó   € V ^8„  d   QhRR/# r®   rX   )rY   s   "rZ   r[   r\   â   s   € ÷ #ñ #˜Dñ #r]   c                	ó<   € R V n         V P                  '       d   Q hR# r°   )r†   r…   r±   s   &rZ   Ú
pin_cursorÚConnection.pin_cursorâ   s   € Ø!ˆÔØ—?—?�?Ð"Ð"‘?r]   c               ó   € V ^8„  d   QhRR/# r®   rX   )rY   s   "rZ   r[   r\   æ   s   € ÷ :ñ :�tñ :r]   c                	óš   € V P                  4       pV'       d   VP                  V 4       R # V P                  \        P                  4       R # ©N)ra   ÚcheckinÚ
close_connr,   ÚSTALE)rŽ   rQ   s   & rZ   ÚunpinÚConnection.unpinæ   s/   € Ø�}‰}‹ˆßØ�L‰L˜Öà�O‰OÔ2×8Ñ8Ö9r]   c               ó   € V ^8„  d   QhRR/# ©rO   r”   údict[str, Any]rX   )rY   s   "rZ   r[   r\   í   s   € ÷ @ñ @˜>ñ @r]   c                	óð   € V P                   P                  '       g/   V P                  '       g   V P                   P                  '       d   R V n        \
        P                  ^/# \
        P                  ^RR /# )TÚhelloOk)rp   Ú
server_apirm   Úload_balancedro   r!   ÚCMDÚ
LEGACY_CMDr±   s   &rZ   Ú	hello_cmdÚConnection.hello_cmdí   sW   € ð �9‰9××Ð 4§=§= =°D·I±I×4K×4KÐ4KØ"&ˆDÔÜ—O‘O QÐ'Ð'ä×*Ñ*¨A¨y¸$Ð?Ð?r]   c               ó   € V ^8„  d   QhRR/# )rO   r”   úHello[dict[str, Any]]rX   )rY   s   "rZ   r[   r\   ö   s   € ÷ 'ñ 'Ð,ñ 'r]   c                	ó&   € V P                  R R 4      # rº   )Ú_hellor±   s   &rZ   ÚhelloÚConnection.helloö   s   € Ø�{‰{˜4 Ó&Ð&r]   c               ó$   € V ^8„  d   QhRRRRRR/# )rO   Útopology_versionzOptional[Any]Úheartbeat_frequencyúOptional[int]r”   rÌ   rX   )rY   s   "rZ   r[   r\   ù   s-   € ÷ Tñ Tà'ðTð +ðTð 
ñ	Tr]   c                	ó	  € V P                  4       pV P                  '       * pR pRVR&   V'       dn   RV n        V P                  P                  VR&   V P                  '       d   V P                  P
                  VR&   V P                  P                  '       d   RVR&   MmVej   WR&   Vf   Q h\        VR,          4      VR	&   RpV P                  P                  '       d-   V P                  V P                  P                  V,           4       V P                  P                  pV'       d—   VP                  R
8X  d:   VP                  '       d(   VP                  R,           VP                  ,           VR&   ^ RIHp VP                   P#                  W`P$                  4      pV'       d   VP'                  4       p	V	e   W“R&   MRpV'       d   \(        P*                  ! 4       p
V P-                  RVR VR7      pV'       d"   \(        P*                  ! 4       X
,
          V n        \1        WµR7      pVP2                  V n        VP4                  V n        VP6                  V n        VP8                  V n        VP:                  V n        VP<                  RJ;'       d    VP>                  V n         VP<                  V n        VPB                  V n!        VPD                  \F        PH                  \F        PJ                  \F        PL                  \F        PN                  \F        PP                  39   V n)        VPD                  \F        PT                  8H  V n+        VPD                  \F        PX                  8H  V n-        V'       d>   V P                  '       d,   V P                  P]                  VP
                  4      pWÐn/        RV n0        VPb                  V n2        V'       d   VPf                  V n4        V'       d.   VPk                  V4       VPm                  4       '       d   W€n7        V P                  P                  '       dY   VPp                  '       g   \s        R4      hVPp                  V n8        V Pt                  Pw                  V Pp                  4      V n<        V# )FTÚbackpressurerœ   ÚcompressionÚloadBalancedNÚtopologyVersionr£   ÚmaxAwaitTimeMSÚDEFAULTÚ.ÚsaslSupportedMechs©ÚauthÚspeculativeAuthenticateÚadmin)Úpublish_eventsÚexhaust_allowed)Ú	awaitablez`Driver attempted to initialize in load balancing mode, but the server does not support this mode)=rÉ   rf   rp   Úmetadatarv   ÚcompressorsrÆ   rU   Úconnect_timeoutr™   Ú_credentialsÚ	mechanismÚusernameÚsourceÚpymongo.synchronousrß   rE   Úfrom_credentialsrS   Úspeculate_commandrc   rd   r;   rŠ   r    rg   rh   ri   rj   rk   Úlogical_session_timeout_minutesÚis_readablerl   rm   Úserver_typer7   Ú	RSPrimaryÚRSSecondaryÚ	RSArbiterÚRSOtherÚRSGhostÚis_replÚ
StandaloneÚis_standaloneÚMongosrn   Úget_compression_contextrw   ro   Úconnection_idr„   Úsasl_supported_mechsrz   Úparse_responseÚspeculate_succeededr{   rƒ   r   r}   Úgetr   )rŽ   rÒ   rÓ   r�   Úperforming_handshakerä   Úcredsrß   r{   Úspeculative_authenticateÚstartÚdocrÏ   Úctxs   &&&           rZ   rÎ   ÚConnection._helloù   s�  € ð
 �n‰nÓˆØ#'×#;Ñ#;Ô;ÐØˆ	Ø"ˆˆNÑßØ'+ˆDÔ$Ø ŸI™I×.Ñ.ˆC�‰MØ×(×(Ð(Ø%)×%>Ñ%>×%JÑ%J��MÑ"Ø�y‰y×&×&Ð&Ø&*��NÑ#øØÒ)Ø%5Ð!Ñ"Ø&Ò2Ð2Ð2Ü$'Ð(;¸dÕ(BÓ$CˆCÐ Ñ!ØˆIà�y‰y×(×(Ð(Ø×%Ñ% d§i¡i×&?Ñ&?ÐBUÕ&UÔVà—	‘	×&Ñ&ˆßØ�‰ )Ô+°··°Ø,1¯L©L¸3Õ,>ÀÇÁÕ,O�Ð(Ñ)Ý0à×(Ñ(×9Ñ9¸%ÇÁÓNˆHßØ+3×+EÑ+EÓ+GÐ(Ø+Ò7Ø5MÐ1Ñ2øàˆHçÜ—N’NÓ$ˆEØ�l‰l˜7 C¸ÈyˆlÓYˆßÜ#Ÿ~š~Ó/°%Õ7ˆDÔÜ�cÔ/ˆØ ×,Ñ,ˆÔØ %× 6Ñ 6ˆÔØ"×0Ñ0ˆÔØ %× 6Ñ 6ˆÔØ$)×$>Ñ$>ˆÔ!à×1Ñ1¸Ð=×SÐSÀ%×BSÑBSð 	Ôð ?D×>cÑ>cˆÔ,ØŸ™ˆŒØ×(Ñ(Ü×!Ñ!Ü×#Ñ#Ü×!Ñ!Ü×ÑÜ×Ñð-
ñ 
ˆŒð #×.Ñ.´+×2HÑ2HÑHˆÔØ×*Ñ*¬k×.@Ñ.@Ñ@ˆŒß D×$=×$=Ð$=Ø×+Ñ+×CÑCÀE×DUÑDUÓVˆCØ'*Ô$à"ˆÔØ$)×$7Ñ$7ˆÔ!ßØ$)×$>Ñ$>ˆDÔ!ßØ×#Ñ# EÔ*Ø×+Ñ+×-Ò-Ø (”Ø�9‰9×"×"Ð"Ø×#×#Ð#Ü(ðAóð ð $×.Ñ.ˆDŒOØ"Ÿm™m×/Ñ/°·±Ó@ˆDŒOØˆr]   c               ó   € V ^8„  d   QhRR/# rÁ   rX   )rY   s   "rZ   r[   r\   O  s   € ÷ ñ ˜^ñ r]   c                	ó¼   € V P                  R 4      pVP                  V n        VP                  4       pV^ ,          p\        P                  ! W0P
                  4       V# rº   )r.   r‚   Úunpack_responser   Ú_check_command_responserh   )rŽ   ÚreplyÚunpacked_docsÚresponse_docs   &   rZ   Ú_next_replyÚConnection._next_replyO  sR   € Ø×$Ñ$ TÓ*ˆØ!×.Ñ.ˆÔØ×-Ñ-Ó/ˆØ$ QÕ'ˆÜ×.Ò.¨|×=RÑ=RÔSØÐr]   TNFc          "     ó\   € V ^8„  d   QhRRRRRRRRR	R
RRRRRRRR
RRRRRRRR
RR
RRRR
RR/# )rO   ÚdbnameÚstrÚspecúMutableMapping[str, Any]Úread_preferencerD   Úcodec_optionsúCodecOptions[Mapping[str, Any]]ÚcheckrW   Úallowable_errorsz#Optional[Sequence[Union[str, int]]]Úread_concernzOptional[ReadConcern]Úwrite_concernzOptional[WriteConcern]Úparse_write_concern_errorÚ	collationzOptional[_CollationIn]ÚsessionúOptional[ClientSession]rœ   úOptional[MongoClient[Any]]Úretryable_writerâ   Úuser_fieldszOptional[Mapping[str, Any]]rã   r”   rÂ   rX   )rY   s   "rZ   r[   r\   X  sÇ   € ÷ W2ñ W2àðW2ð 'ðW2ð %ð	W2ð
 7ðW2ð ðW2ð >ðW2ð ,ðW2ð .ðW2ð $(ðW2ð *ðW2ð )ðW2ð +ðW2ð ðW2ð ðW2ð  1ð!W2ð" ð#W2ð$ 
ñ%W2r]   c                ó  € V P                  WË4       \        W¸4      p\        V\        4      '       g   \	        V4      pVe"   VP
                  '       g   V
e   \        R4      hV P                  V4       V'       d   VP                  W-W04       V P                  W+V4       V'       d   V P                  MRp\        T;'       d    VP
                  '       * 4      pV P                  '       d   V P                  V4        \        V VVV P                  VVVVVVV P                   VV P"                  VV	V
V P$                  V P                  VVVVR7      #   \&        \(        3 d    h \*         d   pT P-                  T4        Rp?R# Rp?ii ; i)a  Execute a command or raise an error.

:param dbname: name of the database on which to run the command
:param spec: a command document as a dict, SON, or mapping object
:param read_preference: a read preference
:param codec_options: a CodecOptions instance
:param check: raise OperationFailure if there are errors
:param allowable_errors: errors to ignore if `check` is True
:param read_concern: The read concern for this command.
:param write_concern: The write concern for this command.
:param parse_write_concern_error: Whether to parse the
    ``writeConcernError`` field in the command response.
:param collation: The collation for this command.
:param session: optional ClientSession instance.
:param client: optional MongoClient for gossipping $clusterTime.
:param retryable_write: True if this command is a retryable write.
:param publish_events: Should we publish events for this command?
:param user_fields: Response fields that should be decoded
    using the TypeDecoders from codec_options, passed to
    bson._decode_all_selective.
Nz3Collation is unsupported for unacknowledged writes.)r  r  Úcompression_ctxÚ
use_op_msgÚunacknowledgedr#  rã   r  )Úvalidate_sessionr9   Ú
isinstancer   ÚdictÚacknowledgedr   Úadd_server_apiÚ	_apply_toÚsend_cluster_timerr   rW   ro   Ú_raise_if_not_writabler;   rn   rS   ri   rw   r   r   ÚBaseExceptionr4   )rŽ   r  r  r  r  r  r  r  r  r  r  r  rœ   r"  râ   r#  rã   rr   r'  Úerrors   &&&&&&&&&&&&&&&&&   rZ   r;   ÚConnection.commandW  sk  € ðR 	×Ñ˜fÔ.Ü1°'ÓIˆô ˜$¤×.Ò.Ü˜“:ˆDàÒ%¨×)C×)CÐ)CÀyÒGXÜ$Ð%ZÓ[Ð[à×Ñ˜DÔ!ßØ×Ñ˜d°_ÔKØ×Ñ˜t¨fÔ5ß&4�D—N’N¸$ˆ	Ü˜m×NÐN°M×4NÑ4NÔ0NÓOˆØ××ÐØ×'Ñ'¨Ô7ð	2ÜØØØØ—‘ØØØØØØ Ø—‘ØØ×"Ñ"ØØ*CØ#Ø $× 8Ñ 8Ø×.Ñ.Ø-Ø'Ø /Ø+ô-ð øô0 !¤/Ð2ô 	Øäô 	2Ø×*Ñ*¨5×1Ò1ûð	2ús   Ã>AE ÅF	Å,F	Å-FÆF	c               ó$   € V ^8„  d   QhRRRRRR/# )rO   ÚmessageÚbytesÚmax_doc_sizerU   r”   r•   rX   )rY   s   "rZ   r[   r\   ±  s!   € ÷ 2ñ 2 Eð 2¸ð 2Àñ 2r]   c                ó  € V P                   e.   W P                   8”  d   \        RW P                   3,          4      h \        V P                  P                  V4       R#   \
         d   pT P                  T4        Rp?R# Rp?ii ; i)zmSend a raw BSON message or raise ConnectionFailure.

If a network exception is raised, the socket is closed.
NzfBSON document too large (%d bytes) - the connected server supports BSON document sizes up to %d bytes.)ri   r   r/   rP   r—   r0  r4   )rŽ   r4  r6  r1  s   &&& rZ   Úsend_messageÚConnection.send_message±  sy   € ð
 ×ÑÒ)¨l×=OÑ=OÔ.OÜ"ð?ØBN×PbÑPbÐAcõdóð ð
	2Ü�D—I‘I×&Ñ&¨Ö0øäô 	2Ø×*Ñ*¨5×1Ò1ûð	2ús   ½ A ÁBÁ*BÂBc               ó    € V ^8„  d   QhRRRR/# )rO   Ú
request_idrÔ   r”   zUnion[_OpReply, _OpMsg]rX   )rY   s   "rZ   r[   r\   Â  s   € ÷ 	2ñ 	2¨-ð 	2Ð<Sñ 	2r]   c                ó„   €  \        WV P                  4      #   \         d   pT P                  T4        Rp?R# Rp?ii ; i)zjReceive a raw BSON message or raise ConnectionFailure.

If any exception is raised, the socket is closed.
N)r.   rj   r0  r4   )rŽ   r;  r1  s   && rZ   r.   ÚConnection.receive_messageÂ  s;   € ð
	2Ü" 4°T×5JÑ5JÓKÐKøäô 	2Ø×*Ñ*¨5×1Ò1ûð	2ús   ‚ ˜?£:º?c               ó    € V ^8„  d   QhRRRR/# )rO   r'  rW   r”   r•   rX   )rY   s   "rZ   r[   r\   Í  s   € ÷ dñ d°Tð d¸dñ dr]   c           	     ób   € V'       d'   V P                   '       g   \        RR^ RRRR/4      hR# R# )zNRaise NotPrimaryError on unacknowledged write if this socket is not
writable.
znot primaryr    r¡   r¢   i{'  N)rg   r   )rŽ   r'  s   &&rZ   r/  Ú!Connection._raise_if_not_writableÍ  s5   € ÷  $×"2×"2Ð"2ä! -°$¸¸8À]ÐTZÐ\aÐ1bÓcÐcñ #3‰>r]   c               ó$   € V ^8„  d   QhRRRRRR/# )rO   Úmsgr5  r6  rU   r”   r•   rX   )rY   s   "rZ   r[   r\   Õ  s!   € ÷ 	-ñ 	-˜uð 	-°Cð 	-¸Dñ 	-r]   c                óJ   € V P                  R4       V P                  W4       R# )z°Send unack OP_MSG.

Can raise ConnectionFailure or InvalidDocument.

:param msg: bytes, an OP_MSG message.
:param max_doc_size: size in bytes of the largest document in `msg`.
TN)r/  r8  )rŽ   rB  r6  s   &&&rZ   Úunack_writeÚConnection.unack_writeÕ  s    € ð 	×#Ñ# DÔ)Ø×Ñ˜#Ö,r]   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	rO   r;  rU   rB  r5  r  r  r”   rÂ   rX   )rY   s   "rZ   r[   r\   à  s,   € ÷ ñ ØðØ$)ðØ:Yðà	ñr]   c                ó®   € V P                  V^ 4       V P                  V4      pVP                  V4      p\        P                  ! WPP
                  4       V# )z°Send "insert" etc. command, returning response as a dict.

Can raise ConnectionFailure or OperationFailure.

:param request_id: an int.
:param msg: bytes, the command message.
)r8  r.   Úcommand_responser   r  rh   )rŽ   r;  rB  r  r  Úresults   &&&&  rZ   Úwrite_commandÚConnection.write_commandà  sO   € ð 	×Ñ˜#˜qÔ!Ø×$Ñ$ ZÓ0ˆØ×'Ñ'¨Ó6ˆô 	×.Ò.¨v×7LÑ7LÔMØˆr]   c               ó    € V ^8„  d   QhRRRR/# )rO   ÚreauthenticaterW   r”   r•   rX   )rY   s   "rZ   r[   r\   ò  s   € ÷  ñ  ¨4ð  ¸Dñ  r]   c           
     ó"  € V'       d!   V P                   '       d   RV n        RV n        V P                  '       EgT   V P                  P                  pV'       d   ^ RIHp VP                  W VR7       RV n        \        P                  ! 4       V P                  ,
          pV P                  '       dB   V P                  f   Q hV P                  P                  V P                  V P                  V4       V P                   '       d‰   \"        P$                  ! \&        P(                  4      '       d]   \+        \"        \,        P.                  V P0                  V P                  ^ ,          V P                  ^,          V P                  VR7       R# R# R# R# )zXAuthenticate to the server if needed.

Can raise ConnectionFailure or OperationFailure.
NFrÞ   )rM  T©r4  ÚclientIdÚ
serverHostÚ
serverPortÚdriverConnectionIdÚ
durationMS)rf   r{   r€   rp   rè   rì   rß   Úauthenticaterc   rd   rŒ   rs   rr   Úpublish_connection_readyrS   rT   rt   r'   ÚisEnabledForÚloggingÚDEBUGr)   r(   Ú
CONN_READYr‹   )rŽ   rM  r  rß   Údurations   &&   rZ   rU  ÚConnection.authenticateò  s  € ÷ Ø×'×'Ð'à $�”ØˆDŒJØ�z�z‰zØ—I‘I×*Ñ*ˆEßÝ4à×!Ñ! %¸nÐ!ÔMØˆDŒJÜ—~’~Ó'¨$×*<Ñ*<Õ<ˆHØ×$×$Ð$Ø—~‘~Ò1Ð1Ð1Ø—‘×7Ñ7¸¿¹ÀdÇgÁgÈxÔXØ×'×'Ð'Ô,>×,KÒ,KÌGÏMÉM×,ZÒ,ZÜÜ&Ü4×?Ñ?Ø!Ÿ_™_Ø#Ÿ|™|¨A�Ø#Ÿ|™|¨A�Ø'+§w¡wØ'÷ñ -[Ñ'ñ r]   c               ó$   € V ^8„  d   QhRRRRRR/# )rO   rœ   r!  r  r   r”   r•   rX   )rY   s   "rZ   r[   r\     s)   € ÷ 	dñ 	dØ0ð	dØ;Rð	dà	ñ	dr]   c                óP   € V'       d   VP                   VJd   \        R4      hR# R# )zsValidate this session before use with client.

Raises error if the client is not the one that created the session.
z9Can only use session with the MongoClient that started itN)Ú_clientr   )rŽ   rœ   r  s   &&&rZ   r(  ÚConnection.validate_session  s)   € ÷ Ø�‰ fÓ,Ü&Ð'bÓcÐcñ -ñ r]   c               ó    € V ^8„  d   QhRRRR/# )rO   ÚreasonzOptional[str]r”   r•   rX   )rY   s   "rZ   r[   r\     s   € ÷ ñ  ð °4ñ r]   c                óP  € V P                   '       d   R# V P                  4        V'       dú   V P                  '       dB   V P                  f   Q hV P                  P	                  V P
                  V P                  V4       V P                  '       d“   \        P                  ! \        P                  4      '       dg   \        \        \        P                  V P                  V P
                  ^ ,          V P
                  ^,          V P                  \!        V4      VR7       R# R# R# R# )z$Close this connection with a reason.N©r4  rP  rQ  rR  rS  rb  r1  )rb   Ú_close_connrs   rr   Úpublish_connection_closedrS   rT   rt   r'   rW  rX  rY  r)   r(   ÚCONN_CLOSEDr‹   r*   )rŽ   rb  s   &&rZ   r¼   ÚConnection.close_conn  sÊ   € à�;�;ˆ;ÙØ×ÑÔßØ×$×$Ð$Ø—~‘~Ò1Ð1Ð1Ø—‘×8Ñ8¸¿¹ÀtÇwÁwÐPVÔWØ×'×'Ð'Ô,>×,KÒ,KÌGÏMÉM×,ZÒ,ZÜÜ&Ü4×@Ñ@Ø!Ÿ_™_Ø#Ÿ|™|¨A�Ø#Ÿ|™|¨A�Ø'+§w¡wÜ;¸FÓCØ ÷	ñ -[Ñ'ñ	 r]   c               ó   € V ^8„  d   QhRR/# r®   rX   )rY   s   "rZ   r[   r\   4  s   € ÷ ñ ˜Tñ r]   c                óÊ   € V P                   '       d   R# RV n         V P                  P                  4         V P                  P	                  4        R#   \
         d     R# i ; i)zClose this connection.NT)rb   r�   ÚcancelrP   ÚcloseÚ	Exceptionr±   s   &rZ   re  ÚConnection._close_conn4  sL   € à�;�;ˆ;ÙØˆŒØ×Ñ×"Ñ"Ô$ð	Ø�I‰I�O‰OÖøÜô 	Úð	ús   ·A ÁA"Á!A"c               ó   € V ^8„  d   QhRR/# ©rO   r”   rW   rX   )rY   s   "rZ   r[   r\   A  s   € ÷ *ñ *˜Tñ *r]   c                ó¬   € \         '       d0   V P                  P                  V P                  P                  4      # V P                  P                  4       # )z?Return True if we know socket has been closed, False otherwise.)Ú_IS_SYNCrx   Úsocket_closedrP   r—   Ú
is_closingr±   s   &rZ   Úconn_closedÚConnection.conn_closedA  s;   € ç‹8Ø×&Ñ&×4Ñ4°T·Y±Y×5GÑ5GÓHÐHà—9‘9×'Ñ'Ó)Ð)r]   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	rO   r;   r  r  r   rœ   r!  r”   r•   rX   )rY   s   "rZ   r[   r\   H  s2   € ÷ 8ñ 8à)ð8ð )ð8ð +ð	8ð
 
ñ8r]   c                ó<   € V'       d   VP                  W4       R# R# )zAdd $clusterTime.N)Ú_send_cluster_time)rŽ   r;   r  rœ   s   &&&&rZ   r.  ÚConnection.send_cluster_timeH  s   € ÷ Ø×%Ñ% gÖ7ñ r]   c               ó    € V ^8„  d   QhRRRR/# )rO   r;   r  r”   r•   rX   )rY   s   "rZ   r[   r\   R  s   € ÷ ;ñ ;Ð&>ð ;À4ñ ;r]   c                ó€   € V P                   P                  '       d"   \        WP                   P                  4       R# R# )zAdd server_api parameters.N)rp   rÅ   r6   )rŽ   r;   s   &&rZ   r,  ÚConnection.add_server_apiR  s)   € à�9‰9××ÐÜ˜G§Y¡Y×%9Ñ%9Ö:ñ  r]   c               ó   € V ^8„  d   QhRR/# r®   rX   )rY   s   "rZ   r[   r\   W  s   € ÷ 2ñ 2¨$ñ 2r]   c                	ó:   € \         P                  ! 4       V n        R # rº   ©rc   rd   re   r±   s   &rZ   Úupdate_last_checkin_timeÚ#Connection.update_last_checkin_timeW  s   € Ü!%§¢Ó!1ˆÖr]   c               ó    € V ^8„  d   QhRRRR/# )rO   rg   rW   r”   r•   rX   )rY   s   "rZ   r[   r\   Z  s   € ÷ 'ñ '¨dð '°tñ 'r]   c                	ó   € Wn         R # rº   )rg   )rŽ   rg   s   &&rZ   Úupdate_is_writableÚConnection.update_is_writableZ  s   € Ø&Ör]   c               ó   € V ^8„  d   QhRR/# )rO   r”   ÚfloatrX   )rY   s   "rZ   r[   r\   ]  s   € ÷ 9ñ 9 5ñ 9r]   c                óN   € \         P                  ! 4       V P                  ,
          # )z9Seconds since this socket was last checked into its pool.r€  r±   s   &rZ   Úidle_time_secondsÚConnection.idle_time_seconds]  s   € ä�~Š~Ó $×"8Ñ"8Õ8Ð8r]   c               ó    € V ^8„  d   QhRRRR/# )rO   r1  r0  r”   r	   rX   )rY   s   "rZ   r[   r\   a  s   € ÷ ñ ¨}ð Àñ r]   c                	ó  € V P                   '       d   R pM\        P                  pV P                  V4       \	        V\
        \        .\        O54      '       d/   \        V P                  4      p\        V P                  WR7       R # h )N©r©   )r€   r,   ÚERRORr¼   r)  ÚIOErrorÚOSErrorr1   r"   rp   r4   rS   )rŽ   r1  rb  Údetailss   &&  rZ   r4   Ú$Connection._raise_connection_failurea  s_   € ð  �:�:ˆ:Ø‰Fä+×1Ñ1ˆFØ�‰˜Ôä�eœg¤wÐ;´Ñ;×<Ò<Ü*¨4¯9©9Ó5ˆGÜ% d§l¡l°E×Sàr]   c               ó    € V ^8„  d   QhRRRR/# ©rO   Úotherr   r”   rW   rX   )rY   s   "rZ   r[   r\   }  s   € ÷ 'ñ '˜Cð ' Dñ 'r]   c                	ó4   € V P                   VP                   8H  # rº   )rP   ©rŽ   r–  s   &&rZ   Ú__eq__ÚConnection.__eq__}  s   € Ø�y‰y˜EŸJ™JÑ&Ð&r]   c               ó    € V ^8„  d   QhRRRR/# r•  rX   )rY   s   "rZ   r[   r\   €  s   € ÷ !ñ !˜Cð ! Dñ !r]   c                	ó   € W8X  * # rº   rX   r˜  s   &&rZ   Ú__ne__ÚConnection.__ne__€  s   € ØÒ Ð r]   c               ó   € V ^8„  d   QhRR/# ©rO   r”   rU   rX   )rY   s   "rZ   r[   r\   ƒ  s   € ÷ ñ ˜#ñ r]   c                	ó,   € \        V P                  4      # rº   )ÚhashrP   r±   s   &rZ   Ú__hash__ÚConnection.__hash__ƒ  s   € Ü�D—I‘I‹Ðr]   c               ó   € V ^8„  d   QhRR/# )rO   r”   r  rX   )rY   s   "rZ   r[   r\   †  s   € ÷ 
ñ 
˜#ñ 
r]   c                	óœ   € R P                  \        V P                  4      V P                  ;'       d    R;'       g    R\	        V 4      4      # )zConnection({}){} at {}z CLOSEDÚ )rY   ÚreprrP   rb   rT   r±   s   &rZ   Ú__repr__ÚConnection.__repr__†  s>   € Ø'×.Ñ.Ü�—‘‹OØ�K‰K×%Ð%˜I×+Ð+¨Üˆt‹Hó
ð 	
r]   )-r‹   r�   r‡   rS   r{   r�   rb   rw   rv   rP   rŠ   rŒ   rs   rt   r   rm   rT   rn   r÷   rV   rù   rg   re   r‰   rr   rï   ri   rj   rh   rk   r‚   rz   ry   ro   rp   rf   r†   r…   r}   ra   r€   r„   rƒ   rx   rl   )F))Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r�   r™   r«   r²   r¶   r¾   rÉ   rÏ   rÎ   r  r:   r5   ÚPRIMARYr   r;   r8  r.   r/  rD  rJ  rU  r(  r¼   re  ru  r.  r,  r�  r…  rŠ  r4   r™  r�  r£  r©  Ú__static_attributes__rX   r]   rZ   rM   rM   s   sò   † ñõ9"õv/õõ>&õ#õ:õ@õ'õTõlð ð
 (6×'=Ñ'=Ø9NØØ@DØ.2Ø04Ø*/Ø,0Ø+/Ø-1Ø %Ø#Ø37Ø %ö#W2ó ðW2õr2õ"	2õdõ	-õ÷$ õD	dõõ*õ*õ8õ;õ
2õ'õ9õõ8'õ!õ÷
ñ 
r]   rM   c                  ó   € ] tR tRtRtRtR# )Ú_PoolClosedErroriŽ  zRInternal error raised when a thread tries to get a connection from a
closed pool.
rX   N)r«  r¬  r­  r®  r¯  r±  rX   r]   rZ   r³  r³  Ž  s   † õr]   r³  c                  óR   € ] tR tRtR R ltR R ltR R ltR R	 ltR
 R ltRt	R# )Ú_PoolGenerationi”  c               ó   € V ^8„  d   QhRR/# r®   rX   )rY   s   "rZ   r[   Ú_PoolGeneration.__annotate__•  s   € ÷ ñ ˜$ñ r]   c                	óR   € \         P                  ! \        4      V n        ^ V n        R# )r   N)ÚcollectionsÚdefaultdictrU   Ú_generationsÚ_generationr±   s   &rZ   r�   Ú_PoolGeneration.__init__•  s   € ä1<×1HÒ1HÌÓ1MˆÔàˆÖr]   c               ó    € V ^8„  d   QhRRRR/# )rO   rƒ   úOptional[ObjectId]r”   rU   rX   )rY   s   "rZ   r[   r·  ›  s   € ÷ -ñ -Ð0ð -°Sñ -r]   c                óH   € Vf   V P                   # V P                  V,          # )z,Get the generation for the given service_id.©r¼  r»  ©rŽ   rƒ   s   &&rZ   r   Ú_PoolGeneration.get›  s%   € àÒØ×#Ñ#Ð#Ø× Ñ  Õ,Ð,r]   c               ó   € V ^8„  d   QhRR/# r   rX   )rY   s   "rZ   r[   r·  ¡  s   € ÷  ñ  ˜Sñ  r]   c                ó   € V P                   # )z"Get the Pool's overall generation.)r¼  r±   s   &rZ   r~   Ú_PoolGeneration.get_overall¡  s   € à×ÑÐr]   c               ó    € V ^8„  d   QhRRRR/# )rO   rƒ   r¿  r”   r•   rX   )rY   s   "rZ   r[   r·  ¥  s   € ÷ /ñ /Ð0ð /°Tñ /r]   c                óæ   € V ;P                   ^,          un         Vf5   V P                   F"  pV P                  V;;,          ^,          uu&   K$  	  R# V P                  V;;,          ^,          uu&   R# )z2Increment the generation for the given service_id.NrÁ  rÂ  s   &&rZ   ÚincÚ_PoolGeneration.inc¥  sW   € à×Ò˜AÕÕØÒØ"×/Ô/�
Ø×!Ñ! *×-°Õ2Õ-ó 0ð ×Ñ˜j×)¨QÕ.Õ)r]   c               ó$   € V ^8„  d   QhRRRRRR/# ©rO   r|   rU   rƒ   r¿  r”   rW   rX   )rY   s   "rZ   r[   r·  ®  s"   € ÷ +ñ +˜ð +Ð*<ð +Àñ +r]   c                ó(   € WP                  V4      8g  # )z?Return if the given generation for a given service_id is stale.)r   ©rŽ   r|   rƒ   s   &&&rZ   ÚstaleÚ_PoolGeneration.stale®  s   € à—h‘h˜zÓ*Ñ*Ð*r]   rÁ  N)
r«  r¬  r­  r®  r�   r   r~   rÉ  rÏ  r±  rX   r]   rZ   rµ  rµ  ”  s    † õõ-õ õ/÷+ñ +r]   rµ  c                  ó"   € ] tR tRt^t^t^tRtR# )Ú	PoolStatei³  rX   N)r«  r¬  r­  r®  ÚPAUSEDÚREADYÚCLOSEDr±  rX   r]   rZ   rÒ  rÒ  ³  s   † Ø€FØ€EØ„Fr]   rÒ  c                  ó:  € ] tR tRtR*R R lltR R lt]R R l4       tR+R	 R
 lltR R lt	R,R R llt
R R ltR R ltR R ltR R ltR R ltR-R R llt]P$                  R-R R ll4       tR R ltR-R R  lltR! R" ltR# R$ ltR% R& ltR' R( ltR)tR# ).rR   i¹  Nc               ó(   € V ^8„  d   QhRRRRRRRR/# )	rO   rS   rI   Úoptionsr0   rV   rW   Ú	client_idr¿  rX   )rY   s   "rZ   r[   ÚPool.__annotate__º  s8   € ÷ Tñ TàðTð ðTð ð	Tð
 &ñTr]   c                óf  € VP                   '       d   \        P                  V n        M\        P                  V n        ^V n        \        P                  ! 4       V n        \        4       V n
        \        4       V n        \        V P                  4      V n        ^ V n        ^V n        RV n        \%        4       V n        \(        P*                  ! 4       V n        Wn        W n        W0n        V P2                  '       * ;'       dA    V P0                  P4                  RJ;'       d!    V P0                  P4                  P6                  V n        V P2                  '       * V n        \        V P                  4      V n        ^ V n        V P0                  P>                  V n        V P>                  '       g   \A        R4      V n        \        V P                  4      V n        ^ V n!        V P0                  PD                  V n#        W@n$        V P6                  '       d_   V P0                  P4                  f   Q hV P0                  P4                  PK                  V P.                  V P0                  PL                  4       V P8                  '       d‘   \N        PP                  ! \R        PT                  4      '       dg   \W        \N        3R\X        PZ                  RV PH                  RV P.                  ^ ,          RV P.                  ^,          /V P0                  PL                  B  ^ V n.        \        4       V n/        ^ V n0        ^ V n1        R# )z�
:param address: a (hostname, port) tuple
:param options: a PoolOptions instance
:param is_sdam: whether to call hello for each new Connection
NÚinfr4  rP  rQ  rR  )2Úpause_enabledrÒ  rÓ  ÚstaterÔ  Ú_check_interval_secondsr¹  ÚdequeÚconnsÚsetÚactive_contextsr&   Úlockr%   Ú_max_connecting_condÚactive_socketsÚnext_connection_idrg   rµ  r|   ÚosÚgetpidÚpidrS   rp   rV   rq   rs   rt   Ú	size_condÚrequestsÚmax_pool_sizerˆ  Ú_pendingÚmax_connectingÚ_max_connectingr‹   Úpublish_pool_createdÚnon_default_optionsr'   rW  rX  rY  r)   r(   ÚPOOL_CREATEDÚoperation_countÚ_Pool__pinned_socketsÚncursorsÚntxns)rŽ   rS   rØ  rV   rÙ  s   &&&&&rZ   r�   ÚPool.__init__º  sn  € ð × × Ð Ü"×)Ñ)ˆD�Jä"Ÿ™ˆDŒJð ()ˆÔ$ô 5@×4EÒ4EÓ4GˆŒ
Ü:=»%ˆÔÜ “NˆŒ	Ü$5°d·i±iÓ$@ˆÔ!ØˆÔà"#ˆÔà+/ˆÔô
 #Ó$ˆŒÜ—9’9“;ˆŒØŒØŒ	ØŒð —‘Ô÷ <ð <Ø—	‘	×*Ñ*°$Ð6÷<ð <à—	‘	×*Ñ*×;Ñ;ð 	Ôð
 (,§|¡|Ô#3ˆÔ ô
 +¨4¯9©9Ó5ˆŒØˆŒØ!ŸY™Y×4Ñ4ˆÔØ×!×!Ð!Ü!& u£ˆDÔô %6°d·i±iÓ$@ˆÔ!ØˆŒØ#Ÿy™y×7Ñ7ˆÔØ#ŒØ× × Ð Ø—9‘9×-Ñ-Ò9Ð9Ð9Ø�I‰I×&Ñ&×;Ñ;Ø—‘˜dŸi™i×;Ñ;ôð ×#×#Ð#Ô(:×(GÒ(GÌÏÉ×(VÒ(VÜÜ"ñä0×=Ñ=ðð Ÿ™ðð  Ÿ<™<¨�?ð	ð
  Ÿ<™<¨�?ðð —)‘)×/Ñ/òð %&ˆÔô 25³ˆÔØˆŒØˆŽ
r]   c               ó   € V ^8„  d   QhRR/# r®   rX   )rY   s   "rZ   r[   rÚ    s   € ÷ ñ �tñ r]   c           
     	óš  € V P                   ;_uu_ 4        V P                  \        P                  8w  dû   \        P                  V n        V P                  '       dJ   V P
                  P                  f   Q hV P
                  P                  P                  V P                  4       V P                  '       dy   \        P                  ! \        P                  4      '       dO   \        \        \        P                   V P"                  V P                  ^ ,          V P                  ^,          R7       R R R 4       R #   + '       g   i     R # ; i)N©r4  rP  rQ  rR  )rä  rÞ  rÒ  rÔ  rs   rp   rq   Úpublish_pool_readyrS   rt   r'   rW  rX  rY  r)   r(   Ú
POOL_READYr‹   r±   s   &rZ   r€   Ú
Pool.ready  sÅ   € à�Y�Y‹YØ�z‰zœYŸ_™_Ô,Ü&Ÿ_™_�”
Ø×(×(Ð(ØŸ9™9×5Ñ5ÒAÐAÐAØ—I‘I×.Ñ.×AÑAÀ$Ç,Á,ÔOØ×+×+Ð+Ô0B×0OÒ0OÔPW×P]ÑP]×0^Ò0^ÜÜ*Ü 8× CÑ CØ!%§¡Ø#'§<¡<°¥?Ø#'§<¡<°¥?õ÷ �Y�YŠYús    •AD9ÁAD9Â7)D9Ã!AD9Ä9E
	c               ó   € V ^8„  d   QhRR/# rp  rX   )rY   s   "rZ   r[   rÚ  "  s   € ÷ .ñ .˜ñ .r]   c                	ó<   € V P                   \        P                  8H  # rº   )rÞ  rÒ  rÕ  r±   s   &rZ   rb   ÚPool.closed!  s   € à�z‰zœY×-Ñ-Ñ-Ð-r]   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )	rO   rl  rW   Úpauserƒ   r¿  Úinterrupt_connectionsr”   r•   rX   )rY   s   "rZ   r[   rÚ  %  sJ   € ÷ [Bñ [Bàð[Bð ð[Bð 'ð	[Bð
  $ð[Bð 
ñ[Br]   c           	     	óÊ	  € V P                   pV P                  ;_uu_ 4        V P                  '       d    R R R 4       R # V P                  P                  '       dF   V'       d>   V P                  P
                  '       g"   V P                   \        P                  uqPn         V P                  P                  V4       \        P                  ! 4       pV P                  V8w  d   W`n        ^ V n        ^ V n        Vf(   V P                  \         P"                  ! 4       uqpn        Mz\         P"                  ! 4       p\         P"                  ! 4       p	V P                   F8  p
V
P$                  V8X  d   VP'                  V
4       K'  V	P'                  V
4       K:  	  TpW�n        V'       d   \        P(                  V n         V P*                  P-                  4        V P                  P-                  4        V'       d$   V P.                   F  pVP1                  4        K  	  R R R 4       V P                  P2                  pV'       Ed;   \4        '       gD   \6        P8                  ! X U
u. uF!  qªP;                  \<        P>                  4      NK#  	  up
RR/  M(X F"  p
V
P;                  \<        P>                  4       K$  	  V P@                  '       d"   Vf   Q hVPC                  V PD                  4       V PF                  '       d}   \H        PJ                  ! \L        PN                  4      '       dQ   \Q        \H        \R        P>                  V PT                  V PD                  ^ ,          V PD                  ^,          R7       R # R # R # V\        P                  8w  dÂ   V P@                  '       d%   Vf   Q hVPW                  V PD                  VVR7       V PF                  '       dz   \H        PJ                  ! \L        PN                  4      '       dP   \Q        \H        \R        PX                  V PT                  V PD                  ^ ,          V PD                  ^,          VR7       \4        '       gE   \6        P8                  ! X U
u. uF!  qªP;                  \<        PZ                  4      NK#  	  up
RR/  R # X F"  p
V
P;                  \<        PZ                  4       K$  	  R #   + '       g   i     ELº; iu up
i u up
i )NÚreturn_exceptionsTrû  )rƒ   r  )r4  rP  rQ  rR  Ú	serviceId).rÞ  rë  rb   rp   rÝ  rÆ   rÒ  rÓ  r|   rÉ  rè  ré  rê  ræ  rô  rá  r¹  rà  rƒ   ÚappendrÕ  rå  Ú
notify_allrã  rk  rq   rr  ÚasyncioÚgatherr¼   r,   ÚPOOL_CLOSEDrs   Úpublish_pool_closedrS   rt   r'   rW  rX  rY  r)   r(   r‹   Úpublish_pool_clearedÚPOOL_CLEAREDr½   )rŽ   rl  r  rƒ   r  Ú	old_stateÚnewpidÚsocketsÚdiscardÚkeeprP   Úcontextrr   s   &&&&&        rZ   Ú_resetÚPool._reset%  sy  € ð —J‘Jˆ	Ø�^�^‹^Ø�{�{ˆ{Ø÷ ‰^ð �y‰y×&×&Ð&¯5¸¿¹×9P×9PÐ9PØ(,¯
©
´I×4DÑ4DÐ%�	œ:Ø�H‰H�L‰L˜Ô$Ü—Y’Y“[ˆFØ�x‰x˜6Ô!Ø!”Ø&'�Ô#Ø'(�Ô$ØÒ!Ø&*§j¡j´+×2CÒ2CÓ2EÐ#��ä-8×->Ò->Ó-@�Ü*5×*;Ò*;Ó*=�Ø ŸJœJ�DØ—‘¨*Ô4ØŸ™ tÖ,àŸ™ DÖ)ñ	 'ð
 "�Ø!”
çÜ&×-Ñ-�”
à×%Ñ%×0Ñ0Ô2Ø�N‰N×%Ñ%Ô'ç$Ø#×3Ô3�GØ—N‘NÖ$ñ  4÷? ðD —I‘I×.Ñ.ˆ	÷ ˆ5ß“8Ü—’ÙV]Ó^ÑV]Èd—o‘oÔ&<×&HÑ&HÖIÑV]Ñ^ðà&*óó
 $�DØ—O‘OÔ$:×$FÑ$FÖGñ $à×$×$Ð$Ø Ò,Ð,Ð,Ø×-Ñ-¨d¯l©lÔ;Ø×'×'Ð'Ô,>×,KÒ,KÌGÏMÉM×,ZÒ,ZÜÜ&Ü4×@Ñ@Ø!Ÿ_™_Ø#Ÿ|™|¨A�Ø#Ÿ|™|¨A�÷ñ -[Ñ'ð œI×,Ñ,Ô,Ø×(×(Ð(Ø$Ò0Ð0Ð0Ø×2Ñ2ØŸ™Ø#-Ø.Cð 3ô ð
 ×+×+Ð+Ô0B×0OÒ0OÔPW×P]ÑP]×0^Ò0^ÜÜ*Ü 8× EÑ EØ!%§¡Ø#'§<¡<°¥?Ø#'§<¡<°¥?Ø",õ÷ “8Ü—’ÙPWÓXÑPWÈ—o‘oÔ&<×&BÑ&BÖCÑPWÑXðà&*ôó
 $�DØ—O‘OÔ$:×$@Ñ$@ÖAó $÷e �^ˆ^üòR _ùòJ Ys<   ¡S¿SÁSÁ#SÁ?D"SÆ"ASÇ3#SÉ'SÑ-'S ÓS	c               ó    € V ^8„  d   QhRRRR/# )rO   rg   zOptional[bool]r”   r•   rX   )rY   s   "rZ   r[   rÚ  ‚  s   € ÷ =ñ =¨nð =Àñ =r]   c                óÐ   € Wn         V P                  ;_uu_ 4        V P                   F  pVP                  V P                   4       K   	  RRR4       R#   + '       g   i     R# ; i)zHUpdates the is_writable attribute on all sockets currently in the
Pool.
N)rg   rä  rá  r…  )rŽ   rg   Ú_sockets   && rZ   r…  ÚPool.update_is_writable‚  sA   € ð 'ÔØ�Y�Y‹YØŸ:œ:�Ø×*Ñ*¨4×+;Ñ+;Ö<ñ &÷ �Y�YŠYús   ›/AÁA%	c               ó$   € V ^8„  d   QhRRRRRR/# )rO   rƒ   r¿  r  rW   r”   r•   rX   )rY   s   "rZ   r[   rÚ  ‹  s)   € ÷ eñ eØ,ðeØLPðeà	ñer]   c                	ó,   € V P                  R WR7       R# )F)rl  rƒ   r  N©r  )rŽ   rƒ   r  s   &&&rZ   ÚresetÚ
Pool.reset‹  s   € ð 	�‰˜%¨JˆÖdr]   c               ó   € V ^8„  d   QhRR/# r®   rX   )rY   s   "rZ   r[   rÚ  �  s   € ÷ .ñ . Tñ .r]   c                	ó,   € V P                  R R R7       R# )F)rl  r  Nr  r±   s   &rZ   Úreset_without_pauseÚPool.reset_without_pause�  s   € Ø�‰˜% uˆÖ-r]   c               ó   € V ^8„  d   QhRR/# r®   rX   )rY   s   "rZ   r[   rÚ  “  s   € ÷  ñ  �tñ  r]   c                	ó*   € V P                  R R7       R# )T)rl  Nr  r±   s   &rZ   rl  Ú
Pool.close“  s   € Ø�‰˜$ˆÖr]   c               ó$   € V ^8„  d   QhRRRRRR/# rÌ  rX   )rY   s   "rZ   r[   rÚ  –  s"   € ÷ /ñ / Cð /Ð5Gð /ÈDñ /r]   c                	ó8   € V P                   P                  W4      # rº   )r|   rÏ  rÎ  s   &&&rZ   Ústale_generationÚPool.stale_generation–  s   € Ø�x‰x�~‰~˜cÓ.Ð.r]   c               ó    € V ^8„  d   QhRRRR/# )rO   Úreference_generationrU   r”   r•   rX   )rY   s   "rZ   r[   rÚ  ™  s   € ÷ C,ñ C,¸ð C,Àñ C,r]   c           	     óê  € V P                   ;_uu_ 4        V P                  \        P                  8w  d    RRR4       R#  RRR4       V P                  P
                  Ee   . pV P                   ;_uu_ 4        V P                  '       df   V P                  R,          P                  4       V P                  P
                  8”  d,   VP                  V P                  P                  4       4       Kw  RRR4       \        '       gD   \        P                  ! V Uu. uF!  q3P                  \        P                  4      NK#  	  upRR/  M(V F"  pVP                  \        P                  4       K$  	   V P                   ;_uu_ 4        \#        V P                  4      V P$                  ,           V P                  P&                  8¼  d    RRR4       R# V P(                  V P                  P&                  8¼  d    RRR4       R# V ;P(                  ^,          un        RRR4       Rp V P*                  ;_uu_ 4        V P,                  V P.                  8¼  d´    RRR4       V'       dQ   V P*                  ;_uu_ 4        V ;P,                  ^,          un        V P*                  P1                  4        RRR4       V P                   ;_uu_ 4        V ;P(                  ^,          un        V P                   P1                  4        RRR4       R# V ;P,                  ^,          un        RpRRR4       V P3                  4       pRpV P                   ;_uu_ 4        V P4                  P7                  4       V8w  d   RpV'       gA   V P                  P9                  V4       V P:                  P=                  VP>                  4       RRR4       V'       dË   VP                  \        P@                  4        V'       dQ   V P*                  ;_uu_ 4        V ;P,                  ^,          un        V P*                  P1                  4        RRR4       V P                   ;_uu_ 4        V ;P(                  ^,          un        V P                   P1                  4        RRR4       R#  V'       dQ   V P*                  ;_uu_ 4        V ;P,                  ^,          un        V P*                  P1                  4        RRR4       V P                   ;_uu_ 4        V ;P(                  ^,          un        V P                   P1                  4        RRR4       EKÐ    + '       g   i     EL; i  + '       g   i     ELl; iu upi   + '       g   i     EL]; i  + '       g   i     ELÝ; i  + '       g   i     R# ; i  + '       g   i     EL�; i  + '       g   i     EL; i  + '       g   i     EL ; i  + '       g   i     R# ; i  + '       g   i     EL; i  + '       g   i     EK¯  ; i  T'       de   T P*                  ;_uu_ 4        T ;P,                  ^,          un        T P*                  P1                  4        RRR4       M  + '       g   i     M; iT P                   ;_uu_ 4        T ;P(                  ^,          un        T P                   P1                  4        RRR4       i   + '       g   i     i ; i; i)zÔRemoves stale sockets then adds new ones if pool is too small and
has not been reset. The `reference_generation` argument specifies the
`generation` at the point in time this operation was requested on the
pool.
Nr  TFéÿÿÿÿ)!rä  rÞ  rÒ  rÔ  rp   Úmax_idle_time_secondsrá  rŠ  r  Úpoprr  r
  r  r¼   r,   ÚIDLErë  Úlenræ  Úmin_pool_sizerì  rå  rî  rð  ÚnotifyÚconnectr|   r~   Ú
appendleftrã  r  r�   r½   )rŽ   r-  Úclose_connsrP   Úincrementedr¼   s   &&    rZ   Úremove_stale_socketsÚPool.remove_stale_sockets™  sc  € ð �Y�Y‹YØ�z‰zœYŸ_™_Ô,Ø÷ ‰YØ,÷ ð �9‰9×*Ñ*Ó6ØˆKØ——“à—J—J�JØŸ
™
 2�×8Ñ8Ó:¸T¿Y¹Y×=\Ñ=\Ô\à×&Ñ& t§z¡z§~¡~Ó'7Ö8÷ ÷ “8Ü—’ÙOZÓ[É{Àt—o‘oÔ&<×&AÑ&AÖBÉ{Ñ[ðà&*óó
 (�DØ—O‘OÔ$:×$?Ñ$?Ö@ñ (ð Ø——“ä�t—z‘z“? T×%8Ñ%8Õ8¸D¿I¹I×<SÑ<SÔSØ÷  ‘ð —=‘= D§I¡I×$;Ñ$;Ô;Ø÷  ‘ð —’ Õ"•÷  ð  ˆKð,Ø×.×.Ó.ð —}‘}¨×(<Ñ(<Ô<Ø÷	 /÷* à×2×2Ó2ØŸš¨Õ*�Ø×1Ñ1×8Ñ8Ô:÷ 3ð —^—^“^Ø—M’M QÕ&•MØ—N‘N×)Ñ)Ô+÷ $‘^ð- —M’M QÕ&•MØ"&�K÷ /ð —|‘|“~�Ø"�
Ø—Y—Y“Yð —x‘x×+Ñ+Ó-Ð1EÔEØ%)˜
ß%ØŸ
™
×-Ñ-¨dÔ3Ø×,Ñ,×4Ñ4°T×5HÑ5HÔI÷ ÷ Ø—O‘OÔ$:×$@Ñ$@ÔAØçà×2×2Ó2ØŸš¨Õ*�Ø×1Ñ1×8Ñ8Ô:÷ 3ð —^—^“^Ø—M’M QÕ&•MØ—N‘N×)Ñ)Ô+÷ $‘^ð ÷ à×2×2Ó2ØŸš¨Õ*�Ø×1Ñ1×8Ñ8Ô:÷ 3ð —^—^“^Ø—M’M QÕ&•MØ—N‘N×)Ñ)Ô+÷ $’^÷u �YˆYú÷ —�üò \÷  —�ú÷@ 3×2Ð2ú÷ $—^�^ú÷7 /×.Ð.ú÷ —Y�Yú÷ 3×2Ð2ú÷ $—^�^ú÷	 3×2Ð2ú÷ $—^‘^û÷ à×2×2Ó2ØŸš¨Õ*�Ø×1Ñ1×8Ñ8Ô:÷ 3×2×2Ð2úð —^—^“^Ø—M’M QÕ&•MØ—N‘N×)Ñ)Ô+÷ $—^—^�^ýs
  •!T?Á8UÂA%UÄ'U'ÆAU,Ç&U,Ç?U,È#X! È7V(ÉX! É84V Ë4VÌV(Ì!.X! Í)V<Í9A V<Î9X! Ï	X! Ð4WÑ4W$Ò04W8Ô 4XÔ?U	ÕU$	Õ,U=	Ö V	ÖV%	Ö(V9	Ö3	X! Ö<W	×	X! ×W!	×$W5	×8X		ØX	Ø![2Ø>4Y;	Ù2	[2Ù;ZÚ[2Ú"4[	Û	[2Û[/Û*[2c               ó    € V ^8„  d   QhRRRR/# )rO   r1  r0  r”   r•   rX   )rY   s   "rZ   r[   rÚ  Þ  s   € ÷ 1ñ 1¨mð 1Àñ 1r]   c                	ó¸  € V P                   '       g   \        V4      \        \        39  d   R # \	        V\        4      '       g   Q h\	        VP
                  \        \        \        P                  34      '       d=   \	        VP
                  \        P                  \        P                  34      '       g   R # VP                  R4       VP                  R4       R # )NÚSystemOverloadedErrorÚRetryableError)rV   Útyper   r   r)  Ú	__cause__r   r1   ÚsocketÚgaierrorÚsslÚSSLEOFErrorÚSSLZeroReturnErrorÚ_add_error_label)rŽ   r1  s   &&rZ   Ú_handle_connection_errorÚPool._handle_connection_errorÞ  s“   € ð �<�<ˆ<œ4 ›;¬}¼nÐ.MÔMÙÜ˜%¤×/Ò/Ð/Ð/ä�e—o‘oÔ(9¼9ÄfÇoÁoÐ'V×WÒWô ˜eŸo™o´·±Ä×AWÑAWÐ/X×YÒYÙØ×ÑÐ6Ô7Ø×ÑÐ/Ö0r]   c               ó    € V ^8„  d   QhRRRR/# )rO   Úhandlerú"Optional[_MongoClientErrorHandler]r”   rM   rX   )rY   s   "rZ   r[   rÚ  í  s   € ÷ Uñ UÐAð UÈZñ Ur]   c                óJ
  € V P                   ;_uu_ 4        V P                  pV ;P                  ^,          un        \        4       pV P                  P	                  V4       RRR4       V P
                  P                  pV P                  '       d#   Vf   Q hVP                  V P                  X4       V P                  '       dz   \        P                  ! \        P                  4      '       dP   \        \        \         P"                  V P$                  V P                  ^ ,          V P                  ^,          XR7        \'        V P                  V P
                  4      p\E        YPT P                  XT PF                  4      pT P                   ;_uu_ 4        T P                  P	                  TPH                  4       T P                  P+                  X4       RRR4       XPJ                  '       d   TPH                  PM                  4        Rp	 T PF                  '       g$   TPO                  4        Rp	TPP                  T n(        T'       d   TPS                  TRR7       TPU                  4        T'       d0   TPX                  PZ                  P]                  TP^                  4       T#   + '       g   i     ELN; i  \(         Ed¨   pT P                   ;_uu_ 4        T P                  P+                  X4       RRR4       M  + '       g   i     M; iT P                  '       d2   Tf   Q hTP-                  T P                  X\.        P0                  4       T P                  '       d¡   \        P                  ! \        P                  4      '       dw   \        \        \         P2                  T P$                  T P                  ^ ,          T P                  ^,          X\5        \.        P0                  4      \.        P0                  R7       T P7                  T4       \9        T\:        \<        .\>        O54      '       d-   \A        T P
                  4      p\C        T P                  YgR7       h Rp?ii ; i  + '       g   i     EL£; i  \(         d•   p
T P                   ;_uu_ 4        T P                  P+                  TPH                  4       RRR4       M  + '       g   i     M; iT	'       g   T P7                  T
4       TPW                  \.        P0                  4       h Rp
?
ii ; i)z½Connect to Mongo and return a new Connection.

Can raise ConnectionFailure.

Note that the pool does not keep a reference to the socket -- you
must call checkin() when you're done with it.
N©r4  rP  rQ  rR  rS  rd  rŽ  FT)Úcompleted_handshake)0rä  rç  r2   rã  Úaddrp   rq   rs   Úpublish_connection_createdrS   rt   r'   rW  rX  rY  r)   r(   ÚCONN_CREATEDr‹   r3   r0  r  rf  r,   r�  rg  r*   rH  r)  r�  r‘  r1   r"   r4   rM   rV   r�   Ú	cancelledrk  rÏ   rg   Úcontribute_socketrU  r¼   rœ   Ú	_topologyÚreceive_cluster_timer�   )rŽ   rK  Úconn_idÚtmp_contextrr   Únetworking_interfacer1  r’  rP   Úcompleted_helloÚes   &&         rZ   r6  ÚPool.connectí  s‰  € ð �Y�Y‹YØ×-Ñ-ˆGØ×#Ò# qÕ(Õ#ä.Ó0ˆKØ× Ñ ×$Ñ$ [Ô1÷ ð —I‘I×.Ñ.ˆ	Ø× × Ð ØÒ(Ð(Ð(Ø×0Ñ0°·±¸wÔGØ×#×#Ð#Ô(:×(GÒ(GÌÏÉ×(VÒ(VÜÜ"Ü0×=Ñ=ØŸ™ØŸ<™<¨�?ØŸ<™<¨�?Ø#*õð	Ü#?ÀÇÁÈdÏiÉiÓ#XÐ ô6 Ð.°d·l±lÀGÈTÏ\É\ÓZˆØ�Y�Y‹YØ× Ñ ×$Ñ$ T×%8Ñ%8Ô9Ø× Ñ ×(Ñ(¨Ô5÷ ð × × Ð Ø×Ñ×&Ñ&Ô(Øˆð	Ø—<—<�<Ø—
‘
”Ø"&�Ø#'×#3Ñ#3�Ô ßØ×)Ñ)¨$ÀEÐ)ÔJà×ÑÔ÷ Ø�N‰N×$Ñ$×9Ñ9¸$×:LÑ:LÔMàˆ÷[ �YˆYûô0 õ 	Ø——“Ø×$Ñ$×,Ñ,¨[Ô9÷ ——�úà×$×$Ð$Ø Ò,Ð,Ð,Ø×3Ñ3Ø—L‘L 'Ô+A×+GÑ+Gôð ×'×'Ð'Ô,>×,KÒ,KÌGÏMÉM×,ZÒ,ZÜÜ&Ü4×@Ñ@Ø!Ÿ_™_Ø#Ÿ|™|¨A�Ø#Ÿ|™|¨A�Ø'.Ü;Ô<R×<XÑ<XÓYÜ0×6Ñ6õ	ð ×)Ñ)¨%Ô0Ü˜%¤'¬7Ð!?´YÑ!?×@Ò@Ü.¨t¯y©yÓ9�Ü)¨$¯,©,¸ÕWØûð/	ú÷4 �YˆYûô  ô 	Ø——“Ø×$Ñ$×,Ñ,¨T×-@Ñ-@ÔA÷ ——�úç"Ø×-Ñ-¨aÔ0Ø�O‰OÔ2×8Ñ8Ô9Øûð	úsŸ   •AJ%Ä> J9 ÆAQ/ÈR È*R É	#R Ê%J6	Ê9Q,ËQ'ËK>Ë5	Q'Ë>LÌ	Q'Ì#AQ'Í&)Q'ÎCQ'Ñ'Q,Ñ/R 	ÒT"ÒTÒ"&SÓ	TÓS!ÓTÓ,1TÔT"c               ó    € V ^8„  d   QhRRRR/# )rO   rK  rL  r”   zGenerator[Connection, None]rX   )rY   s   "rZ   r[   rÚ  E  s    € ÷ Lñ LØ9ðLà	$ñLr]   c           
   #  óà  "  € V P                   P                  p\        P                  ! 4       pV P                  '       d"   Vf   Q hVP                  V P                  4       V P                  '       dy   \        P                  ! \        P                  4      '       dO   \        \        \        P                  V P                  V P                  ^ ,          V P                  ^,          R7       V P!                  W1R7      p\        P                  ! 4       V,
          pV P                  '       d.   Vf   Q hVP#                  V P                  VP$                  V4       V P                  '       d…   \        P                  ! \        P                  4      '       d[   \        \        \        P&                  V P                  V P                  ^ ,          V P                  ^,          VP$                  VR7        V P(                  ;_uu_ 4        V P*                  P-                  VP.                  4       RRR4       Vx € TP2                  '       dT   T P(                  ;_uu_ 4        T P@                  P-                  T4       T ;PB                  ^,          un!        RRR4       R# TP4                  '       dT   T P(                  ;_uu_ 4        T P@                  P-                  T4       T ;PD                  ^,          un"        RRR4       R# TP<                  '       d   T P?                  T4       R# R#   + '       g   i     EL; i  \0         d    TP2                  ;'       g    TP4                  pT'       d*   \6        P8                  ! 4       w  rxp	TP;                  Yx4       T'       g$   TP<                  '       d   T P?                  T4       h i ; i  + '       g   i     R# ; i  + '       g   i     R# ; i5i)aµ  Get a connection from the pool. Use with a "with" statement.

Returns a :class:`Connection` object wrapping a connected
:class:`socket.socket`.

This method should always be used in a with-statement::

    with pool.get_conn() as connection:
        connection.send_message(msg)
        data = connection.receive_message(op_code, request_id)

Can raise ConnectionFailure or OperationFailure.

:param handler: A _MongoClientErrorHandler.
Nrû  ©rK  rO  )#rp   rq   rc   rd   rs   Ú$publish_connection_check_out_startedrS   rt   r'   rW  rX  rY  r)   r(   ÚCHECKOUT_STARTEDr‹   Ú	_get_connÚpublish_connection_checked_outrT   ÚCHECKOUT_SUCCEEDEDrä  rã  rP  r�   r0  r…   r†   ÚsysÚexc_infoÚhandler‡   r»   rõ  r÷  rö  )
rŽ   rK  rr   Úcheckout_started_timerP   r[  ÚpinnedÚexc_typeÚexc_valÚ_s
   &&        rZ   ÚcheckoutÚPool.checkoutD  s�  é € ð& —I‘I×.Ñ.ˆ	Ü $§¢Ó 0ÐØ× × Ð ØÒ(Ð(Ð(Ø×:Ñ:¸4¿<¹<ÔHØ×#×#Ð#Ô(:×(GÒ(GÌÏÉ×(VÒ(VÜÜ"Ü0×AÑAØŸ™ØŸ<™<¨�?ØŸ<™<¨�?õð �~‰~Ð3ˆ~ÓEˆä—>’>Ó#Ð&;Õ;ˆØ× × Ð ØÒ(Ð(Ð(Ø×4Ñ4°T·\±\À4Ç7Á7ÈHÔUØ×#×#Ð#Ô(:×(GÒ(GÌÏÉ×(VÒ(VÜÜ"Ü0×CÑCØŸ™ØŸ<™<¨�?ØŸ<™<¨�?Ø#'§7¡7Ø#õð	Ø——“Ø×$Ñ$×(Ñ(¨×)<Ñ)<Ô=÷ àŠJð  �?�?ˆ?Ø——“Ø×%Ñ%×)Ñ)¨$Ô/Ø—
’
˜a••
÷ ‘ð ××ÐØ——“Ø×%Ñ%×)Ñ)¨$Ô/Ø—’ Õ"•÷ ‘ð �[�[ˆ[Ø�L‰L˜Öñ ÷5 —�ûô ô 	ð
 —_‘_×:Ð:¨×(:Ñ(:ˆFßô (+§|¢|£~Ñ$� 1Ø—‘˜xÔ1ß˜dŸkŸk˜kØ—‘˜TÔ"Øð	ú÷ —�ú÷ —�üsª   ‚A0O.Á3)O.ÂCO.Å*)O.ÆAO.Ç/L: È&L&È)L: È5O.ÉO.É5OÊO.Ê,O.Ë 5OË5O.ÌO.Ì&L7	Ì1	L: Ì:OÍOÍ-0OÎOÎ0OÏO.ÏO	Ï	O.ÏO+	Ï%	O.c               ó$   € V ^8„  d   QhRRRRRR/# )rO   rh  rˆ  Ú
emit_eventrW   r”   r•   rX   )rY   s   "rZ   r[   rÚ  “  s"   € ÷ ñ ¸ð ÈDð ÐUYñ r]   c                	ó  € V P                   \        P                  8w  Edd   V'       Ed#   \        P                  ! 4       V,
          pV P
                  '       dZ   V P                  P                  f   Q hV P                  P                  P                  V P                  \        P                  V4       V P                  '       dŠ   \        P                  ! \        P                   4      '       d`   \#        \        \$        P&                  V P(                  V P                  ^ ,          V P                  ^,          R\        P                  VR7       \+        V P                  4      p\-        V P                  \/        R4      VR7       R # R # )Nú<An error occurred while trying to establish a new connection©r4  rP  rQ  rR  rb  r1  rT  zconnection pool pausedrŽ  )rÞ  rÒ  rÔ  rc   rd   rs   rp   rq   Ú#publish_connection_check_out_failedrS   r+   Ú
CONN_ERRORrt   r'   rW  rX  rY  r)   r(   ÚCHECKOUT_FAILEDr‹   r"   r4   r   )rŽ   rh  rp  r[  r’  s   &&&  rZ   Ú_raise_if_not_readyÚPool._raise_if_not_ready“  s  € Ø�:‰:œŸ™Õ(ßˆzÜŸ>š>Ó+Ð.CÕC�Ø×(×(Ð(ØŸ9™9×5Ñ5ÒAÐAÐAØ—I‘I×.Ñ.×RÑRØŸ™Ô&D×&OÑ&OÐQYôð ×+×+Ð+Ô0B×0OÒ0OÔPW×P]ÑP]×0^Ò0^ÜÜ*Ü 8× HÑ HØ!%§¡Ø#'§<¡<°¥?Ø#'§<¡<°¥?Ø]Ü<×GÑGØ#+õ	ô +¨4¯9©9Ó5ˆGÜ%Ø—‘œmÐ,DÓEÐW^÷ñ+ )r]   c               ó$   € V ^8„  d   QhRRRRRR/# )rO   rh  rˆ  rK  rL  r”   rM   rX   )rY   s   "rZ   r[   rÚ  ­  s)   € ÷ ñ Ø%*ðØ5Wðà	ñr]   c                ó   € V P                   \        P                  ! 4       8w  d   V P                  4        V P                  '       Ed.   \
        P                  ! 4       V,
          pV P                  '       dZ   V P                  P                  f   Q hV P                  P                  P                  V P                  \        P                  V4       V P                  '       dŠ   \        P                   ! \"        P$                  4      '       d`   \'        \        \(        P*                  V P,                  V P                  ^ ,          V P                  ^,          R\        P                  VR7       \/        R4      hV P0                  ;_uu_ 4        V ;P2                  ^,          un        RRR4       \4        P6                  ! 4       '       d   \4        P8                  ! 4       pMOV P                  P:                  '       d2   \
        P                  ! 4       V P                  P:                  ,           pMRpV P<                  ;_uu_ 4        V P?                  VRR7       V P@                  V PB                  8  gž   V'       d   V\
        P                  ! 4       ,
          MRp\E        V P<                  V4      '       gG   V P@                  V PB                  8  d   V P<                  PG                  4        V PI                  V4       V P?                  VRR7       K¸  V ;P@                  ^,          un         RRR4       RpRpRp V P0                  ;_uu_ 4        V ;PJ                  ^,          un%        RpRRR4       VEf·   V PL                  ;_uu_ 4        V P?                  VRR7       V PN                  '       gÍ   V PP                  V PR                  8  g²   V'       d   V\
        P                  ! 4       ,
          MRp\E        V PL                  V4      '       g[   V PN                  '       g   V PP                  V PR                  8  d   V PL                  PG                  4        RpV PI                  V4       V P?                  VRR7       KÞ   V PN                  PU                  4       pRRR4       V'       d    V PY                  V4      '       d   RpEKR  EKU   V P[                  VR7      pV PL                  ;_uu_ 4        V ;PP                  ^,          un(        V PL                  PG                  4        RRR4       EK»   RTn3        T#   + '       g   i     EL–; i  + '       g   i     EL); i  + '       g   i     ELþ; i  \V         d    T ;PP                  ^,          un(         ELi ; i  + '       g   i     EL; i  + '       g   i     EKR  ; i  T PL                  ;_uu_ 4        T ;PP                  ^,          un(        T PL                  PG                  4        RRR4       i   + '       g   i     i ; i; i  \\         EdÚ    T'       d    TP_                  \`        Pb                  4       T P<                  ;_uu_ 4        T ;P@                  ^,          un         T'       d   T ;PJ                  ^,          un%        T P<                  PG                  4        RRR4       M  + '       g   i     M; iT'       Eg#   \
        P                  ! 4       T,
          pT P                  '       dZ   T P                  P                  f   Q hT P                  P                  P                  T P                  \        Pd                  T4       T P                  '       dŠ   \        P                   ! \"        P$                  4      '       d`   \'        \        \(        P*                  T P,                  T P                  ^ ,          T P                  ^,          R	\        Pd                  TR7       h i ; i)
z8Get or create a Connection. Can raise ConnectionFailure.NzConnection pool was closedrs  z?Attempted to check out a connection from closed connection poolT)rp  Fr_  rr  )4rê  rè  ré  r#  rb   rc   rd   rs   rp   rq   rt  rS   r+   r  rt   r'   rW  rX  rY  r)   r(   rv  r‹   r³  rä  rô  r   Úget_timeoutÚget_deadlineÚwait_queue_timeoutrë  rw  rì  rí  r$   r5  Ú_raise_wait_queue_timeoutræ  rå  rá  rî  rð  ÚpopleftÚ
IndexErrorÚ	_perishedr6  r0  r¼   r,   r�  ru  r‡   )	rŽ   rh  rK  r[  Údeadliner’   rP   r9  Úemitted_events	   &&&      rZ   rb  ÚPool._get_conn­  sƒ  € ð �8‰8”r—y’y“{Ô"Ø×$Ñ$Ô&à�;�;‰;Ü—~’~Ó'Ð*?Õ?ˆHØ×$×$Ð$Ø—y‘y×1Ñ1Ò=Ð=Ð=Ø—	‘	×*Ñ*×NÑNØ—L‘LÔ"@×"LÑ"LÈhôð ×'×'Ð'Ô,>×,KÒ,KÌGÏMÉM×,ZÒ,ZÜÜ&Ü4×DÑDØ!Ÿ_™_Ø#Ÿ|™|¨A�Ø#Ÿ|™|¨A�Ø7Ü8×DÑDØ'õ	ô #ØQóð ð �Y�Y‹YØ× Ò  AÕ%Õ ÷ ô ×Ò×ÒÜ×)Ò)Ó+‰HØ�Y‰Y×)×)Ð)Ü—~’~Ó'¨$¯)©)×*FÑ*FÕF‰HàˆHà�^�^‹^Ø×$Ñ$Ð%:ÀtÐ$ÔLØ—}‘} t×'9Ñ'9Ô9ß9A˜(¤T§^¢^Ó%5Ö5Àt�Ü! $§.¡.°'×:Ò:ð —}‘} t×'9Ñ'9Ô9ØŸ™×-Ñ-Ô/Ø×2Ñ2Ð3HÔIØ×(Ñ(Ð)>È4Ð(ÖPØ�MŠM˜QÕ�M÷ ð ˆØˆØˆð@	Ø——“Ø×#Ò# qÕ(Õ#Ø"�÷ ð “,ð ×.×.Ó.Ø×,Ñ,Ð-BÈuÐ,ÔUØ#ŸzŸz˜z¨T¯]©]¸T×=QÑ=QÔ-QßAI (¬T¯^ª^Ó-=Ö"=Èt˜Ü)¨$×*CÑ*CÀW×MÒMð  $ŸzŸz˜z¨T¯]©]¸T×=QÑ=QÔ-QØ $× 9Ñ 9× @Ñ @Ô BØ,0˜MØ ×:Ñ:Ð;PÔQØ×0Ñ0Ð1FÐSXÐ0ÖYð+Ø#Ÿz™z×1Ñ1Ó3˜÷ /÷" Ø—~‘~ d×+Ò+Ø#˜Ú ò ,ð?Ø#Ÿ|™|°G˜|Ó<˜à!×6×6Ó6Ø ŸMšM¨QÕ.�MØ ×5Ñ5×<Ñ<Ô>÷ 7Ò6ð9 ð| ˆŒØˆ÷ �YˆYú÷ �^ˆ^ú÷$ —�ûô* &ô +ØŸš¨Õ*Ÿ˜ð+ú÷ /×.Ð.ú÷2 7×6Ñ6û˜T×6×6Ó6Ø ŸMšM¨QÕ.�MØ ×5Ñ5×<Ñ<Ô>÷ 7×6×6Ð6þô õ 	ßà—‘Ô 6× <Ñ <Ô=Ø——“Ø—’ Õ"•ßØ×'Ò'¨1Õ,Õ'Ø—‘×%Ñ%Ô'÷	  ——�ú÷ !�=ÜŸ>š>Ó+Ð.CÕC�Ø×(×(Ð(ØŸ9™9×5Ñ5ÒAÐAÐAØ—I‘I×.Ñ.×RÑRØŸ™Ô&D×&OÑ&OÐQYôð ×+×+Ð+Ô0B×0OÒ0OÔPW×P]ÑP]×0^Ò0^ÜÜ*Ü 8× HÑ HØ!%§¡Ø#'§<¡<°¥?Ø#'§<¡<°¥?Ø]Ü<×GÑGØ#+õ	ð ð9	ús  Æ	T0È?6UÉ6B.UÌ3X( ÍUÍ#!X( Î%VÎ*"VÏAVÐAVÑ7U,ÒX( Ò!X( Ò8X( ÓW  ÓX( Ó'4V+ÔX( Ô0U	ÕU	ÕU)	Õ#	X( Õ,$VÖVÖVÖVÖV(	Ö"	X( Ö+V=	Ö6
X( × X%×4X	Ø		X%ØX"ØX%Ø%X( Ø(`Ø<3`Ù/A[Û	`Û[Û`Û)-`ÜA*`Þ)`Þ,A!`c               ó    € V ^8„  d   QhRRRR/# )rO   rP   rM   r”   r•   rX   )rY   s   "rZ   r[   rÚ  .  s   € ÷ I$ñ I$˜Jð I$¨4ñ I$r]   c                ó¶	  € VP                   pVP                  pRVn        RVn         RVn        V P                  P	                  V4       V P
                  P                  pV P                  ;_uu_ 4        V P                  P	                  VP                  4       RRR4       V P                  '       d-   Vf   Q hVP                  V P                  VP                  4       V P                  '       d„   \        P                   ! \"        P$                  4      '       dZ   \'        \        \(        P*                  V P,                  V P                  ^ ,          V P                  ^,          VP                  R7       V P.                  \0        P2                  ! 4       8w  d   V P5                  4        EM.V P6                  '       d"   VP9                  \:        P<                  4       EMûVP6                  '       Ed   V P                  '       d<   Vf   Q hVP?                  V P                  VP                  \:        P@                  4       V P                  '       d«   \        P                   ! \"        P$                  4      '       d�   \'        \        \(        PB                  V P,                  V P                  ^ ,          V P                  ^,          VP                  \E        \:        P@                  4      \:        P@                  R7       MÞRpV P                  ;_uu_ 4        V PG                  VPH                  VPJ                  4      '       d   RpMiVPM                  4        VPO                  \Q        V PR                  4      4       V PT                  PW                  V4       V PX                  P[                  4        RRR4       V'       d    VP9                  \:        P\                  4       V P^                  ;_uu_ 4        V'       d   V ;P`                  ^,          un0        M!V'       d   V ;Pb                  ^,          un1        V ;Pd                  ^,          un2        V ;Pf                  ^,          un3        V ;Ph                  ^,          un4        V P^                  P[                  4        RRR4       R#   + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     R# ; i)zvReturn the connection to the pool, or if it's closed discard it.

:param conn: The connection to check into the pool.
FNrN  rd  T)5r…   r†   r‡   rõ  r  rp   rq   rä  rã  r�   rs   Úpublish_connection_checked_inrS   rT   rt   r'   rW  rX  rY  r)   r(   Ú	CHECKEDINr‹   rê  rè  ré  r#  rb   r¼   r,   r  rf  r�  rg  r*   r*  r   rƒ   r�  r…  rW   rg   rá  r7  rå  r5  r½   rë  r÷  rö  rì  ræ  rô  )rŽ   rP   ÚtxnÚcursorrr   r¼   s   &&    rZ   r»   ÚPool.checkin.  s#  € ð
 �o‰oˆØ×#Ñ#ˆØˆŒØˆŒØ"ˆÔØ×Ñ×%Ñ% dÔ+Ø—I‘I×.Ñ.ˆ	Ø�Y�Y‹YØ× Ñ ×(Ñ(¨×)<Ñ)<Ô=÷ à× × Ð ØÒ(Ð(Ð(Ø×3Ñ3°D·L±LÀ$Ç'Á'ÔJØ×#×#Ð#Ô(:×(GÒ(GÌÏÉ×(VÒ(VÜÜ"Ü0×:Ñ:ØŸ™ØŸ<™<¨�?ØŸ<™<¨�?Ø#'§7¡7õð �8‰8”r—y’y“{Ô"Ø×$Ñ$Ö&à�{�{ˆ{Ø—‘Ô 6× BÑ BÖCØ——‘à×(×(Ð(Ø$Ò0Ð0Ð0Ø×7Ñ7ØŸ™ d§g¡gÔ/E×/KÑ/Kôð ×+×+Ð+Ô0B×0OÒ0OÔPW×P]ÑP]×0^Ò0^ÜÜ*Ü 8× DÑ DØ!%§¡Ø#'§<¡<°¥?Ø#'§<¡<°¥?Ø+/¯7©7Ü?Ô@V×@\Ñ@\Ó]Ü4×:Ñ:õ	øð #�
Ø—Y—Y“Yð ×,Ñ,¨T¯_©_¸d¿o¹o×NÒNØ%)™
à×5Ñ5Ô7Ø×/Ñ/´°T×5EÑ5EÓ0FÔGØŸ
™
×-Ñ-¨dÔ3à×1Ñ1×8Ñ8Ô:÷ ÷ Ø—O‘OÔ$:×$@Ñ$@ÔAà�^�^‹^ßØ—
’
˜a•–
ßØ—’ Õ"•Ø�MŠM˜QÕ�MØ×Ò 1Õ$ÕØ× Ò  AÕ%Õ Ø�N‰N×!Ñ!Ô#÷ ‰^÷k �YˆYú÷N —Y�Yú÷ �^ˆ^ús,   Á3&RÌBR3Ï,*SÐA>SÒR0	Ò3S	ÓS	c               ó    € V ^8„  d   QhRRRR/# )rO   rP   rM   r”   rW   rX   )rY   s   "rZ   r[   rÚ  y  s   € ÷ #ñ #˜jð #¨Tñ #r]   c                ó  € VP                  4       pV P                  P                  e<   W P                  P                  8”  d"   VP                  \        P
                  4       R# V P                  pVeE   V^ 8X  g   W#8”  d8   VP                  4       '       d"   VP                  \        P                  4       R# V P                  VP                  VP                  4      '       d"   VP                  \        P                  4       R# R# )aX  Return True and close the connection if it is "perished".

This side-effecty function checks if this socket has been idle for
for longer than the max idle time, or if the socket has been closed by
some external network error, or if the socket's generation is outdated.

Checking sockets lets us avoid seeing *some*
:class:`~pymongo.errors.AutoReconnect` exceptions on server
hiccups, etc. We only check if the socket was closed by an external
error if it has been > 1 second since the socket was checked into the
pool to keep performance reasonable -
we can't avoid AutoReconnects completely anyway.
TF)rŠ  rp   r0  r¼   r,   r2  rß  ru  r�  r*  r   rƒ   r½   )rŽ   rP   rŠ  Úcheck_interval_secondss   &&  rZ   r�  ÚPool._perishedy  sÄ   € ð !×2Ñ2Ó4Ðð �I‰I×+Ñ+Ò7Ø!§I¡I×$CÑ$CÔCà�O‰OÔ2×7Ñ7Ô8Ùà!%×!=Ñ!=ÐØ!Ò-Ø" aÔ'Ð+<Ô+Uà×Ñ×!Ò!Ø—‘Ô 6× <Ñ <Ô=Ùà× Ñ  §¡°$·/±/×BÒBØ�O‰OÔ2×8Ñ8Ô9Ùár]   c               ó    € V ^8„  d   QhRRRR/# )rO   rh  rˆ  r”   r	   rX   )rY   s   "rZ   r[   rÚ  ž  s   € ÷ %
ñ %
¸uð %
Èñ %
r]   c                	óò  € V P                   P                  p\        P                  ! 4       V,
          pV P                  '       d2   Vf   Q hVP                  V P                  \        P                  V4       V P                  '       dŠ   \        P                  ! \        P                  4      '       d`   \        \        \        P                   V P"                  V P                  ^ ,          V P                  ^,          R\        P                  VR7       \$        P&                  ! 4       ;'       g    V P                   P(                  pV P                   P*                  '       du   V P,                  V P.                  ,
          V P0                  ,
          p\3        RP5                  V P                   P6                  V P.                  V P0                  VV4      4      h\3        RV P                   P6                   RV 24      h)NzBWait queue timeout elapsed without a connection becoming availablers  zÌTimeout waiting for connection from the connection pool. maxPoolSize: {}, connections in use by cursors: {}, connections in use by transactions: {}, connections in use by other operations: {}, timeout: {}zMTimed out while checking out a connection from connection pool. maxPoolSize: z, timeout: )rp   rq   rc   rd   rs   rt  rS   r+   ÚTIMEOUTrt   r'   rW  rX  rY  r)   r(   rv  r‹   r   r{  r}  rÆ   ræ  rö  r÷  r   rY   rí  )rŽ   rh  rr   r[  r’   Ú	other_opss   &&    rZ   r~  ÚPool._raise_wait_queue_timeoutž  s|  € Ø—I‘I×.Ñ.ˆ	Ü—>’>Ó#Ð&;Õ;ˆØ× × Ð ØÒ(Ð(Ð(Ø×9Ñ9Ø—‘Ô<×DÑDÀhôð ×#×#Ð#Ô(:×(GÒ(GÌÏÉ×(VÒ(VÜÜ"Ü0×@Ñ@ØŸ™ØŸ<™<¨�?ØŸ<™<¨�?Ø[Ü4×<Ñ<Ø#õ	ô ×#Ò#Ó%×EÐE¨¯©×)EÑ)EˆØ�9‰9×"×"Ð"Ø×+Ñ+¨d¯m©mÕ;¸d¿j¹jÕHˆIÜ'ð7÷ 8>±vØ—I‘I×+Ñ+Ø—M‘MØ—J‘JØØó8ó	ð ô $ðØ ŸI™I×3Ñ3Ð4°KÀ¸yðJó
ð 	
r]   c               ó   € V ^8„  d   QhRR/# r®   rX   )rY   s   "rZ   r[   rÚ  Å  s   € ÷ &ñ &˜ñ &r]   c                	ój   € \         '       d'   V P                   F  pVP                  R 4       K  	  R # R # rº   )rr  rá  r¼   )rŽ   rP   s   & rZ   Ú__del__ÚPool.__del__Å  s(   € ÷ ‹8ØŸ
œ
�Ø—‘ Ö%ó #ñ r]   )Ú__pinned_socketsrß  r‹   rð  rå  rî  rã  ræ  rS   rá  rs   rt   r|   rV   rg   rä  rí  rö  rç  r÷  rô  rp   rê  rì  rë  rÞ  )FN)TNF)NFrº   )r«  r¬  r­  r®  r�   r€   Úpropertyrb   r  r…  r  r#  rl  r*  r:  rH  r6  Ú
contextlibÚcontextmanagerrm  rw  rb  r»   r�  r~  r—  r±  rX   r]   rZ   rR   rR   ¹  s�   † ÷Tõlð" ô.ó ð.÷[Bõz=÷eõ
.õ õ/õC,õJ1÷Uðn ×ÑöLó ðLõ\÷4õBI$õV#õJ%
÷N&ñ &r]   rR   )vÚ
__future__r   r
  r¹  r›  rX  rè  rB  rD  re  rc   r_   Útypingr   r   r   r   r   r	   r
   r   r   Úbsonr   Úpymongor   r   Úpymongo.commonr   r   r   r   r   Úpymongo.errorsr   r   r   r   r   r   r   r   r   r   r   Úpymongo.hellor    r!   Úpymongo.helpers_sharedr"   r#   Úpymongo.lockr$   r%   r&   Úpymongo.loggerr'   r(   r)   r*   Úpymongo.monitoringr+   r,   Úpymongo.network_layerr-   r.   r/   Úpymongo.pool_optionsr0   Úpymongo.pool_sharedr1   r2   r3   r4   Úpymongo.read_preferencesr5   Úpymongo.server_apir6   Úpymongo.server_typer7   Úpymongo.socket_checkerr8   Ú"pymongo.synchronous.client_sessionr9   Úpymongo.synchronous.helpersr:   Úpymongo.synchronous.networkr;   r<   Úbson.objectidr=   Úpymongo.compression_supportr>   r?   r@   Úpymongo.messagerA   rB   Úpymongo.read_concernrC   rD   Úpymongo.synchronous.authrE   rF   Ú pymongo.synchronous.mongo_clientrG   rH   Úpymongo.typingsrI   rJ   Úpymongo.write_concernrK   rr  rM   r³  rµ  rÒ  rR   rX   r]   rZ   Ú<module>rº     s  ðõ #ã Û Û Û Û 	Û Û 
Û 
Û Û ÷
÷ 
õ 
õ 'ß )÷õ ÷÷ ÷ ñ ÷ -ß O÷ñ ÷
ó ÷÷ PÑ OÝ ,÷ó õ 4Ý .Ý +Ý 0Ý NÝ 6Ý /çÝ!Ý&÷ñ ÷
 1Ý0Ý4Ý5Ý@ßVß6Ý2ð €÷X
ñ X
ôv�|ô ÷+ñ +÷>ñ ÷R&ó R&r]   