
    shl                     t   S SK Jr  S SKrS SKrS SKJr  S SKJrJrJ	r	J
r
JrJrJr  S SKJr  S SKJr  S SKJr  S SKJr  S S	KJrJrJrJrJrJrJrJrJrJ r J!r!J"r"J#r#J$r$J%r%J&r&J'r'J(r(  S S
K)J*r*J+r+J,r,J-r-J.r.J/r/J0r0J1r1J2r2J3r3J4r4J5r5J6r6J7r7J8r8  S SK9J:r:J;r;  S SK<J=r=J>r>J?r?   " S S\=5      r@\@" 5       rAS\AlB        / SQrC " S S\" S\C5      5      rD\" S/ SQ5      rES rFS rGS+S jrH " S S\I5      rJ " S S\K5      rL " S S\M5      rNS  rO " S! S"\I5      rP " S# S$\P5      rQ " S% S&\I5      rRS\Q4S' jrSS(SSS\Q4S) jrTS* rUg),    )
namedtupleN)event)errorsinterpreterbytecodepostprocconfigcallconvcpu)ParforDiagnostics)CompilerError)lookup_environment)PassManager)ExtractByteCodeTranslateByteCode	FixupArgsIRProcessingDeadBranchPruneRewriteSemanticConstantsInlineClosureLikesGenericRewritesWithLiftingInlineInlinablesFindLiterallyCallsMakeFunctionToJitFunctionCanonicalizeLoopExitCanonicalizeLoopEntryLiteralUnrollReconstructSSARewriteDynamicRaises!LiteralPropagationSubPipelinePass)NopythonTypeInferenceAnnotateTypesNopythonRewritesPreParforPass
ParforPassDumpParforDiagnosticsIRLegalizationNoPythonBackendInlineOverloadsPreLowerStripPhisNativeLoweringNativeParforLowering"NoPythonSupportedFeatureValidationParforFusionPassParforPreLoweringPass)ObjectModeFrontEndObjectModeBackEnd)TargetConfigOptionConfigStackc                      \ rS rSrSr\" \SSS9r\" \SSS9r\" \SSS9r	\" \SS	S9r
\" \SS
S9r\" \SSS9r\" \SSS9r\" \SSS9r\" \SSS9r\" \SSS9r\" \SSS9r\" \SSS9r\" \R(                  \R(                  " S5      SS9r\" \SSS9r\" \SSS9r\" \SSS9r\" \R4                  \R4                  " S5      SS9r\" \SSS9r\" \R:                  \R:                  " S5      SS9r\" \SSS9r\" \SSS9r \" \SSS9r!Sr"g)Flags*    FzEnable loop-lifting)typedefaultdocz!Enable pyobject mode (in general)z(Enable pyobject mode inside lifted loopsTz
Enable SSAz-Force pyobject mode inside the whole functionz&Release GIL inside the native functionTODOz7Force inlining of the function. Overrides _dbg_optnone.zEnable automatic parallel optimization, can be fine-tuned by
taking a dictionary of sub-options instead of a boolean, see parfor.py for
detailpythonneverzTExtend variable lifetime for debugging. This automatically turns on with debug=True.z\Disable optimization for debug. Equivalent to adding optnone attribute in the LLVM Function.zDMake debug emissions directives-only. Used when generating lineinfo.N)#__name__
__module____qualname____firstlineno__	__slots__r4   boolenable_loopliftenable_pyobjectenable_pyobject_looplift
enable_ssaforce_pyobjectrelease_gil
no_compile	debuginfoboundscheckforceinlineno_cpython_wrapperno_cfunc_wrapperr   ParallelOptionsauto_parallelnrtno_rewritesstrerror_modelFastMathOptionsfastmathnoaliasInlineOptionsinlinedbg_extend_lifetimesdbg_optnonedbg_directives_only__static_attributes__r9       g/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/core/compiler.pyr7   r7   *   s   I!O
 /O
  &6 
 J
 ;N
 4K
 J
 I
 K
 EK
  
 
   ##E*
M C
 K
 K
   ##E*H
 G
 !!'*F "< LK !.ra   r7   T)typing_contexttarget_contextentry_pointtyping_errortype_annotation	signature
