Ë
   òí{%œz^·ã                   ó  — d dl Zd dlmc mZ d dlmZ d dlm	Z	m
Z
mZ d dlmZ d dlmZ dee   de	eege
e   f   fd„Zd	ede	eege
e   f   fd
„Z G d„ d«      Z G d„ d«      Z G d„ d«      Z e«       Zd e_         G d„ de«      Zy)é    N)Údefaultdict)ÚCallableÚIterableÚSequence)ÚRandom)ÚLazySequenceCopyÚprefixÚreturnc                 óF   ‡ — dt         dt         dt        t            fˆ fd„}|S )zlSelect choices starting from ``prefix```,
    preferring to move left then wrapping around
    to the right.ÚdepthÚnr
   c              3   óà   •K  — | t        ‰«      k  r=‰|    }||k\  r|dz
  }t        |dd«      E d {  –—†  t        |dz
  |d«      E d {  –—†  y t        |dz
  dd«      E d {  –—†  y 7 Œ67 Œ 7 Œ	­w)Né   éÿÿÿÿ)ÚlenÚrange)r   r   Úir	   s      €úx/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/hypothesis/internal/conjecture/shrinking/choicetree.pyÚselection_orderz/prefix_selection_order.<locals>.selection_order   sw   øè ø€ Ø”3�v“;ÒØ�u‘ˆAØ�AŠvØ˜‘E�Ü˜Q  BÓ'×'Ð'Ü˜Q ™U A rÓ*×*Ñ*ä˜Q ™U B¨Ó+×+Ñ+ð (øØ*øà+ús3   ƒ.A.±A(²A.Á	A*Á
A.Á"A,Á#A.Á*A.Á,A.©Úintr   )r	   r   s   ` r   Úprefix_selection_orderr      s)   ø€ ð,œsð ,¤sð ,¬x¼©}õ ,ð Ðó    Úrandomc                 óF   ‡ — dt         dt         dt        t            fˆ fd„}|S )z#Select choices uniformly at random.r   r   r
   c              3   óž   •K  — t        t        |«      «      }|r2‰j                  dt        |«      «      }|j	                  |«      –— |rŒ1y y ­w©Nr   )r   r   Ú	randranger   Úpop)r   r   Úpendingr   r   s       €r   r   z/random_selection_order.<locals>.selection_order)   sA   øè ø€ Ü"¤5¨£8Ó,ˆÙØ× Ñ  ¤C¨£LÓ1ˆAØ—+‘+˜a“.Ò ô ùs   ƒAAÁAr   )r   r   s   ` r   Úrandom_selection_orderr!   &   s)   ø€ ð!œsð !¤sð !¬x¼©}õ !ð Ðr   c                   ór   — e Zd ZdZdddeeegee   f   fd„Zd„ fdee   deege	f   d	efd
„Z
d	ee   fd„Zy)ÚChooserz4A source of nondeterminism for use in shrink passes.ÚtreeÚ
ChoiceTreer   c                 óR   — || _         |j                  g| _        g | _        d| _        y )NF)Ú_Chooser__selection_orderÚrootÚ_Chooser__node_trailÚ_Chooser__choicesÚ_Chooser__finished)Úselfr$   r   s      r   Ú__init__zChooser.__init__5   s(   € ð
 "1ˆÔØ!ŸY™Y˜KˆÔØ$&ˆŒØˆ�r   c                  ó   — y)NT© )Úxs    r   ú<lambda>zChooser.<lambda>B   s   � r   ÚvaluesÚ	conditionr
   c                 óö  — | j                   }| }|syddt        j                  «       v st        j                  | «      rt        j
                  | «      ndt        j
                  |«      dœz  }t        t        j                  |«      «      ‚dx}}| j                  d   }|j                  € t        |«      |_	        t        |«      |_        g }|j                  }d}||kD  }|}	|st        |«      }
d}|
|k(  }|}	|	�sÉt        j                  d|fd||f«      d	t        j                  «       v st        j                  |«      rt        j
                  |«      nd	t        j
                  |«      t        j
                  |«      d
œz  }dd|iz  }|j                  |«       |sét        j                  dfd
f«      dt        j                  «       v st        j                  t        «      rt        j
                  t        «      nddt        j                  «       v st        j                  |«      rt        j
                  |«      ndt        j
                  |
«      t        j
                  |«      dœz  }dd|iz  }|j                  |«       t        j                  |d«      i z  }dd|iz  }t        t        j                  |«      «      ‚dx}	x}x}x}x}x}
