+
    4O|j}Ï  ã                  óú  a € 0 t $ R t^ 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Ht ^ RI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HtHtH t 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. ^ RI/H0t0 ^ R	I1H2t2H3t3H4t4H5t5 ^ R
I6H7t7H8t8H9t9H:t:H;t; ^ RI<H=t= ^ RI>H?t? ^ RI@HAtAHBtBHCtC ^ RIDHEtE ^ RIFHGtG ^ RIHHItI ^ RIJHKtK ^ RILHMtM ^ RINHOtOHPtP ^ RIQHRtR ^ RISHTtT ]'       d   ^ RIUHVtV ^ RIWHXtXHYtY  ^ RIZH[t[ Rt\. RNRNRNRNRNR NR!NR"NR#NR$NR%NR&NR'NR(NR)NR*NR+NR,NR-NR.NR/NR0NR1NR2NR3NR4NR5NR6NR7NR8NR9NR:NR;NR<NR=NR>NR?NR@NRANRBNRCNRDNRENRFNRGNRHNRINRJNRKNRLNRMNRNNRONRPNRQNRRNRSNRTNRUNRVNt^RWt_RXt`RYtaRZtbR[tcR\tdR]teR^tfR_tgR`thRatiRbtjRctkRdtlRetmRftnRgtoRhtpRitqRjtrRkts]Pè                  ! Rl4      Pê                  tv]Pè                  ! Rm4      Pî                  tx]Pè                  ! Rm4      Pê                  ty]Pè                  ! Rn4      Pê                  tz]Pè                  ! Ro4      Pê                  t{]Pè                  ! Rp4      Pê                  t|Rq Rr lt}Rs Rt lt~Ru Rv ltRw Rx lt€Ry Rz 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ŠR� RŽ lt‹R� R� ltŒR‘ R’ lt�R“ R” ltŽR• R– lt�R— R˜ lt�/ ]‘! ]_4      ]�b]‘! ]`4      ]‚b]‘! ]a4      ]„b]‘! ]b4      ]…b]‘! ]c4      ]†b]‘! ]d4      R™ b]‘! ]e4      ]‡b]‘! ]f4      ]ˆb]‘! ]g4      ]‰b]‘! ]h4      Rš b]‘! ]i4      ]Œb]‘! ]j4      ]�b]‘! ]k4      ]Šb]‘! ]l4      ]‚b]‘! ]m4      ]‹b]‘! ]n4      ]b]‘! ]o4      ]Žb]‘! ]p4      ]�]‘! ]q4      ]�]‘! ]r4      R› ]‘! ]s4      Rœ /Ct’R�]“Rž&   ]\'       d   ERRŸ R  llt”M	ERR¡ R¢ llt”]"! R£]]•]3,          R¤7      t–ERR¥ R¦ llt—ERR§ R¨ llt˜R© Rª lt™]\'       d   ][EP2                  t™]Pè                  ! Rl4      EP4                  t›]Pè                  ! Rm4      EP4                  tœ]Pè                  ! Rn4      EP4                  t�]Pè                  ! Ro4      EP4                  tž]Pè                  ! Rp4      EP4                  tŸ] ;QJ d    . R« ]¡! R¬4       4       F  NK  	  5M! R« ]¡! R¬4       4       4      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¬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¶RÕ RÖ lt·R× RØ lt¸RÙ RÚ lt¹RÛ RÜ ltºRÝ RÞ lt»/ ]¼]°b]½]¨b]P                  ]±b]9]²b]¾]©b]¿]§b]À]¶b]Á]«b]•]¬b] ]«b]Â! R4      ]³b]
EP†                  ]®b]-]­b]E]¸b]0]µb]=]ªb]G]»b]I]º]K]¯]M]´]O]´]P]©]R]·]?]¹]P6                  ]©/CtÄ/ tÅ]Ä F+  tÆ]Ç! ]ÆRß4      '       g   K  ]Ä]Æ,          ]Å]ÆEP�                  &   K-  	  ] ;QJ d    . Rà ]Ä 4       F  NK  	  5M! Rà ]Ä 4       4      tÉERRá Râ lltÊRã Rä ltËERRå Ræ lltÌ]\'       d   ][EP˜                  tÌ]Í! Rç4      tÎR]23Rè Ré lltÏ]%ERRê Rë ll4       tÐ]%Rì Rí l4       tÐERRî Rï lltÐRð Rñ ltÑ]\'       d   ][EP¢                  tÑ]%ERRò Ró ll4       tÒ]%Rô Rõ l4       tÒERRö R÷ lltÒRø Rù ltÓRú Rû ltÔ]\'       d   ][EP¨                  tÔRü Rý ltÕRþ Rÿ ltÖ]%ERER  ER ll4       t×]%ER ER l4       t×ERER ER llt×]%ERER ER ll4       tØ]%ER ER	 l4       tØERER
 ER lltØER ER ltÙ ! ER RS]½4      tÚER ER ltÛER ER ltÜ]Ç! ]ER4      '       d   ]EPº                  ! ]ÜER7       R# R#   ]] d    Rt\ EL{i ; i(  aÊ  BSON (Binary JSON) encoding and decoding.

The mapping from Python types to BSON types is as follows:

=======================================  =============  ===================
Python Type                              BSON Type      Supported Direction
=======================================  =============  ===================
None                                     null           both
bool                                     boolean        both
int [#int]_                              int32 / int64  py -> bson
:class:`bson.int64.Int64`                int64          both
float                                    number (real)  both
str                                      string         both
list                                     array          both
dict                                     object         both
:class:`~bson.son.SON`                   object         both
:py:class:`~collections.abc.Mapping`     object         py -> bson
:class:`~bson.raw_bson.RawBSONDocument`  object         both [#raw]_
datetime.datetime [#dt]_ [#dt2]_         UTC datetime   both
:class:`~bson.datetime_ms.DatetimeMS`    UTC datetime   both [#dt3]_
:class:`~bson.regex.Regex`               regex          both
compiled re [#re]_                       regex          py -> bson
:class:`~bson.binary.Binary`             binary         both
:py:class:`uuid.UUID` [#uuid]_           binary         both
:class:`~bson.objectid.ObjectId`         oid            both
:class:`~bson.dbref.DBRef`               dbref          both
:class:`~bson.dbref.DBRef`               dbpointer      bson -> py
None                                     undefined      bson -> py
:class:`~bson.code.Code`                 code           both
str                                      symbol         bson -> py
bytes [#bytes]_                          binary         both
:class:`~bson.timestamp.Timestamp`       timestamp      both
:class:`~bson.decimal128.Decimal128`     decimal128     both
:class:`~bson.min_key.MinKey`            min key        both
:class:`~bson.max_key.MaxKey`            max key        both
=======================================  =============  ===================

.. [#int] A Python int will be saved as a BSON int32 or BSON int64 depending
   on its size. A BSON int32 will always decode to a Python int. A BSON
   int64 will always decode to a :class:`~bson.int64.Int64`.
.. [#raw] Decoding a bson object to :class:`~bson.raw_bson.RawBSONDocument` can be
   optionally configured via :attr:`~bson.codec_options.CodecOptions.document_class`.
.. [#dt] datetime.datetime instances are encoded with millisecond precision so
   the microsecond field is truncated.
.. [#dt2] all datetime.datetime instances are encoded as UTC. By default, they
   are decoded as *naive* but timezone aware datetimes are also supported.
   See `Dates and Times <https://www.mongodb.com/docs/languages/python/pymongo-driver/current/data-formats/dates-and-times/#dates-and-times>`_ for examples.