objectmodeliftedfndesclibrarycall_helperenvironmentmetadatareload_initreferenced_envsc                   R    \ rS rSrSrSrS rS r\S 5       r	\
S 5       rS
S jrSrg	)CompileResult   zA
A structure holding results from the compilation of a function.
r9   c                 P   U R                   R                  5       n[        U R                  5      nU R                  nS=Ul        Ul        U R                  5       nXR                  U R                  U R                  U R                  U R                  X R                  [        U5      4	$ )z1
Reduce a CompileResult to picklable components.
N)rl   serialize_using_object_coderV   rg   rk   typemap	calltypes_find_referenced_environmentsrn   rh   ri   rj   rp   tuple)selflibdatatypeannrk   rq   s        rb   _reduceCompileResult._reduce   s     ,,::<d**+,00)<<>d&6&6g7G7Go&( 	(ra   c                    U R                   R                  n/ nUR                   H_  nUR                  nUR	                  S5      (       d  M'  [        U5      nUc  M7  UR                  5       (       d  MN  UR                  U5        Ma     U$ )z2Returns a list of referenced environments
        _ZN08NumbaEnv)rl   _final_moduleglobal_variablesname
startswithr   	can_cacheappend)r{   modrq   gvgvnenvs         rb   ry   +CompileResult._find_referenced_environments   sp     ll((&&B''C~~o..(-?}}'..s3 ' ra   c                 0   U	(       a  U	 H
  nU" 5         M     UR                  5       R                  U5      nUR                  XU5      nU " UUR                  UUUUUUUUS S S U	U
S9nU
 H)  nUR                   R	                  UR
                  U5        M+     U$ )N)rd   rc   rl   rn   re   rk   rg   rh   ri   rj   rf   rm   ro   rp   rq   )codegenunserialize_libraryget_executablerc   set_envenv_name)clsrd   r|   rk   r   rh   ri   rj   r}   rp   rq   fnrl   cfunccrs                  rb   _rebuildCompileResult._rebuild   s     ! " !((*>>wG--gsC . = =  "!($&"!(!0$ #COO##CLL#6 # 	ra   c                 6    U R                   R                  5       $ N)rd   r   r{   s    rb   r   CompileResult.codegen  s    ""**,,ra   c                     [        U S[        U 5      R                   SU R                   35        U R                  R                  US-   S9  [        U S35        g )NzDUMP  z  )tabzEND DUMP)printr:   r@   re   rh   dump)r{   r   s     rb   r   CompileResult.dump	  sU    U4:../q1A1A0BCDd
+Xra   N) )r@   rA   rB   rC   __doc__rD   r~   ry   classmethodr   propertyr   r   r`   r9   ra   rb   rs   rs      sF     I(   B - - ra   rs   _CompileResult_LowerResult)rk   rm   r   r   c                     [        U R                  5       5      n[        [        5      nX-
  nU(       a  [        U6 eX!-
  nU H  nS X'   M	     U S   nUb  UR	                  S 5      U S'   U $ )Nrf   )setkeys	CR_FIELDS	NameErrorwith_traceback)entriesr   fieldsetbadnamesmissingkerrs          rb   sanitize_compile_result_entriesr     ss    w||~D9~HH""oG
  .
!C
"%"4"4T":Nra   c                  .    [        U 5      n [        S0 U D6$ Nr9   )r   rs   )r   s    rb   compile_resultr   '  s    -g6G#7##ra   Fc                    [         R                  R                  U 5      n[        R                  " U5      n[         R
                  " US9nUR                  U5      nU(       a5  SSKJn  U" U[        R                  " S5      0 S5      nUR                  5         [        R                  " U5      n	U	R                  U5        U$ )z
Run the compiler frontend over the given Python function, and return
the function's canonical Numba IR.

If inline_closures is Truthy then closure inlining will be run
If emit_dels is Truthy the ir.Del nodes will be emitted appropriately
)func_idr   )InlineClosureCallPassF)r   FunctionIdentityfrom_functionr   InterpreterByteCode	interpretnumba.core.inline_closurecallr   r   rR   runr   PostProcessor)
funcinline_closures	emit_delsr   interpbcfunc_irr   inline_pass	post_procs
             rb   run_frontendr   ,  s     ''55d;G$$W-F			7	+Br"GG+GS5H5H5O,.7&&w/IMM)Nra   c                   ,    \ rS rSrSrSS/rS rS rSrg)	_CompileStatusiC  z;
Describes the state of compilation. Used like a C record.
fail_reasoncan_fallbackc                     S U l         Xl        g r   )r   r   )r{   r   s     rb   __init___CompileStatus.__init__I  s    (ra   c           
          / nU R                    H+  nUR                  SR                  U[        X5      S95        M-     SR	                  U5      $ )Nz{k}={v})r   vz, )rD   r   formatgetattrjoin)r{   valsr   s      rb   __repr___CompileStatus.__repr__M  sD    AKK	((10@(AB  yyra   )r   r   N)	r@   rA   rB   rC   r   rD   r   r   r`   r9   ra   rb   r   r   C  s     /I)ra   r   c                       \ rS rSrSrS rSrg)_EarlyPipelineCompletioniT  z8