x}}| j                  t        | j                   «      t        |«      «      D ]©  }|j                  dk(  r n˜|j"                  |   j$                  rŒ.||   } ||«      rG| j                   j                  |«       | j                  j                  |j"                  |   «       |c S t&        |j"                  |<   |xj                  dz  c_	        Œ« |j                  }d}||k(  }|s­t        j                  d|fd||f«      d	t        j                  «       v st        j                  |«      rt        j
                  |«      nd	t        j
                  |«      t        j
                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚dx}x}}t(        ‚)z©Return some element of values satisfying the condition
        that will not lead to an exhausted branch, or raise DeadBranch
        if no such element exist".
        z2assert not %(py2)s
{%(py2)s = %(py0)s.__finished
}r,   ©Úpy0Úpy2Nr   r   )ú>)z7%(py4)s
{%(py4)s = %(py2)s.live_child_count
} > %(py7)sÚnode)r7   Úpy4Úpy7z%(py9)sÚpy9©ú==)z5%(py14)s
{%(py14)s = %(py11)s(%(py12)s)
} == %(py17)sr   r2   )Úpy11Úpy12Úpy14Úpy17z%(py19)sÚpy19r   zassert %(py22)sÚpy22)z8%(py2)s
{%(py2)s = %(py0)s.live_child_count
} == %(py5)s©r6   r7   Úpy5úassert %(py7)sr;   )r+   Ú@py_builtinsÚlocalsÚ
@pytest_arÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationr)   Úlive_child_countr   r   Ú_call_reprcompareÚappendÚ_format_boolopr'   r*   ÚchildrenÚ	exhaustedÚDeadNodeÚ
DeadBranch)r,   r2   r3   Ú@py_assert1Ú@py_assert3Ú@py_format4r9   Ú@py_assert6Ú@py_assert5Ú@py_assert0Ú@py_assert13Ú@py_assert16Ú@py_assert15Ú@py_format8Ú@py_format10Ú@py_format18Ú@py_format20Ú@py_format21Ú@py_format23r   ÚvÚ@py_assert4Ú@py_format6s                          r   ÚchoosezChooser.choose?   s¿  € ð —?‘?Ð"�?Ð"Ð"Ñ"×"×"×"×"Õ"�4×"×"Ó"�4×"×"Ô"�?×"×"×"×"×"Ò"Ø× Ñ  Ñ$ˆØ× Ñ Ð(Ü$'¨£KˆDÔ!Ü˜“[ˆDŒFá<ˆt×$Ñ$Ð< qÐ<Ð$ qÑ(Ô<¬C°«KÐ<¸1Ð<¨K¸1Ñ,<×<×<×<Ð<Ð$ q×<×<×<×<×<Ñ<ˆt×<×<Ó<ˆt×<×<Ô<Ð$×<×<Ò< q×<×<×<×<×<×<Õ<¨K¸1×<×<×<×<×<Ñ<¬C×<×<Ó<¬C×<×<×<×<×<Ò<°×<×<Ó<°×<×<Ô<¨K×<×<Ò<¸1×<×<×<×<×<×<×<×<×<×<×<×<×<Ö<à×'Ñ'¬¨D¯N©NÓ(;¼SÀ»[ÓIò 	/ˆAØ×$Ñ$¨Ò)ÙØ—=‘= Ñ#×-Ó-Ø˜1‘I�Ù˜Q”<Ø—N‘N×)Ñ)¨!Ô,Ø×%Ñ%×,Ñ,¨T¯]©]¸1Ñ-=Ô>Ø’Hä'/�D—M‘M !Ñ$Ø×)Ò)¨QÑ.Ö)ð	/ð ×$Ñ$Ð)¨Ð)Ð$¨Ñ)×)×)Õ)Ð$¨×)×)×)×)×)Ñ)ˆt×)×)Ó)ˆt×)×)Ô)Ð$×)×)Ò)¨×)×)×)×)×)×)Ó)ÜÐr   c                 ót  — d| _         | j                  }t        |«      }| j                  }t        |«      }d}||z   }||k(  }|�s¼t	        j
                  d|fd||f«      dt        j                  «       v st	        j                  t        «      rt	        j                  t        «      nddt        j                  «       v st	        j                  | «      rt	        j                  | «      ndt	        j                  |«      t	        j                  |«      dt        j                  «       v st	        j                  t        «      rt	        j                  t        «      nddt        j                  «       v st	        j                  | «      rt	        j                  | «      ndt	        j                  |«      t	        j                  |«      t	        j                  |«      dœ	z  }dd	|iz  }	t        t	        j                  |	«      «      ‚d
