+
    Bi4<              
       |   ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHt  ^ RI	H
t ^RIHt ^RIHt ^RIHt ^ RIHtHtHtHtHtHtHtHtHt ]P:                  R 4       t ! R	 R
]P>                  ]P@                  4      t! ! R R]P>                  ]P@                  4      t" ! R R]PF                  ]PH                  ]P@                  4      t% ! R R]PF                  ]PH                  ]P@                  4      t& ! R R]PN                  ]PP                  ]PR                  ]PT                  ]P>                  ]P@                  4      t+ ! R R]PF                  ]PH                  ]P@                  4      t, ! R R]PF                  ]P@                  4      t- ! R R]PF                  ]P@                  4      t. ! R R]P@                  4      t/ ! R R]PF                  ]PH                  ]P`                  ]P@                  4      t1 ! R R]Pd                  ]P@                  4      t3 ! R R ]PF                  ]PH                  ]P@                  4      t4 ! R! R"]PN                  ]PP                  ]PR                  ]PT                  ]P@                  4      t5 ! R# R$]Pl                  ]P@                  4      t7R#   ] d    ^RIH
t  ELi ; i)%    N)	os_helper)fake_filesystem_unittest)fixtures)suppress)Symlink)	Distribution
EntryPointPackageNotFoundError_uniquedistributionsentry_pointsmetadatapackages_distributionsversionc               #      "   \         P                  ! R R7      ;_uu_ 4       p \         P                  ! R\        R7       V x  RRR4       R#   + '       g   i     R# ; i5i)T)recorddefault)categoryN)warningscatch_warningssimplefilterDeprecationWarning)ctxs    =/usr/lib/python3.14/test/test_importlib/metadata/test_main.pysuppress_known_deprecationr      s<     		 	 	-	-i2DE	 
.	-	-	-s    A!!A
A!A		A!c                      a  ] tR t^&t o RtR tR tR t]! ]	4      ]
! 4       R 4       4       t]P                  ! ]! RR7      ]! RR7      4      R	 4       tR
tV tR# )
BasicTestsz\d+\.\d+(\.\d)?c                    \         P                  ! R 4      p\        VP                  \        4      '       g   Q h\
        P                  ! V P                  VP                  4      '       g   Q hR# )distinfo-pkgN)r   	from_name
isinstancer   strrematchversion_patternselfdists   & r   test_retrieves_version_of_self)BasicTests.test_retrieves_version_of_self)   sJ    %%n5$,,,,,,xx,,dll;;;;    c                    V P                  \        4      ;_uu_ 4        \        P                  ! R 4       RRR4       R#   + '       g   i     R# ; i)does-not-existN)assertRaisesr
   r   r    r'   s   &r   test_for_name_does_not_exist'BasicTests.test_for_name_does_not_exist.   s2    344""#34 5444	   ?A	c                    V P                  \        4      ;_uu_ 4       p\        P                  ! R4       RRR4       R\	        XP
                  4      9   g   Q hR#   + '       g   i     L.; i)z
When a package is not found, that could indicate that the
package is not installed or that it is installed without
metadata. Ensure the exception mentions metadata to help
guide users toward the cause. See #124.
r-   Nr   )r.   r
   r   r    r"   	exception)r'   r   s   & r   (test_package_not_found_mentions_metadata3BasicTests.test_package_not_found_mentions_metadata2   sN     344""#34 5 S//// 54s   AA+	c                    V P                  \        4      ;_uu_ 4        \        R \        3/ 4      ! 4        RRR4       R#   + '       g   i     R# ; i)DistributionSubclassN)r.   	TypeErrortyper   r/   s   &r   test_abc_enforcedBasicTests.test_abc_enforced?   s6     y))',"=? *)))s   A  A	Nname c                    V P                  \        4      ;_uu_ 4        \        P                  ! V4       R R R 4       R #   + '       g   i     R # ; iN)r.   	Exceptionr   r    )r'   r>   s   &&r    test_invalid_inputs_to_from_name+BasicTests.test_invalid_inputs_to_from_nameE   s2    
 y))""4( *)))r2    )__name__