.. [#dt3] To enable decoding a bson UTC datetime to a :class:`~bson.datetime_ms.DatetimeMS`
   instance see `handling out of range datetimes <https://www.mongodb.com/docs/languages/python/pymongo-driver/current/data-formats/dates-and-times/#handling-out-of-range-datetimes>`_.
.. [#uuid] For :py:class:`uuid.UUID` encoding and decoding behavior see `<https://www.mongodb.com/docs/languages/python/pymongo-driver/current/data-formats/uuid/#universally-unique-ids--uuids->`_.
.. [#re] :class:`~bson.regex.Regex` instances and regular expression
   objects from ``re.compile()`` are both saved as BSON regular expressions.
   BSON regular expressions are decoded as :class:`~bson.regex.Regex`
   instances.
.. [#bytes] The bytes type is encoded as BSON binary with
   subtype 0. It will be decoded back to bytes.
)ÚannotationsN)Úutf_8_decode)Úutf_8_encode)Úabc)ÚIOÚTYPE_CHECKINGÚAnyÚBinaryIOÚCallableÚ	GeneratorÚIteratorÚMappingÚMutableMappingÚNoReturnÚOptionalÚSequenceÚTupleÚTypeÚTypeVarÚUnionÚcastÚoverload)ÚALL_UUID_SUBTYPESÚCSHARP_LEGACYÚJAVA_LEGACYÚOLD_UUID_SUBTYPEÚSTANDARDÚUUID_SUBTYPEÚBinaryÚUuidRepresentation)ÚCode)ÚDEFAULT_CODEC_OPTIONSÚCodecOptionsÚDatetimeConversionÚ_raw_document_class)ÚEPOCH_AWAREÚEPOCH_NAIVEÚ
DatetimeMSÚ_datetime_to_millisÚ_millis_to_datetime)ÚDBRef)Ú
Decimal128)ÚInvalidBSONÚInvalidDocumentÚInvalidStringData)ÚInt64©ÚMaxKey©ÚMinKey©ÚObjectId)ÚRegex)ÚRE_TYPEÚSON)Ú	Timestamp)Úutc©ÚRawBSONDocument)Ú_DocumentTypeÚ_ReadableBuffer)Ú_cbsonTFr   r   r   r   r   r   r   r   r    r!   r"   r*   r+   r,   r-   r.   r/   r1   r3   r5   r6   r7   r8   r9   r:   r%   r&   ÚBSONNUMÚBSONSTRÚBSONOBJÚBSONARRÚBSONBINÚBSONUNDÚBSONOIDÚBSONBOOÚBSONDATÚBSONNULÚBSONRGXÚBSONREFÚBSONCODÚBSONSYMÚBSONCWSÚBSONINTÚBSONTIMÚBSONLONÚBSONDECÚBSONMINÚBSONMAXÚget_data_and_viewÚgen_list_nameÚencodeÚdecodeÚ
decode_allÚdecode_iterÚdecode_file_iterÚis_validÚBSONÚhas_cr#   r'   ó   ó   ó   ó   ó   ó   ó   ó   ó   	ó   
ó   ó   ó   ó   ó   ó   ó   ó   ó   ó   ÿó   z<dz<iz<iBz<qz<IIc               ó    € V ^8„  d   QhRRRR/# )é   Údatar   ÚreturnzTuple[Any, memoryview]© )Úformats   "ÚFC:\Users\alokc\chatbot\backend\venv\Lib\site-packages\bson/__init__.pyÚ__annotate__r{   ÷   s   € ÷  ñ  ˜Cð  Ð$:ñ  ó    c                óŽ   € \        V \        \        34      '       d   V \        V 4      3# \        V 4      pVP	                  4       V3# ©N)Ú
isinstanceÚbytesÚ	bytearrayÚ
memoryviewÚtobytes)rv   Úviews   & rz   rU   rU   ÷   s?   € Ü�$œ¤	Ð*×+Ò+Ø”Z Ó%Ð%Ð%Ü�dÓ€DØ�<‰<‹>˜4ÐÐr|   c               ó$   € V ^8„  d   QhRRRRRR/# )ru   Úelement_typeÚintÚelement_nameÚstrrw   r   rx   )ry   s   "rz   r{   r{   þ   s!   € ÷ ñ  cð ¸ð Àñ r|   c                óf   € \        RP                  \        V 4      P                  4       V4      4      h)zUnknown type helper.z\Detected unknown BSON type {!r} for fieldname '{}'. Are you using the latest driver version?)r,   ry   ÚchrrW   )r†   rˆ   s   &&rz   Ú_raise_unknown_typerŒ   þ   s/   € ä
ð	/ß/5©v´c¸,Ó6G×6NÑ6NÓ6PÐR^Ó/_óð r|   c               ó4   € V ^8„  d   QhRRRRRRRRRRRRR	R
/# )ru   rv   r   Ú_viewÚpositionr‡   Údummy0Údummy1Údummy2rw   úTuple[int, int]rx   )ry   s   "rz   r{   r{     sD   € ÷ =ñ =Ø
ð=Øð=Ø%(ð=Ø25ð=Ø?Bð=ØLOð=àñ=r|   c                ó8   € \        W4      ^ ,          V^,           3# )z"Decode a BSON int32 to python int.)Ú_UNPACK_INT_FROM©rv   rŽ   r�   r�   r‘   r’   s   &&&&&&rz   Ú_get_intr—     s   € ô ˜DÓ+¨AÕ.°¸1µÐ<Ð<r|   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# )
ru   rv   r   r„   r�   r‡   ÚoptsúCodecOptions[Any]rw   úTuple[str, int]rx   )ry   s   "rz   r{   r{     s8   € ÷ bñ b˜ð b 3ð b°#ð bÐ=Nð bÐSbñ br|   c                óx   € V P                  RV4      p\        WV VP                  R4      ^ ,          V^,           3# )z'Decode a BSON 'C' string to python str.ó    T)ÚindexÚ_utf_8_decodeÚunicode_decode_error_handler)rv   r„   r�   r™   Úends   &&&& rz   Ú_get_c_stringr¢     s?   € à
�*‰*�W˜hÓ
'€CÜ˜ sÐ+¨T×-NÑ-NÐPTÓUÐVWÕXÐZ]Ð`aÕZaÐaÐar|   c               ó4   € V ^8„  d   QhRRRRRRRRRRRRR	R
/# )ru   rv   r   rŽ   r�   r‡   r�   r‘   r’   rw   zTuple[float, int]rx   )ry   s   "rz   r{   r{     sD   € ÷ ?ñ ?Ø
ð?Øð?Ø%(ð?Ø25ð?Ø?Bð?ØLOð?àñ?r|   c                ó8   € \        W4      ^ ,          V^,           3# )z%Decode a BSON double to python float.)Ú_UNPACK_FLOAT_FROMr–   s   &&&&&&rz   Ú
_get_floatr¦     s   € ô ˜dÓ-¨aÕ0°(¸Qµ,Ð>Ð>r|   c               ó4   € V ^8„  d   QhRRRRRRRRRRR	RR
R/# )ru   rv   r   r„   r�   r‡   Úobj_endr™   rš   Údummyrw   r›   rx   )ry   s   "rz   r{   r{     sM   € ÷ bñ bØ
ðbØðbØ$'ðbØ25ðbØ=NðbØWZðbàñbr|   c                ó  € \        W4      ^ ,          pV^,          pV^8  g   W2,
          V8  d   \        R4      hW&,           ^,
          pW,          ^ 8w  d   \        R4      h\        WV VP                  R4      ^ ,          V^,           3# )z#Decode a BSON string to python str.zinvalid string lengthzinvalid end of stringT)r•   r,   rŸ   r    )rv   r„   r�   r¨   r™   r©   Úlengthr¡   s   &&&&&&  rz   Ú_get_stringr¬     sˆ   € ô ˜dÓ-¨aÕ0€FØ�…M€HØ�„z�WÕ'¨&Ô0ÜÐ1Ó2Ð2Ø
Õ
˜aÕ
€CØ…y�A„~ÜÐ1Ó2Ð2Ü˜ sÐ+¨T×-NÑ-NÐPTÓUÐVWÕXÐZ]Ð`aÕZaÐaÐar|   c               ó(   € V ^8„  d   QhRRRRRRRR/# )ru   rv   r   r�   r‡   r¨   rw   r“   rx   )ry   s   "rz   r{   r{   (  s(   € ÷ ñ ˜3ð ¨#ð ¸ð Àñ r|   c                ó2  €  \        W4      ^ ,          pY,           ^,
          pYR8¼  d   \        R4      hY,          ^ 8w  d   \        R4      hT^ 8X  d   Y28w  d   \        R4      hY53#   \        P                   d   p\        \	        T4      4      RhRp?ii ; i)z+Validate and return a BSON document's size.Nzinvalid object lengthúbad eoo)r•   ÚstructÚerrorr,   r‰   )rv   r�   r¨   Úobj_sizeÚexcr¡   s   &&&   rz   Ú_get_object_sizer´   (  s‘   € ð.Ü# DÓ3°AÕ6ˆð Õ
 Õ
!€CØ
„~ÜÐ1Ó2Ð2Ø…y�A„~Ü˜)Ó$Ð$à�1„}˜Ô,ÜÐ1Ó2Ð2Øˆ=Ðøô �<‰<ô .Üœ#˜c›(Ó#¨Ð-ûð.ús   ‚A' Á'BÁ<BÂBc               ó4   € V ^8„  d   QhRRRRRRRRRRR	RR
R/# )ru   rv   r   r„   r�   r‡   r¨   r™   rš   r©   rw   úTuple[Any, int]rx   )ry   s   "rz   r{   r{   9  sD   € ÷ ñ Ø
ðØðØ$'ðØ25ðØ=NðØWZðàñr|   c                ó  € \        WV4      w  rg\        VP                  4      '       d$   VP                  WV^,            V4      W&,           3# \        WV^,           Wt4      pW&,          p\	        VP                  R4      \        4      '       dw   RV9   dp   \	        VP                  R4      \        \        R4      34      '       d@   \        VP                  R4      VP                  RR4      VP                  RR4      V4      V3# W‚3# )zEDecode a BSON subdocument to opts.document_class or bson.dbref.DBRef.z$refz$idz$dbN)
r´   r$   Údocument_classÚ_elements_to_dictr   Úgetr‰   Útyper*   Úpop)	rv   r„   r�   r¨   r™   r©   r²   r¡   Úobjs	   &&&&&&   rz   Ú_get_objectr¾   9  sÛ   € ô % T°WÓ=�M€HÜ˜4×.Ñ.×/Ò/Ø×#Ñ# D°C¸!µGÐ$<¸dÓCÀXÕEXÐYÐYä
˜D¨°1­°cÓ
@€CàÕ€Hô 	�3—7‘7˜6“?¤C×(Ò(Ø�SŒLÜ�s—w‘w˜u“~¬¬T°$«ZÐ'8×9Ò9ä�c—g‘g˜f“o s§w¡w¨u°dÓ';¸S¿W¹WÀUÈDÓ=QÐSVÓWÐYaÐbÐbØˆ=Ðr|   c               ó4   € V ^8„  d   QhRRRRRRRRRRR	R
RR/# )ru   rv   r   r„   r�   r‡   r¨   r™   rš   rˆ   r‰   rw   r¶   rx   )ry   s   "rz   r{   r{   N  sD   € ÷ ' ñ ' Ø
ð' Øð' Ø$'ð' Ø25ð' Ø=Nð' Ø^að' àñ' r|   c                óR  € \        W4      ^ ,          pW&,           ^,
          pW,          ^ 8w  d   \        R4      hV^,          pV^,          p. pVP                  p	V P                  p
\        pVP
                  P                  pW'8  dd   W,          pV
! RV4      ^,           p W½,          ! WW#WE4      w  râV'       d'   VP                  \        X4      4      pVe	   V! V4      pV	! X4       Ki  W'^,           8w  d   \        R4      hW‚^,           3#   \         d    \        YÕ4        Lri ; i)z#Decode a BSON array to python list.r¯   r�   zbad array length)r•   r,   Úappendrž   Ú_ELEMENT_GETTERÚtype_registryÚ_decoder_mapÚKeyErrorrŒ   rº   r»   )rv   r„   r�   r¨   r™   rˆ   Úsizer¡   ÚresultrÁ   rž   ÚgetterÚdecoder_mapr†   ÚvalueÚcustom_decoders   &&&&&&          rz   Ú
_get_arrayrÌ   N  s  € ô ˜DÓ+¨AÕ.€DØ
�/˜AÕ
€CØ…y�A„~Ü˜)Ó$Ð$à�…M€HØˆ1…H€CØ€Fð �]‰]€FØ�J‰J€EÜ€FØ×$Ñ$×1Ñ1€Kà
Œ.Ø•~ˆá˜ (Ó+¨aÕ/ˆð	<Ø$Ö2Ø˜H¨tó‰OˆE÷ Ø(Ÿ_™_¬T°%«[Ó9ˆNØÒ)Ù& uÓ-�áˆuŽà˜•7ÔÜÐ,Ó-Ð-Ø˜a•<ÐÐøô ô 	<Ü Ö;ð	<ús   Â!D ÄD&Ä%D&c               ó4   € V ^8„  d   QhRRRRRRRRRRR	RR
R/# )ru   rv   r   rŽ   r�   r‡   r¨   r™   rš   r‘   rw   z$Tuple[Union[Binary, uuid.UUID], int]rx   )ry   s   "rz   r{   r{   x  sD   € ÷ "ñ "Ø
ð"Øð"Ø%(ð"Ø36ð"Ø>Oð"ØY\ð"à)ñ"r|   c                ó  € \        W4      w  rgV^,          pV^8X  d6   \        W4      ^ ,          pV^,          pW†^,
          8w  d   \        R4      hTpW&,           p	V^ 8  g   W“8”  d   \        R4      hV\        9   dr   VP                  p
\        WV	 V4      pV
\        P                  8X  g-   V\        8X  d   V
\        8w  g   V\        8X  d   V
\        8X  d   W¹3# VP                  V
4      V	3# V^ 8X  d   WV	 pWÉ3# \        WV	 V4      pWÉ3# )z:Decode a BSON binary to bson.binary.Binary or python UUID.z,invalid binary (st 2) - lengths don't match!zbad binary object length)Ú_UNPACK_LENGTH_SUBTYPE_FROMr•   r,   r   Úuuid_representationr   r   ÚUNSPECIFIEDr   r   r   Úas_uuid)rv   rŽ   r�   r¨   r™   r‘   r«   ÚsubtypeÚlength2r¡   Úuuid_repÚbinary_valuerÊ   s   &&&&&&       rz   Ú_get_binaryr×   x  s  € ô 2°$ÓA�O€FØ�…M€HØ�!„|Ü" 4Ó2°1Õ5ˆØ�A�ˆØ˜q•jÔ ÜÐLÓMÐMØˆØ
Õ
€CØ�„z�S”]ÜÐ4Ó5Ð5ð Ô#Ô#Ø×+Ñ+ˆÜ˜d¨CÐ0°'Ó:ˆàÔ+×7Ñ7Ô7Øœ<Ô'¨H¼Ô,@ØÔ+Ô+°¼HÔ0DàÐ$Ð$Ø×#Ñ# HÓ-¨sÐ2Ð2ð �!„|Ø˜cÐ"ˆð ˆ:Ðô �t SÐ)¨7Ó3ˆàˆ:Ðr|   c               ó4   € V ^8„  d   QhRRRRRRRRRRRRR	R
/# )ru   rv   r   rŽ   r�   r‡   r�   r‘   r’   rw   zTuple[ObjectId, int]rx   )ry   s   "rz   r{   r{   �  sD   € ÷ -ñ -Ø
ð-Øð-Ø%(ð-Ø25ð-Ø?Bð-ØLOð-àñ-r|   c                ó2   € V^,           p\        WV 4      V3# )z1Decode a BSON ObjectId to bson.objectid.ObjectId.r4   ©rv   rŽ   r�   r�   r‘   r’   r¡   s   &&&&&& rz   Ú_get_oidrÛ   �  s"   € ð �R�-€CÜ�D #Ð&Ó'¨Ð,Ð,r|   c               ó4   € V ^8„  d   QhRRRRRRRRRRRRR	R
/# )ru   rv   r   rŽ   r�   r‡   r�   r‘   r’   rw   zTuple[bool, int]rx   )ry   s   "rz   r{   r{   ¥  sM   € ÷ 
Bñ 
BØ
ð
BØð
BØ%(ð
BØ25ð
BØ?Bð
BØLOð
Bàñ
Br|   c                ól   € V^,           pWV pVR8X  d   RV3# VR8X  d   RV3# \        RV,          4      h)z.Decode a BSON true/false to python True/False.r�   Fr_   Tzinvalid boolean value: %r)r,   )rv   rŽ   r�   r�   r‘   r’   r¡   Úboolean_bytes   &&&&&&  rz   Ú_get_booleanrß   ¥  sL   € ð �Q�,€CØ Ð%€LØ�wÔØ�cˆzÐØ	˜Ô	 Ø�SˆyÐÜ
Ð1°LÕ@Ó
AÐAr|   c               ó4   € V ^8„  d   QhRRRRRRRRRRR	RR
R/# )ru   rv   r   rŽ   r�   r‡   r�   r™   rš   r‘   rw   z0Tuple[Union[datetime.datetime, DatetimeMS], int]rx   )ry   s   "rz   r{   r{   ²  sM   € ÷ Yñ YØ
ðYØðYØ%(ðYØ25ðYØ=NðYØX[ðYà5ñYr|   c                óL   € \        \        W4      ^ ,          V4      V^,           3# )z3Decode a BSON datetime to python datetime.datetime.)r)   Ú_UNPACK_LONG_FROM)rv   rŽ   r�   r�   r™   r‘   s   &&&&&&rz   Ú	_get_daterã   ²  s&   € ô Ô0°Ó@ÀÕCÀTÓJÈHÐWXÍLÐXÐXr|   c               ó4   € V ^8„  d   QhRRRRRRRRRRR	R
RR/# )ru   rv   r   r„   r�   r‡   r¨   r™   rš   rˆ   r‰   rw   úTuple[Code, int]rx   )ry   s   "rz   r{   r{   ¹  sD   € ÷  ñ  Ø
ð Øð Ø$'ð Ø25ð Ø=Nð Ø^að àñ r|   c                ó:   € \        WW#WE4      w  rb\        V4      V3# )z%Decode a BSON code to bson.code.Code.)r¬   r    )rv   r„   r�   r¨   r™   rˆ   Úcodes   &&&&&& rz   Ú	_get_coderè   ¹  s#   € ô ! ¨XÀÓS�N€DÜ�‹:�xÐÐr|   c               ó4   € V ^8„  d   QhRRRRRRRRRRR	R
RR/# )ru   rv   r   r„   r�   r‡   Ú_obj_endr™   rš   rˆ   r‰   rw   rå   rx   )ry   s   "rz   r{   r{   Á  sD   € ÷ 	'ñ 	'Ø
ð	'Øð	'Ø$'ð	'Ø36ð	'Ø>Oð	'Ø_bð	'àñ	'r|   c                ó¼   € V\        W4      ^ ,          ,           p\        WV^,           WdV4      w  rr\        WW&WE4      w  r‚W&8w  d   \        R4      h\	        Wx4      V3# )z-Decode a BSON code_w_scope to bson.code.Code.z+scope outside of javascript code boundaries)r•   r¬   r¾   r,   r    )	rv   r„   r�   rê   r™   rˆ   Úcode_endrç   Úscopes	   &&&&&&   rz   Ú_get_code_w_scoperî   Á  sa   € ð Ô*¨4Ó:¸1Õ=Õ=€HÜ  ¨X¸­\¸8È<ÓX�N€DÜ! $¨hÀ$ÓU�O€EØÔÜÐGÓHÐHÜ�Ó˜hÐ&Ð&r|   c               ó4   € V ^8„  d   QhRRRRRRRRRRR	RR
R/# )ru   rv   r   r„   r�   r‡   r�   r™   rš   r‘   rw   zTuple[Regex[Any], int]rx   )ry   s   "rz   r{   r{   Í  sD   € ÷ ñ Ø
ðØðØ$'ðØ14ðØ<MðØWZðàñr|   c                óV   € \        WW$4      w  rb\        WW$4      w  rr\        Wg4      pW‚3# )zCDecode a BSON regex to bson.regex.Regex or a python pattern object.)r¢   r6   )	rv   r„   r�   r�   r™   r‘   ÚpatternÚ
bson_flagsÚbson_res	   &&&&&&   rz   Ú
_get_regexrô   Í  s5   € ô & d°(ÓAÑ€GÜ(¨°XÓDÑ€JÜ�GÓ(€GØÐÐr|   c               ó4   € V ^8„  d   QhRRRRRRRRRRR	R
RR/# )ru   rv   r   r„   r�   r‡   r¨   r™   rš   rˆ   r‰   rw   zTuple[DBRef, int]rx   )ry   s   "rz   r{   r{   ×  sD   € ÷ ,ñ ,Ø
ð,Øð,Ø$'ð,Ø25ð,Ø=Nð,Ø^að,àñ,r|   c                óX   € \        WW#WE4      w  rb\        WW#WE4      w  rr\        Wg4      V3# )z7Decode (deprecated) BSON DBPointer to bson.dbref.DBRef.)r¬   rÛ   r*   )rv   r„   r�   r¨   r™   rˆ   Ú
collectionÚoids   &&&&&&  rz   Ú_get_refrù   ×  s5   € ô ' t°8ÀdÓYÑ€JÜ˜T¨¸DÓO�M€CÜ�Ó! 8Ð+Ð+r|   c               ó4   € V ^8„  d   QhRRRRRRRRRRRRR	R
/# )ru   rv   r   rŽ   r�   r‡   r�   r‘   r’   rw   zTuple[Timestamp, int]rx   )ry   s   "rz   r{   r{   à  sD   € ÷ 3ñ 3Ø
ð3Øð3Ø%(ð3Ø25ð3Ø?Bð3ØLOð3àñ3r|   c                óD   € \        W4      w  rg\        Wv4      V^,           3# )z4Decode a BSON timestamp to bson.timestamp.Timestamp.)Ú_UNPACK_TIMESTAMP_FROMr9   )rv   rŽ   r�   r�   r‘   r’   ÚincÚ	timestamps   &&&&&&  rz   Ú_get_timestamprÿ   à  s$   € ô ,¨DÓ;�N€CÜ�YÓ$ h°¥lÐ2Ð2r|   c               ó4   € V ^8„  d   QhRRRRRRRRRRRRR	R
/# )ru   rv   r   rŽ   r�   r‡   r�   r‘   r’   rw   zTuple[Int64, int]rx   )ry   s   "rz   r{   r{   è  sM   € ÷ Eñ EØ
ðEØðEØ%(ðEØ25ðEØ?BðEØLOðEàñEr|   c                óJ   € \        \        W4      ^ ,          4      V^,           3# )z(Decode a BSON int64 to bson.int64.Int64.)r/   râ   r–   s   &&&&&&rz   Ú
_get_int64r  è  s#   € ô Ô" 4Ó2°1Õ5Ó6¸À1½ÐDÐDr|   c               ó4   € V ^8„  d   QhRRRRRRRRRRRRR	R
/# )ru   rv   r   rŽ   r�   r‡   r�   r‘   r’   rw   zTuple[Decimal128, int]rx   )ry   s   "rz   r{   r{   ï  sD   € ÷ 8ñ 8Ø
ð8Øð8Ø%(ð8Ø25ð8Ø?Bð8ØLOð8àñ8r|   c                óH   € V^,           p\         P                  ! WV 4      V3# )z7Decode a BSON decimal128 to bson.decimal128.Decimal128.)r+   Úfrom_bidrÚ   s   &&&&&& rz   Ú_get_decimal128r  ï  s(   € ð �R�-€CÜ×Ò˜t¨SÐ1Ó2°CÐ7Ð7r|   c                ó
   € R V3# r~   rx   ©ÚuÚvÚwÚxÚyÚzs   &&&&&&rz   Ú<lambda>r    ó   € ¨D°!©9r|   c                ó
   € R V3# r~   rx   r  s   &&&&&&rz   r  r    r  r|   c                ó   € \        4       V3# r~   r2   r  s   &&&&&&rz   r  r    ó
   € ¬F«H°a©=r|   c                ó   € \        4       V3# r~   r0   r  s   &&&&&&rz   r  r    r  r|   z)dict[int, Callable[..., Tuple[Any, int]]]rÂ   c               ó4   € V ^8„  d   QhRRRRRRRRRRR	R
RR/# ©ru   rv   r   r„   r�   r‡   r¨   r™   rš   Ú	raw_arrayÚboolrw   úTuple[str, Any, int]rx   )ry   s   "rz   r{   r{     sN   € ÷ 
ñ 
Øð
àð
ð ð
ð ð	
ð
  ð
ð ð
ð 
ñ
r|   c           
     óF   € \        R \        P                  ! WW4V4      4      # )r  )r   r?   Ú_element_to_dict)rv   r„   r�   r¨   r™   r  s   &&&&&&rz   r  r    s&   € ô Ø"Ü×#Ò# D°GÀ9ÓMó
ð 	
r|   c               ó4   € V ^8„  d   QhRRRRRRRRRRR	R
RR/# r  rx   )ry   s   "rz   r{   r{   '  sN   € ÷ -ñ -Øð-àð-ð ð-ð ð	-ð
  ð-ð ð-ð 
ñ-r|   c                óì  € W,          pV^,          p\        WW$4      w  rrV'       d@   V\        \        4      8X  d,   \        W\	        V 4      4      w  r‰WqW)^,            V	^,           3#  \
        V,          ! WW#WG4      w  r¢VP                  P                  '       d;   VP                  P                  P                  \        X
4      4      pVe	   V! V
4      p
VX
V3#   \         d    \        Yg4        Lsi ; i)z Decode a single key, value pair.)r¢   ÚordrC   r´   ÚlenrÂ   rÅ   rŒ   rÃ   rÄ   rº   r»   )rv   r„   r�   r¨   r™   r  r†   rˆ   Ú_r¡   rÊ   rË   s   &&&&&&      rz   r  r  '  sâ   € ð •~ˆØ�A�ˆÜ!.¨t¸8Ó!JÑˆß˜¬¬W«Ô5Ü% d´c¸$³iÓ@‰FˆAØ h°qµÐ!9¸3À½7ÐBÐBð	<Ü-¨lÖ;Ø˜H¨tó‰OˆEð ×Ñ×*×*Ð*Ø!×/Ñ/×<Ñ<×@Ñ@ÄÀeÃÓMˆNØÒ)Ù& uÓ-�à˜U HÐ,Ð,øô ô 	<Ü Ö;ð	<ús   Á(C ÃC3Ã2C3Ú_T)Úboundc               ó4   € V ^8„  d   QhRRRRRRRRRR	R
RRR	/# )ru   rv   r   r�   r‡   r¨   r™   zCodecOptions[RawBSONDocument]rÇ   r!  r  r  rw   rx   )ry   s   "rz   r{   r{   H  sN   € ÷ ñ Ø
ðàðð ðð (ð	ð
 ðð ðð ñr|   c                óV   € \        V 4      w  r\        \        \        WWW4VR 7      4      # )©r  )rU   r   r!  r¹   )rv   r�   r¨   r™   rÇ   r  r„   s   &&&&&& rz   Ú_raw_to_dictr&  H  s/   € ô # 4Ó(�J€DÜÜ
Ô˜d¨(¸TÐU^Ô_óð r|   c               ó8   € V ^8„  d   QhRRRRRRRRRRR	RR
RRR/# )ru   rv   r   r„   r�   r‡   r¨   r™   rš   rÇ   r  r  rw   rx   )ry   s   "rz   r{   r{   V  sX   € ÷ ñ Ø
ðà
ðð ðð ð	ð
 ðð ðð ðð 	ñr|   c           	     óœ   € Vf   VP                  4       pV^,
          pW'8  d   \        WW#WFR7      w  r‰pW•V&   K  W#8w  d   \        R4      hV# )z#Decode a BSON document into result.r%  úbad object or element length)r¸   r  r,   )
rv   r„   r�   r¨   r™   rÇ   r  r¡   ÚkeyrÊ   s
   &&&&&&&   rz   r¹   r¹   V  s[   € ð ‚~Ø×$Ñ$Ó&ˆØ
�A�+€CØ
Œ.Ü/Ø˜¨4ô 
Ñˆ�Hð ˆs‹ØÔÜÐ8Ó9Ð9Ø€Mr|   c               ó$   € V ^8„  d   QhRRRRRR/# )ru   rv   r   r™   úCodecOptions[_DocumentType]rw   r=   rx   )ry   s   "rz   r{   r{   m  s'   € ÷ Kñ K˜ð KÐ#>ð KÀ=ñ Kr|   c           
     ó€  € \        V 4      w  r \        VP                  4      '       d   VP                  W4      # \        V ^ \	        V 4      4      w  r4\        R\        W^WA4      4      #   \         d    h \         d>    \        P                  ! 4       w  r5p\        \        T4      4      P                  T4      Rhi ; i)z'Decode a BSON string to document_class.r=   N)rU   r$   r¸   r´   r  r   r¹   r,   Ú	ExceptionÚsysÚexc_infor‰   Úwith_traceback)rv   r™   r„   r   r¡   Ú	exc_valueÚexc_tbs   &&     rz   Ú_bson_to_dictr4  m  s©   € ä" 4Ó(�J€Dð
KÜ˜t×2Ñ2×3Ò3Ø×&Ñ& tÓ2Ð2Ü! $¨¬3¨t«9Ó5‰ˆÜ�OÔ%6°tÀ1ÀcÓ%PÓQÐQøÜô ØÜô Kä"Ÿ|š|›~Ñˆ�fÜœ#˜i›.Ó)×8Ñ8¸Ó@ÀdÐJðKús   �+A* ».A* Á*B=Á?>B=c              #  ód   "  € T F&  p\        V4      R ,           P                  R4      x € K(  	  R# 5i)Ú Úutf8N)r‰   rW   )Ú.0Úis   & rz   Ú	<genexpr>r:  †  s&   é € ÐJ¹k¸”S˜“V˜f•_×,Ñ,¨V×4Ð4»kùs   ‚.0éè  c               ó   € V ^8„  d   QhRR/# )ru   rw   zGenerator[bytes, None, None]rx   )ry   s   "rz   r{   r{   ‰  s   € ÷ ;ñ ;Ð3ñ ;r|   c               #  ó´   "  € \          Rj  x€L
  \        P                  ! R4      p  \        \	        V 4      4      R,           P                  R4      x € K/   LI5i)z³Generate "keys" for encoded lists in the sequence
b"0 ", b"1 ", b"2 ", ...

The first 1000 keys are returned from a pre-built cache. All
subsequent keys are generated on the fly.
Nr;  r6  r7  )Ú_LIST_NAMESÚ	itertoolsÚcountr‰   ÚnextrW   )Úcounters    rz   rV   rV   ‰  sE   é € ô ×Ðä�oŠo˜dÓ#€GØ
Ü”4˜“=Ó! FÕ*×2Ñ2°6Ó:Ô:ñ	 ùs   ‚
AŒA�A
Ac               ó    € V ^8„  d   QhRRRR/# ©ru   ÚstringzUnion[str, bytes]rw   r€   rx   )ry   s   "rz   r{   r{   —  s   € ÷ 2ñ 2Ð!2ð 2°uñ 2r|   c                ó  € \        V \        4      '       d*   RV 9   d   \        R4      h \        V RR4       V R,           # RV 9   d   \        R4      h\        V 4      ^ ,          R,           #   \         d    \        RT ,          4      Rhi ; i)z8Make a 'C' string, checking for embedded NUL characters.r�   z;BSON keys / regex patterns must not contain a NUL characterNTú,strings in documents must be valid UTF-8: %rr6  )r   r€   r-   rŸ   ÚUnicodeErrorr.   Ú_utf_8_encode©rE  s   &rz   Ú_make_c_string_checkrK  —  s“   € ä�&œ%× Ò Ø�fÔÜ!Ð"_Ó`Ð`ð	Ü˜& $¨Ô-Ø˜GÕ#Ð#ð �VÔÜ!Ð"_Ó`Ð`Ü˜VÓ$ QÕ'¨'Õ1Ð1øô ô 	Ü#Ø>ÀÕGóàðð	ús   ªA+ Á+B
c               ó    € V ^8„  d   QhRRRR/# rD  rx   )ry   s   "rz   r{   r{   ©  s   € ÷ 2ñ 2Ð,ð 2°ñ 2r|   c                óÒ   € \        V \        4      '       d    \        V RR4       V R,           # \        V 4      ^ ,          R,           #   \         d    \	        RT ,          4      Rhi ; i)zMake a 'C' string.NTr�   rG  )r   r€   rŸ   rH  r.   rI  rJ  s   &rz   Ú_make_c_stringrN  ©  sk   € ä�&œ%× Ò ð	Ü˜& $¨Ô-Ø˜GÕ#Ð#ô ˜VÓ$ QÕ'¨'Õ1Ð1øô ô 	Ü#Ø>ÀÕGóàðð	ús   ˜A ÁA&c               ó    € V ^8„  d   QhRRRR/# )ru   rE  r‰   rw   r€   rx   )ry   s   "rz   r{   r{   ·  s   € ÷ .ñ .�sð .˜uñ .r|   c                óX   € RV 9   d   \        R4      h\        V 4      ^ ,          R,           # )z*Make a 'C' string suitable for a BSON key.r6  z*BSON keys must not contain a NUL characterr�   )r-   rI  rJ  s   &rz   Ú
_make_namerQ  ·  s+   € à�ÔÜÐJÓKÐKÜ˜Ó  Õ# gÕ-Ð-r|   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )	ru   Únamer€   rÊ   Úfloatr�   r   r‘   rw   rx   )ry   s   "rz   r{   r{   ¾  s/   € ÷ /ñ /˜ð / eð /°Sð /À#ð /È%ñ /r|   c                ó4   € RV ,           \        V4      ,           # )zEncode a float.r_   )Ú_PACK_FLOAT©rS  rÊ   r�   r‘   s   &&&&rz   Ú_encode_floatrX  ¾  s   € à�T�>œK¨Ó.Õ.Ð.r|   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )ru   rS  r€   rÊ   r�   r   r‘   rw   rx   )ry   s   "rz   r{   r{   Ã  s6   € ÷ Dñ D˜ð D eð D°Sð DÀ#ð DÈ%ñ Dr|   c                ób   € RV ,           \        \        V4      4      ,           R,           V,           # )zEncode a python bytes.rc   r�   )Ú	_PACK_INTr  rW  s   &&&&rz   Ú_encode_bytesr\  Ã  s&   € ð �T�>œI¤c¨%£jÓ1Õ1°GÕ;¸eÕCÐCr|   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R/# )
ru   rS  r€   rÊ   r   Ú
check_keysr  r™   rš   rw   rx   )ry   s   "rz   r{   r{   É  s8   € ÷ Fñ F˜%ð F¨ð F¸ð FÐEVð FÐ[`ñ Fr|   c                óh  € \        V4      '       d)   RV ,           \        \        VP                  4      ,           # RP	                  VP                  4        UUu. uF  w  rE\        WEW#4      NK  	  upp4      pRV ,           \        \        V4      ^,           4      ,           V,           R,           # u uppi )zEncode a mapping type.ra   r|   r�   )	r$   r   r€   ÚrawÚjoinÚitemsÚ_element_to_bsonr[  r  )rS  rÊ   r^  r™   r*  Úvalrv   s   &&&&   rz   Ú_encode_mappingre  É  s†   € ä˜5×!Ò!Ø˜�~¤¤U¨E¯I©IÓ 6Õ6Ð6Ø�8‰8ÐRW×R]ÑR]ÔR_Ô`ÑR_ÁhÀcÔ% c°
ÖAÑR_Ò`Óa€DØ�T�>œI¤c¨$£i°!¥mÓ4Õ4°tÕ;¸gÕEÐEùó as   ÁB.
c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R/# )
ru   rS  r€   rÊ   r*   r^  r  r™   rš   rw   rx   )ry   s   "rz   r{   r{   Ñ  s1   € ÷ ñ ˜ð  eð ¸ð ÐEVð Ð[`ñ r|   c                ó  € \        RV ,           R,           4      p\        V4      ^,
          pV\        RVP                  W#4      ,          pV\        RVP                  W#4      ,          pVP
                  e   V\        RVP
                  W#4      ,          pVP                  P                  4        F  w  rgV\        WgW#4      ,          pK  	  VR,          p\        \        V4      V,
          4      WEV^,           % \        V4      # )zEncode bson.dbref.DBRef.ra   s       s   $ref s   $id s   $db r�   )r�   r  Ú_name_value_to_bsonr÷   ÚidÚdatabaseÚ_DBRef__kwargsrb  rc  r[  r€   )rS  rÊ   r^  r™   ÚbufÚbeginr*  rd  s   &&&&    rz   Ú_encode_dbrefrn  Ñ  sÕ   € ä
�G˜d•NÐ%8Õ8Ó
9€CÜ�‹H�q�L€EàÔ˜{¨E×,<Ñ,<¸jÓOÕO€CØÔ˜z¨5¯8©8°ZÓFÕF€CØ‡~�~Ò!ØÔ" :¨u¯~©~¸zÓPÕPˆØ×(Ñ(×.Ñ.Ö0‰ˆØÔ ¨*Ó;Õ;Šñ 1ð ˆ7…N€CÜ&¤s¨3£x°%Õ'7Ó8€C�˜•	ÐÜ�‹:Ðr|   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R/# )
ru   rS  r€   rÊ   zSequence[Any]r^  r  r™   rš   rw   rx   )ry   s   "rz   r{   r{   â  s;   € ÷ Fñ FØ
ðFØ%ðFØ37ðFØ?PðFà
ñFr|   c                óø   € \        4       pRP                  V Uu. uF  p\        \        V4      WRV4      NK  	  up4      pRV ,           \	        \        V4      ^,           4      ,           V,           R,           # u upi )zEncode a list/tuple.r|   rb   r�   )rV   ra  rh  rA  r[  r  )rS  rÊ   r^  r™   ÚlnameÚitemrv   s   &&&&   rz   Ú_encode_listrs  â  sf   € ô ‹O€EØ�8‰8ÑZ_Ó`ÑZ_ÐRVÔ(¬¨e«°dÈÖMÑZ_Ñ`Óa€DØ�T�>œI¤c¨$£i°!¥mÓ4Õ4°tÕ;¸gÕEÐEùò as   šA7c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )	ru   rS  r€   rÊ   r‰   r�   r   r‘   rw   rx   )ry   s   "rz   r{   r{   ë  s6   € ÷ Jñ J�uð J Sð J°#ð J¸sð JÀuñ Jr|   c                ó”   € \        V4      ^ ,          pRV ,           \        \        V4      ^,           4      ,           V,           R,           # )zEncode a python str.r`   r�   )rI  r[  r  )rS  rÊ   r�   r‘   Úbvalues   &&&& rz   Ú_encode_textrw  ë  s7   € ä˜5Ó! !Õ$€FØ�T�>œI¤c¨&£k°A¥oÓ6Õ6¸Õ?À'ÕIÐIr|   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )	ru   rS  r€   rÊ   r   r�   r   r‘   rw   rx   )ry   s   "rz   r{   r{   ñ  s6   € ÷ Nñ N˜ð N vð N°sð NÀCð NÈEñ Nr|   c                ó²   € VP                   pV^8X  d   \        \        V4      4      V,           pRV ,           \        \        V4      V4      ,           V,           # )zEncode bson.binary.Binary.rc   )rÓ   r[  r  Ú_PACK_LENGTH_SUBTYPE)rS  rÊ   r�   r‘   rÓ   s   &&&& rz   Ú_encode_binaryr{  ñ  sE   € à�m‰m€GØ�!„|Üœ#˜e›*Ó%¨Õ-ˆØ�T�>Ô0´°U³¸WÓEÕEÈÕMÐMr|   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R/# )
ru   rS  r€   rÊ   z	uuid.UUIDr©   r   r™   rš   rw   rx   )ry   s   "rz   r{   r{   ù  s1   € ÷ 5ñ 5�uð 5 Yð 5°sð 5ÐBSð 5ÐX]ñ 5r|   c                ó`   € VP                   p\        P                  ! WR7      p\        WW#4      # )zEncode uuid.UUID.)rÐ   )rÐ   r   Ú	from_uuidr{  )rS  rÊ   r©   r™   rÐ   Úbinvals   &&&&  rz   Ú_encode_uuidr€  ù  s+   € à×2Ñ2ÐÜ×Ò˜eÔM€FÜ˜$¨Ó4Ð4r|   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )	ru   rS  r€   rÊ   r5   r©   r   r‘   rw   rx   )ry   s   "rz   r{   r{      s/   € ÷ )ñ )˜5ð )¨ð )¸#ð )Àsð )Èuñ )r|   c                ó6   € RV ,           VP                   ,           # )zEncode bson.objectid.ObjectId.re   )Úbinary)rS  rÊ   r©   r‘   s   &&&&rz   Ú_encode_objectidr„     s   € à�T�>˜EŸL™LÕ(Ð(r|   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )	ru   rS  r€   rÊ   r  r�   r   r‘   rw   rx   )ry   s   "rz   r{   r{     s/   € ÷ ;ñ ;�uð ; Tð ;°3ð ;Àð ;Èñ ;r|   c                óJ   € RV ,           T;'       d    R;'       g    R,           # )z%Encode a python boolean (True/False).rf   r_   r�   rx   rW  s   &&&&rz   Ú_encode_boolr‡    s!   € à�T�>˜U×.Ð. w×9Ð9°'Õ:Ð:r|   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )	ru   rS  r€   rÊ   zdatetime.datetimer�   r   r‘   rw   rx   )ry   s   "rz   r{   r{   
  s2   € ÷ /ñ /˜5ð /Ð):ð /ÀCð /ÐQTð /ÐY^ñ /r|   c                óJ   € \        V4      pRV ,           \        V4      ,           # ©zEncode datetime.datetime.rg   )r(   Ú
