
    e!h ]                     $   d Z ddlZddlZddlZddlZddlZddlZddlmZ ddl	m
Z
mZ ddlmZ ddlmZ d Z G d d	      Z G d
 de      Z edg d      Z G d de      Zd Z G d de      Z G d de      Z G d de      ZdddeeefdZy)z;Extract reference documentation from the NumPy source tree.    N)
namedtuple)CallableMapping)cached_property)warnc                     | r,| d   j                         s| d= | r| d   j                         s| r,| d   j                         s| d= | r| d   j                         s| S )z<Remove leading and trailing blank lines from a list of linesr   strip)ls    ]/var/www/html/diagnosisapp-backend/venv/lib/python3.12/site-packages/scipy/_lib/_docscrape.pystrip_blank_linesr      sU    
AaDJJLaD AaDJJL
AbEKKMbE AbEKKMH    c                   T    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 ZddZd Zy)ReaderzA line-based string reader.c                     t        |t              r|| _        n|j                  d      | _        | j	                          y)zs
        Parameters
        ----------
        data : str
           String with lines separated by '\n'.

        
N)
isinstancelist_strsplitreset)selfdatas     r   __init__zReader.__init__   s.     dD!DI

4(DI

r   c                      | j                   |   S N)r   r   ns     r   __getitem__zReader.__getitem__+   s    yy|r   c                     d| _         y )Nr   )_lr   s    r   r   zReader.reset.   s	    r   c                 p    | j                         s&| | j                     }| xj                  dz  c_        |S y)N    )eofr"   )r   outs     r   readzReader.read1   s-    xxztww-CGGqLGJr   c                 z    | | j                   d  D ])  }|j                         r y | xj                   dz  c_         + y Nr%   )r"   r   )r   r   s     r   seek_next_non_empty_linezReader.seek_next_non_empty_line9   s4    dggi 	Awwy1		r   c                 F    | j                   t        | j                        k\  S r   r"   lenr   r#   s    r   r'   z
Reader.eof@   s    ww#dii.((r   c                     | j                   }| |d  D ]T  } ||      r| || j                    c S | xj                   dz  c_         | j                         sB| || j                   dz    c S  g S r+   )r"   r'   )r   condition_funcstartlines       r   read_to_conditionzReader.read_to_conditionC   sk    L 	1Dd#EDGG,,GGqLGxxzEDGGaK00	1 	r   c                 J    | j                          d }| j                  |      S )Nc                 $    | j                          S r   r
   r3   s    r   is_emptyz0Reader.read_to_next_empty_line.<locals>.is_emptyP   s    zz|##r   )r,   r4   )r   r8   s     r   read_to_next_empty_linezReader.read_to_next_empty_lineM   s&    %%'	$ %%h//r   c                 *    d }| j                  |      S )Nc                 p    | j                         xr% t        | j                               t        |       k(  S r   )r   r/   lstripr7   s    r   is_unindentedz:Reader.read_to_next_unindented_line.<locals>.is_unindentedV   s'    ::<ES%73t9%DEr   )r4   )r   r=   s     r   read_to_next_unindented_linez#Reader.read_to_next_unindented_lineU   s    	F %%m44r   c                 r    | j                   |z   t        | j                        k  r| | j                   |z      S yNr&   r.   r   s     r   peekzReader.peek[   s0    77Q;TYY'!$$r   c                 V    dj                  | j                        j                          S r@   )joinr   r   r#   s    r   r8   zReader.is_emptya   s!    77499%++---r   N)r   )__name__
__module____qualname____doc__r   r    r   r)   r,   r'   r4   r9   r>   rA   r8    r   r   r   r      s<    %)05.r   r   c                       e Zd Zd Zy)
ParseErrorc                 ^    | j                   d   }t        | d      r| d| j                  }|S )Nr   	docstring in )argshasattrrL   )r   messages     r   __str__zParseError.__str__f   s3    ))A,4% 	dnn%78Gr   N)rD   rE   rF   rQ   rH   r   r   rJ   rJ   e   s    r   rJ   	Parameter)nametypedescc                   2   e Zd ZdZi ddddgdg dg dg dg d	g d
g dg dg dg dg dg dg dg dddddi iZdBdZd Zd Zd Zd Z	d Z
d Zd Zd ZdCdZd Zd!Zd"Zd#ez   ez   d$z   ez   d%z   Zej'                  d&d'      Zej'                  d(d)      Zd*Z ej.                  d+ez   d,z         Z ej.                  d-ez   d.z   ez   d/z   d%z   d0z   ez         Zd1Zd2 Zd3 Zd4 Zd5 Zed6        Z dDd7Z!dEd8Z"dFd9Z#d: Z$d; Z%d< Z&d= Z'd> Z(d? Z)d@ Z*dGdAZ+y)HNumpyDocStringzParses a numpydoc string to an abstract representation

    Instances define a mapping from section title to structured data.

    	Signaturer&   SummaryExtended Summary