__module____qualname____firstlineno__r%   r)   r0   r5   r   AssertionErrorr   r;   r   parameterizedictrC   __static_attributes____classdictcell____classdict__s   @r   r   r   &   sl     (O<
5
0 n!@ " @ $")	)r+   r   c                   8   a  ] tR t^Nt o R tR tR tR tRtV t	R# )ImportTestsc                    V P                  \        4      ;_uu_ 4        \        P                  ! R 4       RRR4       R#   + '       g   i     R# ; i)does_not_existN)r.   ImportError	importlibimport_moduler/   s   &r   test_import_nonexistent_module*ImportTests.test_import_nonexistent_moduleO   s3     {++##$45 ,+++r2   c                    \        R R7      R,          pV P                  VP                  4       P                  R4       R# )entriesgroupmainN)r   assertEqualloadrF   r'   eps   & r   test_resolveImportTests.test_resolveU   s-    	*62++V4r+   c                d    \        R R7      R,          pV P                  VP                  R4       R# )r[   r\   zns:subzmod:mainN)r   r_   valuera   s   & r   "test_entrypoint_with_colon_in_name.ImportTests.test_entrypoint_with_colon_in_nameY   s%    	*84:.r+   c                j    \        R RRR7      pVP                  4       \        P                  J g   Q hR# )rb   zimportlib.metadatagrpr>   rf   r]   N)r	   r`   rV   r   ra   s   & r   test_resolve_without_attr%ImportTests.test_resolve_without_attr]   s1    &

 wwyI.....r+   rE   N)
rF   rG   rH   rI   rX   rc   rg   rl   rM   rN   rO   s   @r   rR   rR   N   s     65// /r+   rR   c                   B   a  ] tR t^ft o ]R 4       tR tR tR tRt	V t
R# )NameNormalizationTestsc                    V  R2RR//# )z]
Create minimal metadata for a dist-info package with
the indicated name on the file system.

.dist-infoMETADATAzVERSION: 1.0
rE   r=   s   &r   make_pkgNameNormalizationTests.make_pkgg   s#     fJ,"
 	
r+   c                    \         P                  ! V P                  R4      V P                  4       \	        R4      R8X  g   Q hR# )zx
For a package with a dash in the name, the dist-info metadata
uses underscores in the name. Ensure the metadata loads.
my_pkgzmy-pkg1.0N)r   build_filesrs   site_dirr   r/   s   &r   -test_dashes_in_dist_name_found_as_underscoresDNameNormalizationTests.test_dashes_in_dist_name_found_as_underscoress   s4    
 	T]]84dmmDx E)))r+   c                   Rp\         P                  ! V P                  V4      V P                  4       \	        V4      R8X  g   Q h\	        VP                  4       4      R8X  g   Q h\	        VP                  4       4      R8X  g   Q hR# )z7
Ensure the metadata loads when queried with any case.
CherryPyrw   N)r   rx   rs   ry   r   lowerupper)r'   pkg_names   & r    test_dist_name_found_as_any_case7NameNormalizationTests.test_dist_name_found_as_any_case{   sm     T]]84dmmDx E)))x~~'(E111x~~'(E111r+   c                   \         P                  ! V P                  R4      V P                  4       \	        \        \        4       4      4      pV P                   P                  \         P                  ! 4       4      pV P                   P                  V P                  V4      4       \         P                  ! V P                  R4      V4       \	        \        \        4       4      4      p\        V4      \        V4      8X  g   Q hR# )zf
Two distributions varying only by non-normalized name on
the file system should resolve as the same.
abcABCN)r   rx   rs   ry   listr   r   enter_contexttmp_pathadd_sys_pathlen)r'   beforealt_site_dirafters   &   r   test_unique_distributions0NameNormalizationTests.test_unique_distributions   s    
 	T]]514==Agmo./}}2283D3D3FG##D$5$5l$CDT]]51<@W]_-.5zS[(((r+   rE   N)rF   rG   rH   rI   staticmethodrs   rz   r   r   rM   rN   rO   s   @r   ro   ro   f   s+     	
 	
