ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     
    ֦i_                         d Z ddlmZmZ ddlmZ dZdZdZdZ	dZ
dZee	ez   ez   ez   e
z   z
  Zd Zd	 Zdd
Zd Zd Zd Zd Z edd      Zd Zd Zy)zVarious utility functions.    )
namedtupleCounter)commonprefixTP         c                 n    t        |       |z
  |z
  }|t        kD  rd| d | || t        |       |z
  d  fz  } | S )Nz%s[%d chars]%s)len_PLACEHOLDER_LEN)s	prefixlen	suffixlenskips       &/usr/lib64/python3.12/unittest/util.py_shortenr      sK    q6I	)D*9tQs1v	7I7J5KLLH    c                     t        t        t        |             } t        t        t        |             }|t
        k  r| S t        |       t	              t
        |z
  t        z   t        z   z
  }|t        kD  r&t        t        |      t        fd| D              S t        t        t              t        fd| D              S )Nc              3   .   K   | ]  }|d  z     y wN .0r   prefixr   s     r   	<genexpr>z'_common_shorten_repr.<locals>.<genexpr>'   s     :TVa	
m+Ts   c              3   T   K   | ]  }t        |d  t        t              z    ! y wr   )r   _MIN_DIFF_LEN_MIN_END_LENr   s     r   r   z'_common_shorten_repr.<locals>.<genexpr>*   s-       Q (1YZ=-NNs   %()tuplemap	safe_reprmaxr
   _MAX_LENGTHr   _MIN_BEGIN_LENr   _MIN_COMMON_LENr   )argsmaxlen
common_lenr   r   s      @@r   _common_shorten_reprr(      s    Y%&DS$ F$FFI9$~58HHJJO# &.*=:T:::fno>F       r   c                     	 t        |       }|rt	        |      t
        k  r|S |d t
         dz   S # t        $ r t        j                  |       }Y Bw xY w)Nz [truncated]...)repr	Exceptionobject__repr__r
   r"   )objshortresults      r   r    r    -   sW    &c CK+-,;"333	  &%&s   / AAc                 8    | j                   d| j                  S )N.)
__module____qualname__)clss    r   strclassr6   6   s    nnc&6&677r   c                    dx}}g }g }	 	 | |   }||   }||k  r-|j                  |       |dz  }| |   |k(  ry|dz  }| |   |k(  rnj||kD  r-|j                  |       |dz  }||   |k(  rG|dz  }||   |k(  rn8|dz  }	 | |   |k(  r|dz  }| |   |k(  r|dz  }||   |k(  r|dz  }||   |k(  r	 # |dz  }||   |k(  r|dz  }||   |k(  rw w xY w# t        $ r. |j                  | |d        |j                  ||d        Y ||fS w xY w)ar  Finds elements in only one or the other of two, sorted input lists.

    Returns a two-element tuple of lists.    The first list contains those
    elements in the "expected" list but not in the "actual" list, and the
    second contains those elements in the "actual" list but not in the
    "expected" list.    Duplicate elements in either input list are ignored.
    r      N)append
IndexErrorextend)expectedactualijmissing
unexpectedeas           r   sorted_list_differencerD   9   s    IAGJ
	Aq	A1uq!QqkQ&FA qkQ&Q!!!$QQi1nFA Qi1n Q"1+*Q #1+* FA )q.Q !)q.+ ( FA )q.Q !)q. 	NN8AB<(fQRj)J		sA   :C 1C 8C ?B2 C 0C 2CCC 1D
	D
c                     g }| r%| j                         }	 |j                  |       | r%||fS # t        $ r |j                  |       Y #w xY w)zSame behavior as sorted_list_difference but
    for lists of unorderable items (like dicts).

    As it does a linear search per item (remove) it
    has O(n*n) performance.)popremove
ValueErrorr9   )r<   r=   r@   items       r   unorderable_list_differencerJ   b   sV     G
||~	!MM$  F?	  	!NN4 	!s   . A
Ac                     | |kD  | |k  z
  S )z.Return -1 if x < y, 0 if x == y and 1 if x > yr   )xys     r   three_way_cmprN   s   s    Ea!er   Mismatchzactual expected valuec                 <   t        |       t        |      }}t        |      t        |      }}t               }g }t        |      D ]y  \  }}	|	|u rdx}
}t	        ||      D ]  }||   |	k(  s|
dz  }
|||<    t        |      D ]  \  }}||	k(  s|dz  }|||<    |
|k7  s\t        |
||	      }|j                  |       { t        |      D ]N  \  }}	|	|u rd}t	        ||      D ]  }||   |	k(  s|dz  }|||<    t        d||	      }|j                  |       P |S )HReturns list of (cnt_act, cnt_exp, elem) triples where the counts differr   r8   )listr
   r,   	enumeraterange	_Mismatchr9   )r=   r<   r   tmnNULLr0   r>   elemcnt_scnt_tr?   
other_elemdiffs                  r   _count_diff_all_purposer_   y   sI    <hqAq63q6qA8DFQ<44<q!Att|
!  'q\MAzT!
! * E>UE40DMM$    Q<44<q!Att|
!  E4(d   Mr   c                 H   t        |       t        |      }}g }|j                         D ];  \  }}|j                  |d      }||k7  st        |||      }|j	                  |       = |j                         D ](  \  }}||vst        d||      }|j	                  |       * |S )rQ   r   )r   itemsgetrU   r9   )	r=   r<   r   rV   r0   rZ   r[   r\   r^   s	            r   _count_diff_hashablerc      s     6?GH-qAFwwyedAE>UE40DMM$	 !
 wwyeq=Qt,DMM$ ! Mr   N)F)__doc__collectionsr   r   os.pathr   
__unittestr"   r   r#   r   r$   r   r   r(   r    r6   rD   rJ   rN   rU   r_   rc   r   r   r   <module>rh      s      +  
 !11OC !#/01
 *48&R" z#:;	!Fr   