ó
    Š“,j¦­  ã                   ó  • S r SSKrSSKrSSKrSSKrSr " S S\R                  5      rSSSS	S
.rSSSSS
.r	SSS.r
S rS rS rS rS rS rS rS rS 4S jr " S S\R                  5      r " S S5      r " S  S!5      r " S" S#\5      r " S$ S%\5      r " S& S'\5      r " S( S)\5      r " S* S+\5      r " S, S-\5      r " S. S/\5      r " S0 S15      rS2 r " S3 S45      r S5 r!S6 r" " S7 S85      r# " S9 S:5      r$S; r%S< r&S= r'g)>zôImplementation of FlexBuffers binary format.

For more info check https://google.github.io/flatbuffers/flexbuffers.html and
corresponding C++ implementation at
https://github.com/google/flatbuffers/blob/master/include/flatbuffers/flexbuffers.h
é    N)ÚTypeÚBuilderÚGetRootÚDumpsÚLoadsc                   óh   • \ rS rSrSrSrSrSrSr\	S 5       r
\	S 5       r\	S	 5       r\	S
 5       rSrg)ÚBitWidthé!   z¹Supported bit widths of value types.

These are used in the lower 2 bits of a type field to determine the size of
the elements (and or size field) of the item pointed to (e.g. vector).
r   é   é   é   c                 óÞ   • U S:¼  d   eU S:  a  [         R                  $ U S:  a  [         R                  $ U S:  a  [         R                  $ U S:  a  [         R                  $ [        SU -  5      e)z@Returns the minimum `BitWidth` to encode unsigned integer value.r   é   i   l        l            zvalue is too big to encode: %s)r	   ÚW8ÚW16ÚW32ÚW64Ú
ValueError©Úvalues    Ú¥C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\flatbuffers/flexbuffers.pyÚUÚ
BitWidth.U-   si   € ð �A‹:Ðˆ:à�ÓÜ�[‰[ÐØ	�'Ó	Ü�\‰\ÐØ	�'Ó	Ü�\‰\ÐØ	�'Ó	Ü�\‰\ÐäÐ7¸%Ñ?Ó@Ð@ó    c                 óP   • U S-  n [         R                  U S:¼  a  U 5      $ U ) 5      $ )z>Returns the minimum `BitWidth` to encode signed integer value.r   r   )r	   r   r   s    r   ÚIÚ
BitWidth.I=   s,   € ð 
ˆQ�J€EÜ�:‰:˜u¨›z�eÓ6Ð6°¨vÓ6Ð6r   c                 ó¨   • [         R                  " S[         R                  " SU 5      5      S   U :X  a  [        R                  $ [        R
                  $ )z6Returns the `BitWidth` to encode floating point value.z<fr   )ÚstructÚunpackÚpackr	   r   r   r   s    r   ÚFÚ
BitWidth.FL   s;   € ô ‡}‚}�Tœ6Ÿ;š; t¨UÓ3Ó4°QÑ7¸5Ó@Ü�\‰\ÐÜ�<‰<Ðr   c                 ó†   • [         R                  [         R                  [         R                  [         R                  S.U    $ )N©r   r   é   é   )r	   r   r   r   r   ©Ú
byte_widths    r   ÚBÚ
BitWidth.BS   s+   € ä�{‰{œxŸ|™|´·±ÄÇÁÑNØñð r   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r   r   Ústaticmethodr   r   r"   r*   Ú__static_attributes__r,   r   r   r	   r	   !   sm   † ñð 	€"Ø	€#Ø	€#Ø	€#àñAó ðAð ñ7ó ð7ð ñó ðð ñó ór   r	   ÚbÚhÚiÚqr%   r*   ÚHr   ÚQÚfÚd)r&   r'   c                 óT   • [         R                  " SU [        U5         -  U5      S   $ )Nú<%sr   )r   r    Úlen)ÚfmtÚbufs     r   Ú_UnpackrA   _   s%   € Ü	�Š�u˜s¤3 s£8™}Ñ,¨cÓ	2°1Ñ	5Ð5r   c                 óZ   • [        U5      U-  n[        R                  " SX U   4-  U5      $ ©Nz<%d%s)r>   r   r    )r?   r@   Úlengthr)   s       r   Ú_UnpackVectorrE   c   s-   € Ü�3‹x˜6Ñ!€*Ü	�Š�w &¨j©/Ð!:Ñ:¸CÓ	@Ð@r   c                 ó:   • [         R                  " SX   -  U5      $ )Nr=   )r   r!   )r?   r   r)   s      r   Ú_PackrG   h   s   € Ü	�Š�U˜S™_Ñ,¨eÓ	4Ð4r   c                 óP   • [         R                  " S[        U5      X   4-  /UQ76 $ rC   )r   r!   r>   )r?   Úvaluesr)   s      r   Ú_PackVectorrJ   l   s&   € Ü	�Š�W¤ F£¨S©_Ð=Ñ=Ð	GÀÒ	GÐGr   c                 ó6   • SU-  U::  a  [        XU5      US U& gg)Nr   TF)rG   )r?   r@   r   r)   Úvalue_bit_widths        r   Ú_MutaterM   p   s(   € Øˆ?Ñ˜zÓ)Ü˜S¨Ó4€CˆˆÐØØ	r   c                 ó   • U * US-
  -  $ ©Nr   r,   )Úbuf_sizeÚscalar_sizes     r   Ú_PaddingBytesrR   z   s   € à
ˆ�k A‘oÑ	&Ð&r   c                 ó¢   • XR                   c  SOU R                   -   nXR                  c  UOU R                  -   n[        X4U R                  5      $ ©Nr   )ÚstartÚstopÚsliceÚstep)ÚsÚoffsetrD   rU   rV   s        r   Ú_ShiftSlicer[      s?   € Ø
Ÿ™™‘A¨a¯g©gÑ
6€%Ø	ŸV™V™^‘6°·±Ñ	8€$Ü	ˆu˜AŸF™FÓ	#Ð#r   c                 óš   • S[        U 5      pCXC-
  nUS:”  a4  UnUS-  nXg-  nU" X   U5      (       a  US-  nUnXWS-   -  nOUnUS:”  a  M4  U$ )z3Implementation of C++ std::lower_bound() algorithm.r   r   r   )r>   )rI   r   ÚpredÚfirstÚlastÚcountr6   rX   s           r   Ú_LowerBoundra   †   sn   € à”3�v“;ˆØ
‰,€%Ø�‹	Ø€AØ�A‰:€DØ�I€AÙˆF‰I�u×ÑØˆ1�f€aØ€eØ�a‰xÑ�eà€eð 	��	ð 
€,r   c                 ó
   • X:  $ ©Nr,   )ÚxÚys     r   Ú<lambda>rf   ˜   s   € °1²5r   c                 ó^   • [        XU5      nU[        U 5      :w  a  U" XU   5      (       d  U$ g)z5Implementation of C++ std::binary_search() algorithm.éÿÿÿÿ)ra   r>   )rI   r   r]   Úindexs       r   Ú_BinarySearchrj   ˜   s0   € ä
�f TÓ
*€%Ø
Œc�&‹kÓ¡$ u°U©m×"<Ñ"<Ø€LØ	r   c                   ó,  • \ rS rSrSrSrSrSrSrSr	Sr
S	rS
rSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSr \!S 5       r"\!S  5       r#\!S! 5       r$\!S" 5       r%\!S# 5       r&\!S$ 5       r'\!S% 5       r(\!S& 5       r)\!S' 5       r*\!S+S( j5       r+S)r,g*),r   é    zrSupported types of encoded data.

These are used as the upper 6 bits of a type field to indicate the actual
type.
r   r   r   r   r&   é   é   é   r'   é	   é
   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é$   c                 ó$   • [        U 5      S-  U-  $ )Nr   )Úint)Útype_Ú	bit_widths     r   ÚPackÚ	Type.PackÊ   s   € ä�‹J˜!‰O˜yÑ(Ð(r   c                 ó.   • SU S-  -  [        U S-	  5      4$ )Nr   r   r   )r   ©Úpacked_types    r   ÚUnpackÚType.UnpackÎ   s!   € à�˜tÑ#Ñ$¤d¨;¸!Ñ+;Ó&<Ð<Ð<r   c                 ó\   • U [         R                  :*  =(       d    U [         R                  :H  $ rc   )r   ÚFLOATÚBOOL©r…   s    r   ÚIsInlineÚType.IsInlineÒ   s   € à”D—J‘JÑ×4 %¬4¯9©9Ñ"4Ð4r   c                 ó˜   • [         R                  U s=:*  =(       a    [         R                  :*  Os  =(       d    U [         R                  :H  $ rc   )r   Ú
VECTOR_INTÚVECTOR_STRING_DEPRECATEDÚVECTOR_BOOLr‘   s    r   ÚIsTypedVectorÚType.IsTypedVectorÖ   s6   € ô 	�‰˜5×AÓA¤D×$AÑ$AÔA÷ 	%Ø”D×$Ñ$Ñ$ðr   c                 ó˜   • [         R                  U s=:*  =(       a    [         R                  :*  Os  =(       d    U [         R                  :H  $ rc   )r   ÚINTÚSTRINGr�   r‘   s    r   ÚIsTypedVectorElementTypeÚType.IsTypedVectorElementTypeÝ   s+   € ä�8‰8�u×+Ó+¤§¡Ô+×A¨u¼¿	¹	Ñ/AÐAr   c                 ó¦   • [         R                  U 5      (       d  [        S5      e[        U [         R                  -
  [         R                  -   5      $ )Nzmust be typed vector type)r   r˜   r   r•   r›   r‘   s    r   ÚToTypedVectorElementTypeÚType.ToTypedVectorElementTypeá   s<   € ä×Ñ˜e×$Ñ$ÜÐ2Ó3Ð3ä�œŸ™Ñ'¬$¯(©(Ñ2Ó3Ð3r   c                 ód   • [         R                  U s=:*  =(       a    [         R                  :*  $ s  $ rc   )r   ÚVECTOR_INT2ÚVECTOR_FLOAT4r‘   s    r   ÚIsFixedTypedVectorÚType.IsFixedTypedVectorè   s'   € ä×Ñ˜u×:Ó:¬×(:Ñ(:Ñ:Ð:Ñ:Ð:r   c                 ód   • [         R                  U s=:*  =(       a    [         R                  :*  $ s  $ rc   )r   r›   r�   r‘   s    r   ÚIsFixedTypedVectorElementTypeÚ"Type.IsFixedTypedVectorElementTypeì   s#   € ä�8‰8�u×*Ó*¤§
¡
Ñ*Ð*Ñ*Ð*r   c                 óÀ   • [         R                  U 5      (       d  [        S5      eU [         R                  -
  n[        US-  [         R                  -   5      US-  S-   4$ )Nzmust be fixed typed vector typer   r   )r   r¥   r   r£   r›   )r…   Ú
fixed_types     r   ÚToFixedTypedVectorElementTypeÚ"Type.ToFixedTypedVectorElementTypeð   sW   € ä×"Ñ" 5×)Ñ)ÜÐ8Ó9Ð9ð œ×)Ñ)Ñ)€JÜ�
˜Q‘¤§¡Ñ)Ó*¨J¸!©O¸aÑ,?Ð?Ð?r   c                 óö  • US:X  a&  [         R                  U 5      (       d  [        S5      eO%[         R                  U 5      (       d  [        S5      eU [         R                  -
  nUS:X  a  [        U[         R
                  -   5      $ US:X  a  [        U[         R                  -   5      $ US:X  a  [        U[         R                  -   5      $ US:X  a  [        U[         R                  -   5      $ [        SU-  5      e)zõConverts element type to corresponding vector type.

Args:
  element_type: vector element type
  fixed_len: number of elements: 0 for typed vector; 2, 3, or 4 for fixed
    typed vector.

Returns:
  Typed vector type or fixed typed vector type.
r   z!must be typed vector element typeú'must be fixed typed vector element typer   r   r&   zunsupported fixed_len: %s)	r   r�   r   r¨   r›   r•   r£   ÚVECTOR_INT3ÚVECTOR_INT4)Úelement_typeÚ	fixed_lenrZ   s      r   ÚToTypedVectorÚType.ToTypedVectorù   sÝ   € ð �Aƒ~Ü×*Ñ*¨<×8Ñ8ÜÐ<Ó=Ð=ð 9ô ×/Ñ/°×=Ñ=ÜÐBÓCÐCàœDŸH™HÑ$€FØ�Aƒ~Ü�&œ4Ÿ?™?Ñ*Ó+Ð+Ø	�a‹Ü�&œ4×+Ñ+Ñ+Ó,Ð,Ø	�a‹Ü�&œ4×+Ñ+Ñ+Ó,Ð,Ø	�a‹Ü�&œ4×+Ñ+Ñ+Ó,Ð,äÐ2°YÑ>Ó?Ð?r   r,   N©r   )-r-   r.   r/   r0   r1   ÚNULLr›   ÚUINTr�   ÚKEYrœ   ÚINDIRECT_INTÚINDIRECT_UINTÚINDIRECT_FLOATÚMAPÚVECTORr•   ÚVECTOR_UINTÚVECTOR_FLOATÚ
VECTOR_KEYr–   r£   ÚVECTOR_UINT2ÚVECTOR_FLOAT2r°   ÚVECTOR_UINT3ÚVECTOR_FLOAT3r±   ÚVECTOR_UINT4r¤   ÚBLOBr�   r—   r2   r‡   rŒ   r’   r˜   r�   r    r¥   r¨   r¬   r´   r3   r,   r   r   r   r       sd  † ñð 
€$Ø	€#Ø	
€$Ø
€%à	€#Ø€&Ø€,Ø€-Ø€.Ø	€#Ø€&à€*Ø€+Ø€,Ø€*ð  Ðà€+Ø€,Ø€-Ø€+Ø€,Ø€-Ø€+Ø€,Ø€-à	€$Ø	€$Ø€+àñ)ó ð)ð ñ=ó ð=ð ñ5ó ð5ð ñó ðð ñBó ðBð ñ4ó ð4ð ñ;ó ð;ð ñ+ó ð+ð ñ@ó ð@ð ó@ó ó@r   r   c                   óB   • \ rS rSrSrS rS rS rS rS r	S r
S	 rS
rg)ÚBufi  zHClass to access underlying buffer object starting from the given offset.c                 ó€   • Xl         US:¼  a  UO[        U5      U-   U l        [        U5      U R                  -
  U l        g rT   )Ú_bufr>   Ú_offsetÚ_length)Úselfr@   rZ   s      r   Ú__init__ÚBuf.__init__  s3   € Ø„IØ# q›[‘6¬c°#«h¸Ñ.?€D„LÜ�s“8˜dŸl™lÑ*€D…Lr   c                 óþ   • [        U[        5      (       a-  U R                  [        XR                  U R
                  5         $ [        U[        5      (       a  U R                  U R                  U-      $ [        S5      e©Nzinvalid key type©Ú
isinstancerW   rË   r[   rÌ   rÍ   r„   Ú	TypeError©rÎ   Úkeys     r   Ú__getitem__ÚBuf.__getitem__!  s^   € Ü�#”u×ÑØ�Y‰Y”{ 3¯©°d·l±lÓCÑDÐDÜ	�Cœ×	Ñ	Ø�Y‰Y�t—|‘| cÑ)Ñ*Ð*äÐ(Ó)Ð)r   c                 óþ   • [        U[        5      (       a-  X R                  [        XR                  U R
                  5      '   g [        U[        5      (       a  XR                  U R                  U-   '   g [        S5      erÒ   rÓ   )rÎ   r×   r   s      r   Ú__setitem__ÚBuf.__setitem__)  sX   € Ü�#”u×ÑØ@E‡i�i”˜C§¡¨t¯|©|Ó<Ò=Ü	�Cœ×	Ñ	Ø&)‡i�i�—‘˜sÑ"Ò#äÐ(Ó)Ð)r   c                 ó    • SU R                   -  $ )Nzbuf[%d:])rÌ   ©rÎ   s    r   Ú__repr__ÚBuf.__repr__1  s   € Ø˜Ÿ™Ñ$Ð$r   c                 óR   • U R                   U R                  S R                  U5      $ )z<Returns the lowest index where the sub subsequence is found.N)rË   rÌ   Úfind)rÎ   Úsubs     r   ÚFindÚBuf.Find4  s"   € à�9‰9�T—\‘\�^Ð$×)Ñ)¨#Ó.Ð.r   c                 óH   • [        U R                  U R                  U-   5      $ )z5Returns new `Buf` which starts from the given offset.)rÉ   rË   rÌ   )rÎ   rZ   s     r   ÚSliceÚ	Buf.Slice8  s   € äˆt�y‰y˜$Ÿ,™,¨Ñ/Ó0Ð0r   c           
      óN   • U R                  U[        [        XX-    5      -
  5      $ )zAReturn new `Buf` based on the encoded offset (indirect encoding).)rç   rA   r   )rÎ   rZ   r)   s      r   ÚIndirectÚBuf.Indirect<  s%   € à�:‰:�fœw¤q¨$¸Ñ8KÐ*LÓMÑMÓNÐNr   )rË   rÍ   rÌ   N)r-   r.   r/   r0   r1   rÏ   rØ   rÛ   rß   rä   rç   rê   r3   r,   r   r   rÉ   rÉ     s)   † ÙPò+ò
*ò*ò%ò/ò1õOr   rÉ   c                   ó2   • \ rS rSrSrSrS r\S 5       rSr	g)ÚObjectiA  z.Base class for all non-trivial data accessors.©rË   Ú_byte_widthc                 ó   • Xl         X l        g rc   rî   )rÎ   r@   r)   s      r   rÏ   ÚObject.__init__F  s   € Ø„IØ!Õr   c                 ó   • U R                   $ rc   )rï   rÞ   s    r   Ú	ByteWidthÚObject.ByteWidthJ  s   € à×ÑÐr   N)
r-   r.   r/   r0   r1   Ú	__slots__rÏ   Úpropertyró   r3   r,   r   r   rí   rí   A  s#   † Ù6à#€)ò"ð ñó ór   rí   c                   óJ   ^ • \ rS rSrSrSrSU 4S jjr\S 5       rS r	Sr
U =r$ )ÚSizediO  zBBase class for all data accessors which need to read encoded size.©Ú_sizec                 ó|   >• [         TU ]  X5        US:X  a   [        [        U R                  5      U l        g X0l        g rT   )ÚsuperrÏ   rA   r   Ú	SizeBytesrú   )rÎ   r@   r)   ÚsizeÚ	__class__s       €r   rÏ   ÚSized.__init__T  s.   ø€ Ü	�GÑ�SÔ%ØˆqƒyÜœ1˜dŸn™nÓ-€d…jà…jr   c                 ó6   • U R                   U R                  * S $ rT   rî   rÞ   s    r   rý   ÚSized.SizeBytes[  s   € à�9‰9�d×&Ñ&Ð&¨Ð+Ð+r   c                 ó   • U R                   $ rc   rù   rÞ   s    r   Ú__len__ÚSized.__len___  s   € Ø�:‰:Ðr   r¶   )r-   r.   r/   r0   r1   rõ   rÏ   rö   rý   r  r3   Ú__classcell__©rÿ   s   @r   rø   rø   O  s.   ø† ÙJà€)÷ð ñ,ó ð,÷ð r   rø   c                   ó2   • \ rS rSrSrSr\S 5       rS rSr	g)ÚBlobic  z)Data accessor for the encoded blob bytes.r,   c                 ó2   • U R                   S[        U 5       $ rT   ©rË   r>   rÞ   s    r   ÚBytesÚ
Blob.Bytesh  ó   € à�9‰9�Qœ˜T›Ð#Ð#r   c                 ó6   • SU R                   [        U 5      4-  $ )NzBlob(%s, size=%d)r  rÞ   s    r   rß   ÚBlob.__repr__l  s   € Ø $§)¡)¬S°«YÐ!7Ñ7Ð7r   N)
r-   r.   r/   r0   r1   rõ   rö   r  rß   r3   r,   r   r   r	  r	  c  s!   † Ù1à€)àñ$ó ð$õ8r   r	  c                   ó>   • \ rS rSrSrSr\S 5       rS rS r	S r
Srg)	ÚStringip  z+Data accessor for the encoded string bytes.r,   c                 ó2   • U R                   S[        U 5       $ rT   r  rÞ   s    r   r  ÚString.Bytesu  r  r   c                 ó6  • UR                  S5      n[        U5      nU[        U 5      ::  an  [        [        X0R                  5      U R
                  U R                  * S& X R
                  SU& [        [        U 5      U-
  5      U R
                  U[        U 5      & gg)a  Mutates underlying string bytes in place.

Args:
  value: New string to replace the existing one. New string must have less
    or equal UTF-8-encoded bytes than the existing one to successfully
    mutate underlying byte buffer.

Returns:
  Whether the value was mutated or not.
úutf-8r   TF)Úencoder>   rG   r   rï   rË   Ú	bytearray)rÎ   r   ÚencodedÚns       r   ÚMutateÚString.Mutatey  s€   € ð �l‰l˜7Ó#€GÜˆG‹€AØŒC�‹Iƒ~Ü).¬q°!×5EÑ5EÓ)F€d‡i�i�×!Ñ!Ð! AÐ&Ø‡i�i��!€nÜ!*¬3¨t«9°q©=Ó!9€d‡i�i�”C˜“IÐØØr   c                 ó8   • U R                   R                  S5      $ )Nr  ©r  ÚdecoderÞ   s    r   Ú__str__ÚString.__str__�  ó   € Ø�:‰:×Ñ˜WÓ%Ð%r   c                 ó6   • SU R                   [        U 5      4-  $ )NzString(%s, size=%d)r  rÞ   s    r   rß   ÚString.__repr__�  s   € Ø  D§I¡I¬s°4«yÐ#9Ñ9Ð9r   N)r-   r.   r/   r0   r1   rõ   rö   r  r  r   rß   r3   r,   r   r   r  r  p  s+   † Ù3à€)àñ$ó ð$òò(&õ:r   r  c                   óR   ^ • \ rS rSrSrSrU 4S jr\S 5       rS r	S r
S rSrU =r$ )	ÚKeyi”  z(Data accessor for the encoded key bytes.r,   c                 ó4   >• US:X  d   e[         TU ]  X5        g rO   )rü   rÏ   )rÎ   r@   r)   rÿ   s      €r   rÏ   ÚKey.__init__™  s   ø€ Ø˜‹?Ðˆ?Ü	�GÑ�SÕ%r   c                 ó2   • U R                   S[        U 5       $ rT   r  rÞ   s    r   r  Ú	Key.Bytes�  r  r   c                 ó8   • U R                   R                  S5      $ rT   )rË   rä   rÞ   s    r   r  ÚKey.__len__¡  s   € Ø�9‰9�>‰>˜!ÓÐr   c                 ó8   • U R                   R                  S5      $ )NÚasciir  rÞ   s    r   r   ÚKey.__str__¤  r"  r   c                 ó6   • SU R                   [        U 5      4-  $ )NzKey(%s, size=%d)r  rÞ   s    r   rß   ÚKey.__repr__§  ó   € Ø §¡¬C°«IÐ 6Ñ6Ð6r   )r-   r.   r/   r0   r1   rõ   rÏ   rö   r  r  r   rß   r3   r  r  s   @r   r&  r&  ”  s8   ø† Ù0à€)õ&ð ñ$ó ð$òò&÷7ð 7r   r&  c                   ó8   • \ rS rSrSrSrS r\S 5       rS r	Sr
g)ÚVectori«  z+Data accessor for the encoded vector bytes.r,   c                 ó<  • US:  d  U[        U 5      :¼  a  [        SU[        U 5      4-  5      eU R                  [        U 5      U R                  -  U-      nU R                  R	                  XR                  -  5      n[
        R                  X0R                  U5      $ )Nr   ú'vector index %s is out of [0, %d) range)r>   Ú
IndexErrorrË   rï   rç   ÚRefÚ
PackedType)rÎ   ri   r‹   r@   s       r   rØ   ÚVector.__getitem__°  sˆ   € Øˆqƒy�EœS ›YÓ&ÜØ
3°u¼cÀ$»iÐ6HÑ
Hóð ð —)‘)œC ›I¨×(8Ñ(8Ñ8¸5Ñ@ÑA€KØ
�)‰)�/‰/˜%×"2Ñ"2Ñ2Ó
3€CÜ�>‰>˜#×/Ñ/°Ó=Ð=r   c                 óD   • U  Vs/ s H  oR                   PM     sn$ s  snf )z5Returns the underlying encoded data as a list object.)ÚValue©rÎ   Úes     r   r<  ÚVector.Valueº  s   € ñ "Ó"šT˜�GŒG™TÑ"Ð"ùÒ"s   …c                 óN   • SU R                   U R                  U R                  4-  $ )Nz"Vector(%s, byte_width=%d, size=%d))rË   rï   rú   rÞ   s    r   rß   ÚVector.__repr__¿  s+   € Ø/Ø�	‰	Ø×ÑØ�
‰
ð3ñ ð r   N)r-   r.   r/   r0   r1   rõ   rØ   rö   r<  rß   r3   r,   r   r   r4  r4  «  s(   † Ù3à€)ò>ð ñ#ó ð#õr   r4  c                   óp   ^ • \ rS rSrSrSrSU 4S jjr\S 5       r\S 5       r	S r
\S 5       rS	 rS
rU =r$ )ÚTypedVectoriÇ  zGData accessor for the encoded typed vector or fixed typed vector bytes.)Ú_element_typerú   c                 óz   >• [         TU ]  XU5        U[        R                  :X  a  [        R                  nX0l        g rc   )rü   rÏ   r   rœ   r¹   rD  )rÎ   r@   r)   r²   rþ   rÿ   s        €r   rÏ   ÚTypedVector.__init__Ì  s/   ø€ Ü	�GÑ�S dÔ+à”t—{‘{Ó"ô —X‘X€là%Õr   c                 óL   • U R                   S U R                  [        U 5      -   $ rc   )rË   rï   r>   rÞ   s    r   r  ÚTypedVector.BytesÚ  s#   € à�9‰9Ð3�t×'Ñ'¬#¨d«)Ñ3Ð4Ð4r   c                 ó   • U R                   $ rc   ©rD  rÞ   s    r   ÚElementTypeÚTypedVector.ElementTypeÞ  s   € à×ÑÐr   c                 óî   • US:  d  U[        U 5      :¼  a  [        SU[        U 5      4-  5      eU R                  R                  XR                  -  5      n[        X R                  SU R                  5      $ )Nr   r6  r   )r>   r7  rË   rç   rï   r8  rD  )rÎ   ri   r@   s      r   rØ   ÚTypedVector.__getitem__â  sj   € Øˆqƒy�EœS ›YÓ&ÜØ
3°u¼cÀ$»iÐ6HÑ
Hóð ð �)‰)�/‰/˜%×"2Ñ"2Ñ2Ó
3€CÜˆs×$Ñ$ a¨×);Ñ);Ó<Ð<r   c           	      ó¸  • U (       d  / $ U R                   [        R                  L a>  [        [        U R
                  [        U 5      5       Vs/ s H  n[        U5      PM     sn$ U R                   [        R                  L a-  [        [        [        U R
                  [        U 5      5      5      $ U R                   [        R                  L a-  [        [        [        U R
                  [        U 5      5      5      $ U R                   [        R                  L a-  [        [        [        U R
                  [        U 5      5      5      $ U R                   [        R                  L a  U  Vs/ s H  oR                  PM     sn$ U R                   [        R                   L a  U  Vs/ s H  oR"                  PM     sn$ [%        SU R                   -  5      es  snf s  snf s  snf )z'Returns underlying data as list object.úunsupported element_type: %s)rD  r   r�   rE   r   r  r>   Úboolr›   Úlistr   r¸   r�   r"   r¹   ÚAsKeyrœ   ÚAsStringrÕ   r=  s     r   r<  ÚTypedVector.Valueë  sK  € ö Ø€ià×ÑœTŸY™YÒ&Ü,¬Q°·
±
¼CÀ»IÔFÓGÒF˜!Œd�1ŽgÑFÑGÐGØ	×	Ñ	œtŸx™xÒ	'Ü”-¤ 4§:¡:¬s°4«yÓ9Ó:Ð:Ø	×	Ñ	œtŸy™yÒ	(Ü”-¤ 4§:¡:¬s°4«yÓ9Ó:Ð:Ø	×	Ñ	œtŸz™zÒ	)Ü”-¤ 4§:¡:¬s°4«yÓ9Ó:Ð:Ø	×	Ñ	œtŸx™xÒ	'Ù#Ó$št˜!�gŒg™tÑ$Ð$Ø	×	Ñ	œtŸ{™{Ò	*Ù"&Ó'¢$˜Q�jŒj¡$Ñ'Ð'äÐ4°t×7IÑ7IÑIÓJÐJùò Hùò %ùâ's   ÁGÅ$GÆGc                 ód   • SU R                   U R                  U R                  U R                  4-  $ )Nz8TypedVector(%s, byte_width=%d, element_type=%s, size=%d))rË   rï   rD  rú   rÞ   s    r   rß   ÚTypedVector.__repr__   s5   € ØEØ�	‰	Ø×ÑØ×ÑØ�
‰
ð	Iñ ð r   rJ  r¶   )r-   r.   r/   r0   r1   rõ   rÏ   rö   r  rK  rØ   r<  rß   r3   r  r  s   @r   rC  rC  Ç  s]   ø† ÙOà&€)÷&ð ñ5ó ð5ð ñó ðò=ð ñKó ðK÷(ð r   rC  c                   ór   ^ • \ rS rSrSr\S 5       rU 4S jr\S 5       r	\S 5       r
\S 5       rS rS	rU =r$ )
ÚMapi	  z(Data accessor for the encoded map bytes.c                 óŽ   • [        U [        5      (       a  U R                  n [        U[        5      (       a  UR                  nX:  $ rc   )rÔ   r8  Ú
AsKeyBytes©Úar4   s     r   ÚCompareKeysÚMap.CompareKeys  s5   € ä�!”S×ÑØ
�,‰,€aÜ�!”S×ÑØ
�,‰,€aØ‰5€Lr   c                 óì   >• [        U[        5      (       a  [        TU ]  U5      $ [	        U R
                  UR                  S5      U R                  5      nUS:w  a  [        TU ]  U5      $ [        U5      e)Nr.  rh   )	rÔ   r„   rü   rØ   rj   ÚKeysr  r^  ÚKeyError)rÎ   r×   ri   rÿ   s      €r   rØ   ÚMap.__getitem__  sb   ø€ Ü�#”s×ÑÜ‰WÑ  Ó%Ð%ä˜$Ÿ)™) S§Z¡Z°Ó%8¸$×:JÑ:JÓK€EØ�ƒ{Ü‰WÑ  Ó'Ð'ä
�3‹-Ðr   c                 ó  • [        [        U R                  SU R                  -  U R                  *  5      nU R                  R	                  SU R                  -  U R                  5      n[        X![        R                  5      $ )Néþÿÿÿéýÿÿÿ)rA   r   rË   rï   rê   rC  r   r¹   )rÎ   r)   r@   s      r   ra  ÚMap.Keys  sj   € äÜ	ˆ4�9‰9�R˜$×*Ñ*Ñ*¨d×.>Ñ.>Ð->Ð?ó€Jð �)‰)×
Ñ
˜R $×"2Ñ"2Ñ2°D×4DÑ4DÓ
E€CÜ�s¬¯©Ó1Ð1r   c                 óB   • [        U R                  U R                  5      $ rc   )r4  rË   rï   rÞ   s    r   ÚValuesÚ
Map.Values&  s   € ä�$—)‘)˜T×-Ñ-Ó.Ð.r   c                 ó¢   • [        U R                  U R                  5       VVs0 s H  u  pUR                  UR                  _M     snn$ s  snnf rc   )Úzipra  ri  r<  )rÎ   ÚkÚvs      r   r<  Ú	Map.Value*  s:   € ä),¨T¯Y©Y¸¿¹Ô)DÔEÒ)D¡ ˆA�G‰G�Q—W‘WÒÑ)DÒEÐEùÓEs   ¤#Ac                 ó6   • SU R                   [        U 5      4-  $ )NzMap(%s, size=%d)r  rÞ   s    r   rß   ÚMap.__repr__.  r2  r   r,   )r-   r.   r/   r0   r1   r2   r^  rØ   rö   ra  ri  r<  rß   r3   r  r  s   @r   rY  rY  	  se   ø† Ù0àñó ðõð ñ2ó ð2ð ñ/ó ð/ð ñFó ðF÷7ð 7r   rY  c                   ó  • \ rS rSrSrSr\S 5       rS rS r	\
S 5       rS rS	 r\
S
 5       r\
S 5       r\
S 5       rS r\
S 5       r\
S 5       r\
S 5       rS r\
S 5       r\
S 5       rS r\
S 5       r\
S 5       r\
S 5       r\
S 5       r\
S 5       r\
S 5       rS r\
S 5       r \
S 5       r!\
S 5       r"\
S 5       r#\
S  5       r$\
S! 5       r%\
S" 5       r&\
S# 5       r'\
S$ 5       r(\
S% 5       r)\
S& 5       r*\
S' 5       r+S(r,g))*r8  i2  z)Data accessor for the encoded data bytes.©rË   Ú_parent_widthrï   Ú_typec                 óH   • [         R                  U5      u  p4[        XX45      $ rc   )r   rŒ   r8  )r@   Úparent_widthr‹   r)   r…   s        r   r9  ÚRef.PackedType7  s    € äŸ™ KÓ0Ñ€JÜˆs *Ó4Ð4r   c                 ó4   • Xl         X l        X0l        X@l        g rc   rs  )rÎ   r@   rw  r)   r…   s        r   rÏ   ÚRef.__init__<  s   € Ø„IØ%ÔØ!ÔØ…Jr   c                 ód   • SU R                   U R                  U R                  U R                  4-  $ )Nz1Ref(%s, parent_width=%d, byte_width=%d, type_=%s)rs  rÞ   s    r   rß   ÚRef.__repr__B  s5   € Ø>Ø�	‰	Ø×ÑØ×ÑØ�
‰
ð	Bñ ð r   c                 ó4   • U R                   S U R                   $ rc   )rË   rt  rÞ   s    r   Ú_BytesÚ
Ref._BytesJ  s   € à�9‰9Ð)�t×)Ñ)Ð*Ð*r   c                 ó<   • [        SU R                  < SU< 35      e)Nzcannot convert z to )rÕ   ru  )rÎ   Útarget_types     r   Ú_ConvertErrorÚRef._ConvertErrorN  s   € Ý
°·´º[ÐIÓ
JÐJr   c                 óN   • U R                   R                  SU R                  5      $ rT   )rË   rê   rt  rÞ   s    r   Ú	_IndirectÚRef._IndirectQ  s   € Ø�9‰9×Ñ˜a ×!3Ñ!3Ó4Ð4r   c                 ó:   • U R                   [        R                  L $ rc   )ru  r   r·   rÞ   s    r   ÚIsNullÚ
Ref.IsNullT  ó   € à�:‰:œŸ™Ð"Ð"r   c                 ó:   • U R                   [        R                  L $ rc   )ru  r   r�   rÞ   s    r   ÚIsBoolÚ
Ref.IsBoolX  rŠ  r   c                 ó    • U R                   [        R                  L a#  [        [	        [
        U R                  5      5      $ U R                  S:g  $ rT   )ru  r   r�   rQ  rA   r   r~  ÚAsIntrÞ   s    r   ÚAsBoolÚ
Ref.AsBool\  s6   € à‡z�z”T—Y‘YÒÜ”'œ!˜TŸ[™[Ó)Ó*Ð*à�Z‰Z˜1‰_Ðr   c                 ó�   • U R                   =(       a4    [        [        U R                  XR                  [
        R                  5      $ )z†Mutates underlying boolean value bytes in place.

Args:
  value: New boolean value.

Returns:
  Whether the value was mutated or not.
)rŒ  rM   r   rË   rt  r	   r   ©rÎ   r   s     r   Ú
MutateBoolÚRef.MutateBoolc  s3   € ð �;‰;÷ œ7Ü	ˆ4�9‰9�e×/Ñ/´·±óð r   c                 ó@   • U R                   =(       d    U R                  $ rc   )ÚIsIntÚIsFloatrÞ   s    r   Ú	IsNumericÚRef.IsNumericp  s   € à�:‰:×%˜Ÿ™Ð%r   c                 ó˜   • U R                   [        R                  [        R                  [        R                  [        R
                  4;   $ rc   )ru  r   r›   rº   r¸   r»   rÞ   s    r   r—  Ú	Ref.IsIntt  s8   € à�:‰:Ü�‰Ü×ÑÜ�	‰	Ü×Ñð	ñ ð r   c                 ót  • U R                   (       a  gU R                  (       a  [        U R                  5      $ U R                  [
        R                  L a  [        [        U R                  5      $ U R                  [
        R                  L a+  [        [        U R                  5       SU R                   5      $ U R                  [
        R                  L a  [        [        U R                  5      $ U R                  [
        R                  L a+  [        [        U R                  5       SU R                   5      $ U R                   (       a  [#        U R$                  5      $ U R&                  (       a  [#        U R(                  5      $ U R*                  (       a  [#        U R,                  5      $ U R.                  (       a  [#        U R0                  5      $ U R2                  (       a  [#        U R4                  5      $ U R6                  (       a  [#        U R8                  5      $ U R;                  [
        R                  5      e)z+Returns current reference as integer value.r   N)rˆ  rŒ  r„   r�  ru  r   r›   rA   r   r~  rº   r…  rï   r¸   r   r»   ÚIsStringr>   rT  ÚIsKeyrS  ÚIsBlobÚAsBlobÚIsVectorÚAsVectorr˜   ÚAsTypedVectorr¥   ÚAsFixedTypedVectorr‚  rÞ   s    r   r�  Ú	Ref.AsInt}  sn  € ð ‡{‡{ØØ	��Ü�—‘ÓÐØ	�‰”t—x‘xÒ	Ü”Q˜Ÿ™Ó$Ð$Ø	�‰”t×(Ñ(Ò	(Ü”Q˜Ÿ™Ó(Ð);¨4×+;Ñ+;Ð<Ó=Ð=Ø‡z�z”T—Y‘YÒÜ”Q˜Ÿ™Ó$Ð$Ø	�‰”t×)Ñ)Ò	)Ü”Q˜Ÿ™Ó(Ð);¨4×+;Ñ+;Ð<Ó=Ð=Ø	��Ü�—‘ÓÐØ	��Ü�—‘‹_ÐØ	��Ü�—‘ÓÐØ	��Ü�—‘ÓÐØ	×	×	Ü�×#Ñ#Ó$Ð$Ø	×	 ×	 Ü�×(Ñ(Ó)Ð)à×ÑœtŸx™xÓ(Ð(r   c           	      óÄ  • U R                   [        R                  L a9  [        [        U R
                  XR                  [        R	                  U5      5      $ U R                   [        R                  L a=  [        [        U R                  5       XR                  [        R	                  U5      5      $ U R                   [        R                  L a9  [        [        U R
                  XR                  [        R                  U5      5      $ U R                   [        R                  L a=  [        [        U R                  5       XR                  [        R                  U5      5      $ g)zÆMutates underlying integer value bytes in place.

Args:
  value: New integer value. It must fit to the byte size of the existing
    encoded value.

Returns:
  Whether the value was mutated or not.
F)ru  r   r›   rM   r   rË   rt  r	   rº   r…  rï   r¸   r   r»   r“  s     r   Ú	MutateIntÚRef.MutateInt›  sï   € ð ‡z�z”T—X‘XÒÜ”Q˜Ÿ	™	 5×*<Ñ*<¼h¿j¹jÈÓ>OÓPÐPØ	�‰”t×(Ñ(Ò	(ÜÜ
ˆT�^‰^Ó˜u×&6Ñ&6¼¿
¹
À5Ó8Ióð ð 
�‰”t—y‘yÒ	 Ü”Q˜Ÿ	™	 5×*<Ñ*<¼h¿j¹jÈÓ>OÓPÐPØ	�‰”t×)Ñ)Ò	)ÜÜ
ˆT�^‰^Ó˜u×&6Ñ&6¼¿
¹
À5Ó8Ióð ð r   c                 ó\   • U R                   [        R                  [        R                  4;   $ rc   )ru  r   r�   r¼   rÞ   s    r   r˜  ÚRef.IsFloat´  s    € à�:‰:œ$Ÿ*™*¤d×&9Ñ&9Ð:Ñ:Ð:r   c                 óp  • U R                   (       a  gU R                  (       a  [        U R                  5      $ U R                  (       a  [        U R
                  5      $ U R                  [        R                  L a  [        [        U R                  5      $ U R                  [        R                  L a+  [        [        U R                  5       SU R                   5      $ U R                  (       a  [        U R                   5      $ U R"                  (       a  [        [%        U R&                  5      5      $ U R)                  5       (       a  [        [%        U R*                  5      5      $ U R-                  5       (       a  [        [%        U R.                  5      5      $ U R1                  [        R                  5      e)z2Returns current reference as floating point value.g        N)rˆ  rŒ  Úfloatr�  r—  r�  ru  r   r�   rA   r"   r~  r¼   r…  rï   rž  rT  r¢  r>   r£  r˜   r¤  r¥   ÚFixedTypedVectorr‚  rÞ   s    r   ÚAsFloatÚRef.AsFloat¸  s  € ð ‡{‡{ØØ	��Ü�4—;‘;ÓÐØ	��Ü�4—:‘:ÓÐØ	�‰”t—z‘zÒ	!Ü”Q˜Ÿ™Ó$Ð$Ø	�‰”t×*Ñ*Ò	*Ü”Q˜Ÿ™Ó(Ð);¨4×+;Ñ+;Ð<Ó=Ð=Ø	��Ü�4—=‘=Ó!Ð!Ø	��Ü”3�t—}‘}Ó%Ó&Ð&Ø	×	Ñ	×	Ñ	Ü”3�t×)Ñ)Ó*Ó+Ð+Ø	×	 Ñ	 ×	"Ñ	"Ü”3�t×,Ñ,Ó-Ó.Ð.à×ÑœtŸz™zÓ*Ð*r   c           	      ó�  • U R                   [        R                  L aD  [        [        U R
                  UU R                  [        R                  U R                  5      5      $ U R                   [        R                  L aH  [        [        U R                  5       UU R                  [        R                  U R                  5      5      $ g)zËMutates underlying floating point value bytes in place.

Args:
  value: New float value. It must fit to the byte size of the existing
    encoded value.

Returns:
  Whether the value was mutated or not.
F)ru  r   r�   rM   r"   rË   rt  r	   r*   r¼   r…  rï   r“  s     r   ÚMutateFloatÚRef.MutateFloatÐ  sš   € ð ‡z�z”T—Z‘ZÒÜÜ
Ø
�)‰)Ø
Ø
×
Ñ
Ü
�*‰*�T×'Ñ'Ó
(óð ð 
�‰”t×*Ñ*Ò	*ÜÜ
Ø
�.‰.Ó
Ø
Ø
×
Ñ
Ü
�*‰*�T×%Ñ%Ó
&óð ð r   c                 ó:   • U R                   [        R                  L $ rc   )ru  r   r¹   rÞ   s    r   rŸ  Ú	Ref.IsKeyí  ó   € à�:‰:œŸ™Ð!Ð!r   c                 ó¾   • U R                   (       a.  [        U R                  5       U R                  5      R                  $ U R                  [        R                  5      erc   )rŸ  r&  r…  rï   r  r‚  r   r¹   rÞ   s    r   r[  ÚRef.AsKeyBytesñ  s>   € à‡z‡zÜ�—‘Ó! 4×#3Ñ#3Ó4×:Ñ:Ð:à×ÑœtŸx™xÓ(Ð(r   c                 ó¼   • U R                   (       a-  [        [        U R                  5       U R                  5      5      $ U R                  [        R                  5      erc   )rŸ  Ústrr&  r…  rï   r‚  r   r¹   rÞ   s    r   rS  Ú	Ref.AsKeyø  s=   € à‡z‡zÜ”�T—^‘^Ó% t×'7Ñ'7Ó8Ó9Ð9à×ÑœtŸx™xÓ(Ð(r   c                 ó:   • U R                   [        R                  L $ rc   )ru  r   rœ   rÞ   s    r   rž  ÚRef.IsStringÿ  s   € à�:‰:œŸ™Ð$Ð$r   c                 óø   • U R                   (       a.  [        U R                  5       U R                  5      R                  $ U R
                  (       a  U R                  $ U R                  [        R                  5      erc   )
rž  r  r…  rï   r  rŸ  r[  r‚  r   rœ   rÞ   s    r   ÚAsStringBytesÚRef.AsStringBytes  sO   € à‡}‡}Ü�D—N‘NÓ$ d×&6Ñ&6Ó7×=Ñ=Ð=Ø	��Ø�_‰_Ðà×ÑœtŸ{™{Ó+Ð+r   c                 óö   • U R                   (       a-  [        [        U R                  5       U R                  5      5      $ U R
                  (       a  U R                  $ U R                  [        R                  5      erc   )
rž  rº  r  r…  rï   rŸ  rS  r‚  r   rœ   rÞ   s    r   rT  ÚRef.AsString  sN   € à‡}‡}Ü”˜Ÿ™Ó(¨$×*:Ñ*:Ó;Ó<Ð<Ø	��Ø�Z‰ZÐà×ÑœtŸ{™{Ó+Ð+r   c                 óh   • [        U R                  5       U R                  5      R                  U5      $ rc   )r  r…  rï   r  r“  s     r   ÚMutateStringÚRef.MutateString  s'   € Ü�$—.‘.Ó" D×$4Ñ$4Ó5×<Ñ<¸UÓCÐCr   c                 ó:   • U R                   [        R                  L $ rc   )ru  r   rÇ   rÞ   s    r   r   Ú
Ref.IsBlob  rŠ  r   c                 ó¾   • U R                   (       a.  [        U R                  5       U R                  5      R                  $ U R                  [        R                  5      erc   )r   r	  r…  rï   r  r‚  r   rÇ   rÞ   s    r   r¡  Ú
Ref.AsBlob  s>   € à‡{‡{Ü�$—.‘.Ó" D×$4Ñ$4Ó5×;Ñ;Ð;à×ÑœtŸy™yÓ)Ð)r   c                 ón   • U R                   =(       d#    U R                  =(       d    U R                  5       $ rc   )r¢  r˜   r¥   rÞ   s    r   ÚIsAnyVectorÚRef.IsAnyVector#  s%   € à�=‰=×K˜D×.Ñ.×K°$×2IÑ2IÓ2KÐKr   c                 ó\   • U R                   [        R                  [        R                  4;   $ rc   )ru  r   r¾   r½   rÞ   s    r   r¢  ÚRef.IsVector'  s   € à�:‰:œ$Ÿ+™+¤t§x¡xÐ0Ñ0Ð0r   c                 óª   • U R                   (       a$  [        U R                  5       U R                  5      $ U R	                  [
        R                  5      erc   )r¢  r4  r…  rï   r‚  r   r¾   rÞ   s    r   r£  ÚRef.AsVector+  s8   € à‡}‡}Ü�D—N‘NÓ$ d×&6Ñ&6Ó7Ð7à×ÑœtŸ{™{Ó+Ð+r   c                 ó@   • [         R                  U R                  5      $ rc   )r   r˜   ru  rÞ   s    r   r˜   ÚRef.IsTypedVector2  s   € ä×Ñ˜dŸj™jÓ)Ð)r   c                 óÊ   • U R                   (       aB  [        U R                  5       U R                  [        R                  U R                  5      5      $ U R                  S5      e)NÚTYPED_VECTOR)r˜   rC  r…  rï   r   r    ru  r‚  rÞ   s    r   r¤  ÚRef.AsTypedVector6  sP   € à××ÜØ
�.‰.Ó
Ø
×
Ñ
Ü
×
'Ñ
'¨¯
©
Ó
3óð ð ×Ñ˜~Ó.Ð.r   c                 ó@   • [         R                  U R                  5      $ rc   )r   r¥   ru  rÞ   s    r   r¥   ÚRef.IsFixedTypedVectorA  s   € ä×"Ñ" 4§:¡:Ó.Ð.r   c                 óÒ   • U R                   (       aF  [        R                  U R                  5      u  p[	        U R                  5       U R                  X5      $ U R                  S5      e)NÚFIXED_TYPED_VECTOR)r¥   r   r¬   ru  rC  r…  rï   r‚  )rÎ   r²   rþ   s      r   r¥  ÚRef.AsFixedTypedVectorE  sP   € à××Ü×=Ñ=¸d¿j¹jÓIÑ€lÜ˜Ÿ™Ó)¨4×+;Ñ+;¸\ÓPÐPà×ÑÐ3Ó4Ð4r   c                 ó:   • U R                   [        R                  L $ rc   )ru  r   r½   rÞ   s    r   ÚIsMapÚ	Ref.IsMapM  r¶  r   c                 óª   • U R                   (       a$  [        U R                  5       U R                  5      $ U R	                  [
        R                  5      erc   )rÜ  rY  r…  rï   r‚  r   r½   rÞ   s    r   ÚAsMapÚ	Ref.AsMapQ  s8   € à‡z‡zÜ�—‘Ó! 4×#3Ñ#3Ó4Ð4à×ÑœtŸx™xÓ(Ð(r   c                 óÖ  • U R                   (       a  gU R                  (       a  U R                  $ U R                  (       a  U R                  $ U R
                  (       a  U R                  $ U R                  (       a  U R                  $ U R                  (       a  U R                  $ U R                  (       a  U R                  $ U R                  (       a  U R                  R                  $ U R                   (       a  U R"                  R                  $ U R$                  (       a  U R&                  R                  $ U R(                  (       a  U R*                  R                  $ [-        SU -  5      e)zÉConverts current reference to value of corresponding type.

This is equivalent to calling `AsInt` for integer values, `AsFloat` for
floating point values, etc.

Returns:
  Value of corresponding type.
Nzcannot convert %r to value)rˆ  rŒ  r�  r—  r�  r˜  r¯  rž  rT  rŸ  rS  r   r¡  rÜ  rß  r<  r¢  r£  r˜   r¤  r¥   r¥  rÕ   rÞ   s    r   r<  Ú	Ref.ValueX  sé   € ð ‡{‡{ØØ	��Ø�[‰[ÐØ	��Ø�Z‰ZÐØ	��Ø�\‰\ÐØ	��Ø�]‰]ÐØ	��Ø�Z‰ZÐØ	��Ø�[‰[ÐØ	��Ø�Z‰Z×ÑÐØ	��Ø�]‰]× Ñ Ð Ø	×	×	Ø×Ñ×%Ñ%Ð%Ø	×	 ×	 Ø×$Ñ$×*Ñ*Ð*äÐ2°TÑ9Ó:Ð:r   )rË   rï   rt  ru  N)-r-   r.   r/   r0   r1   rõ   r2   r9  rÏ   rß   rö   r~  r‚  r…  rˆ  rŒ  r�  r”  r™  r—  r�  r¨  r˜  r¯  r²  rŸ  r[  rS  rž  r¿  rT  rÄ  r   r¡  rË  r¢  r£  r˜   r¤  r¥   r¥  rÜ  rß  r<  r3   r,   r   r   r8  r8  2  sd  † Ù1à=€)àñ5ó ð5òòð ñ+ó ð+òKò5ð ñ#ó ð#ð ñ#ó ð#ð ñó ðòð ñ&ó ð&ð ñó ðð ñ)ó ð)ò:ð2 ñ;ó ð;ð ñ+ó ð+ò.ð: ñ"ó ð"ð ñ)ó ð)ð ñ)ó ð)ð ñ%ó ð%ð ñ,ó ð,ð ñ,ó ð,òDð ñ#ó ð#ð ñ*ó ð*ð ñLó ðLð ñ1ó ð1ð ñ,ó ð,ð ñ*ó ð*ð ñ/ó ð/ð ñ/ó ð/ð ñ5ó ð5ð ñ"ó ð"ð ñ)ó ð)ð ñ ;ó ó ;r   r8  c                 ó<   •  [        U 5        g! [         a     gf = f)NTF)ÚiterrÕ   )Úobjs    r   Ú_IsIterableræ  |  s#   € ðÜˆ„IØøÜ	ó Ùðús   ‚ Ž
šc                   ó  • \ rS rSrSr\S 5       r\S 5       r\S 5       r\S 5       r	\S 5       r
\S 5       rS	 r\S
 5       r\S 5       r\S 5       r\R$                  4S jrSS jr\R$                  4S jrS rS rSrg)r<  i„  z;Class to represent given value during the encoding process.c                  óT   • [        S[        R                  [        R                  5      $ rT   )r<  r   r·   r	   r   r,   r   r   ÚNullÚ
Value.Null‡  s   € ä�”D—I‘IœxŸ{™{Ó+Ð+r   c                 óT   • [        U [        R                  [        R                  5      $ rc   )r<  r   r�   r	   r   r   s    r   ÚBoolÚ
Value.Bool‹  s   € ä�œŸ	™	¤8§;¡;Ó/Ð/r   c                 ó8   • [        U [        R                  U5      $ rc   )r<  r   r›   ©r   r†   s     r   ÚIntÚ	Value.Int�  s   € ä�œŸ™ )Ó,Ð,r   c                 ó8   • [        U [        R                  U5      $ rc   )r<  r   r¸   rï  s     r   ÚUIntÚ
Value.UInt“  s   € ä�œŸ	™	 9Ó-Ð-r   c                 ó8   • [        U [        R                  U5      $ rc   )r<  r   r�   rï  s     r   ÚFloatÚValue.Float—  s   € ä�œŸ
™
 IÓ.Ð.r   c                 óT   • [        U [        R                  [        R                  5      $ rc   )r<  r   r¹   r	   r   )rZ   s    r   r&  Ú	Value.Key›  s   € ä�œŸ™¤8§;¡;Ó/Ð/r   c                 ó(   • Xl         X l        X0l        g rc   ©Ú_valueru  Ú_min_bit_width)rÎ   r   r…   Úmin_bit_widths       r   rÏ   ÚValue.__init__Ÿ  s   € Ø„KØ„Jð (Õr   c                 ó   • U R                   $ rc   )rü  rÞ   s    r   r<  ÚValue.Value¦  s   € à�;‰;Ðr   c                 ó   • U R                   $ rc   )ru  rÞ   s    r   r   Ú
Value.Typeª  s   € à�:‰:Ðr   c                 ó   • U R                   $ rc   )rý  rÞ   s    r   ÚMinBitWidthÚValue.MinBitWidth®  s   € à×ÑÐr   c                 ó`   • [         R                  U R                  U R                  U5      5      $ rc   )r   r‡   ru  ÚStoredWidth©rÎ   Úparent_bit_widths     r   ÚStoredPackedTypeÚValue.StoredPackedType²  s#   € Ü�9‰9�T—Z‘Z ×!1Ñ!1Ð2BÓ!CÓDÐDr   c                 ó  • [         R                  U R                  5      (       a  U R                  $ S HD  nU[	        X5      -   X#-  -   n[
        R                  X@R                  -
  5      nUSU-  :X  d  MB  Us  $    [        S5      e)Nr%   r   zrelative offset is too big)	r   r’   ru  rý  rR   r	   r   rü  r   )rÎ   rP   Ú
elem_indexr)   Ú
offset_locr†   s         r   Ú	ElemWidthÚValue.ElemWidthº  s‚   € Ü‡}�}�T—Z‘Z× Ñ Ø× Ñ Ð Û ˆ
à
Ü˜(Ó/ñ0àÑ#ñ$ð ô
 —*‘*˜Z¯+©+Ñ5Ó6€iØ	˜˜Y™Õ	'ØÒñ !ô Ð1Ó
2Ð2r   c                 óŽ   • [         R                  U R                  5      (       a  [        U R                  U5      $ U R                  $ rc   )r   r’   ru  Úmaxrý  r	  s     r   r  ÚValue.StoredWidthÈ  s5   € Ü‡}�}�T—Z‘Z× Ñ Ü�×$Ñ$Ð&6Ó7Ð7Ø×ÑÐr   c                 ó\   • SU R                   < SU R                  < SU R                  < S3$ )NzValue(z, Ú)rû  rÞ   s    r   rß   ÚValue.__repr__Í  s   � Ø"&§+¤+¨t¯z¬z¸4×;NÔ;NÐOÐOr   c                 ó,   • [        U R                  5      $ rc   )rº  rü  rÞ   s    r   r   ÚValue.__str__Ð  s   € Üˆt�{‰{ÓÐr   )rý  ru  rü  Nr¶   )r-   r.   r/   r0   r1   r2   ré  rì  rð  ró  rö  r&  rÏ   rö   r<  r   r  r	   r   r  r  r  rß   r   r3   r,   r   r   r<  r<  „  sé   † ÙCàñ,ó ð,ð ñ0ó ð0ð ñ-ó ð-ð ñ.ó ð.ð ñ/ó ð/ð ñ0ó ð0ò(ð ñó ðð ñó ðð ñó ðð /7¯k©kô Eô3ð *2¯©ô ò
Põr   r<  c                 ó   ^ • U 4S jnU$ )Nc                 ó–   >• [        US   [        5      (       a$  U R                  US   5        T" U /USS  Q70 UD6  g T" U /UQ70 UD6  g )Nr   r   )rÔ   rº  r&  )rÎ   ÚargsÚkwargsÚfuncs      €r   ÚwrapperÚInMap.<locals>.wrapperÕ  sN   ø€ Ü�$�q‘'œ3×ÑØ
‡h�hˆt�A‰wÔÙ
ˆ4Ð%�$�q�r�(Ò%˜fÓ%á
ˆ4Ð!�$Ò!˜&Ó!r   r,   ©r  r  s   ` r   ÚInMapr"  Ô  s   ø€ õ"ð 
€.r   c                 ó   ^ • U 4S jnU$ )Nc                 ó®   >• [        U5      S:X  a  T" XS   5        g [        U5      S:X  a   U R                  US   5        T" XS   5        g [        S5      e)Nr   r   r   zinvalid number of arguments)r>   r&  r   )rÎ   r  r  s     €r   r  ÚInMapForString.<locals>.wrapperà  sM   ø€ Ü
ˆ4ƒy�Aƒ~Ù
ˆ4�a‘ÕÜ	ˆT‹�a‹Ø
‡h�hˆt�A‰wÔÙ
ˆ4�a‘ÕäÐ4Ó5Ð5r   r,   r!  s   ` r   ÚInMapForStringr&  ß  s   ø€ õ6ð 
€.r   c                   ó:   • \ rS rSrSrS rS rS r\S 5       r	Sr
g)	ÚPooliì  zCCollection of (data, offset) pairs sorted by data for quick access.c                 ó   • / U l         g rc   ©Ú_poolrÞ   s    r   rÏ   ÚPool.__init__ï  ó	   € Ø€D…Jr   c                 ó¢   • X4n[        U R                  US 5      nUS:w  a  U R                  U   u  pRU$ U R                  R                  XC5        g )Nc                 ó   • U S   US   :  $ rT   r,   r\  s     r   rf   Ú#Pool.FindOrInsert.<locals>.<lambda>ô  s   € °q¸±t¸aÀ¹d²{r   rh   )rj   r+  Úinsert)rÎ   ÚdatarZ   Údori   Ú_s         r   ÚFindOrInsertÚPool.FindOrInsertò  sM   € Ø	ˆ€BÜ˜$Ÿ*™* bÑ*BÓC€EØ�ƒ{Ø—*‘*˜UÑ#�i€aØ€mØ‡J�J×Ñ�eÔ Ør   c                 ó   • / U l         g rc   r*  rÞ   s    r   ÚClearÚ
Pool.Clearû  r-  r   c                 óP   • U R                    VVs/ s H  u  pUPM	     snn$ s  snnf rc   r*  )rÎ   r2  r4  s      r   ÚElementsÚPool.Elementsþ  s    € à $§
¢
Ô+¢
‘W�T‹D¡
Ò+Ð+ùÓ+s   �"r*  N)r-   r.   r/   r0   r1   rÏ   r5  r8  rö   r;  r3   r,   r   r   r(  r(  ì  s(   † ÙKòòòð ñ,ó ó,r   r(  c                   ól  • \ rS rSrSrSS\R                  4S jrS r\	S 5       r
\	S 5       rS	 rS
 rS rS rS rS rS rS rS rS rS1S jrS r\S 5       r\S 5       rS rS1S jr\S 5       r\S2S j5       r\S2S j5       r \S2S j5       r!\S2S j5       r"\S2S j5       r#\S2S  j5       r$S! r%S" r&\'RP                  S1S# j5       r)\S$ 5       r*\'RP                  S1S% j5       r+\S1S& j5       r,\ S3S' j5       r-S( r.S) r/\'RP                  S1S* j5       r0S+ r1S, r2\S- 5       r3\	S. 5       r4\S/ 5       r5S0r6g)4r   i  z?Helper class to encode structural data into flexbuffers format.FTc                 óž   • Xl         X l        X0l        [        5       U l        [        5       U l        SU l        [        5       U l        / U l	        g ©NF)
Ú_share_stringsÚ_share_keysÚ_force_min_bit_widthr(  Ú_string_poolÚ	_key_poolÚ	_finishedr  rË   Ú_stack)rÎ   Úshare_stringsÚ
share_keysÚforce_min_bit_widths       r   rÏ   ÚBuilder.__init__  s@   € ð (ÔØ!ÔØ 3Ôä›€DÔÜ“V€D„Nà€D„NÜ“€D„IØ€D…Kr   c                 ó,   • [        U R                  5      $ rc   )r>   rË   rÞ   s    r   r  ÚBuilder.__len__  s   € Üˆt�y‰y‹>Ðr   c                 ó   • U R                   $ rc   )rC  rÞ   s    r   Ú
StringPoolÚBuilder.StringPool  s   € à×ÑÐr   c                 ó   • U R                   $ rc   )rD  rÞ   s    r   ÚKeyPoolÚBuilder.KeyPool  s   € à�>‰>Ðr   c                 ó¦   • U R                   R                  5         U R                  R                  5         SU l        [	        5       U l        / U l        g r?  )rC  r8  rD  rE  r  rË   rF  rÞ   s    r   r8  ÚBuilder.Clear"  s;   € Ø×Ñ×ÑÔØ‡N�N×ÑÔØ€D„NÜ“€D„IØ€D…Kr   c                 óº  • U R                   (       a  [        S5      e[        U R                  5      S:w  a  [        S5      eU R                  S   nU R	                  UR                  [        U R                  5      5      5      nU R                  XS9  U R                  [        UR                  5       SS9  U R                  [        USS9  SU l        U R                  $ )z8Finishes encoding process and returns underlying buffer.z!builder has been already finishedr   zinternal stack size must be oner   r(   T)rE  ÚRuntimeErrorr>   rF  Ú_Alignr  rË   Ú	_WriteAnyÚ_Writer   r  Úfinished)rÎ   r   r)   s      r   ÚFinishÚBuilder.Finish)  s¬   € à‡~‡~ÜÐ<Ó=Ð=ô ˆ4�;‰;Ó˜1ÓÜÐ:Ó;Ð;à�K‰K˜‰N€EØ—‘˜UŸ_™_¬S°·±«^Ó<Ó=€JØ‡N�N�5€NÑ0Ø‡K�K”�5×)Ñ)Ó+¸€KÑ:Ø‡K�K”�:¨!€KÑ,à€D„MØ�9‰9Ðr   c                 óH   • U R                   US  nUS UR                  S5       $ rT   )rË   râ   )rÎ   rZ   r×   s      r   Ú_ReadKeyÚBuilder._ReadKey>  s'   € Ø
�)‰)�F�GÐ
€CØˆ}�—‘˜!“ÐÐr   c                 ó†   • SU-  nU R                   R                  S[        [        U R                   5      U5      -  5        U$ )Nr   ó    )rË   ÚextendrR   r>   )rÎ   Ú	alignmentr)   s      r   rW  ÚBuilder._AlignB  s7   € Ø�i‘€JØ‡I�I×Ñ�Wœ}¬S°·±«^¸ZÓHÑHÔIØÐr   c                 óN   • U R                   R                  [        XU5      5        g rc   )rË   rb  rG   )rÎ   r?   r   r)   s       r   rY  ÚBuilder._WriteG  s   € Ø‡I�I×Ñ”U˜3 zÓ2Õ3r   c                 óN   • U R                   R                  [        XU5      5        g rc   )rË   rb  rJ   )rÎ   r?   rI   r)   s       r   Ú_WriteVectorÚBuilder._WriteVectorJ  s   € Ø‡I�I×Ñ”[ ¨jÓ9Õ:r   c                 óˆ   • [        U R                  5      U-
  nUS:X  d  USSU-  -  :  d   eU R                  [        X25        g )Nr'   r   )r>   rË   rY  r   )rÎ   rZ   r)   Úrelative_offsets       r   Ú_WriteOffsetÚBuilder._WriteOffsetM  s?   € Ü˜$Ÿ)™)“n vÑ-€OØ˜‹?˜o°°q¸:±~Ñ1FÓGÐGÐGØ‡K�K”�?Õ/r   c           
      ó‚  • [         R                  [        [         R                  [        [         R                  [
        [         R                  [        [         R                  [        0R                  UR                   5      nU(       a  U R                  X1R                  U5        g U R                  UR                  U5        g rc   )r   r·   r   r�   r›   r   r¸   r�   r"   ÚgetrY  r<  rl  )rÎ   r   r)   r?   s       r   rX  ÚBuilder._WriteAnyR  ss   € ä�	‰	”1Ü�	‰	”1Ü�‰”!Ü�	‰	”1Ü�
‰
”Að÷ 
�cˆ%�*‰*ƒoð ö Ø
‡k�k�#—{‘{ JÕ/à
×Ñ˜Ÿ™ ZÕ0r   c                 ó’  • [         R                  [        U5      5      nU R                  U5      nU R	                  [        [        U5      U5        [        U R
                  5      nU R
                  R                  U5        U(       a  U R
                  R                  S5        U R                  R                  [        XcU5      5        U$ rT   )
r	   r   r>   rW  rY  rË   rb  ÚappendrF  r<  )rÎ   r2  Úappend_zeror…   r†   r)   Úlocs          r   Ú
_WriteBlobÚBuilder._WriteBlob_  sˆ   € Ü—
‘
œ3˜t›9Ó%€IØ—‘˜YÓ'€JØ‡K�K””3�t“9˜jÔ)Ü
ˆd�i‰i‹.€CØ‡I�I×Ñ�TÔÞØ
‡i�i×Ñ�qÔØ‡K�K×Ñ”u˜S¨Ó3Ô4Ø€Jr   c                 óž  • [         R                  U5      n[         R                  [        U5      5      U:”  a  [	        S5      eU R                  U5        U(       d   U R                  [        [        U5      U5        [        U R                  5      n[        R                  [        [        R                  [        [        R                  [        0R                  U5      nU(       d  [        S5      eU R!                  XsU5        [        R#                  X(       a  [        U5      OS5      nU R$                  R'                  [)        XhU5      5        U$ )z7Writes scalar vector elements to the underlying buffer.z*too many elements for the given byte_widthzunsupported element_typer   )r	   r*   r   r>   r   rW  rY  rË   r   r›   r   r¸   r�   r"   ro  rÕ   rh  r´   rF  rr  r<  )	rÎ   r²   r)   ÚelementsÚfixedr†   rt  r?   r…   s	            r   Ú_WriteScalarVectorÚBuilder._WriteScalarVectorj  sã   € ä—
‘
˜:Ó&€Iô ‡z�z”#�h“-Ó  9Ó,ÜÐCÓDÐDà‡K�K�	ÔÞØ
‡k�k”!”S˜“] JÔ/ä
ˆd�i‰i‹.€Cä�8‰8”QœŸ	™	¤1¤d§j¡j´!Ð
4×
8Ñ
8¸Ó
F€CÞÜÐ0Ó1Ð1Ø×Ñ�c ZÔ0ä×Ñ˜|½e¬S°¬]ÈÓK€EØ‡K�K×Ñ”u˜S¨Ó3Ô4Ø€Jr   Nc           	      óð  • [        U5      nU(       a  U(       d  [        S5      e[        U R                  [        R                  U5      5      nSnU(       a2  [        XdR                  [        U R                  5      5      5      nUS-  n[        R                  n[        U5       Hl  u  pš[        XjR                  [        U R                  5      Xy-   5      5      nU(       d  M>  U	S:X  a  U
R                  nMR  XŠR                  :w  d  Mc  [        S5      e   U(       a%  [        R                  U5      (       d  [        S5      eU R                  U5      nU(       a@  U R                  UR                  U5        U R!                  [
        SUR"                  -  U5        U(       d  U R!                  [
        X[5        [        U R                  5      nU H  n
U R%                  X«5        M     U(       d3  U H-  n
U R                  R'                  U
R)                  U5      5        M/     U(       a  [        R*                  nO6U(       a  [        R-                  Xƒ(       a  UOS5      nO[        R.                  n[        XÍU5      $ )z0Writes vector elements to the underlying buffer.zfixed vector must be typedr   r   r   z.typed vector elements must be of the same typer¯   )r>   r   r  rB  r	   r   r  rË   r   r¹   Ú	enumeraterV  r¨   rW  rl  r<  rY  r  rX  rr  r  r½   r´   r¾   )rÎ   rx  Útypedry  ÚkeysrD   r†   Úprefix_elemsÚvector_typer6   r>  r)   rt  r…   s                 r   Ú_CreateVectorÚBuilder._CreateVector‚  sË  € ä�‹]€Fæ–UÜÐ3Ó4Ð4ô �D×-Ñ-¬x¯z©z¸&Ó/AÓB€IØ€LÞÜ�i§¡´°D·I±I³Ó!?Ó@€iØ�aÑ€lä—(‘(€Kä˜(Ö#‰ˆÜ�i§¡¬S°·±«^¸\Ñ=MÓ!NÓO€iç	ˆØ�‹6ØŸ™Š+àŸF™FÕ"ÜÐOÓPÐPñ $ö ”T×7Ñ7¸×DÑDÜÐBÓCÐCà—‘˜YÓ'€JæØ
×Ñ˜Ÿ
™
 JÔ/Ø
‡k�k”!�Q˜$×*Ñ*Ñ*¨JÔ7æØ
‡k�k”!�VÔ(ô ˆd�i‰i‹.€CÛˆØ
‡n�n�QÖ#ñ ö Ûˆ!Ø�	‰	×Ñ˜×+Ñ+¨IÓ6Ö7ñ ö Ü�h‰h�eæ	Ü×"Ñ" ;½%±ÀQÓG‰ä—‘ˆä�˜YÓ'Ð'r   c                 ó@  • U R                  U5      n[        U R                  5      n[        R                  [
        [        R                  [        [        R                  [        0U   nU R                  XaU5        U R                  R                  [        XRU5      5        g rc   )rW  r>   rË   r   rº   r   r»   r   r¼   r"   rY  rF  rr  r<  )rÎ   r   r…   r†   r)   rt  r?   s          r   Ú_PushIndirectÚBuilder._PushIndirect¼  sr   € Ø—‘˜YÓ'€JÜ
ˆd�i‰i‹.€CÜ×Ñœa¤×!3Ñ!3´Q¼×8KÑ8KÌQÐ
OØñ€Cð 	‡K�K�˜JÔ'Ø‡K�K×Ñ”u˜S¨Ó3Õ4r   c                 ó8  • [        U R                  5      nUR                  S5      nU R                  US[        R
                  S9nU R                  (       aC  U R                  R                  X45      nUb%  U R                  US2	 U=U R                  S   l
        nU$ )zEncodes string value.r  T©rs  r…   Nrh   )r>   rË   r  ru  r   rœ   r@  rC  r5  rF  rü  )rÎ   r   Úreset_tor  rt  Úprev_locs         r   r  ÚBuilder.StringÅ  s„   € ô �4—9‘9‹~€HØ�l‰l˜7Ó#€GØ
�/‰/˜'¨t¼4¿;¹;ˆ/Ð
G€CØ××Ø×"Ñ"×/Ñ/°Ó=€hØ	Ñ	Ø�I‰I�h‘iÐ Ø'/Ð/ˆ�‰�B‰Ô à€Jr   c                 ó@   • U R                  US[        R                  S9$ )z“Encodes binary blob value.

Args:
  value: A byte/bytearray value to encode

Returns:
  Offset of the encoded value in underlying the byte buffer.
Frˆ  )ru  r   rÇ   r“  s     r   r	  ÚBuilder.BlobÓ  s   € ð �?‰?˜5¨e¼4¿9¹9ˆ?ÐEÐEr   c                 óø  • [        U[        [        45      (       a  UnOUR                  S5      nSU;   a  [	        S5      e[        U R                  5      nU R                  R                  U5        U R                  R                  S5        U R                  (       a/  U R                  R                  X#5      nUb  U R                  US2	 UnU R                  R                  [        R                  U5      5        U$ )zéEncodes key value.

Args:
  value: A byte/bytearray/str value to encode. Byte object must not contain
    zero bytes. String object must be convertible to ASCII.

Returns:
  Offset of the encoded value in the underlying byte buffer.
r.  r   zkey contains zero byteN)rÔ   Úbytesr  r  r   r>   rË   rb  rr  rA  rD  r5  rF  r<  r&  )rÎ   r   r  rt  rŠ  s        r   r&  ÚBuilder.Keyß  sÁ   € ô �%œ%¤Ð+×,Ñ,Ø�gà—‘˜WÓ%€gàˆGƒ|ÜÐ/Ó0Ð0ä
ˆd�i‰i‹.€CØ‡I�I×Ñ�WÔØ‡I�I×Ñ�QÔØ××Ø—‘×,Ñ,¨WÓ:€hØ	Ñ	Ø�I‰I�c‘dˆOØˆà‡K�K×Ñ”u—y‘y “~Ô&Ø€Jr   c                 óŽ   • U(       a  U R                  U5        U R                  R                  [        R	                  5       5        g)zEncodes None value.N)r&  rF  rr  r<  ré  rÖ   s     r   ré  ÚBuilder.Nullý  s(   € æ
Ø
‡h�hˆs„mØ‡K�K×Ñ”u—z‘z“|Õ$r   c                 ó`   • U R                   R                  [        R                  U5      5        g)z8Encodes boolean value.

Args:
  value: A boolean value.
N)rF  rr  r<  rì  r“  s     r   rì  ÚBuilder.Bool  s   € ð 	‡K�K×Ñ”u—z‘z %Ó(Õ)r   c                 óÀ   • US:X  a  [         R                  U5      O[         R                  U5      nU R                  R	                  [
        R                  X5      5        g)z{Encodes signed integer value.

Args:
  value: A signed integer value.
  byte_width: Number of bytes to use: 1, 2, 4, or 8.
r   N)r	   r   r*   rF  rr  r<  rð  ©rÎ   r   r)   r†   s       r   rð  ÚBuilder.Int  s>   € ð &0°1£_”—
‘
˜5Ô!¼(¿*¹*ÀZÓ:P€IØ‡K�K×Ñ”u—y‘y Ó2Õ3r   c                 ó¦   • US:X  a  [         R                  U5      O[         R                  U5      nU R                  U[        R
                  U5        g)z†Encodes signed integer value indirectly.

Args:
  value: A signed integer value.
  byte_width: Number of bytes to use: 1, 2, 4, or 8.
r   N)r	   r   r*   r…  r   rº   r–  s       r   ÚIndirectIntÚBuilder.IndirectInt  s;   € ð &0°1£_”—
‘
˜5Ô!¼(¿*¹*ÀZÓ:P€IØ×Ñ�uœd×/Ñ/°Õ;r   c                 óÀ   • US:X  a  [         R                  U5      O[         R                  U5      nU R                  R	                  [
        R                  X5      5        g)z€Encodes unsigned integer value.

Args:
  value: An unsigned integer value.
  byte_width: Number of bytes to use: 1, 2, 4, or 8.
r   N)r	   r   r*   rF  rr  r<  ró  r–  s       r   ró  ÚBuilder.UInt"  s>   € ð &0°1£_”—
‘
˜5Ô!¼(¿*¹*ÀZÓ:P€IØ‡K�K×Ñ”u—z‘z %Ó3Õ4r   c                 ó¦   • US:X  a  [         R                  U5      O[         R                  U5      nU R                  U[        R
                  U5        g)z‹Encodes unsigned integer value indirectly.

Args:
  value: An unsigned integer value.
  byte_width: Number of bytes to use: 1, 2, 4, or 8.
r   N)r	   r   r*   r…  r   r»   r–  s       r   ÚIndirectUIntÚBuilder.IndirectUInt-  s;   € ð &0°1£_”—
‘
˜5Ô!¼(¿*¹*ÀZÓ:P€IØ×Ñ�uœd×0Ñ0°)Õ<r   c                 óÀ   • US:X  a  [         R                  U5      O[         R                  U5      nU R                  R	                  [
        R                  X5      5        g)ztEncodes floating point value.

Args:
  value: A floating point value.
  byte_width: Number of bytes to use: 4 or 8.
r   N)r	   r"   r*   rF  rr  r<  rö  r–  s       r   rö  ÚBuilder.Float8  s>   € ð &0°1£_”—
‘
˜5Ô!¼(¿*¹*ÀZÓ:P€IØ‡K�K×Ñ”u—{‘{ 5Ó4Õ5r   c                 ó¦   • US:X  a  [         R                  U5      O[         R                  U5      nU R                  U[        R
                  U5        g)zEncodes floating point value indirectly.

Args:
  value: A floating point value.
  byte_width: Number of bytes to use: 4 or 8.
r   N)r	   r"   r*   r…  r   r¼   r–  s       r   ÚIndirectFloatÚBuilder.IndirectFloatC  s;   € ð &0°1£_”—
‘
˜5Ô!¼(¿*¹*ÀZÓ:P€IØ×Ñ�uœd×1Ñ1°9Õ=r   c                 ó,   • [        U R                  5      $ )zStarts vector construction.©r>   rF  rÞ   s    r   Ú_StartVectorÚBuilder._StartVectorN  ó   € äˆt�{‰{ÓÐr   c                 ó¬   • U R                  U R                  US X#5      nU R                  US2	 U R                  R                  U5        UR                  $ )z6Finishes vector construction by encodung its elements.N)r‚  rF  rr  r<  )rÎ   rU   r~  ry  Úvecs        r   Ú
_EndVectorÚBuilder._EndVectorR  sI   € à
×
Ñ
˜TŸ[™[¨¨Ð0°%Ó
?€CØ�‰�E‘FÐØ‡K�K×Ñ�sÔØ�9‰9Ðr   c              #   ó´   #   • U(       a  U R                  U5         U R                  5       nU v •  U R                  USSS9  g ! U R                  WSSS9  f = f7f)NF©r~  ry  ©r&  r§  r¬  ©rÎ   r×   rU   s      r   r4  ÚBuilder.VectorY  sO   é € æ
Ø
‡h�hˆs„mð7Ø×ÑÓ!€eØ‚jà
‡o�o�e 5°€oÒ6ø€d‡o�o�e 5°€oÒ6üó   ‚AœA °AÁAÁAc                 óŒ   • U R                  5          U H  nU R                  U5        M     SSS5        g! , (       d  f       g= f)zvEncodes sequence of any elements as a vector.

Args:
  elements: sequence of elements, they may have different types.
N)r4  ÚAdd)rÎ   rx  r>  s      r   ÚVectorFromElementsÚBuilder.VectorFromElementsd  s,   € ð 
�‰�Ûˆ!Ø�‰�Žñ ÷ 
�Žús	   ‘5µ
Ac              #   ó´   #   • U(       a  U R                  U5         U R                  5       nU v •  U R                  USSS9  g ! U R                  WSSS9  f = f7f)NTFr¯  r°  r±  s      r   rC  ÚBuilder.TypedVectoro  sO   é € æ
Ø
‡h�hˆs„mð6Ø×ÑÓ!€eØ‚jà
‡o�o�e 4¨u€oÒ5ø€d‡o�o�e 4¨u€oÒ5ür³  c                 óØ  • [        U[        R                  5      (       að  UR                  S:X  a!  U R                  [        R
                  SUSS9  g
UR                  S:X  a!  U R                  [        R
                  SUSS9  g
UR                  S;   a+  U R                  [        R                  UR                  USS9  g
UR                  S;   a+  U R                  [        R                  UR                  USS9  g
[        S	UR                  -  5      eUc  U R                  OU R                  U5      nU R                  5          U H  nU" U5        M     S
S
S
5        g
! , (       d  f       g
= f)a  Encodes sequence of elements of the same type as typed vector.

Args:
  elements: Sequence of elements, they must be of the same type.
  element_type: Suggested element type. Setting it to None means determining
    correct value automatically based on the given elements.
r:   r&   F©ry  r;   r'   )r4   r5   r6   Úlr7   )r*   r8   r   ÚLr9   zunsupported array typecode: %sN)rÔ   ÚarrayÚtypecoderz  r   r�   r›   Úitemsizer¸   r   rµ  ÚAdderrC  )rÎ   rx  r²   Úaddr>  s        r   ÚTypedVectorFromElementsÚBuilder.TypedVectorFromElementsz  s.  € ô �(œEŸK™K×(Ñ(Ø	×	Ñ	˜cÓ	!Ø×Ñ¤§
¡
¨A¨x¸uÐÒEØ×Ñ Ó#Ø×Ñ¤§
¡
¨A¨x¸uÐÒEØ×ÑÐ 9Ó9Ø×ÑÜ�H‰H�h×'Ñ'¨¸ð 	 ò 	
ð ×ÑÐ 9Ó9Ø×ÑÜ�I‰I�x×(Ñ(¨(¸%ð 	 ò 	
ô Ð9¸H×<MÑ<MÑMÓNÐNà$Ñ,ˆD�HŠH°$·*±*¸\Ó2J€cØ×ÑÕÛˆAÙ
ˆaŽ&ñ ÷ ×Öús   Å EÅ
E)c                 ó†  ^• S[        U5      s=::  a  S::  d  O  [        S5      eU Vs1 s H  n[        U5      iM     nn[        U5      S:w  a  [        S5      eUu  nUcN  [        [
        R                  [        [
        R                  0R                  U5      nU(       d  [        SU-  5      eUS:X  aw  [
        R                  [        R                  [
        R                  [        R                  [
        R                  [        R                  0U   mS[        U4S	 jU 5       5      -  nU R!                  X#US
S9  gs  snf )ae  Encodes sequence of elements of the same type as fixed typed vector.

Args:
  elements: Sequence of elements, they must be of the same type. Allowed
    types are `Type.INT`, `Type.UINT`, `Type.FLOAT`. Allowed number of
    elements are 2, 3, or 4.
  element_type: Suggested element type. Setting it to None means determining
    correct value automatically based on the given elements.
  byte_width: Number of bytes to use per element. For `Type.INT` and
    `Type.UINT`: 1, 2, 4, or 8. For `Type.FLOAT`: 4 or 8. Setting it to 0
    means determining correct value automatically based on the given
    elements.
r   r&   z&only 2, 3, or 4 elements are supportedr   z%all elements must be of the same typeNrP  r   c              3   ó4   >#   • U  H  nT" U5      v •  M     g 7frc   r,   )Ú.0r>  Úwidths     €r   Ú	<genexpr>Ú7Builder.FixedTypedVectorFromElements.<locals>.<genexpr>½  s   øé € Ð7ªh¨™E !ŸH˜Hªhùs   ƒTr»  )r>   r   ÚtyperÕ   r„   r   r›   r­  r�   ro  r¸   r	   r   r   r"   r  rz  )rÎ   rx  r²   r)   r>  Útypesr…   rÈ  s          @r   ÚFixedTypedVectorFromElementsÚ$Builder.FixedTypedVectorFromElements˜  s  ø€ ð" ”�H“Õ" Õ"ÜÐ?Ó@Ð@á&Ó'šh˜ŒT�!ŽW™h€EÐ'Ü
ˆ5ƒz�QƒÜÐ=Ó>Ð>à�H€UàÑÜœ4Ÿ8™8¤U¬D¯J©JÐ7×;Ñ;¸EÓB€lÞÜÐ6¸Ñ>Ó?Ð?à�Qƒä
�)‰)”X—Z‘ZÜ
�(‰(”H—J‘JÜ
�*‰*”h—j‘jðð 	ñ	€eð
 œÔ7©hÓ7Ó7Ñ7€jà×Ñ˜L°hÀdÐÒKùò' (s   ©D>c                 ó,   • [        U R                  5      $ )zStarts map construction.r¦  rÞ   s    r   Ú	_StartMapÚBuilder._StartMapÁ  r©  r   c                 ó–  ^ • T R                   US n[        U5      S-  S:w  a  [        S5      eUSSS2    H<  nUR                  [        R                  Ld  M"  [        S[        R                  -  5      e   [        USSS2   USSS2   5      n[        UU 4S jS9nT R                   US2	 U H  nT R                   R                  U5        M      T R                  T R                   USS2   S	S
S9nT R                  T R                   US-   SS2   S
S
US9nT R                   US2	 T R                   R                  U5        UR                  $ )z3Finishes map construction by encodung its elements.Nr   r   z&must be even number of keys and valueszall map keys must be of %s typer   c                 ó@   >• TR                  U S   R                  5      $ rT   )r^  r<  )ÚpairrÎ   s    €r   rf   Ú!Builder._EndMap.<locals>.<lambda>Ò  s   ø€ ¨4¯=©=¸¸a¹¿¹Ô+Gr   )r×   TFr¯  )r~  ry  r  )rF  r>   rV  r   r¹   rl  Úsortedrb  r‚  rr  r<  )rÎ   rU   Ústackr×   ÚpairsrÔ  r  rI   s   `       r   Ú_EndMapÚBuilder._EndMapÅ  sD  ø€ ð �K‰K˜˜Ð€Eä
ˆ5ƒz�A�~˜ÓÜÐAÓBÐBà‘S�q�SŒzˆØ	�‰œŸ™Ô	!ÜÐ<¼t¿x¹xÑGÓHÐHñ ô �‘c˜�c‘
˜E ! $ Q $™KÓ(€EÜ�5ÔGÑH€Eà�‰�E‘FÐÛˆØ
‡k�k×Ñ˜Öñ ð ×Ñ˜dŸk™k¨%¨(°¨(Ñ3¸4ÀuÐÐM€DØ×ÑØ�‰�E˜A‘I�N �NÑ#¨5¸ÀDð  ð €Fð 	�‰�E‘FÐØ‡K�K×Ñ�vÔØ�<‰<Ðr   c              #   ó´   #   • U(       a  U R                  U5         U R                  5       nU v •  U R                  U5        g ! U R                  W5        f = f7frc   )r&  rÐ  rÙ  r±  s      r   rY  ÚBuilder.Mapá  sA   é € æ
Ø
‡h�hˆs„mðØ�n‰nÓ€eØ‚jà
‡l�l�5Õø€d‡l�l�5Õür³  c                 ó¼   • U R                  5       nUR                  5        H'  u  p4U R                  U5        U R                  U5        M)     U R	                  U5        g rc   )rÐ  Úitemsr&  rµ  rÙ  )rÎ   rx  rU   rm  rn  s        r   ÚMapFromElementsÚBuilder.MapFromElementsì  sE   € Ø�N‰NÓ€EØ—‘Ö ‰ˆØ
‡h�hˆq„kØ
‡h�hˆq†kñ !ð 	‡L�L�Õr   c                 ó  • [         R                  U R                  [         R                  U R                  [         R
                  U R                  [         R                  U R                  [         R                  U R                  [         R                  U R                  [         R                  U R                  [         R                  U R                   [         R"                  U R$                  [         R&                  U R(                  0
U   $ rc   )r   r�   rì  r›   rð  rº   r™  r¸   ró  r»   rž  r�   rö  r¼   r£  r¹   r&  rÇ   r	  rœ   r  )rÎ   r…   s     r   rÁ  ÚBuilder.Adderó  s¤   € ä�	‰	�4—9‘9Ü�‰�$—(‘(Ü×Ñ˜4×+Ñ+Ü�	‰	�4—9‘9Ü×Ñ˜D×-Ñ-Ü�
‰
�D—J‘JÜ×Ñ˜T×/Ñ/Ü�‰�$—(‘(Ü�	‰	�4—9‘9Ü�‰�T—[‘[ðð ñð r   c                 ó†  • Uc  U R                  5         g[        U[        5      (       a  U R                  U5        g[        U[        5      (       a  U R                  U5        g[        U[        5      (       a  U R                  U5        g[        U[        5      (       a  U R                  U5        g[        U[        [        45      (       a  U R                  U5        g[        U[        5      (       aU  U R                  5          UR                  5        H'  u  p#U R!                  U5        U R#                  U5        M)     SSS5        g[        U[$        R$                  5      (       a  U R'                  U5        g[)        U5      (       a  U R+                  U5        g[-        S[/        U5      -  5      e! , (       d  f       g= f)z$Encodes value of any supported type.Nzunsupported python type: %s)ré  rÔ   rQ  rì  r„   rð  r­  rö  rº  r  r�  r  r	  ÚdictrY  rÞ  r&  rµ  r¾  rÃ  ræ  r¶  rÕ   rË  )rÎ   r   rm  rn  s       r   rµ  ÚBuilder.Add  s/  € ð �}Ø
‡i�i…kÜ	�Eœ4×	 Ñ	 Ø
‡i�i�ÕÜ	�Eœ3×	Ñ	Ø
‡h�hˆu…oÜ	�Eœ5×	!Ñ	!Ø
‡j�j�ÕÜ	�Eœ3×	Ñ	Ø
‡k�k�%ÕÜ	�EœE¤9Ð-×	.Ñ	.Ø
‡i�i�ÕÜ	�Eœ4×	 Ñ	 Ø�8‰8�:Ø—K‘K–M‰DˆAØ
�(‰(�1Œ+Ø
�(‰(�1Ž+ñ "÷ ˆ:ô 
�Eœ5Ÿ;™;×	'Ñ	'Ø
×"Ñ" 5Õ)Ü	�U×	Ñ	Ø
×Ñ˜eÕ$äÐ3´d¸5³kÑAÓBÐB÷ �:ús   Ä<F2Æ2
G c                 ó    • U R                   S   $ )Nrh   )rF  rÞ   s    r   Ú	LastValueÚBuilder.LastValue  s   € à�;‰;�r‰?Ðr   c                 ó:   • U R                   R                  U5        g rc   )rF  rr  r“  s     r   Ú
ReuseValueÚBuilder.ReuseValue   s   € à‡K�K×Ñ�uÕr   )	rË   rE  rB  rD  rA  r@  rF  rC  rZ  rc   r¶   rT   )7r-   r.   r/   r0   r1   r	   r   rÏ   r  rö   rN  rQ  r8  r[  r^  rW  rY  rh  rl  rX  ru  rz  r‚  r…  r&  r  r"  r	  r&  ré  rì  rð  r™  ró  rž  rö  r£  r§  r¬  Ú
contextlibÚcontextmanagerr4  r¶  rC  rÃ  rÍ  rÐ  rÙ  rY  rß  rÁ  rµ  rç  rê  r3   r,   r   r   r   r     s/  † ÙGð ØØ"Ÿ+™+ô	ò"ð ñó ðð ñó ðòòò*òò
4ò;ò0ò
1ò	òô08(òt5ð ñó ðð 	ñ	Fó 	ð	Fòô<%ð 	ñ*ó 	ð*ð 	ó4ó 	ð4ð 	ó<ó 	ð<ð 	ó5ó 	ð5ð 	ó=ó 	ð=ð 	ó6ó 	ð6ð 	ó>ó 	ð>òòð ×Ñó7ó ð7ð 	ñó 	ðð ×Ñó6ó ð6ð 	óó 	ðð: 	à45ó&Ló 	ð&LòPòð8 ×Ñóó ðòòð ñCó ðCð4 ñó ðð 	ñó 	ór   r   c                 óŠ   • [        U 5      S:  a  [        S5      eU S   n[        R                  [	        U SU-   * 5      XS   S9$ )z/Returns root `Ref` object for the given buffer.r   zbuffer is too smallrh   r   re  rŠ   )r>   r   r8  r9  rÉ   )r@   r)   s     r   r   r   %  sO   € äˆƒX�ƒ\Ü
Ð*Ó
+Ð+Ø�2‰w€*Ü	�‰Ü	ˆ#��Z‘Ð Ó! :¸r¹7ð 
ð 
ð r   c                 óX   • [        5       nUR                  U 5        UR                  5       $ )z1Returns bytearray with the encoded python object.)r   rµ  r[  )rå  Úfbbs     r   r   r   /  s    € ä‹	€#Ø‡'�'ˆ#„,Ø	�‰‹Ðr   c                 ó,   • [        U 5      R                  $ )z.Returns python object decoded from the buffer.)r   r<  )r@   s    r   r   r   6  s   € ä	�‹×	Ñ	Ðr   )(r1   r¾  rì  Úenumr   Ú__all__ÚIntEnumr	   r   r   r"   rA   rE   rG   rJ   rM   rR   r[   ra   rj   r   rÉ   rí   rø   r	  r  r&  r4  rC  rY  r8  ræ  r<  r"  r&  r(  r   r   r   r   r,   r   r   Ú<module>rõ     s\  ðñó Û Û Û à
:€ô6ˆt�|‰|ô 6ðr 	�˜ Ñ$€Ø�˜ Ñ$€Ø�Ñ€ò6òAò
5òHòò'ò
$òñ$ '9ô ôv@ˆ4�<‰<ô v@÷r%Oñ %O÷Pñ ôˆFô ô(
8ˆ5ô 
8ô!:ˆUô !:ôH7ˆ&ô 7ô.ˆUô ô8?�%ô ?ôD&7ˆ&ô &7÷RG;ñ G;òT
÷Mñ Mò`ò
÷,ñ ,÷._ñ _òDòór   