*2) )r+   ro   c                   L   a  ] tR t^t o ]R 4       t]R 4       tR tR tRt	V t
R# )NonASCIITestsc                >    RRR//p\         P                  ! W4       R# )zJ
Create minimal metadata for a package with non-ASCII in
the description.
portend.dist-inforr   u   Description: pôrˈtendportendr   rx   ry   contentss   & r   pkg_with_non_ascii_description,NonASCIITests.pkg_with_non_ascii_description   s,      5"

 	X0r+   c                >    RRR//p\         P                  ! W4       R# )zT
Create minimal metadata for an egg-info package with
non-ASCII in the description.
r   rr   u:   
                Name: portend

                pôrˈtendr   r   r   s   & r   'pkg_with_non_ascii_description_egg_info5NonASCIITests.pkg_with_non_ascii_description_egg_info   s.       "
 	X0r+   c                r    V P                  V P                  4      p\        V4      pVR ,          R8X  g   Q hR# Descriptionu
   pôrˈtendN)r   ry   r   r'   r   metas   &  r   test_metadata_loads!NonASCIITests.test_metadata_loads   s3    66t}}E!M"l222r+   c                r    V P                  V P                  4      p\        V4      pVR ,          R8X  g   Q hR# r   )r   ry   r   r   s   &  r   test_metadata_loads_egg_info*NonASCIITests.test_metadata_loads_egg_info   s3    ??N!M"l222r+   rE   N)rF   rG   rH   rI   r   r   r   r   r   rM   rN   rO   s   @r   r   r      s:         3
3 3r+   r   c                   2   a  ] tR t^t o R tR tR tRtV tR# )DiscoveryTestsc                   \        \        4       4      p\        ;QJ d    R  V 4       F  '       d   K   RM	  RM! R  V 4       4      '       g   Q h\        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       g   Q h\        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       g   Q h\        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       g   Q h\        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       g   Q h\        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       g   Q hR# )	c              3   B   "   T F  p\        V\        4      x  K  	  R # 5irA   )r!   r   .0r(   s   & r   	<genexpr>8DiscoveryTests.test_package_discovery.<locals>.<genexpr>   s     Ded:dL11e   FTc              3   L   "   T F  qP                   R ,          R8H  x  K  	  R# 5i)Nameegginfo-pkgNr   r   s   & r   r   r      s     Led==(M9e   "$c              3   L   "   T F  qP                   R ,          R8H  x  K  	  R# 5i)r   egg_with_module-pkgNr   r   s   & r   r   r      s     Ted==(,AAer   c              3   L   "   T F  qP                   R ,          R8H  x  K  	  R# 5i)r   egg_with_no_modules-pkgNr   r   s   & r   r   r      s     XRW$==(,EERWr   c              3   L   "   T F  qP                   R ,          R8H  x  K  	  R# 5i)r   sources_fallback-pkgNr   r   s   & r   r   r      s     Uut==(,BBur   c              3   L   "   T F  qP                   R ,          R8H  x  K  	  R# 5i)r   r   Nr   r   s   & r   r   r      s     Mut==(N:ur   N)r   r   allanyr'   distss   & r   test_package_discovery%DiscoveryTests.test_package_discovery   s    ]_%sDeDsssDeDDDDDsLeLsssLeLLLLLsTeTsssTeTTTTTsXRWXsssXRWXXXXXsUuUsssUuUUUUUsMuMsssMuMMMMMr+   c           	         V P                  \        4      ;_uu_ 4        \        \        R RR7      4       RRR4       R#   + '       g   i     R# ; i)	somethingelse)contextr>   N)r.   
ValueErrorr   r   r/   s   &r   test_invalid_usage!DiscoveryTests.test_invalid_usage   s1    z**{@A +***r2   c                \    \        4       p\        V4       \        R4       \        V4       R# )z
Ensure interleaved searches are safe.

When the search is cached, it is possible for searches to be
interleaved, so make sure those use-cases are safe.

Ref #293
r   N)r   nextr   r   s   & r   test_interleaved_discovery)DiscoveryTests.test_interleaved_discovery   s!     UUr+   rE   N)	rF   rG   rH   rI   r   r   r   rM   rN   rO   s   @r   r   r      s     NB r+   r   c                   ,   a  ] tR t^t o R tR tRtV tR# )DirectoryTestc                    V P                   P                  R 4      P                  4        V P                  \        4      ;_uu_ 4        \        R4       RRR4       R#   + '       g   i     R# ; i)zEGG-INFOzunknown-packageN)ry   joinpathmkdirr.   r
   r   r/   s   &r   test_egg_infoDirectoryTest.test_egg_info   sG    z*002344%& 5444s   AA.	c           	     P   V P                   P                  R 4      pVP                  4        V P                  V4      ;_uu_ 4        V P	                  \
        4      ;_uu_ 4        \        R4       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)zfoo-3.6.eggfooN)ry   r   r   r   r.   r
   r   )r'   eggs   & r   test_eggDirectoryTest.test_egg   si    mm$$]3		s##""#788 9 $#88 $##s$   B#B	/BBBB%	rE   N)rF   rG   rH   rI   r   r   rM   rN   rO   s   @r   r   r      s     ' r+   r   c                   *   a  ] tR t^t o RtR tRtV tR# )MissingSysPathz/does-not-existc                B    \         P                  P                  4        R# zX