Parameters
AttributesMethodsReturnsYieldsReceivesOther ParametersRaisesWarnsWarningsSee AlsoNotes
ReferencesExamplesindexNc                    |}t        j                  |      j                  d      }t        |      | _        t        j                  | j                        | _        	 | j                          y # t        $ r}||_         d }~ww xY w)Nr   )textwrapdedentr   r   _doccopydeepcopysections_parsed_data_parserJ   rL   )r   rL   configorig_docstringes        r   r   zNumpyDocString.__init__   si    "OOI.44T:	9%	 MM$--8	KKM 	(AK	s   A- -	B6A>>Bc                      | j                   |   S r   )rq   )r   keys     r   r    zNumpyDocString.__getitem__   s      %%r   c                 l    || j                   vr| j                  d| d       y || j                   |<   y )NzUnknown section Ferror)rq   _error_location)r   rw   vals      r   __setitem__zNumpyDocString.__setitem__   s;    d'''  #3C5!9 G%(Dc"r   c                 ,    t        | j                        S r   )iterrq   r#   s    r   __iter__zNumpyDocString.__iter__   s    D%%&&r   c                 ,    t        | j                        S r   )r/   rq   r#   s    r   __len__zNumpyDocString.__len__   s    4$$%%r   c                    | j                   j                          | j                   j                         ry| j                   j                         j	                         }|j                  d      ry| j                   j                  d      j	                         }t        |      dk\  rot        |      dhdhfv r^t        |      t        |      k7  rGdj                  | j                   j                  d d	       d
z   }| j                  d| d| d| d       |j                  dt        |      z        xs |j                  dt        |      z        S )NF
.. index::Tr%      -=r      z...z'potentially wrong underline length... 
z 
z in 
ry   )rm   r,   r'   rA   r   
startswithr/   setrC   r   r{   )r   l1l2snips       r   _is_at_sectionzNumpyDocString._is_at_section   s   		**,99==?YY^^##%==&YY^^A$$&r7a<SW#6CGs2w<N99TYY^^BQ/058D  :2$c"VD6R !  }}S3r7]+Kr}}S3r7]/KKr   c                     d}d}t        |      D ]  \  }}|j                         s n t        |d d d         D ]  \  }}|j                         s n ||t        |      |z
   S )Nr   r	   )	enumerater   r/   )r   docijr3   s        r   _stripzNumpyDocString._strip   st     ~ 	GAtzz|	 !TrT+ 	GAtzz|	 1s3x!|$$r   c                 |   | j                   j                         }| j                         s| j                   j                         sw| j                   j	                  d      j                         s|dgz  }|| j                   j                         z  }| j                         s| j                   j                         sw|S )Nr	   r&   )rm   r9   r   r'   rA   r   )r   sections     r   _read_to_next_sectionz$NumpyDocString._read_to_next_section   s    ))335%%'		99>>"%++-B4tyy88::G	 %%'		 r   c              #   R  K   | j                   j                         s| j                         }|d   j                         }|j	                  d      r
