+
    4O|jS  ã                  óÎ   € R t ^ RIHt ^ RIHtHt ^ RIHt ^ RIH	t	H
t
 ^ RIHtHt ^ RIHt ^ RIHtHtHtHtHtHtHtHtHtHt Rt]RR	RR
R
R
3R R llt]RR	RR
R
R
3R R lltR
# )z*Tools to parse and validate a MongoDB URI.)Úannotations)ÚAnyÚOptional)Úunquote_plus)ÚSRV_SERVICE_NAMEÚ_CaseInsensitiveDictionary)ÚConfigurationErrorÚ
InvalidURI)Ú_SrvResolver)
Ú_ALLOWED_TXT_OPTSÚDEFAULT_PORTÚSCHEMEÚ
SCHEME_LENÚSRV_SCHEME_LENÚ_check_optionsÚ_make_options_case_sensitiveÚ_validate_uriÚsplit_hostsÚsplit_optionsTFNc               ó<   € V ^8„  d   QhRRRRRRRRRRR	R
RRRRRR/	# ©é   ÚuriÚstrÚdefault_portzOptional[int]ÚvalidateÚboolÚwarnÚ	normalizeÚconnect_timeoutzOptional[float]Úsrv_service_namezOptional[str]Úsrv_max_hostsÚreturnzdict[str, Any]© )Úformats   "ÚWC:\Users\alokc\chatbot\backend\venv\Lib\site-packages\pymongo/synchronous/uri_parser.pyÚ__annotate__r&   )   sm   € ÷ Pñ PØ	ðPàðPð ðPð ð	Pð
 ðPð %ðPð $ðPð !ðPð ñPó    c                óŒ   € \        WW#WG4      pVP                  \        V VVVVVVV4      4       \        VR,          4      VR&   V# )aî  Parse and validate a MongoDB URI.

Returns a dict of the form::

    {
        'nodelist': <list of (host, port) tuples>,
        'username': <username> or None,
        'password': <password> or None,
        'database': <database name> or None,
        'collection': <collection name> or None,
        'options': <dict of MongoDB URI options>,
        'fqdn': <fqdn of the MongoDB+SRV URI> or None
    }

If the URI scheme is "mongodb+srv://" DNS SRV and TXT lookups will be done
to build nodelist and options.

:param uri: The MongoDB URI to parse.
:param default_port: The port number to use when one wasn't specified
      for a host in the URI.
:param validate: If ``True`` (the default), validate and
      normalize all options. Default: ``True``.
:param warn: When validating, if ``True`` then will warn
      the user then ignore any invalid options or values. If ``False``,
      validation will error when options are unsupported or values are
      invalid. Default: ``False``.
:param normalize: If ``True``, convert names of URI options
      to their internally-used names. Default: ``True``.
:param connect_timeout: The maximum time in milliseconds to
      wait for a response from the DNS server.
:param srv_service_name: A custom SRV service name

.. versionchanged:: 4.14
   ``options`` is now type ``dict`` as opposed to a ``_CaseInsensitiveDictionary``.

.. versionchanged:: 4.6
   The delimiting slash (``/``) between hosts and connection options is now optional.
   For example, "mongodb://example.com?tls=true" is now a valid URI.

.. versionchanged:: 4.0
   To better follow RFC 3986, unquoted percent signs ("%") are no longer
   supported.

.. versionchanged:: 3.9
    Added the ``normalize`` parameter.

.. versionchanged:: 3.6
    Added support for mongodb+srv:// URIs.

.. versionchanged:: 3.5
    Return the original value of the ``readPreference`` MongoDB URI option
    instead of the validated read preference mode.

.. versionchanged:: 3.1
    ``warn`` added so invalid options can be ignored.
Úoptions)r   ÚupdateÚ
_parse_srvr   )	r   r   r   r   r   r   r    r!   Úresults	   &&&&&&&& r%   Ú	parse_urir-   )   sZ   € ôD ˜3¨h¸iÓW€FØ
‡M�MÜØØØØØØØØó		
ôô 5°V¸IÕ5FÓG€Fˆ9ÑØ€Mr'   c               ó<   € 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$   s   "r%   r&   r&   |   sm   € ÷ Eñ EØ	ðEàðEð ðEð ð	Eð
 ðEð %ðEð $ðEð !ðEð ñEr'   c                óž  € V P                  \        4      '       d   R pV \        R p	MRpV \        R p	\	        4       p
