
    wis              (          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m	Z	m
Z
m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mZmZmZmZmZmZmZmZmZ dd
l m!Z!  e            rd dl"Z"d dl"m#Z# d dl$mZ% d dl$m&Z' d dl$mZ(  e            rd dl)Z)d dl)m*Z* d dl+m,Z, d dl-m.Z.m/Z/ dZ0dZ1dZ2dZ3dgZ4 ej5        e6          Z7ddgddgddgddgdddgddgddgddgddgddgddddgidZ8i Z9e8D ]Z:e9;                    e8e:                    dCde<fdZ=dDdee	ej>                 e?f         fdZ@ed              ZAd! ZBd" ZC	 dCd#ZD	 	 	 	 	 dEd$ZE	 	 	 	 	 	 	 	 dFd&ZFd'e?d(e?d)e	e         d*ed+e<d,e?d-ee?ejG        f         d.ee?ej>        f         fd/ZH	 dGd1ee?eIf         d2ee?eIf         d3e?fd4ZJd5 ZKd'e?d(e?d)e	e         d*ed+e<d6ed-ejG        d7ed8ed9e
eee?ejL        f         e?f                  d:e
eeeMe?f         eeMe?f         f                  d;e
ee?ej>        f                  d<e<d=ee?e?f         d,e?d>e<d?e?d@e<d.ee?ej>        f         f&dAZNdB ZOdS )H    N)Path)AnyDictListOptionalUnion)
model_info)validate_hf_hub_args)version   )__version__)
FLAX_WEIGHTS_NAMEONNX_EXTERNAL_WEIGHTS_NAMEONNX_WEIGHTS_NAMESAFETENSORS_WEIGHTS_NAMEWEIGHTS_NAMEget_class_from_dynamic_moduleis_accelerate_availableis_peft_availableis_transformers_availablelogging)is_compiled_module)PreTrainedModel)r   )SAFE_WEIGHTS_NAME)r   )dispatch_model)remove_hook_from_module)compute_module_sizesget_max_memoryzdiffusion_pytorch_model.binzpipeline.pyzdiffusers.utilsztransformers.utilspriorsave_pretrainedfrom_pretrained)
ModelMixinSchedulerMixinDiffusionPipelineOnnxRuntimeModel)PreTrainedTokenizerPreTrainedTokenizerFastr   FeatureExtractionMixinProcessorMixinImageProcessingMixin	ORTModule)	diffuserstransformerszonnxruntime.trainingreturnc                    g }t                      }|pg }| D ]}t          j                            |          \  }}t	          |                    d                    dk    r|                    d          d         |v rh|dk    r3|                    t          j                            |                     |dk    r2|                    t          j                            |                     |D ]}t          j                            |          \  }}t          j                            |          \  }}|	                    d          r|
                    dd          }n|}t          j                            t          j                            ||                    }	|	 d}	|	|vr t                              |	 d            d	S d
S )a  
    Checking for safetensors compatibility:
    - By default, all models are saved with the default pytorch serialization, so we use the list of default pytorch
      files to know which safetensors files are needed.
    - The model is safetensors compatible only if there is a matching safetensors file for every default pytorch file.

    Converting default pytorch serialized filenames to safetensors serialized filenames:
    - For models from the diffusers library, just replace the ".bin" extension with ".safetensors"
    - For models from the transformers library, the filename changes from "pytorch_model" to "model", and the ".bin"
      extension is replaced with ".safetensors"
    /r   r   z.binz.safetensorspytorch_modelmodelz
 not foundFT)setospathsplitextlensplitappendnormpathadd
startswithreplacejoinloggerwarning)
	filenamesvariantpassed_componentspt_filenamessf_filenamesfilename_	extensionr5   expected_sf_filenames
             z/root/.openclaw/workspace/chatterbox_venv_py311/lib/python3.11/site-packages/diffusers/pipelines/pipeline_loading_utils.pyis_safetensors_compatiblerK   \   s    L55L)/R 	9 	9w''119x~~c""##q((X^^C-@-@-CGX-X-X 0 0 : :;;;;.((RW--h77888   x00h g..x88)// 	 ''AAHHH!w//T80L0LMM"6DDD|33NN2>>>???55 4 4    c                     t           t          t          t          t          g}t                      r|t          t          t          gz  }d |D             }d |D             }dt          j
        dd                    |           d d d dd                    |           d          t          j
        dd                    |           dd                    |           d	 d
          t          j
        dd                    |           d dd                    |           d          t          j
        dd                    |           dd                    |           d          "fd| D             }fd| D             }||z  }nt                      }fd| D             }fd| D             }	||	z  }