_PACK_LONG©rS  rÊ   r�   r‘   Úmilliss   &&&& rz   Ú_encode_datetimerŽ  
  s    € ä  Ó'€FØ�T�>œJ vÓ.Õ.Ð.r|   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )	ru   rS  r€   rÊ   r'   r�   r   r‘   rw   rx   )ry   s   "rz   r{   r{     s0   € ÷ /ñ /˜eð /¨Jð /Àð /ÈSð /ÐUZñ /r|   c                óJ   € \        V4      pRV ,           \        V4      ,           # rŠ  )r‡   r‹  rŒ  s   &&&& rz   Ú_encode_datetime_msr‘    s   € ä�‹Z€FØ�T�>œJ vÓ.Õ.Ð.r|   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# ©ru   rS  r€   r�   r   r‘   r’   rw   rx   )ry   s   "rz   r{   r{     s/   € ÷ ñ �uð  cð °3ð Àð Èñ r|   c                ó   € RV ,           # )zEncode python None.rh   rx   ©rS  r�   r‘   r’   s   &&&&rz   Ú_encode_noner–    ó   € à�T�>Ðr|   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )	ru   rS  r€   rÊ   z
Regex[Any]r�   r   r‘   rw   rx   )ry   s   "rz   r{   r{     s6   € ÷ Mñ M˜ð M jð M¸#ð MÀsð MÈuñ Mr|   c                ó,  € VP                   pV\        P                  8X  d+   RV ,           \        VP                  4      ,           R,           # V^ 8X  d+   RV ,           \        VP                  4      ,           R,           # RpV\        P
                  ,          '       d
   VR,          pV\        P                  ,          '       d
   VR,          pV\        P                  ,          '       d
   VR,          pV\        P                  ,          '       d
   VR,          pV\        P                  ,          '       d
   VR	,          pV\        P                  ,          '       d
   VR
,          pVR,          pRV ,           \        VP                  4      ,           V,           # )z*Encode a python regex or bson.regex.Regex.ri   s   u r�   r|   ó   ió   ló   mó   só   uó   x)
ÚflagsÚreÚUNICODErK  rñ   Ú
IGNORECASEÚLOCALEÚ	MULTILINEÚDOTALLÚVERBOSE)rS  rÊ   r�   r‘   r   Úsflagss   &&&&  rz   Ú_encode_regexr©    s  € à�K‰K€Eà”—
‘
ÔØ˜�~Ô 4°U·]±]Ó CÕCÀhÕNÐNØ	�!ŒØ˜�~Ô 4°U·]±]Ó CÕCÀgÕMÐMàˆØ”2—=‘=× Ô Ø�d�NˆFØ”2—9‘9×ÔØ�d�NˆFØ”2—<‘<×ÔØ�d�NˆFØ”2—9‘9×ÔØ�d�NˆFØ”2—:‘:×ÔØ�d�NˆFØ”2—:‘:×ÔØ�d�NˆFØ�'ÕˆØ˜�~Ô 4°U·]±]Ó CÕCÀfÕLÐLr|   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R/# )
ru   rS  r€   rÊ   r    r©   r   r™   rš   rw   rx   )ry   s   "rz   r{   r{   5  s8   € ÷ Oñ O�uð O Tð O°#ð OÐ=Nð OÐSXñ Or|   c                óZ  € \        V4      p\        V4      pVP                  f!   RV ,           \        V4      ,           V,           # \	        VP                  RVR4      p\        ^V,           \        V4      ,           4      pRV ,           V,           \        V4      ,           V,           V,           # )zEncode bson.code.Code.rk   Frm   )rN  r  rí   r[  Ú_dict_to_bson)rS  rÊ   r©   r™   ÚcstringÚcstrlenrí   Úfull_lengths   &&&&    rz   Ú_encode_coder°  5  s†   € ä˜UÓ#€GÜ�'‹l€GØ‡{�{ÒØ˜�~¤	¨'Ó 2Õ2°WÕ<Ð<Ü˜%Ÿ+™+ u¨d°EÓ:€EÜ˜A �K¬#¨e«*Õ4Ó5€KØ�T�>˜KÕ'¬)°GÓ*<Õ<¸wÕFÈÕNÐNr|   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )	ru   rS  r€   rÊ   r‡   r�   r   r‘   rw   rx   )ry   s   "rz   r{   r{   @  s6   € ÷ Tñ T�eð T Cð T°ð T¸cð TÀeñ Tr|   c                óÖ   € RTu;8:  d   R8:  d   M MRV ,           \        V4      ,           #  RV ,           \        V4      ,           #   \        P                   d    \	        R4      Rhi ; i)zEncode a python int.iÿÿÿrn   rp   ú&BSON can only handle up to 8-byte intsNi   €)r[  r‹  r°   r±   ÚOverflowErrorrW  s   &&&&rz   Ú_encode_intrµ  @  s`   € à�eÖ)˜z×)Ø˜�~¤	¨%Ó 0Õ0Ð0ð	TØ˜T•>¤J¨uÓ$5Õ5Ð5øÜ�|‰|ô 	TÜÐ HÓIÈtÐSð	Tús   ­A Á"A(c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# ©ru   rS  r€   rÊ   r   r�   r‘   rw   rx   )ry   s   "rz   r{   r{   K  s6   € ÷ Cñ C˜Eð C¨#ð C°sð CÀCð CÈEñ Cr|   c                ó^   € RV ,           \        VP                  VP                  4      ,           # )z Encode bson.timestamp.Timestamp.ro   )Ú_PACK_TIMESTAMPrý   ÚtimerW  s   &&&&rz   Ú_encode_timestampr»  K  s    € à�T�>œO¨E¯I©I°u·z±zÓBÕBÐBr|   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# r·  rx   )ry   s   "rz   r{   r{   P  s6   € ÷ Pñ P�uð P Sð P°#ð P¸sð PÀuñ Pr|   c                ó€   €  RV ,           \        V4      ,           #   \        P                   d    \        R4      Rhi ; i)zEncode a bson.int64.Int64.rp   r³  N)r‹  r°   r±   r´  rW  s   &&&&rz   Ú_encode_longr¾  P  s?   € ðPØ˜�~¤
¨5Ó 1Õ1Ð1øÜ�<‰<ô PÜÐDÓEÈ4ÐOðPús   ‚ ›"=c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )	ru   rS  r€   rÊ   r+   r�   r   r‘   rw   rx   )ry   s   "rz   r{   r{   X  s0   € ÷ &ñ &˜Uð &¨:ð &¸sð &ÈCð &ÐTYñ &r|   c                ó6   € RV ,           VP                   ,           # )z"Encode bson.decimal128.Decimal128.rq   )ÚbidrW  s   &&&&rz   Ú_encode_decimal128rÂ  X  s   € à�T�>˜EŸI™IÕ%Ð%r|   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# r“  rx   )ry   s   "rz   r{   r{   ]  ó/   € ÷ ñ ˜ð ¨ð °Sð À#ð È%ñ r|   c                ó   € RV ,           # )zEncode bson.min_key.MinKey.rr   rx   r•  s   &&&&rz   Ú_encode_minkeyrÆ  ]  r—  r|   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# r“  rx   )ry   s   "rz   r{   r{   b  rÄ  r|   c                ó   € RV ,           # )zEncode bson.max_key.MaxKey.rs   rx   r•  s   &&&&rz   Ú_encode_maxkeyrÉ  b  r—  r|   Ú_type_markerc              #  ó$   "  € T F  qx € K  	  R # 5ir~   rx   )r8  Úts   & rz   r:  r:  �  s   é € Ð-¡9˜aœ£9ùs   ‚c               ó4   € V ^8„  d   QhRRRRRRRRR	RR
RRR/# )ru   rS  r€   rÊ   r   r^  r  r™   rš   Úin_custom_callÚin_fallback_callrw   rx   )ry   s   "rz   r{   r{   “  s`   € ÷ AXñ AXØ
ðAXàðAXð ðAXð ð	AXð
 ðAXð ðAXð ñAXr|   c                óœ  € Rp \         \        V4      ,          ! WW#4      #   \         d     M)\         d    \	        T\
        4      '       g   h Rp Mi ; i\        TRR4      p\	        T\
        4      '       d4   T\        9   d)   \        T,          pT\         \        T4      &   T! YY#4      # T'       gc   TP                  P                  '       dG   TP                  P                  P                  \        T4      4      p	T	e   \        Y	! T4      Y#RR7      # \         FH  p
T'       d   K  \	        Y4      '       g   K   \         T
,          pT\         \        T4      &   T! YY#4      u # 	  TP                  P                  pT'       g   Te   \        Y! T4      Y#RR7      # T'       d   \        R4      h\        RT: R	\        T4      : 24      h)
z!Encode a single name, value pair.FTrÊ  N)rÎ  )rÏ  r³  zcannot encode object: z, of type: )Ú	_ENCODERSr»   rÅ   r´  r   r‡   ÚgetattrÚ_MARKERSrÃ   Ú_encoder_maprº   rh  Ú_BUILT_IN_TYPESÚ_fallback_encoderr-   )rS  rÊ   r^  r™   rÎ  rÏ  Úwas_integer_overflowÚmarkerÚfuncÚcustom_encoderÚbaseÚfallback_encoders   &&&&&&      rz   rh  rh  “  sž  € ð !Ðð	$Üœ˜e›Ö% d°:ÓDÐDøÜô ÙÜô $Ü˜%¤×%Ò%Øð  $Òð$úô �U˜N¨DÓ1€FÜ�&œ#×Ò 6¬XÔ#5Ü˜Õˆà!%Œ	”$�u“+ÑÙ�D Ó2Ð2÷ ˜d×0Ñ0×=×=Ð=Ø×+Ñ+×8Ñ8×<Ñ<¼TÀ%»[ÓIˆØÒ%Ü&Ø�n UÓ+¨ZÈdôð ÷  ˆß#Ñ#¬
°5×(?Ô(?Ü˜T•?ˆDà%)ŒI”d˜5“kÑ"Ù˜ ZÓ6Ò6ñ  ð ×)Ñ)×;Ñ;ÐßÐ 0Ò <Ü"ØÐ" 5Ó)¨:Èdô
ð 	
÷ ÜÐDÓEÐEÜ
Ð2°5±)¸;ÄtÈEÃ{ÁoÐVÓ
WÐWs   „! ¡A®A·AÁAc          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# )
ru   r*  r   rÊ   r^  r  r™   rš   rw   r€   rx   )ry   s   "rz   r{   r{   ×  s1   € ÷ >ñ >˜#ð > cð >°tð >ÐCTð >ÐY^ñ >r|   c                ó  € \        V \        4      '       g   \        RV : 24      hV'       d?   V P                  R4      '       d   \        RV : R24      hRV 9   d   \        RV : R24      h\	        V 4      p\        WAW#4      # )z Encode a single key, value pair.z.documents must have only string keys, key was Ú$zkey z must not start with '$'Ú.z must not contain '.')r   r‰   r-   Ú
startswithrQ  rh  )r*  rÊ   r^  r™   rS  s   &&&& rz   rc  rc  ×  s{   € ä�cœ3×ÒÜÐ NÈsÉgÐVÓWÐWßØ�>‰>˜#×ÒÜ! D¨©Ð/GÐ"HÓIÐIØ�#Œ:Ü! D¨©Ð/DÐ"EÓFÐFä�c‹?€DÜ˜t¨JÓ=Ð=r|   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# )
ru   Údocr   r^  r  r™   rš   Ú	top_levelrw   r€   rx   )ry   s   "rz   r{   r{   å  s4   € ÷ ;ñ ;Ø	ð;Øð;Ø&7ð;ØDHð;à
ñ;r|   c           	     óF  € \        V 4      '       d   \        \        V P                  4      #  . pV'       d+   RV 9   d$   VP	                  \        RV R,          W4      4       V P                  4        F2  w  rVV'       d
   VR8w  g   K   VP	                  \        WVW4      4       K4  	  RP                  T4      p\        \        T4      ^,           4      T,           R,           #   \         d   p\        RT 2T 4      ThRp?ii ; i  \         d    \        RT : 24      Rhi ; i)zEncode a document to BSON.Ú_ids   _id zInvalid document: Nz)encoder expected a mapping type but got: r|   r�   )r$   r   r€   r`  rÁ   rh  rb  rc  r-   ÚAttributeErrorÚ	TypeErrorra  r[  r  )	rã  r^  r™   rä  Úelementsr*  rÊ   ÚerrÚencodeds	   &&&&     rz   r¬  r¬  å  s  € ô ˜3×ÒÜ”E˜3Ÿ7™7Ó#Ð#ðWØˆß˜ #œØ�O‰OÔ/°