Discovering distributions should succeed even if
there is an invalid path on sys.path.
N)rV   r   r   r/   s   &r   test_discoveryMissingSysPath.test_discovery   s    
 	((*r+   rE   N)rF   rG   rH   rI   ry   r   rM   rN   rO   s   @r   r   r      s      H+ +r+   r   c                   <   a a ] tR t^t oRtV 3R ltR tRtVtV ;t	# )InaccessibleSysPathz/access-deniedc                   < \         SV `  4        V P                  4        V P                  P	                  V P
                  ^ R7       R# )r   )	perm_bitsN)supersetUpsetUpPyfakefsfs
create_dirry   )r'   	__class__s   &r   r   InaccessibleSysPath.setUp  s3    4==C8r+   c                T    \        \        P                  P                  4       4       R# r   )r   rV   r   r   r/   s   &r   r   "InaccessibleSysPath.test_discovery  s    
 	Y--/0r+   rE   )
rF   rG   rH   rI   ry   r   r   rM   rN   __classcell__r   rP   s   @@r   r   r      s     H9
1 1r+   r   c                   b   a a ] tR tRt oV 3R ltR tR tR tR tR t	R t
R	 tR
 tRtVtV ;t# )TestEntryPointsi  c                r   < \         SV `  ! V!   \        P                  P	                  R RRR7      V n        R# )r>   rf   r]   rk   N)r   __init__rV   r   r	   rb   )r'   argsr   s   &*r   r   TestEntryPoints.__init__  s4    $$$//wg 0 
r+   c                    \         P                  ! \         P                  ! V P                  4      4      pWP                  8X  g   Q hR # rA   )pickleloadsdumpsrb   )r'   reviveds   & r   test_entry_point_pickleable+TestEntryPoints.test_entry_point_pickleable  s-    ,,v||DGG45''!!!r+   c                     \        RRR4       R# )z8
Capture legacy (namedtuple) construction, discouraged.
r>   rf   r]   N)r	   r/   s   &r   test_positional_args$TestEntryPoints.test_positional_args  s     	67G,r+   c                    V P                  \        4      ;_uu_ 4        RV P                  n        RRR4       R#   + '       g   i     R# ; i)zEntryPoints should be immutablebadactorN)r.   AttributeErrorrb   r>   r/   s   &r   test_immutableTestEntryPoints.test_immutable   s-    ~..%DGGL /...s	   :A	c                    R \        V P                  4      9   g   Q hR\        V P                  4      9   g   Q hR\        V P                  4      9   g   Q hR# )r	   zname=z'name'N)reprrb   r/   s   &r   	test_reprTestEntryPoints.test_repr%  sD    tDGG},,,$tww-'''4=(((r+   c                0    \        V P                  4       R# )zEntryPoints should be hashableN)hashrb   r/   s   &r   test_hashableTestEntryPoints.test_hashable*  s    TWWr+   c                @    V P                   P                  R 8X  g   Q hR# )rf   N)rb   moduler/   s   &r   test_moduleTestEntryPoints.test_module.  s    ww~~(((r+   c                :    V P                   P                  e   Q hR # rA   )rb   attrr/   s   &r   	test_attrTestEntryPoints.test_attr1  s    ww||###r+   c           	     P    \        \        RRRR7      \        RRRR7      .4       R# )z;
EntryPoint objects are sortable, but result is undefined.
bvalr]   rk   aN)sortedr	   r/   s   &r   test_sortableTestEntryPoints.test_sortable4  s)     	CuG<CuG<
 	r+   )rb   )rF   rG   rH   rI   r   r   r   r  r  r
  r  r  r  rM   rN   r   r   s   @@r   r   r     s7     