t          |          }fd}|
D ]&} ||          }||vr|                    |           '||fS )Nc                 D    g | ]}|                     d           d         S ).r   r8   .0ws     rJ   
<listcomp>z/variant_compatible_siblings.<locals>.<listcomp>   s&    ===1qwws||A===rL   c                 D    g | ]}|                     d           d         S )rO   rP   rQ   s     rJ   rT   z/variant_compatible_siblings.<locals>.<listcomp>   s'    ===1aggcll2&===rL   z\d{5}-of-\d{5}(|z)\.(-z)$z
)\.index\.z\.json$z)(-z)?\.(z)\.index\.jsonc                 p    h | ]2}                     |                    d           d                   0|3S r0   rV   matchr8   )rR   fvariant_file_res     rJ   	<setcomp>z.variant_compatible_siblings.<locals>.<setcomp>   s=    ggg?3H3HQTVXIY3Z3Z3f13f3f3frL   c                 p    h | ]2}                     |                    d           d                   0|3S r[   r\   )rR   r^   variant_index_res     rJ   r`   z.variant_compatible_siblings.<locals>.<setcomp>   s>    hhh3C3I3I!''RU,,WYJZ3[3[3g13g3g3grL   c                 p    h | ]2}                     |                    d           d                   0|3S r[   r\   )rR   r^   non_variant_file_res     rJ   r`   z.variant_compatible_siblings.<locals>.<setcomp>   s>    kkk3F3L3LQWWUX\\Z\M]3^3^3j13j3j3jrL   c                 p    h | ]2}                     |                    d           d                   0|3S r[   r\   )rR   r^   non_variant_index_res     rJ   r`   z.variant_compatible_siblings.<locals>.<setcomp>   s>    lll3G3M3MaggVYll[]N^3_3_3k13k3k3krL   c           	         d| v r|                      dd           }nt          j        d                               |           R|                     d          d          d dd                    |                     d          dd                     }n<|                     d          d          d d|                     d          d          }|S )Nindexzindex.z^(.*?)rY   r   rO      )r=   recompiler]   r8   r>   )rF   variant_filenametransformers_index_formatrB   s     rJ   convert_to_variantz7variant_compatible_siblings.<locals>.convert_to_variant   s    h'//9K'9K9KLLZ<!:<<==CCHMMY"*.."5"5a"8hh7hhSXXhnn]`NaNabcbdbdNeEfEfhh"*.."5"5a"8]]7]]X^^TWEXEXYZE[]]rL   )r   r   r   r   r   r   TRANSFORMERS_WEIGHTS_NAMETRANSFORMERS_SAFE_WEIGHTS_NAMETRANSFORMERS_FLAX_WEIGHTS_NAMErj   rk   r>   r3   r;   )rA   rB   weight_namesweight_prefixesweight_suffixsvariant_weightsvariant_indexesvariant_filenamesnon_variant_weightsnon_variant_indexesnon_variant_filenamesusable_filenamesrn   r^   rl   rd   rf   rm   r_   rb   s    `             @@@@@rJ   variant_compatible_siblingsr|      s    "L !"" t24RTrss >====O=====N 1*/**'D]cfckcklzc{c{
 
 :d/**dd0H0HddT[ddd
 

 *gSXXo&&gg+Dgg388TbKcKcggg  :&r388O+D+D&r&r#((SaJbJb&r&r&rssggggiggghhhhihhh+o=EEkkkkikkkllllilll/2EE ,--            # $ $--a00#333  ###...rL   c                    t          | |d           }d |j        D             }t          ||          \  }}d |D             }t          |                              t          |                    r/t          j        d| d|  d| d| d	| d
| dt                     d S t          j        d| d|  d| d| d|  d|  d| dt                     d S )N)tokenrevisionc                     h | ]	}|j         
S  )	rfilename)rR   siblings     rJ   r`   z0warn_deprecated_model_variant.<locals>.<setcomp>   s    @@@w"@@@rL   )rB   c                     g | ]P}d                      |                    d           dd         |                    d           dd         z             QS )rO   Nri   r   )r>   r8   )rR   r^   s     rJ   rT   z1warn_deprecated_model_variant.<locals>.<listcomp>   sO    hhhaCHHQWWS\\"1"%5QRR8H%HIIhhhrL   zYou are loading the variant z from z via `revision='z-'` even though you can load it via `variant=`z)`. Loading model variants via `revision='zK'` is deprecated and will be removed in diffusers v1. Please use `variant='z'` instead.z^'`. This behavior is deprecated and will be removed in diffusers v1. One should use `variant='z%'` instead. However, it appears that z currently does not have the required variant filenames in the 'main' branch. 
 The Diffusers team and community would be very grateful if you could open an issue: https://github.com/huggingface/diffusers/issues/new with the title 'z is missing z6 files' so that the correct variant file can be added.)r	   siblingsr|   r3   issubsetwarningswarnFutureWarning)	pretrained_model_name_or_pathr~   rB   r   model_filenamesinforA   comp_model_filenamesrG   s	            rJ   warn_deprecated_model_variantr      s   %  D
 A@$-@@@I9)XVVV!hhSghhh
