
    `jX                         d Z ddlZddlZddlmZ ddlmZ ddlmZ ddlmZ ddlm	Z	  G d d	ej
                  Z G d
 dej
                  Zedk    r ej                     dS dS )zTests for the helptext module.    N)
formatting)helptext)test_components)	testutilstracec                        e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z  xZ!S )HelpTestc                 f    t                                                       dt          j        d<   d S )N1ANSI_COLORS_DISABLED)supersetUposenviron)self	__class__s    V/home/jworkman/hermes-web-chat/venv/lib/python3.11/site-packages/fire/helptext_test.pyr   zHelpTest.setUp   s'    	GGMMOOO),BJ%&&&    c                 "   t           j        }t          j        |t	          j        |d                    }|                     d|           |                     d|           |                     d|           |                     d|           d S )N
NoDefaultsname	componentr   NAME
    NoDefaultszSYNOPSIS
    NoDefaultsDESCRIPTIONNOTEStcr   r   HelpTextr   	FireTraceassertInassertNotInr   r   help_screens      r   testHelpTextNoDefaultszHelpTest.testHelpTextNoDefaults!   s    I#oil;;;= = =K 	MM(+666MM,k:::]K000Wk*****r   c                    t          j                    }t          j        |t	          j        |d                    }|                     d|           |                     d|           |                     d|           |                     d|           |                     d|           |                     d	|           |                     d
|           d S )Nr   r   r   r   zSYNOPSIS
    NoDefaults COMMANDr   z-COMMANDS
    COMMAND is one of the following:doubletripler   r   r%   s      r   testHelpTextNoDefaultsObjectz%HelpTest.testHelpTextNoDefaultsObject+   s    I#oil;;;= = =K 	MM(+666MM4kBBB]K000MMB  MM(K(((MM(K(((Wk*****r   c                 f   t          j                    j        }t          j        |t          j        |d                    }|                     d|           |                     d|           |                     d|           |                     d|           |                     d|           d S )	Nr)   r   r   NAME
    doubleSYNOPSIS
    double COUNTr   zPOSITIONAL ARGUMENTS
    COUNT@NOTES
    You can also use flags syntax for POSITIONAL ARGUMENTS)	r    r   r)   r   r!   r   r"   r#   r$   r%   s      r   testHelpTextFunctionzHelpTest.testHelpTextFunction9   s    &I#oih7779 9 9K 	MM$k222MM.<<<]K000MM3[AAAMMK    r   c                 f   t          j                    j        }t          j        |t          j        |d                    }|                     d|           |                     d|           |                     d|           |                     d|           |                     d|           d S )	Nr*   r   r   zNAME
    triplezSYNOPSIS
    triple <flags>r   z.FLAGS
    -c, --count=COUNT
        Default: 0r   )	r    WithDefaultsr*   r   r!   r   r"   r#   r$   r%   s      r    testHelpTextFunctionWithDefaultsz)HelpTest.testHelpTextFunctionWithDefaultsF   s    !!(I#oih7779 9 9K 	MM$k222MM0+>>>]K000MM:   	Wk*****r   c                 f   t          j                    j        }t          j        |t          j        |d                    }|                     d|           |                     d|           |                     d|           |                     d|           |                     d|           d S )	Ntextr   r   NAME
    textzSYNOPSIS
    text <flags>r   znFLAGS
    -s, --string=STRING
        Default: '00010203040506070809101112131415161718192021222324252627282...r   )	r    r2   r5   r   r!   r   r"   r#   r$   r%   s      r   $testHelpTextFunctionWithLongDefaultsz-HelpTest.testHelpTextFunctionWithLongDefaultsS   s    !!&I#oif5557 7 7K 	MM"K000MM.<<<]K000MM	3 		  
 	Wk*****r   c                 "   t           j        }t          j        |t	          j        |d                    }|                     d|           |                     d|           |                     d|           |                     d|           d S )Nr5   r   r   r6   #SYNOPSIS
    text ARG1 ARG2 <flags>#DESCRIPTION
    Function with kwargzeFLAGS
    --arg3
        Description of arg3.
    Additional undocumented flags may also be accepted.)r    fn_with_kwargr   r!   r   r"   r#   r%   s      r   testHelpTextFunctionWithKwargsz'HelpTest.testHelpTextFunctionWithKwargsb   s     I#oif5557 7 7K 	MM"K000MM8+FFFMM8+FFFMM	>    r   c                 "   t           j        }t          j        |t	          j        |d                    }|                     d|           |                     d|           |                     d|           |                     d|           d S )Nr5   r   r   r6   r9   r:   zFLAGS
    -o, --opt=OPT
        Default: True
    The following flags are also accepted.
    --arg3
        Description of arg3.
    Additional undocumented flags may also be accepted.)r    fn_with_kwarg_and_defaultsr   r!   r   r"   r#   r%   s      r   )testHelpTextFunctionWithKwargsAndDefaultsz2HelpTest.testHelpTextFunctionWithKwargsAndDefaultso   s    -I#oif5557 7 7K 	MM"K000MM8+FFFMM8+FFFMM	> 	    r   c                 |   t           j                                        j        }t	          j        |t          j        |d                    }|                     d|           |                     d|           |                     d|           |                     d|           | 	                    d|           d S )	Nr)   r   r   r-   zSYNOPSIS
    double <flags>r   zBFLAGS
    -c, --count=COUNT
        Type: float
        Default: 0r   )
r    py3WithDefaultsAndTypesr)   r   r!   r   r"   r#   r$   r%   s      r   (testHelpTextFunctionWithDefaultsAndTypesz1HelpTest.testHelpTextFunctionWithDefaultsAndTypes~   s    
##%%, #oih7779 9 9K 	MM$k222MM0+>>>MM----MMO   	Wk*****r   c                 |   t           j                                        j        }t	          j        |t          j        |d                    }|                     d|           |                     d|           | 	                    d|           |                     d|           | 	                    d|           d S )	Nget_intr   r   zNAME
    get_intzSYNOPSIS
    get_int <flags>r   zMFLAGS
    -v, --value=VALUE
        Type: Optional[int]
        Default: Noner   )
r    rA   rB   rE   r   r!   r   r"   r#   r$   r%   s      r   +testHelpTextFunctionWithTypesAndDefaultNonez4HelpTest.testHelpTextFunctionWithTypesAndDefaultNone   s    
##%%- #oii888: : :K 	MM%{333MM1;???]K000MM	=   	Wk*****r   c                 |   t           j                                        j        }t	          j        |t          j        |d                    }|                     d|           |                     d|           |                     d|           |                     d|           |                     d|           d S )	Nr)   r   r   r-   r.   r   z2POSITIONAL ARGUMENTS
    COUNT
        Type: floatr/   )	r    rA   	WithTypesr)   r   r!   r   r"   r#   r%   s      r   testHelpTextFunctionWithTypesz&HelpTest.testHelpTextFunctionWithTypes   s      "")I#oih7779 9 9K 	MM$k222MM.<<<MM----MM>   	MMK    r   c                 P   t           j                                        j        }t	          j        |t          j        |d                    }|                     d|           |                     d|           | 	                    d|           |                     d|           d S )N	long_typer   r   zNAME
    long_typezSYNOPSIS
    long_type LONG_OBJr   r/   )
r    rA   rH   rK   r   r!   r   r"   r#   r$   r%   s      r   !testHelpTextFunctionWithLongTypesz*HelpTest.testHelpTextFunctionWithLongTypes   s      "",I#oik:::< < <K 	MM'555MM4kBBB]K000 	MMK    r   c                    dj         }t          j        |t          j        |d                    }|                     d|           |                     d|           |                     d|           |                     d|           d S )Ntestupperr   zNAME
    upperzSYNOPSIS
    upperDESCRIPTION
r   )rO   r   r!   r   r"   r#   r$   r%   s      r   testHelpTextFunctionWithBuiltinz(HelpTest.testHelpTextFunctionWithBuiltin   s    I#oi113 3 3K 	MM#[111MM'555 	MM/;///Wk*****r   c                     t           }t          j        |t          j        |d                    }|                     d|           |                     d|           |                     d|           d S )Nintr   zNAME
    intzSYNOPSIS
    intrP   )rS   r   r!   r   r"   r#   r%   s      r   testHelpTextFunctionIntTypez$HelpTest.testHelpTextFunctionIntType   sw    I#5?9e#D#DF F FKMM/;///MM%{333 	MM/;/////r   c                    g }t          j        |t          j        |d                    }|                     d|           |                     d|           |                     d|           |                     d|           d S )Nlistr   NAME
    listSYNOPSIS
    list COMMANDr   .COMMANDS
    COMMAND is one of the following:
r   r!   r   r"   r#   r$   r%   s      r   testHelpTextEmptyListzHelpTest.testHelpTextEmptyList   s    I#oi002 2 2K 	MM"K000MM.<<< 	]K000 	MMD    r   c                 :   dg}t          j        |t          j        |d                    }|                     d|           |                     d|           |                     d|           |                     d|           |                     d|           d S )	N
   rV   r   rW   rX   r   rY   z     append
rZ   r%   s      r   testHelpTextShortListzHelpTest.testHelpTextShortList   s    I#oi002 2 2K 	MM"K000MM.<<< 	]K000
 	MMD  MM/;/////r   c                 8   d}t          j        |t          j        |d                    }|                     d|           |                     d|           |                     d|           |                     d|           |                     d|           d S )	N   7r   z
NAME
    7zSYNOPSIS
    7 COMMAND | VALUEr   rY   z*VALUES
    VALUE is one of the following:
rZ   r%   s      r   testHelpTextIntzHelpTest.testHelpTextInt   s    I#5?9c#B#BD D DKMM----MM3[AAA 	]K000MMD  MM@+NNNNNr   c                     t           j        }t          j        |t	          j        |d                    }|                     d|           |                     d|           d S )NOldStyleEmptyr   zNAME
    OldStyleEmptyzSYNOPSIS
    OldStyleEmpty)r    rd   r   r!   r   r"   r#   r%   s      r   testHelpTextNoInitzHelpTest.testHelpTextNoInit  se     I#oi99; ; ;K 	MM+[999MM/=====r   c                     t           j        j        j        }t	          j        |t          j        |d                    }|                     d|           |                     d|           d S )Nwith_defaultr   zNAME
    with_defaultzFLAGS
    -x, --x=X)	r    rA   KeywordOnlyrg   r   r!   r   r"   r#   r   r   outputs      r   +testHelpTextKeywordOnlyArgumentsWithDefaultz4HelpTest.testHelpTextKeywordOnlyArgumentsWithDefault	  sj    "/I5?9n#M#MO O OFMM*F333MM(&11111r   c                     t           j        j        j        }t	          j        |t          j        |d                    }|                     d|           |                     d|           d S )Nr)   r   r-   z&FLAGS
    -c, --count=COUNT (required))	r    rA   rh   r)   r   r!   r   r"   r#   ri   s      r   .testHelpTextKeywordOnlyArgumentsWithoutDefaultz7HelpTest.testHelpTextKeywordOnlyArgumentsWithoutDefault  sj    ")I5?9h#G#GI I IFMM$f---MM;VDDDDDr   c                 T   t           j                                        j        }t	          j        |d          }t          j        ||          }|                     d|           |                     d|           |                     d|           |                     d|           d S )NFunctionMixedDefaultsr   r   zNAME
    FunctionMixedDefaultszFunctionMixedDefaults <flags>z--alpha=ALPHA (required)z --beta=BETA
        Default: '0')	r    rA   HelpTextComponentidentityr   r"   r   r!   r#   )r   r   trj   s       r   !testHelpTextFunctionMixedDefaultsz*HelpTest.testHelpTextFunctionMixedDefaults  s    ((**3I	(?@@@Ay222FMM3V<<<MM16:::MM,f555MM7@@@@@r   c                    t          j                    }t          j        |d          }t	          j        ||          }d}|                     t          j        |          	                                |	                                           d S )NClassWithDocstringr   as  
NAME
    ClassWithDocstring - Test class for testing help text output.

SYNOPSIS
    ClassWithDocstring COMMAND | VALUE

DESCRIPTION
    This is some detail description of this test class.

COMMANDS
    COMMAND is one of the following:

     print_msg
       Prints a message.

VALUES
    VALUE is one of the following:

     message
       The default message to print.)
r    ru   r   r"   r   r!   assertEqualtextwrapdedentstripr   r   rr   help_outputexpected_outputs        r   testHelpScreenzHelpTest.testHelpScreen   s    %''I	(<===A#Iq11K(O* 	X__55;;== &&((* * * * *r   c                    t           j        j        }t          j        |d          }t          j        ||          }d}|                     t          j	        |          
                                |
                                           d S )Nexample_generatorr   a  
    NAME
        example_generator - Generators have a ``Yields`` section instead of a ``Returns`` section.

    SYNOPSIS
        example_generator N

    DESCRIPTION
        Generators have a ``Yields`` section instead of a ``Returns`` section.

    POSITIONAL ARGUMENTS
        N
            The upper limit of the range to generate, from 0 to `n` - 1.

    NOTES
        You can also use flags syntax for POSITIONAL ARGUMENTS)r    ClassWithMultilineDocstringr   r   r"   r   r!   rv   rw   rx   ry   rz   s        r   /testHelpScreenForFunctionDocstringWithLineBreakz8HelpTest.testHelpScreenForFunctionDocstringWithLineBreak<  s    .@I	(;<<<A#Iq11KBO  	X__55;;== &&((* * * * *r   c                 (   t          j                    j        }t          j        |d          }t          j        ||          }d}|                     t          j	        |          
                                |
                                           d S )Nr)   r   a  
    NAME
        double - Returns the input multiplied by 2.

    SYNOPSIS
        double <flags>

    DESCRIPTION
        Returns the input multiplied by 2.

    FLAGS
        -c, --count=COUNT
            Default: 0
            Input number that you want to double.)r    r2   r)   r   r"   r   r!   rv   rw   rx   ry   rz   s        r   0testHelpScreenForFunctionFunctionWithDefaultArgsz9HelpTest.testHelpScreenForFunctionFunctionWithDefaultArgsS  s    !!(I	111A#Iq11K5O 	X__55;;== &&((* * * * *r   c                    t          j                    j        }t          j        |d          }t          j        ||          }|                     t          j	        d          dz   |           |                     t          j	        d          dz   |           |                     t          j	        d          dz   t          j
        d	          z   |           d S )
Nr*   r   NAMEz
    tripleSYNOPSISz
    triple <flags>FLAGSz
    -c, --count)r    r2   r*   r   r"   r   r!   r#   r   Bold	Underliner   r   rr   r&   s       r   testHelpTextUnderlineFlagz"HelpTest.testHelpTextUnderlineFlagh  s    !!(I	111A#Iq11KMM*/&))N:KHHHMM
##&<<   	MM  >1W%%	&    r   c                    t          j                    }t          j        |d          }t	          j        ||          }|                     t          j        d          dz   |           |                     t          j        d          dz   |           |                     t          j	        d          dz   |           |                     t          j        d	          dz   |           d S )
Nru   r   r   z
    ClassWithDocstringCOMMANDS
COMMANDz is one of the following:
	print_msg)
r    ru   r   r"   r   r!   r#   r   r   BoldUnderliner   s       r   testHelpTextBoldCommandNamez$HelpTest.testHelpTextBoldCommandNameu  s    %''I	(<===A#Iq11KMM"<<kK K KMM*/*--4kBBBMM ++.KK   	MM*/+..5{CCCCCr   c                    t          j                    }t          j        |d          }t	          j        ||d          }t          |           |                     d|           |                     d|           |                     d|           |                     d|           |                     d	|           |                     d
|           d S )NTypedPropertiesr   Tr   r   verboseGROUPSzGROUP is one of the following:z@charlie
       Class with functions that have default arguments.VALUESzVALUE is one of the following:alpha)r    r   r   r"   r   r!   printr#   r   s       r   $testHelpTextObjectWithGroupAndValuesz-HelpTest.testHelpTextObjectWithGroupAndValues  s    "$$I	(9:::A#1d4 4 4K	+MM(K(((MM2K@@@MMK   	MM(K(((MM2K@@@MM';'''''r   c                     d}t          j        |dd          }|                                 t          j        ||d          }|                     d|           |                     d|           d S )	N	   rS   -r   	separatorFr   zint -zint - -)r   r"   AddSeparatorr   r!   r#   r$   r   s       r   +testHelpTextNameSectionCommandWithSeparatorz4HelpTest.testHelpTextNameSectionCommandWithSeparator  st    I	===ANN#iq%PPPKMM';'''Y,,,,,r   c                    t          j                    j        }t          j        |dd          }|                                 t          j        ||d          }|                     d|           |                     d|           d S )Nr)   r   r   Tr   zdouble -z
double - -)	r    r2   r)   r   r"   r   r   r!   r#   r   s       r   2testHelpTextNameSectionCommandWithSeparatorVerbosez;HelpTest.testHelpTextNameSectionCommandWithSeparatorVerbose  s}    !!(I	C@@@ANN#iq$OOOKMM*k***MM,,,,,,r   c                    t           j        }t          j        |d          }t	          j        ||          }|                     t          j        d          dz   |           |                     t          j        d          dz   |           |                     t          j        d          dz   |           |                     d	|           |                     d
|           d S )N	shortargsr   r   z
    shortargsr   z
    shortargs <flags>r   z
    -f, --firstz
    --lastz
    --late)	r    fn_with_multiple_defaultsr   r"   r   r!   r#   r   r   r   s       r   2testHelpTextMultipleKeywoardArgumentsWithShortArgsz;HelpTest.testHelpTextMultipleKeywoardArgumentsWithShortArgs  s    ,I	444A#Iq11KMM*/&)),=={KKKMM
##&??   	MM  #66   	MM.+...MM.+.....r   )"__name__
__module____qualname__r   r'   r+   r0   r3   r7   r<   r?   rC   rF   rI   rL   rQ   rT   r[   r^   rb   re   rk   rm   rs   r}   r   r   r   r   r   r   r   r   __classcell__)r   s   @r   r
   r
      s       - - - - -+ + ++ + +  + + ++ + +    + + ++ + +    &
+ 
+ 
+0 0 0  0 0 0$O O O> > >2 2 2E E EA A A* * *8* * *.* * **  
D 
D 
D( ( (- - -- - -/ / / / / / /r   r
   c                   V    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 Zd ZdS )	UsageTestc                     t          j                    }t          j        |d          }t	          j        ||d          }d}|                     |t          j        |          	                    d                     d S )Nr   r   Fr   r   
    Usage: NoDefaults <command>
      available commands:    double | triple

    For detailed information on this command, run:
      NoDefaults --helpr   
r    r   r   r"   r   	UsageTextrv   rw   rx   lstripr   r   rr   usage_outputr|   s        r   testUsageOutputzUsageTest.testUsageOutput  s    I	555A%iq%HHHLO 	((//557 7 7 7 7r   c                     t          j                    }t          j        |d          }t	          j        ||d          }d}|                     |t          j        |          	                    d                     d S )Nr   r   Tr   r   r   r   r   s        r   testUsageOutputVerbosez UsageTest.testUsageOutputVerbose  s    I	555A%iq$GGGLO 	((//557 7 7 7 7r   c                 >   t          j                    j        }t          j        |d          }|                    |ddgd d            t          j        ||d          }d}|                     |t          j
        |                              d                     d S )Nr   r   r)   Fr   zv
    Usage: NoDefaults double COUNT

    For detailed information on this command, run:
      NoDefaults double --helpr   )r    r   r)   r   r"   AddAccessedPropertyr   r   rv   rw   rx   r   r   s        r   testUsageOutputMethodzUsageTest.testUsageOutputMethod  s    &I	555A)Xz4FFF%iq%HHHL"O
 	((//557 7 7 7 7r   c                     t           j        }t          j        |d          }t	          j        ||d          }d}|                     |t          j        |          	                    d                     d S )Nfunction_with_helpr   Fr   z
    Usage: function_with_help <flags>
      optional flags:        --help

    For detailed information on this command, run:
      function_with_help -- --helpr   )
r    r   r   r"   r   r   rv   rw   rx   r   r   s        r   testUsageOutputFunctionWithHelpz)UsageTest.testUsageOutputFunctionWithHelp  s    %I	(<===A%iq%HHHL&O 	((//557 7 7 7 7r   c                     t           j        }t          j        |d          }t	          j        ||d          }d}|                     t          j        |          	                    d          |           d S )Nmultiplier_with_docstringr   Fr   z
    Usage: multiplier_with_docstring NUM <flags>
      optional flags:        --rate

    For detailed information on this command, run:
      multiplier_with_docstring --helpr   )
r    r   r   r"   r   r   rv   rw   rx   r   r   s        r   $testUsageOutputFunctionWithDocstringz.UsageTest.testUsageOutputFunctionWithDocstring  s    ,I	(CDDDA%iq%HHHL*O 	((//55    r   c                 $   t           j                                        j        }t	          j        |d          }t          j        ||d          }d}t          j	        |          
                    d          }|                     ||           d S )Nro   r   Fr   z
    Usage: FunctionMixedDefaults <flags>
      optional flags:        --beta
      required flags:        --alpha

    For detailed information on this command, run:
      FunctionMixedDefaults --helpr   )r    rA   rp   rq   r   r"   r   r   rw   rx   r   rv   r   s        r   $testUsageOutputFunctionMixedDefaultsz.UsageTest.testUsageOutputFunctionMixedDefaults  s    ((**3I	(?@@@A%iq%HHHL&O oo66==dCCO_l33333r   c                    t          j                    }t          j        |dd          }t	          j        ||d          }d}|                     t          j        |          	                    d          |           d S )NCallableWithKeywordArgument@r   Fr   z
    Usage: CallableWithKeywordArgument <command> | <flags>
      available commands:    print_msg
      flags are accepted

    For detailed information on this command, run:
      CallableWithKeywordArgument -- --helpr   )
r    r   r   r"   r   r   rv   rw   rx   r   r   s        r   testUsageOutputCallablez!UsageTest.testUsageOutputCallable  s    .00I	(E"%	' 	' 	'A%iq%HHHL/O 	((//55    r   c                     t           j        }t          j        |d          }t	          j        ||d          }d}|                     t          j        |          	                    d          |           d S )NInstanceVarsr   Fr   z~
    Usage: InstanceVars --arg1=ARG1 --arg2=ARG2

    For detailed information on this command, run:
      InstanceVars --helpr   
r    r   r   r"   r   r   rv   rw   rx   r   r   s        r   'testUsageOutputConstructorWithParameterz1UsageTest.testUsageOutputConstructorWithParameter  s}    I	777A%iq%HHHLO
 	((//55    r   c                     t           j        }t          j        |d          }t	          j        ||d          }d}|                     t          j        |          	                    d          |           d S )Nr   r   Tr   z
    Usage: InstanceVars <command> | --arg1=ARG1 --arg2=ARG2
      available commands:    run

    For detailed information on this command, run:
      InstanceVars --helpr   r   r   s        r   .testUsageOutputConstructorWithParameterVerbosez8UsageTest.testUsageOutputConstructorWithParameterVerbose$  s}    I	777A%iq$GGGLO 	((//55    r   c                     i }t          j        |d          }t          j        ||d          }d}|                     t          j        |                              d          |           d S )N	EmptyDictr   Tr   z`
    Usage: EmptyDict

    For detailed information on this command, run:
      EmptyDict --helpr   r   r"   r   r   rv   rw   rx   r   r   s        r   testUsageOutputEmptyDictz"UsageTest.testUsageOutputEmptyDict2  s{    I	444A%iq$GGGLO
 	((//55    r   c                     d }t          j        |d          }t          j        ||d          }d}|                     t          j        |                              d          |           d S )NNoner   Tr   zV
    Usage: None

    For detailed information on this command, run:
      None --helpr   r   r   s        r   testUsageOutputNonezUsageTest.testUsageOutputNone?  s{    I	///A%iq$GGGLO
 	((//55    r   c                     t           j        }t          j        |d          }t	          j        ||d          }d}|                     ||           d S )NSubPointr   Fr   zUsage: SubPoint --x=X --y=Y)r    r   r   r"   r   r   r#   r   s        r   ,testInitRequiresFlagSyntaxSubclassNamedTuplez6UsageTest.testInitRequiresFlagSyntaxSubclassNamedTupleL  sS    I	
333A%iq%HHHL3OMM/<00000r   N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r   r   r   r     s        7 7 77 7 77 7 77 7 7  4 4 4  "        1 1 1 1 1r   r   __main__)__doc__r   rw   firer   r   r   r    r   r   BaseTestCaser
   r   r   mainr   r   r   <module>r      s   % $ 				              & & & & & &            Q/ Q/ Q/ Q/ Q/y% Q/ Q/ Q/hb1 b1 b1 b1 b1	& b1 b1 b1H z). r   