"-&
)
)$ r+   r   c                   &   a  ] tR tRt o R tRtV tR# )
FileSystemi>  c                    \         P                  ! V P                  4       / /V P                  R7       \	        \        4       4       R# )zJ
Ensure a Unicode subdirectory of a directory on sys.path
does not crash.
prefixN)r   rx   unicode_filenamery   r   r   r/   s   &r   test_unicode_dir_on_sys_path'FileSystem.test_unicode_dir_on_sys_pathA  s6    
 	""$b)==	
 	]_r+   rE   N)rF   rG   rH   rI   r!  rM   rN   rO   s   @r   r  r  >  s     	 	r+   r  c                   ,   a  ] tR tRt o R tR tRtV tR# )!PackagesDistributionsPrebuiltTestiM  c                Z    V P                  R 4       \        4       R,          R.8X  g   Q hR# )zexample-21.12-py3-none-any.whlexampleN_fixture_on_pathr   r/   s   &r   #test_packages_distributions_exampleEPackagesDistributionsPrebuiltTest.test_packages_distributions_exampleN  s)    >?%'	2ykAAAr+   c                Z    V P                  R4       \        4       R,          R.8X  g   Q hR# )z<
Test packages_distributions on a wheel built
by trampolim.
zexample2-1.0.0-py3-none-any.whlexample2Nr'  r/   s   &r   $test_packages_distributions_example2FPackagesDistributionsPrebuiltTest.test_packages_distributions_example2R  s+    
 	?@%'
3
|CCCr+   rE   N)rF   rG   rH   rI   r)  r-  rM   rN   rO   s   @r   r$  r$  M  s     BD Dr+   r$  c                   \   a  ] tR tRt o R tR t]P                  V 3R lR l4       tRt	V t
R# )PackagesDistributionsTesti[  c                f    \         P                  ! RRR//V P                  R7       \        4        R# )z>
Test a package built without 'top-level.txt' or a file list.
ztrim_example-1.0.0.dist-inforr   zS
                Name: trim_example
                Version: 1.0.0
                r  N)r   rx   ry   r   r/   s   &r   6test_packages_distributions_neither_toplevel_nor_filesPPackagesDistributionsTest.test_packages_distributions_neither_toplevel_nor_files^  s8     	. !1 ==
	
 	 r+   c                   \         P                  P                  4       p\        RR7      pRV/p\	        V4       F3  w  rEVP                  RV V 2RRV 2RV 2R/RV 2R	RRV 2R//4       K5  	  VP
                  ! \        P                  ! V4      R
7       \        P                  ! W0P                  R7       \        4       p\        \        V4      4       F?  pVRV 2,          R.8X  g   Q hVRV 2,          R.8X  g   Q hVRV 2,          R.8X  d   K?  Q h	  \        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       d   Q hR# )zG
Test top-level modules detected on a package without 'top-level.txt'.
zX
                Name: all_distributions
                Version: 1.0.0
                )rr   z!all_distributions-1.0.0.dist-infozimportable-name r?   in_namespace_modin_package_z__init__.py)RECORDr  all_distributionsc              3   B   "   T F  qP                  R 4      x  K  	  R# 5i)rq   N)endswith)r   r>   s   & r   r   YPackagesDistributionsTest.test_packages_distributions_all_module_types.<locals>.<genexpr>  s     M}t}}\22}r   TFN)rV   	machineryall_suffixesrL   	enumerateupdater   build_recordrx   ry   r   ranger   r   )r'   suffixesr   filesisuffixr   s   &      r   ,test_packages_distributions_all_module_typesFPackagesDistributionsTest.test_packages_distributions_all_module_typeso  sq    &&335
 0
 #8,IALL"1#fX.s#&NB& aS!!2&NB$	 	 - 	x44U;<U==9.0s8}%A #3A3!78=P<QQQQ =!45:M9NNNN ;qc!238K7LLLL &
 3M}M333M}MMMMMMr+   c                   < V ^8  d   QhRR/# )   returnNrE   )formatrP   s   "r   __annotate__&PackagesDistributionsTest.__annotate__  s     J J Jr+   c                    RRRRR/R/ R\        R4      /p\        P                  ! WP                  4       \	        4       R,          R.8X  g   Q hR	# )