¸CÀ½JÈ
ÓYÔZØŸ)™)ž+‰JˆCß  u¦ðTØ—O‘OÔ$4°SÀÓ$RÖSñ &ð �h‰h�xÓ €GÜ”S˜“\ AÕ%Ó&¨Õ0°7Õ:Ð:øô 'ô TÜ)Ð,>¸s¸eÐ*DÀcÓJÐPSÐSûðTûäô WÜÐCÀCÁ7ÐKÓLÐRVÐVðWús5   ­	D ·AD ÂC!Â#D Ã!DÃ,C<Ã<DÄD ÄD z1codec_options must be an instance of CodecOptionsc               ó(   € V ^8„  d   QhRRRRRRRR/# )	ru   ÚdocumentúMapping[str, Any]r^  r  Úcodec_optionsrš   rw   r€   rx   )ry   s   "rz   r{   r{     s0   € ÷ >ñ >Øð>àð>ð %ð>ð ñ	>r|   c                óR   € \        V\        4      '       g   \        h\        WV4      # )aV  Encode a document to BSON.

A document can be any mapping type (like :class:`dict`).

Raises :class:`TypeError` if `document` is not a mapping type,
or contains keys that are not instances of :class:`str`. Raises
:class:`~bson.errors.InvalidDocument` if `document` cannot be
converted to :class:`BSON`.