||dd  f n/t        |      dk  r	t         n|| j                  |dd        f | j                   j                         sy y w)Nr   ..r%   r   )rm   r'   r   r   r   r/   StopIterationr   )r   r   rS   s      r   _read_sectionszNumpyDocString._read_sections   s     ))--/--/D7==?Dt$DHn$TQ##DKKQR111 ))--/s   B"B'%B'c                    t        |      }t        |      }g }|j                         s|j                         j	                         }d|v r|j                  dd      \  }}n!|j                  d      r|d d }|rd|}}n|d}}|j                         }t        |      }t        |      }|j                  t        |||             |j                         s|S )N : r%   )maxsplitz :r&   )dedent_linesr   r'   r)   r   r   endswithr>   r   appendrR   )	r   contentsingle_element_is_typerparamsheaderarg_namearg_typerU   s	            r   _parse_param_listz NumpyDocString._parse_param_list   s    w'7O%%'VVX^^%F%+\\%!\%D"(
 ??4(#CR[F))+VhH)/hH113D%D$T*DMM)Hh=>' %%'* r   z:(?P<role>(py:)?\w+):z'`(?P<name>(?:~\w+\.)?[a-zA-Z0-9_\.-]+)`z(?P<name2>[a-zA-Z0-9_\.-]+)(|)rolerolenextrS   namenextz/(?P<description>\s*:(\s+(?P<desc>\S+.*))?)?\s*$z^\s*z\s*z^\s*(?P<allfuncs>z(?P<morefuncs>([,]\s+z)*)z(?P<trailing>[,\.])?r   c                     t        |      }g } fd}g }|D ]g  j                         s j                  j                        }d}|rK|j	                  d      }|j	                  d      r)|r' j                  d|j                  d      fz  d       |s1j                  d      r |j                  j                                |rg }|j	                  d	      }	 |j                         snP ||      \  }	}
}|j                  |	|
f       ||d j                         }|r|d
   dk(  r|dd j                         }at        t        d|g            }|j                  ||f       T j                  d       j |S )z
        func_name : Descriptive text
            continued text
        another_func_name : Descriptive text
        func_name1, func_name2, :meth:`func_name`, func_name3

        c                     j                   j                  |       }|sj                  d       |j                  d      }|r|j                  d      n|j                  d      }|||j	                         fS )zMatch ':role:`name`' or 'name'.Error parsing See Also entry r   rS   name2)	_func_rgxmatchr{   groupend)textmr   rS   r3   r   s       r   parse_item_namez7NumpyDocString._parse_see_also.<locals>.parse_item_name/  sj    $$T*A$$'DTH%MN776?D&*1776?0@Dquuw&&r   NrU   trailingzGUnexpected comma or period after function list at index %d of line "%s"Fry    allfuncsr   ,r%   r   )r   r   	_line_rgxr   r   r{   r   r   r   r   filter)r   r   itemsr   rest