Raised to indicate that a pipeline has completed early
c                     Xl         g r   result)r{   r   s     rb   r   !_EarlyPipelineCompletion.__init__Y  s    ra   r   N)r@   rA   rB   rC   r   r   r`   r9   ra   rb   r   r   T  s    ra   r   c                   $    \ rS rSrSrS rS rSrg)	StateDicti]  z
A dictionary that has an overloaded getattr and setattr to permit getting
and setting key/values through the use of attributes.
c                 >     X   $ ! [          a    [        U5      ef = fr   )KeyErrorAttributeError)r{   attrs     rb   __getattr__StateDict.__getattr__c  s)    	': 	' &&	's    c                     X U'   g r   r9   )r{   r   values      rb   __setattr__StateDict.__setattr__i  s	    T
ra   r9   N)r@   rA   rB   rC   r   r   r   r`   r9   ra   rb   r   r   ]  s    
'ra   r   c                 x   0 nUR                   (       a  SUS'   UR                  (       a  SUS'   UR                  (       a  SUS'   UR                  (       a  UR                  US'   UR                  (       a  UR                  US'   [
        R                  " UR                  U 5      nX2S'   U R                  " S0 UD6$ )	zD
Make a new target context from the given target context and flags.
Tenable_debuginfoenable_boundscheck
enable_nrtrS   rY   rW   r9   )	rM   rN   rT   rS   rY   r
   create_error_modelrW   	subtarget)	targetctxflagssubtargetoptionsrW   s       rb   _make_subtargetr   m  s     /3+,15-.yy)-&,1,?,?)~~',~~$--e.?.?KK&1]#2!122ra   c                   F    \ rS rSrSrS rS rSS jrS rS r	S	 r
S
 rSrg)CompilerBasei  z,