:param document: mapping type representing a document
:param check_keys: check if keys start with '$' or
    contain '.', raising :class:`~bson.errors.InvalidDocument` in
    either case
:param codec_options: An instance of
    :class:`~bson.codec_options.CodecOptions`.

.. versionadded:: 3.9
)r   r"   Ú_CODEC_OPTIONS_TYPE_ERRORr¬  )rí  r^  rï  s   &&&rz   rW   rW     s$   € ô. �m¤\×2Ò2Ü'Ð'ä˜¨}Ó=Ð=r|   c               ó$   € V ^8„  d   QhRRRRRR/# )ru   rv   r>   rï  ÚNonerw   údict[str, Any]rx   )ry   s   "rz   r{   r{   !  s!   € ÷ ñ �ð °ð Àñ r|   c                ó   € R # r~   rx   ©rv   rï  s   &&rz   rX   rX      ó   € ár|   c               ó$   € V ^8„  d   QhRRRRRR/# )ru   rv   r>   rï  r,  rw   r=   rx   )ry   s   "rz   r{   r{   &  s#   € ÷ ñ �ð Ð1Lð ÐQ^ñ r|   c                ó   € R # r~   rx   rö  s   &&rz   rX   rX   %  r÷  r|   c               ó$   € V ^8„  d   QhRRRRRR/# )ru   rv   r>   rï  ú%Optional[CodecOptions[_DocumentType]]rw   ú$Union[dict[str, Any], _DocumentType]rx   )ry   s   "rz   r{   r{   *  s)   € ÷ Sñ SØ
ðSØ*OðSà)ñSr|   c                ó„   € T;'       g    \         p\        V\        4      '       g   \        h\	        R\        W4      4      # )aG  Decode BSON to a document.

By default, returns a BSON document represented as a Python
:class:`dict`. To use a different :class:`MutableMapping` class,
configure a :class:`~bson.codec_options.CodecOptions`::

    >>> import collections  # From Python standard library.
    >>> import bson
    >>> from bson.codec_options import CodecOptions
    >>> data = bson.encode({'a': 1})
    >>> decoded_doc = bson.decode(data)
    <type 'dict'>
    >>> options = CodecOptions(document_class=collections.OrderedDict)
    >>> decoded_doc = bson.decode(data, codec_options=options)
    >>> type(decoded_doc)
    <class 'collections.OrderedDict'>

:param data: the BSON to decode. Any bytes-like object that implements
    the buffer protocol.
:param codec_options: An instance of
    :class:`~bson.codec_options.CodecOptions`.

.. versionadded:: 3.9
rü  )r!   r   r"   rñ  r   r4  )rv   rï  r™   s   && rz   rX   rX   *  s8   € ð6 ,×DÐDÔ/D€DÜ�dœL×)Ò)Ü'Ð'äÐ6¼ÀdÓ8QÓRÐRr|   c               ó$   € V ^8„  d   QhRRRRRR/# )ru   rv   r>   r™   r,  rw   úlist[_DocumentType]rx   )ry   s   "rz   r{   r{   L  s(   € ÷ Kñ K�oð KÐ-Hð KÐM`ñ Kr|   c           	     ó®  € \        V 4      w  r\        V 4      p. p^ pV^,
          p\        VP                  4      p WV8  d¾   \	        W4      ^ ,          pW5,
          V8  d   \        RV RW5,
           24      hWX,           ^,
          p	W	,          ^ 8w  d   \        R4      hV'       d,   VP                  VP                  WV	^,            V4      4       M#VP                  \        WV^,           W‘4      4       WX,          pKÃ  V#   \
         d    h \         d>    \        P                  ! 4       w  r«p\        \        T4      4      P                  T4      Rhi ; i)z)Decode a BSON data to multiple documents.zinvalid object size: expected z, got r¯   N)rU   r  r$   r¸   r•   r,   rÁ   r¹   r.  r/  r0  r‰   r1  )rv   r™   r„   Údata_lenÚdocsr�   r¡   Úuse_rawr²   r¨   r   r2  r3  s   &&           rz   Ú_decode_allr  L  s8  € ä" 4Ó(�J€DÜ�4‹y€HØ "€DØ€HØ
�Q�,€CÜ! $×"5Ñ"5Ó6€GðKØŒnÜ'¨Ó7¸Õ:ˆHØÕ" XÔ-Ü!Ø4°X°J¸fÀXÕEXÐDYÐZóð ð Õ)¨AÕ-ˆGØ�} Ô!Ü! )Ó,Ð,ßØ—‘˜D×/Ñ/°ÀÈ!ÅÐ0LÈdÓSÕTà—‘Ô-¨d¸(ÀQ½,ÈÓVÔWØÕ ŠHØˆøÜô ØÜô Kä"Ÿ|š|›~Ñˆ�fÜœ#˜i›.Ó)×8Ñ8¸Ó@ÀdÐJðKús   ¼A*D Â'AD ÄEÄ>Ec               ó$   € V ^8„  d   QhRRRRRR/# )ru   rv   r>   rï  ró  rw   zlist[dict[str, Any]]rx   )ry   s   "rz   r{   r{   q  s"   € ÷ ñ �_ð °Tð ÐEYñ r|   c                ó   € R # r~   rx   rö  s   &&rz   rY   rY   p  r÷  r|   c               ó$   € V ^8„  d   QhRRRRRR/# )ru   rv   r>   rï  r,  rw   rÿ  rx   )ry   s   "rz   r{   r{   v  s$   € ÷ ñ Ø
ðØ*Eðàñr|   c                ó   € R # r~   rx   rö  s   &&rz   rY   rY   u  ó   € ñ r|   c               ó$   € V ^8„  d   QhRRRRRR/# )ru   rv   r>   rï  rû  rw   z0Union[list[dict[str, Any]], list[_DocumentType]]rx   )ry   s   "rz   r{   r{   |  s$   € ÷ ,ñ ,Ø
ð,Ø*Oð,à5ñ,r|   c                óx   € Vf   \        V \        4      # \        V\        4      '       g   \        h\        W4      # )aï  Decode BSON data to multiple documents.

`data` must be a bytes-like object implementing the buffer protocol that
provides concatenated, valid, BSON-encoded documents.

:param data: BSON data
:param codec_options: An instance of
    :class:`~bson.codec_options.CodecOptions`.

.. versionchanged:: 3.9
   Supports bytes-like objects that implement the buffer protocol.

.. versionchanged:: 3.0
   Removed `compile_re` option: PyMongo now always represents BSON regular
   expressions as :class:`~bson.regex.Regex` objects. Use
   :meth:`~bson.regex.Regex.try_compile` to attempt to convert from a
   BSON regular expression to a Python regular expression object.

   Replaced `as_class`, `tz_aware`, and `uuid_subtype` options with
   `codec_options`.
)r  r!   r   r"   rñ  rö  s   &&rz   rY   rY   |  s6   € ð0 ÒÜ˜4Ô!6Ó7Ð7ä�m¤\×2Ò2Ü'Ð'ä�tÓ+Ð+r|   c               ó(   € V ^8„  d   QhRRRRRRRR/# )ru   Úrawdocr   Úfieldsrï  r,  rw   r=   rx   )ry   s   "rz   r{   r{   �  s,   € ÷ ñ ØðØðØ-Hðàñr|   c                ó2  € \        VP                  4      '       d   / pMVP                  4       pV P                  4        FT  w  rEWA9   dF   W,          ^8X  d"   \        V P                  V4      V,          W4&   K9  \        WQV,          V4      W4&   KP  WSV&   KV  	  V# )é   )r$   r¸   rb  r4  r`  Ú_decode_selective)r  r  rï  rã  r*  rÊ   s   &&&   rz   r  r  �  s‰   € ô ˜=×7Ñ7×8Ò8ð  ‰ð ×*Ñ*Ó,ˆØ—l‘l–n‰
ˆØŒ=Ø�{˜aÔÜ(¨¯©°]ÓCÀCÕH�“ä,Ø #�;¨ó�“ð �‹Hñ %ð €Jr|   c               ó    € V ^8„  d   QhRRRR/# )ru   rv   zUnion[memoryview, bytes]rw   r€   rx   )ry   s   "rz   r{   r{   ´  s   € ÷ ñ Ð(@ð ÀUñ r|   c                óh  € ^ p\        V 4      p\        W!\        V4      4      w  r4V^,          p. pVP                  pW^,
          8  dJ   W!,          ^ 8w  d   V^,          pK  V^,          p\        W!V4      w  rsV! W!W,            4       W,          pKV  W8w  d   \	        R4      hRP                  V4      # )é    r)  r|   )r‚   r´   r  rÁ   r,   ra  )rv   r�   r„   r   r¡   ÚbuffersrÁ   r²   s   &       rz   Ú_array_of_documents_to_bufferr  ´  s¦   € à€HÜ�dÓ€DÜ˜d¬c°$«iÓ8�F€AØ�…M€HØ "€GØ�^‰^€FØ
˜1•WÔ
à�n Ô!Ø˜�MŠHØ�A�ˆÜ& t°sÓ;‰ˆÙˆt˜xÕ2Ð3Ô4ØÕŠØ„ÜÐ8Ó9Ð9Ø�8‰8�GÓÐr|   c               ó    € V ^8„  d   QhRRRR/# )ru   rí  r   rw   ró  rx   )ry   s   "rz   r{   r{   Í  s   € ÷ ñ °Sð ¸Tñ r|   c                óÀ   € V P                  R4      pV'       g   R# R F<  pVP                  V4      pV'       g   K  \        V4      pV'       d   V.W&   K8  . W&   K>  	  R# )z=Convert raw array of documents to a stream of BSON documents.ÚcursorN)Ú
firstBatchÚ	nextBatch)rº   r  )rí  r  r*  Úbatchrv   s   &    rz   Ú&_convert_raw_document_lists_to_streamsr  Í  sP   € à�\‰\˜(Ó#€FßÙÛ*ˆØ—
‘
˜3“ˆßÙÜ,¨UÓ3ˆßØ˜&ˆF‹KàˆF‹Kó +r|   c               ó(   € V ^8„  d   QhRRRRRRRR/# )ru   rv   r   rï  r,  r  rw   rÿ  rx   )ry   s   "rz   r{   r{   Ý  s,   € ÷ *ñ *Ø
ð*Ø9ð*ØCFð*àñ*r|   c                óú   € VP                   P                  '       g   \        W4      # V'       g   \        WP                  RR7      4      # ^ RIHp VP                  VRR7      p\        W4      p\        VVV4      .# )a  Decode BSON data to a single document while using user-provided
custom decoding logic.

`data` must be a string representing a valid, BSON-encoded document.

:param data: BSON data
:param codec_options: An instance of
    :class:`~bson.codec_options.CodecOptions` with user-specified type
    decoders. If no decoders are found, this method is the same as
    ``decode_all``.
:param fields: Map of document namespaces where data that needs
    to be custom decoded lives or None. For example, to custom decode a
    list of objects in 'field1.subfield1', the specified value should be
    ``{'field1': {'subfield1': 1}}``. If ``fields``  is an empty map or
    None, this method is the same as ``decode_all``.

:return: Single-member list containing the decoded document.

.. versionadded:: 3.8
N)rÃ   r;   )r¸   rÃ   )rÃ   rÄ   rY   Úwith_optionsÚbson.raw_bsonr<   r4  r  )rv   rï  r  r<   Úinternal_codec_optionsÚ_docs   &&&   rz   Ú_decode_all_selectiver$  Ý  s…   € ð. ×&Ñ&×3×3Ð3Ü˜$Ó.Ð.çÜ˜$× :Ñ :ÈÐ :Ó NÓOÐOõ .à<I×<VÑ<VØ&°dð =Wó =Ðô ˜Ó6€DäØØØó	
ðð r|   c               ó$   € V ^8„  d   QhRRRRRR/# )ru   rv   r€   rï  ró  rw   úIterator[dict[str, Any]]rx   )ry   s   "rz   r{   r{     s"   € ÷ ñ �eð ¨Dð Ð<Tñ r|   c                ó   € R # r~   rx   rö  s   &&rz   rZ   rZ   
  r÷  r|   c               ó$   € V ^8„  d   QhRRRRRR/# )ru   rv   r€   rï  r,  rw   úIterator[_DocumentType]rx   )ry   s   "rz   r{   r{     s#   € ÷ ñ �eð Ð,Gð ÐLcñ r|   c                ó   € R # r~   rx   rö  s   &&rz   rZ   rZ     r÷  r|   c               ó$   € V ^8„  d   QhRRRRRR/# )ru   rv   r€   rï  rû  rw   ú8Union[Iterator[dict[str, Any]], Iterator[_DocumentType]]rx   )ry   s   "rz   r{   r{     s$   € ÷  ,ñ  ,Ø