?$$S)=%>%>?? 	
 8    ;X    jr      bj      U]      jr      	
 	
 	
 	
 	

 	 u	8  u	  u	;X  u	  u	jr  u	  u	  S[  u	  u	  B_  u	  u	  Jg  u	  u	  u}  u	  u	  u		
 	
 	
 	
 	
rL   c                     t          |           r| j        } t                      r"ddlm} t          | |          r| j        j        } | S )zUnwraps a model.r   )	PeftModel)r   	_orig_modr   peftr   
isinstance
base_modelr2   )r2   r   s     rJ   _unwrap_modelr      s[    %     +""""""eY'' 	+$*ELrL   c                    |st          j        |           t          |          }fd|                                D             }d}	|                                D ]\  }}
|
t          ||
          r|
}	||         }t          |          }|j        }t          ||	          st          ||          d| d|	           dS t          
                    d||          d           dS )zNSimple helper method to raise or warn in case incorrect module has been passedc                 4    i | ]}|t          |d           S NgetattrrR   clibrarys     rJ   
<dictcomp>z'maybe_raise_or_warn.<locals>.<dictcomp>   '    \\\QAww488\\\rL   Nz is of type: z, but should be z&You have passed a non-standard module z2. We cannot verify whether it has the correct type)	importlibimport_moduler   keysitems
issubclassr   	__class__
ValueErrorr?   r@   )library_namer   
class_nameimportable_classespassed_class_objnameis_pipeline_module	class_objclass_candidatesexpected_class_objclass_candidate	sub_modelunwrapped_sub_model	model_clss    `            rJ   maybe_raise_or_warnr      sC     
),77GZ00	\\\\BTBYBYB[B[\\\!+;+A+A+C+C 	5 	5'J*z)_/U/U*%4" %T*	+I66'1	)%788 	#D)kk	kkWikk  	 	
 	$5Ed5K $ $ $	
 	
 	
 	
 	
rL   c                 H  
 t           j                            ||          }|rAt          ||           }t          ||          

fd|                                D             }	nt           j                            t           j                            || dz                       r6t          || dz   |          

fd|                                D             }	nDt          j        |           t          |          
fd|                                D             }	
|	fS )zaSimple helper method to retrieve class object of module as well as potential parent class objectsc                     i | ]}|S r   r   rR   r   r   s     rJ   r   z0get_class_obj_and_candidates.<locals>.<dictcomp>      LLLQAyLLLrL   .py)module_filer   c                     i | ]}|S r   r   r   s     rJ   r   z0get_class_obj_and_candidates.<locals>.<dictcomp>#  r   rL   c                 4    i | ]}|t          |d           S r   r   r   s     rJ   r   z0get_class_obj_and_candidates.<locals>.<dictcomp>)  r   rL   )	r4   r5   r>   r   r   isfiler   r   r   )r   r   r   	pipelinesr   component_name	cache_dircomponent_folderpipeline_moduler   r   r   s             @@rJ   get_class_obj_and_candidatesr     s;    w||I~>> ]!)\::OZ88	LLLL2D2I2I2K2KLLL	%5|e7KLL	M	M ]1,*>:
 
 
	 MLLL2D2I2I2K2KLLL ),77GZ00	\\\\BTBYBYB[B[\\\&&&rL   c                     |                      d          r0t          |           }|j        }|j                                        } n||  d}|} nt
          }|||}t          | ||||          S )Nr   )r   r   r   r   )endswithr   r   parentabsoluteCUSTOM_PIPELINE_FILE_NAMEr   )custom_pipelinerepo_idhub_revisionr   r   r   r5   	file_names           rJ   _get_custom_pipeline_classr   .  s     && 	.O$$I	+..00		&+++	!-	|7  (   rL   Fc	                 (   |t          ||||||          S | j        dk    r| S t          j        | j                            d          d                   }	|p|d         }|st          d          |                    d          r
|dd          n|}t          |	|          }
|rmd	d
l	m
}  ||
          }|,t                              d|j         d|
j         d           n*t                              |
j         d|
j         d           |p|
}
|
S )N)r   r   r   r   r   r$   rO   r   _class_namezoThe class name could not be found in the configuration file. Please make sure to pass the correct `class_name`.Flax   ri   )_get_connected_pipelinezLoading connected pipeline z instead of z0 as specified via `load_connected_pipeline=True`z* has no connected pipeline class. Loading )r   __name__r   r   
__module__r8   r   r<   r   auto_pipeliner   r?   r   )r   configload_connected_pipeliner   r   r   r   r   r   diffusers_modulepipeline_clsr   connected_pipeline_clss                rJ   _get_pipeline_classr   O  s    ")%!
 
 
 	
 000 .y/C/I/I#/N/Nq/QRR4vm4J 
}
 
 	
 $.#8#8#@#@PABBjJ+Z88L >::::::!8!8!F!F!-KK c.D.M  c  c[g[p  c  c  c    KK<0tt\h\qtttuuu-=rL   r   r   r   r   r   r   torch_dtypecached_folderc                    t          | ||||||          \  }	}
t                      r6t          j        t          j        t          j                  j                  }nd}t                      o,t          |	t                    o|t          j        d          k    }t          j
        t                              d          d                   }t          |	|j                  }d }|}t
          ddd}|r	|	                    t          j                            ||          |d	d	|                    d
d          |                    dd           |                    dd           |                    dd          |                    dd           |                    dd           |                    dd           |          \  }}}t'          j                    5   |	j        |fi |}d d d            n# 1 swxY w Y   n|rt-          |	dd           }|t/          d          |                    |||                    d
d          |                    dd           |                    dd           |                    dd          |                    dd           |                    dd           |	  	        }t'          j                    5   |	|          }d d d            n# 1 swxY w Y   ||                    |          }|S )Nr   r   N/A4.20.0rO   r   r2   pytorch)r,   	file_type	frameworkTforce_downloadFresume_downloadproxieslocal_files_onlyr~   r   	subfolder)r   return_unused_kwargsreturn_commit_hashr   r   r   r   r~   r   r   
user_agentconfig_classz=`config_class` cannot be None. Please double-check the model.)r   r   r   r   r   r~   r   r   dtype)r   r   r   parser-   r   base_versionr   r   r   r   r   r8   r"   load_configr4   r5   r>   pop
accelerateinit_empty_weightsfrom_configr   r   r!   to)r   r   r   r   r   r   r   r   kwargsr   rG   transformers_versionis_transformers_modelr   is_diffusers_modelr2   config_pathr   r   unused_kwargscommit_hashr   s                         rJ   _load_empty_modelr     s    0  LIq !"" %&}W]<;S-T-T-abb$ 	"## 	<y/22	< GM($;$;; 
 !.x~~c/B/B1/EFF#I/?/JKKEK  J  #&-6-B-BGLLd++#!%#!::&6>>"JJ'8$??JJy$//#ZZ(:EBB**Wd++ZZ
D11jjd33! .C .
 .
*{ *,, 	C 	C)I)&BBMBBE	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C	 &y.$??\]]]--!::&6>>"JJ'8$??JJy$//#ZZ(:EBB**Wd++ZZ
D11! . 

 

 *,, 	& 	&If%%E	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& {++Ls$   G11G58G5
K""K&)K&balancedmodule_sizesdevice_memorydevice_mapping_strategyc                 ~   t          |                                          }||d d d         z   }|                                }i }d}| D ]r}||t          |          z           }| |         }	||         }
|	|
k    r|g|d<   7||vr|g||<   n||                             |           ||xx         |	z  cc<   |dz  }s|S )NrV   r   cpuri   )listr   copyr7   r9   )r  r  r  
device_idsdevice_cycledevice_id_component_mappingcurrent_device_index	component	device_idcomponent_memorycurr_device_memorys              rJ   _assign_components_to_devicesr    s    m((**++J
44R4 00L!&&((M"$! & &	 !5L8I8I!IJ	'	2*95 0002;'.. ;;;:C+I66+I6==iHHH )$$$(88$$$ A%  &&rL   c                    ddl m} |                    dt          j                  i }|                                D ]D\  }	\  }
}|                    d          rt          d          t          ||
          }t          }d }|	|v rIt          |
|||||	|           t          j                    5  ||	         }d d d            n# 1 swxY w Y   nt          |
||||||	|                    dd           |                    dd           |                    dd           |                    d	d           |                    d
d           |                    dd           |                    dd                     }||||	<   Ffd|                                D             }t          t          |                                d d                    }t!          |          }t          t          |                                d d                    }d |                                D             }d }t#          |          dk    r8t%          |||           }i }|                                D ]\  }}|D ]}|||<   |S )Nr   )r   r   r   z3Flax pipelines are not supported with `device_map`.r   r   r   r   r   r~   r   )r   r   r   r   r   pipeline_classr   r   r   r   r   r   r   r~   r   c                     i | ]<\  }}t          |t          j        j                  $|t	          |           d         =S )r    )r   torchnnModuler   )rR   module_namemoduler   s      rJ   r   z)_get_final_device_map.<locals>.<dictcomp>0  sV       Kfeho..)&DDDRH  rL   c                     | d         S Nri   r   items    rJ   <lambda>z'_get_final_device_map.<locals>.<lambda>5  s
    d1g rL   T)keyreversec                     | d         S r  r   r  s    rJ   r  z'_get_final_device_map.<locals>.<lambda>9  s
    $q' rL   c                 &    i | ]\  }}|d k    ||S )r  r   )rR   kvs      rJ   r   z)_get_final_device_map.<locals>.<dictcomp>:  s#    DDD41ae!QrL   )r  )r,   r   getr  float32r   r<   r   hasattrALL_IMPORTABLE_CLASSESr   r   r   r   dictsortedr   r7   r  )
device_mapr  r   	init_dictr   
max_memoryr   r   init_empty_modulesr   r   r   r   r   loaded_sub_modelr  final_device_mapr
  r  
componentsr  r   s                        @rJ   _get_final_device_mapr2    sD   ######**]EM::K ,5OO,=,= -8 -8((|Z  (( 	TRSSS %Y==3 ###  " "   .00 : :#3D#9 : : : : : : : : : : : : : : :  1)%#5##5-'$jj$??%zz*:DAA &

+<d C C

9d33!',>!E!Ejj$//J55     $ ''7t$
   #5#;#;#=#=  L
 |11339M9MW[\\\]]L  
++JfZ--//5I5ISWXXXYYJDD:#3#3#5#5DDDJ 
:&C*j'
 '
 '
#
 %@%F%F%H%H 	8 	8!Iz' 8 8	.7 ++8 s   0	CC		C		r  providersess_optionsr+  r-  offload_folderoffload_state_dictmodel_variants	from_flaxrB   low_cpu_mem_usagec           	         t          | ||||||          \  }}d}|                                D ]%\  }}|t          ||          r||         d         }&|i|j        }|                    t
                    p|                    t                    }|rd|v r
 |             t          d| d| dt           d          t          ||          }t          j        t                              d          d	                   }i }t          |t          j        j                  r||d
<   t          ||j                  r
||d<   ||d<   t          ||j                  }t'                      r6t)          j        t)          j        t,          j                  j                  }nd}t'                      o,t          |t2                    o|t)          j        d          k    }|s|r|	|d<   |
|d<   ||d<   ||d<   |                    |d          |d<   |rd|d<   |r3|d         +|t)          j        d          k     rt7          d| d          |r|d         |                    d           |r|s||d<   nd|d<   t8          j                            t8          j                            ||                    r( |t8          j                            ||          fi |}n	 ||fi |}tA          |t          j        j                  rmtA          |	tB                    rXtE          |d           |	d         dk    } | r'tG          ||$                                |	dd	           ntG          ||	d           |S ) zLHelper method to load the module `name` from `library_name` and `class_name`r   Nri   dummyzThe component z of zT cannot be loaded as it does not seem to have any of the loading methods defined in rO   r   r   r3  r4  r   r   r+  r-  r5  r6  rB   Tr8  z4.27.0zWhen passing `variant='zS'`, please make sure to upgrade your `transformers` version to at least 4.27.0.dev0r9  F)recurser  r  )
state_dictr+  force_hooksmain_device)r+  r>  )%r   r   r   r   r<   DUMMY_MODULES_FOLDER!TRANSFORMERS_DUMMY_MODULES_FOLDERr   r(  r   r   r   r   r8   r  r  r  r%   r"   r   r   r   r-   r   r   r   r   ImportErrorr4   r5   isdirr>   r   r)  r   r   r=  )!r   r   r   r   r   r  r   r3  r4  r+  r-  r5  r6  r7  r   r8  rB   r9  r   r   r   load_method_namer   none_moduleis_dummy_pathload_methodr   loading_kwargsr   r   r   r/  needs_offloading_to_cpus!                                    rJ   load_sub_modelrJ  M  s`   2 #?# # #I '7'='='?'? A A#
O&:i+Q+Q&1*=a@ *#../CDD 
H^H^-I
 I
  	W33IKKKPY P PN P P6LP P P
 
 	

 )%566K !.x~~c/B/B1/EFFN)UX_-- 4(3}%)->?? 6%-z")5~&#I/?/JKK "" %&}W]<;S-T-T-abb$ 	"## 	<y/22	< GM($;$;;   82 8'1|$'1|$+9'(/A+,$2$6$6tT$B$By! 	/*.N;'
 "		*y)5$w}X'>'>>> G'  G  G  G   # 	*~i'@'Hy)))  	83 	82CN.//27N./ 