x}x}x}x}x}x}}t        | j                  «      }
d| j                  d   _        t        | j                  «      dkD  �rg| j                  d   j                  �rM| j                  j                  «        | j                  }t        |«      }| j                  }t        |«      }||k(  }|�s¨t	        j
                  d|fd||f«      dt        j                  «       v st	        j                  t        «      rt	        j                  t        «      nddt        j                  «       v st	        j                  | «      rt	        j                  | «      ndt	        j                  |«      t	        j                  |«      dt        j                  «       v st	        j                  t        «      rt	        j                  t        «      nddt        j                  «       v st	        j                  | «      rt	        j                  | «      ndt	        j                  |«      t	        j                  |«      dœz  }dd|iz  }t        t	        j                  |«      «      ‚d
x}x}x}x}}| j                  j                  «       }| j                  d   }t         |j"                  |<   |j                  }d
}||u}|s­t	        j
                  d|fd||f«      dt        j                  «       v st	        j                  |«      rt	        j                  |«      ndt	        j                  |«      t	        j                  |«      dœz  }dd|iz  }t        t	        j                  |«      «      ‚d
x}x}}|xj                  dz  c_        t        | j                  «      dkD  r| j                  d   j                  r�ŒM|
S )z~Record the decisions made in the underlying tree and return
        a prefix that can be used for the next Chooser to be used.Tr   r=   )z %(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.__node_trail
})
} == (%(py12)s
{%(py12)s = %(py7)s(%(py10)s
{%(py10)s = %(py8)s.__choices
})
} + %(py14)s)r   r,   )	r6   Úpy1Úpy3rF   r;   Úpy8Úpy10r@   rA   zassert %(py17)srB   Nr   r   )z“%(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.__node_trail
})
} == %(py12)s
{%(py12)s = %(py7)s(%(py10)s
{%(py10)s = %(py8)s.__choices
})
})r6   rk   rl   rF   r;   rm   rn   r@   zassert %(py14)srA   )úis not)z<%(py2)s
{%(py2)s = %(py0)s.live_child_count
} is not %(py5)sÚtargetrE   rG   r;   )r+   r)   r   r*   rJ   rP   rH   rI   rK   rL   rM   rN   ÚtuplerO   rT   r   rU   rS   )r,   Ú@py_assert2rg   Ú@py_assert9Ú@py_assert11r]   r_   rZ   Ú@py_format16rb   ÚresultÚ@py_format13Ú@py_format15r   rp   rW   rX   rh   r`   s                      r   ÚfinishzChooser.finish_   sh  € ð ˆŒØ×$Ñ$Ð@ŒsÐ$Ó%Ð@¨T¯^©^Ð@¬¨^Ó)<Ð@¸qÐ@Ð)<¸qÑ)@Ð@Ð%Ð)@Ñ@×@×@Ö@Ð%Ð)@×@×@×@×@×@Ñ@Œs×@×@Ó@Œs×@×@×@×@×@Ò@�4×@×@Ó@�4×@×@Ô@Ð$×@×@Ò@Ð%×@×@×@×@×@Ð@¬×@×@Ó@¬×@×@×@×@×@Ò@¨T×@×@Ó@¨T×@×@Ô@¨^×@×@Ò@Ð)<×@×@Ò@¸q×@×@×@×@×@×@×@Ó@ä�t—~‘~Ó&ˆà12ˆ×Ñ˜"ÑÔ.Ü�$×#Ñ#Ó$ qÓ(¨T×->Ñ->¸rÑ-B×-LÓ-LØ×Ñ×!Ñ!Ô#Ø×(Ñ(Ð@”3Ð(Ó)Ð@°·±Ð@¬S°Ó-@Ð@Ð)Ð-@Ñ@×@×@Ö@Ð)Ð-@×@×@×@×@×@Ñ@”3×@×@Ó@”3×@×@×@×@×@Ò@�t×@×@Ó@�t×@×@Ô@Ð(×@×@Ò@Ð)×@×@×@×@×@Ð@¬S×@×@Ó@¬S×@×@×@×@×@Ò@°×@×@Ó@°×@×@Ô@°×@×@Ò@Ð-@×@×@×@×@×@×@×@Ø—‘×"Ñ"Ó$ˆAØ×&Ñ& rÑ*ˆFÜ!)ˆF�O‰O˜AÑØ×*Ñ*Ð6°$Ð6Ð*°$Ð6×6×6Õ6Ð*°$×6×6×6×6×6Ñ6�6×6×6Ó6�6×6×6Ô6Ð*×6×6Ò6°$×6×6×6×6×6×6Ó6Ø×#Ò# qÑ(Õ#ô �$×#Ñ#Ó$ qÒ(¨T×->Ñ->¸rÑ-B×-LÔ-Lð ˆr   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r-   r   Úboolri   ry   r/   r   r   r#   r#   2   st   „ Ù>ð àð ð " 3¨ *¨h°s©mÐ";Ñ<ó ñ ,:ñà˜‘ðð ˜S˜E 4˜KÑ(ðð 
ó	ð@˜ ™ô r   r#   c                   óh   — e Zd ZdZd	d„Zedefd„«       Zdee	e	ge
e	   f   deegdf   dee	   fd„Zy)
r%   zæRecords sequences of choices made during shrinking so that we
    can track what parts of a pass has run. Used to create Chooser
    objects that are the main interface that a pass uses to make
    decisions about what to do.
    r
   Nc                 ó"   — t        «       | _        y ©N)ÚTreeNoder(   ©r,   s    r   r-   zChoiceTree.__init__{   s   € Ü“Jˆ�	r   c                 ó.   — | j                   j                  S r�   )r(   rT   rƒ   s    r   rT   zChoiceTree.exhausted~   s   € à�y‰y×"Ñ"Ð"r   r   Úfc                 ó¤  — | j                   }| }|syddt        j                  «       v st        j                  | «      rt        j
                  | «      ndt        j
                  |«      dœz  }t        t        j                  |«      «      ‚d x}}t        | |«      }	  ||«       |j                  «       S # t        $ r Y |j                  «       S w xY w)Nz1assert not %(py2)s
{%(py2)s = %(py0)s.exhausted
}r,   r5   )rT   rH   rI   rJ   rK   rL   rM   rN   r#   rV   ry   )r,   r   r…   rW   rX   rY   Úchoosers          r   ÚstepzChoiceTree.step‚   sš   € ð
 —>‘>Ð!�>Ð!Ð!Ñ!×!×!×!×!Õ!�4×!×!Ó!�4×!×!Ô!�>×!×!×!×!×!Ò!ä˜$ Ó0ˆð	ÙˆgŒJð �~‰~ÓÐøô ò 	ØØ�~‰~ÓÐð	ús   ÂB4 Â4	CÃC©r
   N)rz   r{   r|   r}   r-   Úpropertyr~   rT   r   r   r   r#   r   rˆ   r/   r   r   r%   r%   t   si   „ ñóð ð#˜4ò #ó ð#ð à! 3¨ *¨h°s©mÐ";Ñ<ð ð �W�I˜t�OÑ$ð ð 
�#‰ô	 r   r%   c                   ó*   — e Zd Zdd„Zedefd„«       Zy)r‚   r
   Nc                 óH   — t        t        «      | _        d | _        d | _        y r�   )r   r‚   rS   rO   r   rƒ   s    r   r-   zTreeNode.__init__’   s   € Ü-8¼Ó-BˆŒØ,0ˆÔØ!ˆ�r   c                 ó    — | j                   dk(  S r   )rO   rƒ   s    r   rT   zTreeNode.exhausted—   s   € à×$Ñ$¨Ñ)Ð)r   r‰   )rz   r{   r|   r-   rŠ   r~   rT   r/   r   r   r‚   r‚   ‘   s"   „ ó"ð
 ð*˜4ò *ó ñ*r   r‚   c                   ó   — e Zd Zy)rV   N)rz   r{   r|   r/   r   r   rV   rV       s   „ Ør   rV   )ÚbuiltinsrH   Ú_pytest.assertion.rewriteÚ	assertionÚrewriterJ   Úcollectionsr   Úcollections.abcr   r   r   r   r   Ú)hypothesis.internal.conjecture.junkdrawerr   r   r   r!   r#   r%   r‚   rU   rO   Ú	ExceptionrV   r/   r   r   ú<module>r—      s§   ð÷ „ Õ #ß 8Ñ 8Ý å FðØ�S‰Mðàˆs�Cˆj˜( 3™-Ð'Ñ(óð(	 6ð 	¨h¸¸S°zÀ8ÈCÁ=Ð7PÑ.Qó 	÷?ñ ?÷D ñ  ÷:*ñ *ñ ‹:€Ø€Ô ô	�õ 	r   