V	P                  R4      w  r¼pRV9   d   VP                  R4      w  p pMTpV'       d   V
P                  \        WÒW44      4       Vf   V
P                  R\        4      pRV9   d   VP                  R4      w   rÏMTp\        V4      pT;'       g    V
P                  R4      pV'       Ed8   \        VRR7      pV^ ,          w  ppT;'       g    V
P                  R	4      p\        VWVV4      pVP                  4       pVP                  4       pV'       d]   \        VW#V4      p\!        V4      \"        ,
          '       d   \%        R
4      hVP'                  4        F  w  ppVV
9  g   K  VV
V&   K  	  V
P                  R4      '       d   V'       d   \)        R4      hV
P                  R4      '       d   V'       d   \)        R4      hRV
9  d   RV
9  d   V'       d   RMRV
R&   M\        WñR7      p\+        VV
4       RVRV
/# )FNTÚ?Ú/ÚsrvServiceNameÚ@ÚsrvMaxHosts)r   ÚconnectTimeoutMSzDOnly authSource, replicaSet, and loadBalanced are supported from DNSÚloadBalancedz0You cannot specify loadBalanced with srvMaxHostsÚ
replicaSetz.You cannot specify replicaSet with srvMaxHostsÚtlsÚsslÚtrueÚnodelistr)   )Ú
startswithr   r   r   r   Ú	partitionr*   r   Úgetr   Ú
rpartitionr   r   r
   Ú	get_hostsÚget_optionsÚsetr   r   Úitemsr	   r   )r   r   r   r   r   r   r    r!   Úis_srvÚscheme_freer)   Úhost_plus_db_partÚ_ÚoptsÚ	host_partÚhostsÚnodesÚfqdnÚportÚdns_resolverÚdns_optionsÚparsed_dns_optionsÚoptÚvals   &&&&&&&&                r%   r+   r+   |   s+  € ð ‡~�~”f×ÒØˆØœ*˜+Ð&‰àˆØœ.˜/Ð*ˆä(Ó*€Gà!,×!6Ñ!6°sÓ!;ÑÐ˜$Ø
ÐÔØ+×5Ñ5°cÓ:‰ˆ	�1‘aà%ˆ	çØ�‰”} T°TÓEÔFØÒØ"Ÿ;™;Ð'7Ô9IÓJÐØ
ˆiÔØ×*Ñ*¨3Ó/‰ˆˆ1ˆeàˆä˜Ó€EØ!×?Ð? W§[¡[°Ó%?€Mß€vÜ˜E°Ô5ˆØ˜1•X‰
ˆˆdð *×LÐL¨W¯[©[Ð9KÓ-LˆÜ# D¨/È]Ó[ˆØ×&Ñ&Ó(ˆØ"×.Ñ.Ó0ˆßÜ!.¨{¸HÈIÓ!VÐÜÐ%Ó&Ô):×:Ô:Ü(ØZóð ð /×4Ñ4Ö6‘��SØ˜gÖ%Ø#&�G˜C“Lñ 7ð �;‰;�~×&Ò&¯=ÜÐOÓPÐPØ�;‰;�|×$Ò$¯ÜÐMÓNÐNØ˜Ô E°Ô$8ß%-™T°6ˆG�E‰Nøä˜EÔ=ˆä�5˜'Ô"ð 	�EØ�7ðð r'   )Ú__doc__Ú
__future__r   Útypingr   r   Úurllib.parser   Úpymongo.commonr   r   Úpymongo.errorsr   r	   Ú pymongo.synchronous.srv_resolverr
   Úpymongo.uri_parser_sharedr   r   r   r   r   r   r   r   r   r   Ú_IS_SYNCr-   r+   r#   r'   r%   Ú<module>r\      ss   ðñ  1Ý "ç  Ý %ç Gß 9Ý 9÷÷ ÷ ð €ð
 #/ØØØØ'+Ø&*Ø#'÷Pðj #/ØØØØ'+Ø&*Ø#'÷Eñ Er'   