line_matchdescriptionfuncsr   rS   r   	match_endr3   s   `           @r   _parse_see_alsozNumpyDocString._parse_see_also"  s    w'	'  	OD::<--d3JK(..v6##J/K(($'1~~j'A4&HI# ) 
 4??3#7DJJL)!''
3::<,;D,A)D$	LL$.	
+113DQ3#ABx~~/  F4+78eT]+$$'DTH%MN=	O> r   c                    d }i }|j                  d      }t        |      dkD  r  ||d   j                  d            d   |d<   |D ]B  }|j                  d      }t        |      dkD  s# ||d   j                  d            ||d   <   D |S )	zU
        .. index:: default
           :refguide: something, else, and more

        c                 H    | D cg c]  }|j                          c}S c c}w r   r
   )lstss     r   strip_each_inz2NumpyDocString._parse_index.<locals>.strip_each_ina  s    '*+!AGGI+++s   z::r%   r   r   default:r   )r   r/   )r   r   r   r   r(   r3   s         r   _parse_indexzNumpyDocString._parse_indexZ  s    	, --%w<!*71:+;+;C+@A!DC	N 	AD::c?D4y1},T!W]]3-?@DG	A 
r   c                    | j                         ry	 | j                  j                         }dj                  |D cg c]  }|j	                          c}      j	                         }t        j                  d      }|j                  |      r|| d<   | j                         s	 ||| d<   | j                         s| j                         | d<   yyc c}w )z%Grab signature (if given) and summaryNr   z^([\w., ]+=)?\s*[\w\.]+\(.*\)$rX   rY   rZ   )	r   rm   r9   rC   r   recompiler   r   )r   summaryr   summary_strcompileds        r   _parse_summaryzNumpyDocString._parse_summaryn  s      ii779G((w#?!AGGI#?@FFHKzz"CDH~~k*$/[!**,%DO""$'+'A'A'CD#$ % $@s   Cc           	         | j                   j                          | j                          t        | j	                               }|D ch c]  \  }}|	 }}}d|v }|sd|v rd}t        |      |D ]  \  }}|j                  d      std |j                  d      D        }dj                  |      }| j                  |      r:| j                  d|dd	j                  | j                   j                               |d
v r| j                  |      | |<   |dv r| j                  |d      | |<   |j                  d      r| j                  ||      | d<   |dk(  r| j                  |      | d<   || |<   	 y c c}}w )Nr_   r`   z5Docstring contains a Receives section but not Yields.r   c              3   <   K   | ]  }|j                           y wr   )
capitalize).0r   s     r   	<genexpr>z(NumpyDocString._parse.<locals>.<genexpr>  s     Fa1<<>Fs   r   zThe section z appears twice in  r   )r[   ra   r\   r]   )r^   r_   rb   rc   r`   T)r   r   ri   re   )rm   r   r   r   r   
ValueErrorr   r   rC   getr{   r   r   r   r   )r   rp   r   r   section_names
has_yieldsmsgs          r   rr   zNumpyDocString._parse  sz   		++-.9AB%5WgBB.
jM9ICS/! ( 	(GW%%d+F7==3EF((7+88G$(("DIIdiinn$=?
 UU $ 6 6w ?WPP $ 6 6D !7 !W ##L1 $ 1 1'7 CWJ&#'#7#7#@Z  'W+	( Cs   	E<c                 d    t        | d      r| j                  S t        | d      r| j                  S y )N_cls_f)rO   r   r   r#   s    r   _objzNumpyDocString._obj  s,    4 99T4 77Nr   c                 V   | j                   r	 t        j                  | j                         }t	        | j                   dd       }|"t	        t	        | j                   dd       dd       }||d| z  }||rd| dndz  }|rt        |      t        |d       y # t        $ r d }Y zw xY w)	NrD   	__class__z in the docstring of rM   .r&   r   )
stacklevel)r   inspectgetsourcefile	TypeErrorgetattrr   r   )r   r   rz   filenamerS   s        r   r{   zNumpyDocString._error_location  s    99  "00;
 499j$7D|wtyy+tDjRVW.tf55T(1%r9CS/!#    s   B B('B(c                 "    |t        |      |z  gS r   )r/   )r   rS   symbols      r   _str_headerzNumpyDocString._str_header  s    c$i&())r   c                 8    |D cg c]
  }d|z  |z    c}S c c}w )Nr   rH   )r   r   indentr3   s       r   _str_indentzNumpyDocString._str_indent  s    034ft#444s   c                 F    | d   r| d   j                  dd      gdgz   S dgS )NrX   *z\*r&   )replacer#   s    r   _str_signaturezNumpyDocString._str_signature  s3    %--c59:bTAAtr   c                 "    | d   r	| d   dgz   S g S )NrY   r&   rH   r#   s    r   _str_summaryzNumpyDocString._str_summary  s    	?	?bT))	r   c                 "    | d   r	| d   dgz   S g S )NrZ   r&   rH   r#   s    r   _str_extended_summaryz$NumpyDocString._str_extended_summary  s#    "#*+rd22	r   c                    g }| |   r|| j                  |      z  }| |   D ]  }g }|j                  r|j                  |j                         |j                  r|j                  |j                         |dj	                  |      gz  }|j
                  sudj	                  |j
                        j                         s|| j                  |j
                        z  } |dgz  }|S )Nr   r&   )r   rS   r   rT   rC   rU   r   r   )r   rS   r(   parampartss        r   _str_param_listzNumpyDocString._str_param_list  s    :4##D))Cd 8::LL,::LL,

5)**::"''%**"5";";"=4++EJJ77C8 B4KC
r   c                 X    g }| |   r"|| j                  |      z  }|| |   z  }|dgz  }|S r@   )r   )r   rS   r(   s      r   _str_sectionzNumpyDocString._str_section  sA    :4##D))C4:CB4KC
r   c                    | d   sg S g }|| j                  d      z  }|dgz  }d}| d   D ]  \  }}t        |t              sJ g }|D ]4  \  }}|r
d| d| d}	n|r
d| d| d}	nd| d}	|j                  |	       6 dj	                  |      }	||	gz  }|r'|| j                  d	j	                  |      g      z  }d}d
}|| j                  | j                  g      z  } |r|dgz  }|dgz  }|S )Nre   r&   Tr   z:``z`_, r   F)r   r   r   r   rC   r   empty_description)
r   	func_roler(   last_had_descr   rU   linksfuncr   links
             r   _str_see_alsozNumpyDocString._str_see_also  sH   JIt
++t
+ 	BKE4eT***E# #
dtfBtfA.DykD63DtfB<DT"# 99U#DD6MCt''$(899 $ %t'')?)?(@AA%	B( B4KCt
r   c                     | d   }g }d}|j                  dd      }|rd}|d| gz  }|j                         D ](  \  }}|dk(  rd}|d| dd	j                  |       gz  }* |r|S y)
Nri   Fr   r&   Tz.. index:: z   :z: r  )r   r   rC   )r   idxr(   output_indexdefault_indexr   
referencess          r   
_str_indexzNumpyDocString._str_index  s    7m	2.L+m_-..#&99; 	?GZ)#Ld7)2dii
&;%<=>>C		?
 Jr   c                    g }|| j                         z  }|| j                         z  }|| j                         z  }|| j                  d      z  }dD ]  }|| j                  |      z  } dD ]  }|| j                  |      z  } || j	                  d      z  }|| j                  |      z  }dD ]  }|| j	                  |      z  } || j                         z  }dj                  |      S )Nr[   )r\   r]   )r^   r_   r`   ra   rb   rc   rd   )rf   rg   rh   r   )r   r   r   r   r  r  r  rC   )r   r  r(   
param_listr   s        r   rQ   zNumpyDocString.__str__$  s   t""$$t  ""t))++t##L113 	4J4''
33C	4
 	4J 4''
33C	4 	t  ,,t!!),,4 	(A4$$Q''C	(t  yy~r   r   )F)T)r   )   )r&   ),rD   rE   rF   rG   rp   r   r    r}   r   r   r   r   r   r   r   _role_funcbacktick
_funcplain	_funcnamer   _funcnamenext_descriptionr   r   r   r   r  r   r   r   rr   propertyr   r{   r   r   r   r   r   r   r  r  r  rQ   rH   r   r   rW   rW   p   sM   RB4 	B 	b	
 	b 	2 	2 	" 	B 	B 	" 	 	B 	B 	  	b!" 	B#$ 	%H*&)'&L(%	
2V %E>M/Ju},t3j@4GI%%fj9M!))&*=MEL

7Y.78I

	
	 #	# 		
 	 	 "	" 	
I 6p(D,"(H  $,*5


 @"r   rW   c                 h    t        j                  dj                  |             j                  d      S )z"Deindent a list of lines maximallyr   )rk   rl   rC   r   )liness    r   r   r   =  s%    ??499U+,22488r   c                   ,     e Zd ZddZd Z fdZ xZS )FunctionDocc                     || _         || _        |&|t        d      t        j                  |      xs d}|i }t
        j                  | ||       y )NzNo function or docstring givenr&   )r   r  r   r   getdocrW   r   )r   r
  r   r   rs   s        r   r   zFunctionDoc.__init__C  sU    
;| !ABB..&,"C>Fc62r   c                    t        | j                  d| j                  j                        }t	        j
                  | j                        r/t        | j                  d| j                  j                        }||fS | j                  }||fS )NrD   __call__)r   r   r   rD   r   isclassr   )r   	func_namer
  s      r   get_funczFunctionDoc.get_funcO  sk    DGGZ1H1HI	??477#477J0@0@AD Y 77DYr   c                 &   d}| j                         \  }}ddd}| j                  rL| j                  |vrt        d| j                          |d|j                  | j                  d       d| dz  }|t        |   | j                  	      z  }|S )
Nr&   functionmethod)r
  methzWarning: invalid role z.. z:: z
    

)r  )r'  r  printr   superrQ   )r   r(   r
  r&  rolesr   s        r   rQ   zFunctionDoc.__str__W  s    --/i#X6::zz&.tzzl;<S4::r233ykLLCuw44
r   )r
  NN)rD   rE   rF   r   r'  rQ   __classcell__)r   s   @r   r   r   B  s    
3 r   r   c                       e Zd ZddZy)ObjDocNc                 J    || _         |i }t        j                  | ||       y )Nrs   )r   rW   r   )r   objr   rs   s       r   r   zObjDoc.__init__h  s(    >Fc&9r   )NN)rD   rE   rF   r   rH   r   r   r1  r1  g  s    :r   r1  c                   X    e Zd ZdgZddedfdZed        Zed        Ze	d        Z
d Zy)	ClassDocr$  Nr&   c                 b   t        j                  |      s|t        d|      || _        dt        j
                  v rddlm} n
t               }|i }|j                  dd      | _
        |r|j                  d      s|dz  }|| _        |"|t        d      t        j                  |      }t        j!                  | |       |j                  d	g       }||u rd }|j                  d
g       }|j                  dd      r||urd }	d| j"                  fd| j$                  ffD ]y  \  }
}| |
   rg }t'        |      D ]Y  }||v s|r||vr	 t        j                  t)        | j                  |            }|j+                  t-        |d |	|                   [ || |
<   { y y y # t.        $ r Y qw xY w)Nz"Expected a class or None, but got sphinxr   )ALLshow_inherited_class_membersTr   z&No class or documentation string givenmemberszexclude-membersshow_class_membersc                 *    | sg S | j                         S r   )
splitlines)r   s    r   splitlines_xz'ClassDoc.__init__.<locals>.splitlines_x  s    I<<>)r   r]   r\   r&   )r   r%  r   r   sysmodulessphinx.ext.autodocr9  objectr   show_inherited_membersr   _modpydocr"  rW   r   methods
propertiessortedr   r   rR   AttributeError)r   clsr   
modulenamefunc_docrs   r9  _members_excluder?  fieldr   doc_listrS   doc_items                  r   r   zClassDoc.__init__r  s   s#A#IJJ	s{{".(C>F&,jj1OQU&V#j11#6#J	;{ !IJJ,,s#Cc*::i,s?H::/4::*D1hc6I* DLL)t/! +u E{!H &u !8+T=Q$!',||GDIIt4L'MH$OOIdBX@V,WX! #+DK+ 7J1(  . ! !s   AF""	F.-F.c                    | j                   g S t        j                  | j                         D cg c]G  \  }}|j                  d      r|| j                  v r#t        |t              r| j                  |      r|I c}}S c c}}w N_)r   r   
getmembersr   extra_public_methodsr   r   _is_show_memberr   rS   r
  s      r   rG  zClassDoc.methods  sw    99I &00;
d__S)TT5N5N-NtX.((. 
 	
 
s   ABc           	      d   | j                   g S t        j                  | j                         D cg c]r  \  }}|j                  d      s\| j	                  || j                         s@|+t        |t        t        f      st        j                  |      r| j                  |      r|t c}}S c c}}w rT  )
r   r   rV  r   _should_skip_memberr   r  r   isdatadescriptorrX  rY  s      r   rH  zClassDoc.properties  s    99I &00;
dOOC(00tyyAL!$?(CD//5((. 
 	
 
s   A7B,c                 z    t        |t              xr* t        |d      xr t        |d      xr | |j                  v S )N_asdict_fields)
issubclasstuplerO   r_  )rS   klasss     r   r[  zClassDoc._should_skip_member  sD    
 ue$ &y)&y)& %	
r   c                 N    | j                   xs || j                  j                  v S r   )rD  r   __dict__)r   rS   s     r   rX  zClassDoc._is_show_member  s)     '' *tyy)))		
r   )rD   rE   rF   rW  r   r   r  rG  rH  staticmethodr[  rX  rH   r   r   r6  r6  o  s[    &< $kRV 4+l 
 
 
 
$ 
 

r   r6  c                    |Et        j                  |       rd}n-t        j                  |       rd}nt        | t              rd}nd}|i }|dk(  r || |||      S |dv r || ||      S |t        j                  |       } || ||      S )	Nclassmoduler)  rC  )rM  r   rs   )r)  r*  )r   rs   r3  )r   r%  ismoduler   r   rF  r"  )r4  whatr   rs   	class_docrM  obj_docs          r   get_doc_objectrm    s     |??3Dc"DX&DD~wxSHH	'	'V44;,,s#CsC//r   )rG   rn   r   rF  r   r@  rk   collectionsr   collections.abcr   r   	functoolsr   warningsr   r   r   	ExceptionrJ   rR   rW   r   r   r1  r6  rm  rH   r   r   <module>rs     s    A    	 
  " - % I. I.X  {$<=	JW JZ9
". "J:^ :k
~ k
` 
0r   