ð ,Ø Eð ,à=ñ ,r|   c              #  ó   "  € T;'       g    \         p\        V\        4      '       g   \        h^ p\	        V 4      ^,
          pW48  d4   \        W4      ^ ,          pWW5,            pW5,          p\        Wb4      x € K9  R# 5i)aÄ  Decode BSON data to multiple documents as a generator.

Works similarly to the decode_all function, but yields one document at a
time.

`data` must be a string of concatenated, valid, BSON-encoded
documents.

:param data: BSON data
:param codec_options: An instance of
    :class:`~bson.codec_options.CodecOptions`.

.. versionchanged:: 3.0
   Replaced `as_class`, `tz_aware`, and `uuid_subtype` options with
   `codec_options`.

.. versionadded:: 2.8
N)r!   r   r"   rñ  r  r•   r4  )rv   rï  r™   r�   r¡   r²   ré  s   &&     rz   rZ   rZ     ss   é € ð* ×1Ð1Ô1€DÜ�dœL×)Ò)Ü'Ð'à€HÜ
ˆd‹)�a�-€CØ
Œ.Ü# DÓ3°AÕ6ˆØ 8Õ#6Ð7ˆØÕˆä˜HÓ+Ô+ñ ùs   ‚A<A>c               ó$   € V ^8„  d   QhRRRRRR/# )ru   Úfile_objúUnion[BinaryIO, IO[bytes]]rï  ró  rw   r&  rx   )ry   s   "rz   r{   r{   8  s$   € ÷ ñ Ø(ðØ9=ðàñr|   c                ó   € R # r~   rx   ©r/  rï  s   &&rz   r[   r[   7  r	  r|   c               ó$   € V ^8„  d   QhRRRRRR/# )ru   r/  r0  rï  r,  rw   r)  rx   )ry   s   "rz   r{   r{   ?  s$   € ÷ ñ Ø(ðØ9Tðàñr|   c                ó   € R # r~   rx   r2  s   &&rz   r[   r[   >  r	  r|   c               ó$   € V ^8„  d   QhRRRRRR/# )ru   r/  r0  rï  rû  rw   r,  rx   )ry   s   "rz   r{   r{   E  s&   € ÷ ,ñ ,Ø(ð,à8ð,ð >ñ,r|   c              #  ó,  "  € T;'       g    \         p V P                  ^4      pV'       g   R# \        V4      ^8w  d   \        R4      h\	        V^ 4      ^ ,          ^,
          pW0P                  \        ^ V4      4      ,           p\        WR4      x € K�  5i)aç  Decode bson data from a file to multiple documents as a generator.