zQ
Distribution is resolvable from a simple top-level symlink in RECORD.
See #452.
zsymlinked_pkg-1.0.0.dist-inforr   z`
                    Name: symlinked-pkg
                    Version: 1.0.0
                    r8  zsymlinked,,
z.symlink.target	symlinkedzsymlinked-pkgN)r   r   rx   ry   r   )r'   rD  s   & r   /test_packages_distributions_symlinked_top_levelIPackagesDistributionsTest.test_packages_distributions_symlinked_top_level  sa     ,  /. r!23
%
 	UMM2%'48IIIIr+   rE   N)rF   rG   rH   rI   r2  rG  r   skip_unless_symlinkrQ  rM   rN   rO   s   @r   r0  r0  [  s-     !"#NJ ""J #Jr+   r0  c                   &   a  ] tR tRt o R tRtV tR# )PackagesDistributionsEggTesti  c                   a \        4       oV3R lpV! R4      R08X  g   Q hV! R4      R08X  g   Q hV! R4      \        4       8X  g   Q hV! R4      R08X  g   Q hR	# )
zw
Test old-style egg packages with a variation of 'top_level.txt',
'SOURCES.txt', and 'installed-files.txt', available.
c                 j   < SP                   ! 4        UUu0 uF  w  rW9   g   K  VkK  	  upp# u uppi rA   )items)package_nameimport_namepackage_namesr   s   &  r   import_names_from_packagecPackagesDistributionsEggTest.test_packages_distributions_on_eggs.<locals>.import_names_from_package  s?     3@2E2E2G2G.K0 2G  s   
//r   r6  r   egg_with_moduler   r   sources_fallbackN)r   set)r'   r\  r   s   & @r   #test_packages_distributions_on_eggs@PackagesDistributionsEggTest.test_packages_distributions_on_eggs  su    
 /0	 )7E7BBB ))>?DUCVVVV ))BCsuLLL ))?@EWDXXXXr+   rE   N)rF   rG   rH   rI   ra  rM   rN   rO   s   @r   rU  rU    s     Y Yr+   rU  c                   &   a  ] tR tRt o R tRtV tR# )EditableDistributionTesti  c                    \         P                  ! R 4      pVP                  P                  P	                  R4      '       g   Q hVP                  P
                  P                  P                  '       g   Q hR# )r   z.whlN)r   r    originurlr;  archive_infohashessha256r&   s   & r   test_origin$EditableDistributionTest.test_origin  sS    %%n5{{''////{{''..55555r+   rE   N)rF   rG   rH   rI   rk  rM   rN   rO   s   @r   rd  rd    s     6 6r+   rd  )8r#   r   unittestr   rV   importlib.metadata
contextlibtest.supportr   !pyfakefs.fake_filesystem_unittestr   ffsrU   stubsr?   r   _contextr   _pathr   r   r	   r
   r   r   r   r   r   r   contextmanagerr   DistInfoPkgTestCaser   rR   	OnSysPathSiteDirro   r   
EggInfoPkg EggInfoPkgPipInstalledNoToplevelEggInfoPkgPipInstalledNoModulesEggInfoPkgSourcesFallbackr   r   r   r   r   FileBuilderr  ZipFixturesr$  r0  rU  DistInfoPkgEditablerd  rE   r+   r   <module>r     sW   	       "73   
 
 
  %)%%x'8'8 %)P/(&&(9(9 /0,)X//1A1A8CTCT ,)^(3H&&(8(8(:K:K (3V!--,,&&!HH&&(8(8(:K:K  +X''):): +1(,,cll 1 ,h'' ,^(((*>*>@Q@QD(<(<h>O>O DMJ(((*;*;MJ`"Y--,,&&"YJ6x;;X=N=N 6I  7667s   J* *J;:J;