w}}RW\\-6677 H&;rw||M4'H'H[[N[[ ';}GGGG"EHO44 VJPT9U9U V 0$????",R.E"9" 		V +6688%      +
PTUUUUrL   c                    t          j        t                              d          d                   }t	          |d          }t          |           }|j                            d          d         }|j                            d          }t          |          dk    r|d         nd }|j                            d          }||v ot          ||          }|r|}n|t          vr|j        }|j
        j        }	||	fS )NrO   r   r   r   )r   r   r   r8   r   r   r   r7   r'  LOADABLE_CLASSESr   )
r  r   r   not_compiled_moduler   module_path_itemspipeline_dirr5   r   r   s
             rJ   _fetch_class_library_tuplerQ    s    .x~~c/B/B1/EFF(+66I (//!,22377:G ,6<<SAA,/0A,B,BQ,F,F$R((DL)//44D%-R')\2R2R
  1	(	(	(%0 %.7JZ  rL   )NNr   )NNNNN)NFNNNNNN)r   )Pr   r4   rj   r   pathlibr   typingr   r   r   r   r   r  huggingface_hubr	   huggingface_hub.utilsr
   	packagingr   r  r   utilsr   r   r   r   r   r   r   r   r   r   utils.torch_utilsr   r-   r   transformers.utilsrq   r   rp   ro   r   r   accelerate.hooksr   accelerate.utilsr   r   