Works similarly to the decode_all function, but reads from the file object
in chunks and parses bson in chunks, yielding one document at a time.

:param file_obj: A file object containing BSON data.
:param codec_options: An instance of
    :class:`~bson.codec_options.CodecOptions`.

.. versionchanged:: 3.0
   Replaced `as_class`, `tz_aware`, and `uuid_subtype` options with
   `codec_options`.

.. versionadded:: 2.8
zcut off in middle of objsizeN)r!   Úreadr  r,   r•   Úmaxr4  )r/  rï  r™   Ú	size_datar²   ré  s   &&    rz   r[   r[   E  s}   é € ð& ×1Ð1Ô1€DØ
à!Ÿ™ qÓ)ˆ	ßÙÜ�‹^˜qÔ ÜÐ<Ó=Ð=Ü# I¨qÓ1°!Õ4°qÕ8ˆØŸ}™}¬S°°HÓ-=Ó>Õ>ˆÜ˜HÓ+Ô+ùs   ‚*B­A'Bc               ó    € V ^8„  d   QhRRRR/# )ru   Úbsonr€   rw   r  rx   )ry   s   "rz   r{   r{   e  s   € ÷ ñ �5ð ˜Tñ r|   c                ó¦   € \        V \        4      '       g   \        R\        V 4       24      h \	        V \
        4       R#   \         d     R# i ; i)zûCheck that the given string represents valid :class:`BSON` data.

Raises :class:`TypeError` if `bson` is not an instance of
:class:`bytes`. Returns ``True``
if `bson` is valid :class:`BSON`, ``False`` otherwise.