Stores and manages states for the compiler
c                    [         R                  " 5         UR                  5         UR                  5         [        5       U l        XR                  l        [        X&5      U R                  l        X0R                  l        X@R                  l	        XPR                  l
        X`R                  l        XpR                  l        S U R                  l        S U R                  l        S U R                  l        S U R                  l        S U R                  l        S U R                  l        S U R                  l        S U R                  l        0 U R                  l        / U R                  l        X R                  l        [1        5       U R                  l        U R                  R2                  U R                  R*                  S'   0 U R                  R*                  S'   [5        U R                  R                  R6                  S9U R                  l        g )Nparfor_diagnosticsparfors)r   )r	   reload_configrefreshr   state	typingctxr   r   rl   argsreturn_typer   localsr   r   r   rj   lifted_fromrw   rx   rg   ro   rp   pipeliner   r   r   rG   status)r{   r   r   rl   r  r  r   r  s           rb   r   CompilerBase.__init__  sk    	[
(

.y@

$



!,

 

"

 

!

!

 

!%

!

#

%)

" 

!#

"

 ):(;

%JJ)) 	

01)+

I&*))99


ra   c                    [         R                  R                  U5      U R                  l        [        5       R                  U R                  5        SU R                  l        S U R                  l        U R                  5       $ r   )
r   r   r   r   r   r   run_passrj   r  _compile_bytecode)r{   r   s     rb   compile_extraCompilerBase.compile_extra  s[    %66DDTJ

""4::.

!%

%%''ra   Nc                 \   UR                   U R                  l         X R                  l        X0R                  l        XR                  l        U R                  R                  R
                  U R                  l        [        5       R                  U R                  5        U R                  5       $ r   )
r   r   rj   r  r   	arg_countnargsr   r	  _compile_ir)r{   r   rj   r  s       rb   
compile_irCompilerBase.compile_ir  so    $__

"

!,

$

::--77

TZZ(!!ra   c                     [        5       e)zGChild classes override this to customize the pipelines in use.
        )NotImplementedErrorr   s    rb   define_pipelinesCompilerBase.define_pipelines  s     "##ra   c                    [        5       R                  U R                  R                  R	                  5       5         U R                  5       nU H  nUR                  nU R                  R                  R                  < SU R                  R                  R                  < 3n[        SU< SU< 35        UUR                  0U R                  R                  S'   X!S   :H  nSn UR                  U R                  5        U R                  R                  b    OM     [/        S5      eSU R                  l        Ub  UsSSS5        $ U R                  R                  c   eU R                  R                  sSSS5        $ ! [         a  nUR                   n SnA  Mt  SnAf["         aP  n[%        U[&        R(                  5      (       d  UeXpR                  R*                  l        U(       a  Ue SnAGM  SnAff = f! , (       d  f       g= f)z$
Populate and run compiler pipeline
.z
Pipeline: z for pipeline_timesNz!All available pipelines exhausted)r5   enterr   r   copyr  pipeline_namer   modnamefunc_qualnamer   
exec_timesro   r   r   r   r   	Exception
isinstancer   
NumbaErrorr  r   r   r  )r{   pmspmr  	func_nameis_final_pipelinereses           rb   _compile_coreCompilerBase._compile_core  s    ]  !1!1!6!6!89'')C " 0 0'+zz'9'9'A'A'+zz'9'9'G'GI	 }iHI9F9;9H

##$45$&b'M! FF4::&zz}}0 1 0 $$GHH #'DJJ G :9J zz}}000zz}}M :9  0 ((C   %a):):;;45JJ%%1( )	 ' :9sO   B(G<%2E?&G<.G<?
G9	FG<G9)AG4-G<4G99G<<
H
c                 T    U R                   R                  b   eU R                  5       $ )z.
Populate and run pipeline for bytecode input
r   r   r*  r   s    rb   r
  CompilerBase._compile_bytecode  s)     zz!!)))!!##ra   c                 T    U R                   R                  c   eU R                  5       $ )z(
Populate and run pipeline for IR input
r-  r   s    rb   r  CompilerBase._compile_ir  s)     zz!!---!!##ra   )r   )r9   N)r@   rA   rB   rC   r   r   r  r  r  r*  r
  r  r`   r9   ra   rb   r   r     s,    (
T("$
*%X$$ra   r   c                       \ rS rSrSrS rSrg)Compileri  zThe default compiler
    c                     U R                   R                  R                  (       a   [        R	                  U R                   5      /$ [        R                  U R                   5      /$ r   )r   r   rJ   DefaultPassBuilderdefine_objectmode_pipelinedefine_nopython_pipeliner   s    rb   r  Compiler.define_pipelines  sG    ::**&AA$**MOO '??

KMMra   r9   N)r@   rA   rB   rC   r   r  r`   r9   ra   rb   r2  r2    s    Nra   r2  c                       \ rS rSrSr\SS j5       r\SS j5       r\ SS j5       r\SS j5       r	\SS j5       r
\SS j5       r\SS	 j5       rS
rg)r4  i  z
This is the default pass builder, it contains the "classic" default
pipelines as pre-canned PassManager instances:
  - nopython
  - objectmode
  - interpreted
  - typed
  - untyped
  - nopython lowering
c                    [         n[        U5      nUR                  U 5      nUR                  R	                  UR                  5        UR                  U 5      nUR                  R	                  UR                  5        UR                  U 5      nUR                  R	                  UR                  5        UR                  5         U$ )z<Returns an nopython mode pipeline based PassManager
        )r4  r   define_untyped_pipelinepassesextenddefine_typed_pipeline!define_nopython_lowering_pipelinefinalize)r   r   dpbr%  untyped_passestyped_passeslowering_passess          rb   r6  +DefaultPassBuilder.define_nopython_pipeline  s    
 !44U;
		../007
		,,-??F
		//0
	ra   c                    [        U5      nUR                  [        S5        UR                  [        S5        UR                  [        S5        U R
                  R                  R                  (       a  UR                  [        S5        OUR                  [        S5        UR                  [        S5        UR                  [        S5        UR                  5         U$ )N3ensure features that are in use are in a valid form$ensure IR is legal prior to loweringannotate typesnative parfor loweringnative loweringnopython mode backendzdump parfor diagnostics)r   add_passr.   r(   r#   r   rS   enabledr-   r,   r)   r'   r?  r   r   r%  s      rb   r>  4DefaultPassBuilder.define_nopython_lowering_pipeline.  s    
6I	K
N:	< 	M#34;;$$,,KK,.FGKK(9:
O%<=
)+DE
	ra   c                    [        U5      nUR                  [        S5        UR                  [        S5        UR                  [        S5        U R
                  R                  R                  (       a  UR                  [        S5        OUR                  [        S5        UR                  [        S5        UR                  5         U$ )NrF  rG  rH  rI  rJ  rK  )r   rL  r.   r(   r#   r   rS   rM  r-   r,   r)   r?  rN  s      rb   /define_parfor_gufunc_nopython_lowering_pipelineBDefaultPassBuilder.define_parfor_gufunc_nopython_lowering_pipelineB  s     
6I	K
N:	< 	M#34;;$$,,KK,.FGKK(9:
O%<=
	ra   c                 f   [        U5      nUR                  [        S5        UR                  [        S5        UR                  [        S5        U R
                  R                  R                  (       a  UR                  [        S5        U R
                  R                  (       d  UR                  [        S5        U R
                  R                  R                  (       aB  UR                  [        S5        UR                  [        S5        UR                  [        S5        UR                  5         U$ )	/Returns the typed part of the nopython pipelinenopython frontendremove phis nodeszinline overloaded functionszPreprocessing for parforsnopython rewriteszconvert to parforszfuse parforsparfor prelowering)r   rL  r"   r+   r*   r   rS   rM  r%   rU   r$   r&   r/   r0   r?  rN  s      rb   r=  (DefaultPassBuilder.define_typed_pipelineV  s     
)+>? 	%':; 	O%BC;;$$,,KK'BC{{&&KK(*=>;;$$,,KK
$89KK(.9KK-/CD
	ra   c                     [        U5      nU R                  (       d   eUR                  [        S5        UR                  [        S5        UR                  [
        S5        UR                  5         U$ )rT  processing IRrU  rX  )r   r   rL  r   r"   r0   r?  rN  s      rb   define_parfor_gufunc_pipeline0DefaultPassBuilder.define_parfor_gufunc_pipelinen  sV     }}}
L/2
)+>?
)+?@
	ra   c                    [        U5      nU R                  c,  UR                  [        S5        UR                  [        S5        UR                  [
        S5        UR                  [        S5        UR                  [        S5        U R                  R                  (       dB  UR                  [        S5        UR                  [        S5        UR                  [        S5        UR                  [        S	5        UR                  [        S
5        UR                  [        S5        U R                  R                  (       d  UR                  [        S5        UR                  [         S5        UR                  ["        S5        U R                  R$                  (       a  UR                  [&        S5        U R                  R                  (       d  UR                  [        S5        UR                  [(        S5        UR+                  5         U$ )z0Returns an untyped part of the nopython pipelineanalyzing bytecodefix up argsr[  zHandle with contexts(inline calls to locally defined closureszrewrite semantic constantszdead branch pruningrW  zrewrite dynamic raises(convert make_function into JIT functionszinline inlinable functionszfind literally callszhandles literal_unrollssazLiteral propagation)r   r   rL  r   r   r   r   r   r   rU   r   r   r   r    r   r   r   r   rI   r   r!   r?  rN  s      rb   r:  *DefaultPassBuilder.define_untyped_pipelinez  sl    == KK)+?@KK	=1
L/2
K!78 	&>	@ {{&&KK02NOKK)>?KK)<=
(*BC 	->	@ 	$&BC{{&&KK)>?
&(>?
M#;<;;!!KK.{{&&KK)>?
57LM
	ra   c                 h   [        U5      nU R                  c-  UR                  [        S5        UR                  [        S5        OUR                  [
        S5        UR                  [        S5        UR                  [        S5        UR                  [        S5        UR                  [        S5        UR                  [        S5        UR                  [        S	5        UR                  [        S
5        UR                  [        S5        UR                  [        S5        UR                  5         U$ )z:Returns an object-mode pipeline based PassManager
        r_  r`  rV  r[  zcanonicalize loop entryzcanonicalize loop exitzobject mode frontendra  rb  rG  rH  zobject mode backend)r   r   rL  r   r   r+   r   r   r   r1   r   r   r(   r#   r2   r?  rN  s      rb   r5  -DefaultPassBuilder.define_objectmode_pipeline  s     == KK)+?@KK	=1 KK)+>?
L/2 	)+DE
(*BC
&(>?
&>	@ 	->	@
N$JK
M#34
%'<=
	ra   r9   N)nopython)nopython_lowering)parfor_gufunc_nopython_lowering)typed)parfor_gufunc_typed)untyped)object)r@   rA   rB   rC   r   staticmethodr6  r>  rQ  r=  r\  r:  r5  r`   r9   ra   rb   r4  r4    s    	  $  & 9 &  . 	 	 - -^  ra   r4  c	           	      :    U" XUX4XV5      n	U	R                  U5      $ )a  Compiler entry point

Parameter
---------
typingctx :
    typing context
targetctx :
    target context
func : function
    the python function to be compiled
args : tuple, list
    argument types
return_type :
    Use ``None`` to indicate void return
flags : numba.compiler.Flags
    compiler flags
library : numba.codegen.CodeLibrary
    Used to store the compiled code.
    If it is ``None``, a new CodeLibrary is used.
pipeline_class : type like numba.compiler.CompilerBase
    compiler pipeline
)r  )
r   r   r   r  r  r   r  rl   pipeline_classr  s
             rb   r  r    s)    0 iG"@H!!$''ra   r9   c           	        ^ ^^^^^^^
^ U	(       a  [         R                  " U5      nSUl        UU
UUUUUUU 4	S jnU" UR                  5       U5      nSnUR                  (       d[  [        R                  " 5          [        R
                  " S[        R                  5         U" UR                  5       U5      nSSS5        Ub  UnU$ UnU$ T" T TT
TTUT5      nUR                  UTTS9$ ! [         a     N>f = f! , (       d  f       NH= f)z?
Compile a function with the given IR.

For internal use only.
Tc           	      B   >	 T" TT
TTT	UT5      nUR                  U TTS9$ )Nr   rj   r  )r  )the_ir	the_flagsr  r  rl   rj   r  r  rp  r  r   r   s      rb   compile_local!compile_ir.<locals>.compile_local  s>    %iG&*KFLH&&vf3> ' @ @ra   Nignorers  )
r  deepcopyrU   warningscatch_warningssimplefilterr   NumbaWarningr!  r  )r   r   r   r  r  r   r  rj   r  is_lifted_looprl   rp  
norw_flagsrv  	norw_cresrw_crescresr  s   `` `` ``` ``      rb   r  r    s     ]]5)
!%
	@ 	@ "',,.*=	
   ((*%%h0C0CD+GLLNEBG + D  D ")Y"&UFD""76/: # < 	< ! 	 +*s*   ;&C;"C++
C85C;7C88C;;
D	c           	      @    [        XUXEXg5      nUR                  U5      $ )z
For internal use only.
)r2  r  )	r   r   rl   r   r  r  r   r  r  s	            rb   compile_internalr  &  s(    
 	g5:H!!$''ra   )FF)Vcollectionsr   r  rz  numba.core.tracingr   
numba.corer   r   r   r   r	   r
   r   numba.parfors.parforr   numba.core.errorsr   numba.core.environmentr   numba.core.compiler_machineryr   numba.core.untyped_passesr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   numba.core.typed_passesr"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   numba.core.object_mode_passesr1   r2   numba.core.targetconfigr3   r4   r5   r7   DEFAULT_FLAGSrT   r   rs   r   r   r   r   rm  r   r!  r   dictr   r   r   r2  r4  r  r  r  r9   ra   rb   <module>r     sC   "   $' ' ' 2 + 5 5) ) ) ) )' ' ' ' '> E ExL xv  	(O J/; O d . +  $
.V "y   3*~$6 ~$B
N| 
Nv vt #'x(< !d5H=<@(ra   