INDEX_FILEr   r@  rA  CONNECTED_PIPES_KEYS
get_loggerr   r?   rM  r(  r   updateboolrK   PathLikestrr|   r   r   r   r   r   r   r   r   floatr  r2  deviceintrJ  rQ  r   rL   rJ   <module>rf     sR  "     				 				        3 3 3 3 3 3 3 3 3 3 3 3 3 3  & & & & & & 6 6 6 6 6 6                                    3 2 2 2 2 2  M,,,,,,VVVVVVVVVVVVLLLLLL F))))))888888EEEEEEEE +
) ( $8 !y 		H	%	% )*;<,.?@/1BC.0AB	  !23DE$57H#I-/@A#46G"H,.?@!24E F  	'):;  (   = =G!!"27";<<<<- -RV - - - -`@/ @/E$r{BSUXBX<Y @/ @/ @/ @/F 
 
 
,  
 
 
@ qu' ' ' ':    F !0 0 0 0fSSS S	S 	S
 S S sEK'(S bk)*S S S Sn eo' 'sEz"'37U
3C'^a' ' ' '<T T TnGGG S	G 	G
 G G G G G tC$56;<=G eCHouS#X>?@G U3#345G G cNG G  !G" #G$ %G& bk)*'G G G GT! ! ! ! !rL   