:param bson: the data to be validated
z:BSON data must be an instance of a subclass of bytes, not TF)r   r€   rè  r»   r4  r!   r.  )r;  s   &rz   r\   r\   e  sQ   € ô �dœE×"Ò"ÜÐTÔUYÐZ^ÓU_ÐT`ÐaÓbÐbðÜ�dÔ1Ô2ÙøÜô Úðús   ¯A ÁAÁAc                  óJ   € ] tR tRtRt]R]3R R ll4       t]3R R lltRt	R	# )
r]   ix  zÒBSON (Binary JSON) data.

.. warning:: Using this class to encode and decode BSON adds a performance
   cost. For better performance use the module level functions
   :func:`encode` and :func:`decode` instead.
Fc          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )ru   Úclsz
Type[BSON]rí  rî  r^  r  rï  rš   rw   r]   rx   )ry   s   "rz   r{   ÚBSON.__annotate__�  sA   € ÷ @ñ @Øð@à#ð@ð ð@ð )ð	@ð
 
ñ@r|   c                ó&   € V ! \        WV4      4      # )a¨  Encode a document to a new :class:`BSON` instance.

A document can be any mapping type (like :class:`dict`).

Raises :class:`TypeError` if `document` is not a mapping type,
or contains keys that are not instances of
:class:`str'. Raises :class:`~bson.errors.InvalidDocument`
if `document` cannot be converted to :class:`BSON`.

:param document: mapping type representing a document
:param check_keys: check if keys start with '$' or
    contain '.', raising :class:`~bson.errors.InvalidDocument` in
    either case
:param codec_options: An instance of
    :class:`~bson.codec_options.CodecOptions`.

.. versionchanged:: 3.0
   Replaced `uuid_subtype` option with `codec_options`.
)rW   )r?  rí  r^  rï  s   &&&&rz   rW   ÚBSON.encode€  s   € ñ4 ”6˜(°Ó>Ó?Ð?r|   c               ó    € V ^8„  d   QhRRRR/# )ru   rï  rš   rw   rô  rx   )ry   s   "rz   r{   r@  œ  s   € ÷  +ñ  +Ø.ð +à	ñ +r|   c                ó   € \        W4      # )a\  Decode this BSON data.

By default, returns a BSON document represented as a Python
:class:`dict`. To use a different :class:`MutableMapping` class,
configure a :class:`~bson.codec_options.CodecOptions`::

    >>> import collections  # From Python standard library.
    >>> import bson
    >>> from bson.codec_options import CodecOptions
    >>> data = bson.BSON.encode({'a': 1})
    >>> decoded_doc = bson.BSON(data).decode()
    <type 'dict'>
    >>> options = CodecOptions(document_class=collections.OrderedDict)
    >>> decoded_doc = bson.BSON(data).decode(codec_options=options)
    >>> type(decoded_doc)
    <class 'collections.OrderedDict'>

:param codec_options: An instance of
    :class:`~bson.codec_options.CodecOptions`.

.. versionchanged:: 3.0
   Removed `compile_re` option: PyMongo now always represents BSON
   regular expressions as :class:`~bson.regex.Regex` objects. Use
   :meth:`~bson.regex.Regex.try_compile` to attempt to convert from a
   BSON regular expression to a Python regular expression object.

   Replaced `as_class`, `tz_aware`, and `uuid_subtype` options with
   `codec_options`.
)rX   )Úselfrï  s   &&rz   rX   ÚBSON.decodeœ  s   € ô@ �dÓ*Ð*r|   rx   N)
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Úclassmethodr!   rW   rX   Ú__static_attributes__rx   r|   rz   r]   r]   x  s5   † ñð ð !Ø+@ö	@ó ð@ð8 2G÷ +ó  +r|   c               ó   € V ^8„  d   QhRR/# )ru   rw   r  rx   )ry   s   "rz   r{   r{   ¿  s   € ÷ ñ ˆtñ r|   c                 ó   € \         # )zIs the C extension installed?)Ú_USE_Crx   r|   rz   r^   r^   ¿  s   € ä€Mr|   c               ó   € V ^8„  d   QhRR/# )ru   rw   ró  rx   )ry   s   "rz   r{   r{   Ä  s   € ÷ %ñ %�Tñ %r|   c                 óŽ   € \         P                  P                  4       '       d!   \         P                  P                  4        R# R# )z!Releases the ObjectID lock child.N)r5   Ú	_inc_lockÚlockedÚreleaserx   r|   rz   Ú_after_forkrV  Ä  s.   € ä×Ñ× Ñ ×"Ò"Ü×Ñ×"Ñ"Ö$ñ #r|   Úregister_at_fork)Úafter_in_child)F)NF)FF)Tr~   )ÞÚ__conditional_annotations__rK  Ú
__future__r   Údatetimer?  Úosr¡  r°   r/  ÚuuidÚcodecsr   rŸ   r   rI  Úcollectionsr   Ú_abcÚtypingr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   Úbson.binaryr   r   r   r   r   r   r   r   Ú	bson.coder    Úbson.codec_optionsr!   r"   r#   r$   Úbson.datetime_msr%   r&   r'   r(   r)   Ú
bson.dbrefr*   Úbson.decimal128r+   Úbson.errorsr,   r-   r.   Ú
bson.int64r/   Úbson.max_keyr1   Úbson.min_keyr3   Úbson.objectidr5   Ú
bson.regexr6   Úbson.sonr7   r8   Úbson.timestampr9   Úbson.tz_utilr:   r!  r<   Úbson.typingsr=   r>   r;  r?   rP  ÚImportErrorÚ__all__r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   ÚStructÚunpack_fromr¥   ÚunpackÚ_UNPACK_INTr•   rÏ   râ   rü   rU   rŒ   r—   r¢   r¦   r¬   r´   r¾   rÌ   r×   rÛ   rß   rã   rè   rî   rô   rù   rÿ   r  r  r  rÂ   Ú__annotations__r  r‰   r!  r&  r¹   r4  ÚpackrV  r[  rz  r‹  r¹  ÚtupleÚranger>  rV   rK  rN  rQ  rX  r\  re  rn  rs  rw  r{  r€  r„  r‡  rŽ  r‘  r–  r©  r°  rµ  r»  r¾  rÂ  rÆ  rÉ  r  r€   ÚdictrT  r‡   Úlistr»   ÚUUIDrÑ  rÓ  Ú_typÚhasattrrÊ  rÕ  rh  rc  r¬  rè  rñ  rW   rX   r  rY   r  r  r  r$  rZ   r[   r\   r]   r^   rV  rW  )rY  s   @rz   Ú<module>r�     st
  øðô8õr #ã Û Û 	Û 	Û Û 
Û Ý 0Ý 0Ý #÷÷ ÷ ÷ ÷ ÷*	÷ 	ó 	õ ÷ó ÷õ õ Ý &ß GÑ GÝ Ý Ý Ý "Ý ß !Ý $Ý ÷ Ý-ß;ðÝà€Fð=Øð=àð=ð ð=ð ð	=ð
 ð=ð ð=ð ð=ð ð=ð ð=ð ð=ð ð=ð ð=ð ð=ð ð=ð ð=ð  ð!=ð" ð#=ð$ ð%=ð& ð'=ð( ð)=ð* ð+=ð, ð-=ð. 
ð/=ð0 ð1=ð2 
ð3=ð4 ð5=ð6 ð7=ð8 ð9=ð: ð;=ð< ð==ð> ð?=ð@ ðA=ðB ðC=ðD ðE=ðF ðG=ðH ðI=ðJ ðK=ðL ðM=ðN ðO=ðP ðQ=ðR ðS=ðT ðU=ðV ðW=ðX ðY=ðZ ð[=ð\ ð]=ð^ ð_=ð` ða=ðb ðc=ðd ðe=ðf ðg=ðh ði=ðj ðk=ðl ðm=ðn ðo=ðp ðq=ðr ðs=ðt ðu=ðv ðw=ðx ðy=€ð~ €Ø
€Ø
€Ø
€Ø
€Ø
€Ø
€Ø
€Ø
€Ø
€Ø
€Ø
€Ø
€Ø
€Ø
€Ø
€Ø
€Ø
€Ø
€Ø
€Ø
€ð —]’] 4Ó(×4Ñ4Ð Ø�mŠm˜DÓ!×(Ñ(€Ø—=’= Ó&×2Ñ2Ð Ø$Ÿmšm¨EÓ2×>Ñ>Ð Ø—M’M $Ó'×3Ñ3Ð ØŸš uÓ-×9Ñ9Ð õ õõ=õbõ?õbõõ"õ*' õT"õJ-õ
BõYõ õ	'õõ,õ3õEõ8ð>ÙˆƒL�*ð>áˆƒL�+ð>ñ ˆƒL�+ð>ñ ˆƒL�*ð	>ñ
 ˆƒL�+ð>ñ ˆƒLÑ4ð>ñ ˆƒL�(ð>ñ ˆƒL�,ð>ñ ˆƒL�)ð>ñ ˆƒLÑ4ð>ñ ˆƒL�*ð>ñ ˆƒL�(ð>ñ ˆƒL�)ð>ñ ˆƒL�+ð>ñ ˆƒLÐ#ð>ñ  ˆƒL�(ð!>ñ" ˆƒL�.ð#>ñ$ ˆƒL�*ÙˆƒL�/ÙˆƒLÑ8ÙˆƒLÑ8ñ+>€Ð:ó ÷2 
÷
ñ 
÷-ð -ñ< ˆT˜¨¨S¨Õ1Ô2€÷ð ÷ð õ.K÷  
Ø×(Ò(€Mð �mŠm˜DÓ!×&Ò&€Ø�MŠM˜$Ó×$Ò$€	Ø—}’} UÓ+×0Ò0Ð Ø�]Š]˜4Ó ×%Ò%€
Ø—-’- Ó&×+Ò+€ßˆeÑJ¹eÀD¼kÓJ�e‰eÑJ¹eÀD¼kÓJÓJ€õ;õ2õ$2õ.õ/õ
DõFõõ"FõJõNõ5õ)õ
;õ
/õ/õõ
Mõ4OõTõCõ
Põ&õ
õ
ðØˆ,ðà	ˆ=ðð ×ÑÐ'ðð Ð#ð	ð
 	ˆ/ðð 
ˆ=ðð ˆðð 	ˆ,ðð ˆðð 
ˆ<ðñ 	ˆƒJ�ðð 	‡I‚Iˆ|ðð ˆNðð 
ˆ<ðð 	ˆ,ðð  
ˆ=ð!ð" ˆNð#ð$ ˆNØÐØ	ˆ=Øˆ]ØˆØÐ ØÐ"à‡L�L�/ñ5€	ð< €Û€DÙˆt�^×$Ô$Ø&/°¥oˆ�×"Ò"Ó#ñ ÷
 �%Ñ-¡9Ó-—%‘%Ñ-¡9Ó-Ó-€÷AXð AXõH>÷;ð ;÷. 
Ø×(Ò(€Mñ &Ð&YÓZÐ ð
 Ø'<÷>ð: 
÷ó 
ðð 
ôó 
ð÷Sð SõDK÷@ 
Ø×$Ò$€Kð 
÷ó 
ðð 
ôó 
ð÷,ð ,õBõ.÷* 
Ø$*×$HÒ$HÐ!õõ *ðZ 
÷ñ ó 
ðð 
öó 
ð÷ ,ò  ,ðF 
÷ñ ó 
ðð 
öó 
ð÷,ò ,÷@õ&D+ˆ5ô D+÷N÷
%ñ ˆ2Ñ!×"Ò"ð ×Ó {×3Ð3ñ	 #øði) ô ØƒFðús   Ã6]- Ý-	]:Ý9]: