Ë
    T^(h×K  ã                   ó”  — d dl 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 d dlZd dlmZmZ ddlmZ dd	lmZmZmZmZ d
dlmZ  e«       rddlmZ  e«       rddlmZ erddl m!Z! ddl"m#Z# ddl$m%Z%  ejL                  e'«      Z( ed«      Z)defd„Z*	 	 d,ded   dddede+deded   de,dee
e,   e
e,   f   fd„Z-	 d-ded    dd!dede+deded   dee
e,   e
e,   f   fd"„Z.	 	 d,ded   ded#   dede+deded   de,dee
e,   e
e,   f   fd$„Z/	 d-deded   d%ed#   d&ed'e
e,   d(e0ded   fd)„Z1ded#   d*e	e,   dee2e
e,   f   fd+„Z3y).é    N)Ú	signature)Úchain)ÚPath)ÚTYPE_CHECKINGÚIterableÚListÚOptionalÚTupleÚUnion)ÚVersionÚparseé   )ÚPreTrainedTokenizerBase)Ú
TensorTypeÚis_tf_availableÚis_torch_availableÚloggingé   )Ú
OnnxConfig)ÚPreTrainedModel)ÚTFPreTrainedModel)ÚFeatureExtractionMixin)ÚProcessorMixin)ÚPreTrainedTokenizerz1.4.0Úminimum_versionc                 ó²   — 	 ddl }t        |j                  «      }|t        k  rt	        d|j                  › d| › d�«      ‚y# t        $ r t	        d«      ‚w xY w)zº
    Check onnxruntime is installed and if the installed version match is recent enough

    Raises:
        ImportError: If onnxruntime is not installed or too old version is found
    r   Nz*We found an older version of onnxruntime (z&) but we require onnxruntime to be >= zp to enable all the conversions options.
Please update onnxruntime by running `pip install --upgrade onnxruntime`z”onnxruntime doesn't seem to be currently installed. Please install the onnxruntime by running `pip install onnxruntime` and relaunch the conversion.)Úonnxruntimer   Ú__version__ÚORT_QUANTIZE_MINIMUM_VERSIONÚImportError)r   r   Úort_versions      úW/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/transformers/onnx/convert.pyÚcheck_onnxruntime_requirementsr#   5   sƒ   € ð
Ûô ˜K×3Ñ3Ó4ˆð Ô5Ò5ÜØ<¸[×=TÑ=TÐ<Uð V7Ø7FÐ6Gð H[ð[óð ð 6øô ò 
Üð,ó
ð 	
ð
ús   ‚>A ÁAÚpreprocessor)r   r   r   Úmodelr   ÚconfigÚopsetÚoutputÚ	tokenizerr   ÚdeviceÚreturnc                 óÎ  ‡‡— t        | t        «      r|�t        d«      ‚|�1t        j                  dt
        «       t        j                  d«       |} t        t        |«      t        «      �râddlŠddlm} t        j                  d‰j                  › �«       ‰j                  «       5  d|j                   _        |j%                  «        |j&                  �€t        j                  d	t)        |j&                  «      › d
�«       |j&                  j+                  «       D ]7  \  }}	t        j                  d|› d|	› �«       t-        |j                   ||	«       Œ9 |j/                  | t0        j2                  ¬«      }
‰j5                  ‰«      Š‰j                  dk(  r»‰j6                  j9                  «       r¡|j;                  ‰«       i }|
j+                  «       D ]y  \  }}t        |t<        «      rt?        ˆˆfd„|D «       «      ||<   Œ/t        |t@        «      r'|D �cg c]  }t?        ˆˆfd„|D «       «      ‘Œ c}||<   Œf|j;                  ‰«      ||<   Œ{ |}
tC        ||
jE                  «       «      \  }}tG        |jH                  jE                  «       «      }|st        d«      ‚|jK                  «         |||
f|jM                  «       tG        |jN                  jE                  «       «      |tQ        tS        |jN                  j+                  «       |jH                  j+                  «       «      «      d|¬«       |jU                  «        ddd«       ||fS fS c c}w # 1 sw Y   fS xY w)a‚  
    Export a PyTorch model to an ONNX Intermediate Representation (IR)

    Args:
        preprocessor: ([`PreTrainedTokenizer`], [`FeatureExtractionMixin`] or [`ProcessorMixin`]):
            The preprocessor used for encoding the data.
        model ([`PreTrainedModel`]):
            The model to export.
        config ([`~onnx.config.OnnxConfig`]):
            The ONNX configuration associated with the exported model.
        opset (`int`):
            The version of the ONNX operator set to use.
        output (`Path`):
            Directory to store the exported ONNX model.
        device (`str`, *optional*, defaults to `cpu`):
            The device on which the ONNX model will be exported. Either `cpu` or `cuda`.

    Returns:
        `Tuple[List[str], List[str]]`: A tuple with an ordered list of the model's inputs, and the named inputs from
        the ONNX configuration.
    NúKYou cannot provide both a tokenizer and a preprocessor to export the model.útThe `tokenizer` argument is deprecated and will be removed in version 5 of Transformers. Use `preprocessor` instead.úROverwriting the `preprocessor` argument with `tokenizer` to generate dummy inputs.r   )ÚexportzUsing framework PyTorch: TúOverriding ú configuration item(s)ú	- ú -> ©Ú	frameworkÚcudac              3   óp   •K  — | ]-  }t        |‰j                  «      r|j                  ‰«      nd –— Œ/ y ­w©N©Ú
isinstanceÚTensorÚto©Ú.0Úxr*   Útorchs     €€r"   ú	<genexpr>z!export_pytorch.<locals>.<genexpr>•   s0   øè ø€ ò 7ØVW¬J°q¸%¿,¹,Ô,G˜AŸD™D œLÈTÓQñ7ùó   ƒ36c              3   óp   •K  — | ]-  }t        |‰j                  «      r|j                  ‰«      nd –— Œ/ y ­wr9   r:   r>   s     €€r"   rB   z!export_pytorch.<locals>.<genexpr>š   s-   øè ø€ Ò!cÐ\]´*¸QÀÇÁÔ2M !§$¡$ v¤,ÐSWÓ"WÑ!cùrC   z%Model and config inputs doesn't match)ÚfÚinput_namesÚoutput_namesÚdynamic_axesÚdo_constant_foldingÚopset_version)+r;   r   Ú
ValueErrorÚwarningsÚwarnÚFutureWarningÚloggerÚinfoÚ
issubclassÚtyper   rA   Ú
torch.onnxr0   r   Úno_gradr&   Úreturn_dictÚevalÚvalues_overrideÚlenÚitemsÚsetattrÚgenerate_dummy_inputsr   ÚPYTORCHr*   r7   Úis_availabler=   r
   Útupler   Ú$ensure_model_and_config_inputs_matchÚkeysÚlistÚoutputsÚ	patch_opsÚas_posixÚinputsÚdictr   Úrestore_ops)r$   r%   r&   r'   r(   r)   r*   Úonnx_exportÚoverride_config_keyÚoverride_config_valueÚmodel_inputsÚmodel_inputs_deviceÚkÚvÚtÚinputs_matchÚmatched_inputsÚonnx_outputsrA   s         `           @r"   Úexport_pytorchrs   R   s  ù€ ô> �,Ô 7Ô8¸YÐ=RÜÐfÓgÐgØÐÜ�‰ð'äô	
ô
 	�‰ÐhÔiØ ˆä”$�u“+œÕ/ÛÝ4ä�‰Ð/°×0AÑ0AÐ/BÐCÔDØ�]‰]‹_ñ 3	!Ø'+ˆE�L‰LÔ$Ø�J‰JŒLð ×%Ñ%Ð1Ü—‘˜k¬#¨f×.DÑ.DÓ*EÐ)FÐF\Ð]Ô^ØBH×BXÑBX×B^ÑB^ÓB`ò VÑ>Ð'Ð)>Ü—K‘K $Ð':Ð&;¸4Ð@UÐ?VÐ WÔXÜ˜EŸL™LÐ*=Ð?TÕUðVð "×7Ñ7¸ÔPZ×PbÑPbÐ7ÓcˆLØ—\‘\ &Ó)ˆFØ�{‰{˜fÒ$¨¯©×)@Ñ)@Ô)BØ—‘˜Ô Ø&(Ð#Ø(×.Ñ.Ó0ò 
>‘D�A�qÜ! !¤UÔ+Ü16ô 7Ø[\ô7ó 2Ð+¨AÒ.ô $ A¤tÔ,àmnö2ØhiœEÔ!cÐabÔ!cÕcò2Ð+¨AÒ.ð 23·±°f³Ð+¨AÒ.ð
>ð  3�ä+OÐPUÐWc×WhÑWhÓWjÓ+kÑ(ˆL˜.Ü §¡× 3Ñ 3Ó 5Ó6ˆLáÜ Ð!HÓIÐIà×ÑÔáØØ�Ø—/‘/Ó#Ü  §¡×!3Ñ!3Ó!5Ó6Ø)Ü!¤%¨¯©×(;Ñ(;Ó(=¸v¿~¹~×?SÑ?SÓ?UÓ"VÓWØ$(Ø#õ	ð ×ÑÔ ÷g3	!ðj ˜<Ð'Ð'ˆ>˜<Ð'Ð'ùò;2÷13	!ðj ˜<Ð'Ð'ús    Â)E/MÈMÈ4DMÍMÍM$)r   r   r   c           	      ó  — ddl }ddl}ddl}t        | t        «      r|�t        d«      ‚|�1t        j                  dt        «       t        j                  d«       |} d|j                  _        |j                  �€t        j                  dt        |j                  «      › d�«       |j                  j                  «       D ]7  \  }	}
t        j                  d	|	› d
|
› �«       t!        |j                  |	|
«       Œ9 |j#                  | t$        j&                  ¬«      }t)        ||j+                  «       «      \  }}t-        |j.                  j+                  «       «      }|j                  «       D ��cg c]1  \  }}|j1                  dg|j2                  z  |j4                  |¬«      ‘Œ3 }}}|j6                  j9                  |||¬«      \  }}|j;                  ||j=                  «       «       |j?                  «        ||fS c c}}w )aã  
    Export a TensorFlow model to an ONNX Intermediate Representation (IR)

    Args:
        preprocessor: ([`PreTrainedTokenizer`] or [`FeatureExtractionMixin`]):
            The preprocessor used for encoding the data.
        model ([`TFPreTrainedModel`]):
            The model to export.
        config ([`~onnx.config.OnnxConfig`]):
            The ONNX configuration associated with the exported model.
        opset (`int`):
            The version of the ONNX operator set to use.
        output (`Path`):
            Directory to store the exported ONNX model.

    Returns:
        `Tuple[List[str], List[str]]`: A tuple with an ordered list of the model's inputs, and the named inputs from
        the ONNX configuration.
    r   NzIYou cannot provide both a tokenizer and preprocessor to export the model.r.   r/   Tr1   r2   r3   r4   r5   )ÚdtypeÚname)r'   ) ÚonnxÚ
tensorflowÚtf2onnxr;   r   rK   rL   rM   rN   rO   rP   r&   rU   rW   rX   rY   rZ   r[   r   Ú
TENSORFLOWr_   r`   ra   rb   Ú
TensorSpecÚndimru   ÚconvertÚ
from_kerasÚsaverd   rg   )r$   r%   r&   r'   r(   r)   rw   Útfry   ri   rj   rk   rp   rq   rr   ÚkeyÚtensorÚinput_signatureÚ
onnx_modelÚ_s                       r"   Úexport_tensorflowr†   ¹   sÓ  € ó6 ÛÛä�,Ô 7Ô8¸YÐ=RÜÐdÓeÐeØÐÜ�‰ð'äô	
ô
 	�‰ÐhÔiØ ˆà#€E‡L�LÔð ×ÑÐ)Ü�‰�k¤# f×&<Ñ&<Ó"=Ð!>Ð>TÐUÔVØ:@×:PÑ:P×:VÑ:VÓ:Xò 	NÑ6ÐÐ!6Ü�K‰K˜$Ð2Ð3°4Ð8MÐ7NÐOÔPÜ�E—L‘LÐ"5Ð7LÕMð	Nð
 ×/Ñ/°Ì
×H]ÑH]Ð/Ó^€LÜ#GÈÈ|×O`ÑO`ÓObÓ#cÑ €L�.Ü˜Ÿ™×+Ñ+Ó-Ó.€Lð ^j×]oÑ]oÓ]q÷ÙNYÈcÐSYˆ�‰�t�f˜vŸ{™{Ñ*°&·,±,ÀSˆÕIð€Oñ ð —O‘O×.Ñ.¨u°oÈUÐ.ÓS�M€J�Ø‡I�Iˆj˜&Ÿ/™/Ó+Ô,Ø
×ÑÔà˜<Ð'Ð'ùós   Å.6G<)r   r   c           	      ó–  — t        «       st        «       st        d«      ‚t        «       r t        |t        «      r|dk(  rt        d«      ‚t        | t        «      r|�t        d«      ‚|�1t        j                  dt        «       t        j                  d«       |} t        «       r<dd	lm} |j                  s*t        j!                  d
|j"                  › d |«       › �«       t        «       r+t%        t'        |«      t(        «      rt+        | ||||||¬«      S t        «       r+t%        t'        |«      t        «      rt-        | |||||¬«      S yy)aë  
    Export a Pytorch or TensorFlow model to an ONNX Intermediate Representation (IR)

    Args:
        preprocessor: ([`PreTrainedTokenizer`], [`FeatureExtractionMixin`] or [`ProcessorMixin`]):
            The preprocessor used for encoding the data.
        model ([`PreTrainedModel`] or [`TFPreTrainedModel`]):
            The model to export.
        config ([`~onnx.config.OnnxConfig`]):
            The ONNX configuration associated with the exported model.
        opset (`int`):
            The version of the ONNX operator set to use.
        output (`Path`):
            Directory to store the exported ONNX model.
        device (`str`, *optional*, defaults to `cpu`):
            The device on which the ONNX model will be exported. Either `cpu` or `cuda`. Only PyTorch is supported for
            export on CUDA devices.

    Returns:
        `Tuple[List[str], List[str]]`: A tuple with an ordered list of the model's inputs, and the named inputs from
        the ONNX configuration.
    zrCannot convert because neither PyTorch nor TensorFlow are not installed. Please install torch or tensorflow first.r7   z1`tf2onnx` does not support export on CUDA device.Nr-   r.   r/   r   )Úget_torch_versionz@Unsupported PyTorch version for this model. Minimum required is z, got: )r)   r*   )r)   )r   r   r    r;   r   ÚRuntimeErrorr   rK   rL   rM   rN   rO   rP   Úutilsrˆ   Úis_torch_support_availableÚwarningÚtorch_onnx_minimum_versionrQ   rR   r   rs   r†   )r$   r%   r&   r'   r(   r)   r*   rˆ   s           r"   r0   r0   û   s3  € ô> Ô ¤OÔ$5Üð8ó
ð 	
ô
 ÔœZ¨Ô/@ÔAÀfÐPVÒFVÜÐNÓOÐOä�,Ô 7Ô8¸YÐ=RÜÐfÓgÐgØÐÜ�‰ð'äô	
ô
 	�‰ÐhÔiØ ˆäÔÝ-à×0Ò0Ü�N‰NØRÐSY×StÑStÐRuð vÙ*Ó,Ð-ð/ôô
 Ô¤
¬4°«;¼Ô HÜ˜l¨E°6¸5À&ÐT]ÐflÔmÐmÜ	Ô	œz¬$¨u«+Ô7HÔIÜ  ¨u°f¸eÀVÐW`ÔaÐað  JÐ	ó    Úreference_modelr„   Úonnx_named_outputsÚatolc           
      óØ	  — ddl m}m} t        j	                  d«       t        |t        «      r|�t        d«      ‚|�1t        j                  dt        «       t        j	                  d«       |}t        «       rWt        t        |«      t        «      r>| j                  || j                   dz   | j"                  dz   t$        j&                  ¬«      }	n=| j                  || j                   dz   | j"                  dz   t$        j(                  ¬«      }	 |«       }
 ||j+                  «       |
d	g¬
«      }t        «       r*t        t        |«      t        «      r|j-                  d«        |d"i |	¤Ž}i }|j/                  «       D ]K  \  }}|dk(  rd}t        |t0        t2        f«      r$| j5                  ||«      }|j7                  |«       ŒG|||<   ŒM | j9                  |	«      }i }|j/                  «       D ]‚  \  }}t        |t0        t2        f«      rT| j5                  ||«      }|j7                  |j/                  «       D ��ci c]  \  }}||j;                  «       “Œ c}}«       Œp|j;                  «       ||<   Œ„ |j=                  ||«      }t?        |jA                  «       «      t?        |«      }}|jC                  |«      s8t        j	                  d|› d|› �«       t        d|jE                  |«      › �«      ‚t        j	                  d|› d�«       tG        ||«      D �]Ì  \  }}t        «       r;t        t        |«      t        «      r"||   jI                  «       j;                  «       }n||   j;                  «       }t        j	                  d|› d�«       |jJ                  |jJ                  k(  sUt        j	                  d|jJ                  › d|jJ                  › �«       t        d|jJ                  › d|jJ                  › d�«      ‚t        j	                  d|jJ                  › d|jJ                  › �«       tM        jN                  |||¬«      s‡tM        jP                  tM        jR                  |||¬«      «      }t        j	                  d|› d�«       t        dtM        jT                  tM        jV                  ||z
  «      «      › d||   › d ||   › �«      ‚t        j	                  d!|› d�«       �ŒÏ y c c}}w )#Nr   )ÚInferenceSessionÚSessionOptionszValidating ONNX model...zUYou cannot provide both a tokenizer and a preprocessor to validate the model outputs.r.   r/   r   )Ú
batch_sizeÚ
seq_lengthr6   ÚCPUExecutionProvider)Ú	providersÚcpuÚpast_key_valuesÚpresentz	-[x] ONNX model output names z do not match reference model zGOutputs doesn't match between reference model and ONNX exported model: u7   	-[âœ“] ONNX model output names match reference model (ú)z!	- Validating ONNX Model output "z":z		-[x] shape z doesn't match zQOutputs shape doesn't match between reference model and ONNX exported model: Got z (reference) and z (ONNX)u	   		-[âœ“] z	 matches )r‘   z&		-[x] values not close enough (atol: znOutputs values doesn't match between reference model and ONNX exported model: Got max absolute difference of: z for z vs u!   		-[âœ“] all values close (atol: © ),r   r“   r”   rO   rP   r;   r   rK   rL   rM   rN   r   rQ   rR   r   r[   Údefault_fixed_batchÚdefault_fixed_sequencer   r\   rz   rd   r=   rY   ra   r^   Ú"flatten_output_collection_propertyÚupdateÚ!generate_dummy_inputs_onnxruntimeÚnumpyÚrunÚsetr`   ÚissubsetÚ
differenceÚzipÚdetachÚshapeÚnpÚallcloseÚlogical_notÚiscloseÚamaxÚabs)r&   r$   r�   r„   r�   r‘   r)   r“   r”   Úreference_model_inputsÚoptionsÚsessionÚref_outputsÚref_outputs_dictrv   ÚvalueÚ"reference_model_inputs_onnxruntimeÚonnx_inputsÚtensor_nameÚ	pt_tensorrr   Úref_outputs_setÚonnx_outputs_setÚ	ort_valueÚ	ref_valueÚbad_indicess                             r"   Úvalidate_model_outputsrÀ   =  sª  € ÷ =ä
‡K�KÐ*Ô+ä�,Ô 7Ô8¸YÐ=RÜÐpÓqÐqØÐÜ�‰ð'äô	
ô
 	�‰ÐhÔiØ ˆô Ô¤
¬4°Ó+@Ä/Ô RØ!'×!=Ñ!=ØØ×1Ñ1°AÑ5Ø×4Ñ4°qÑ8Ü ×(Ñ(ð	 ">ó "
Ñð "(×!=Ñ!=ØØ×1Ñ1°AÑ5Ø×4Ñ4°qÑ8Ü ×+Ñ+ð	 ">ó "
Ðñ Ó€GÙ˜z×2Ñ2Ó4°gÐJ`ÐIaÔb€Gô Ô¤
¬4°Ó+@Ä/Ô RØ×Ñ˜5Ô!Ù!Ñ;Ð$:Ñ;€KØÐð #×(Ñ(Ó*ò 	+‰ˆˆeð Ð$Ò$ØˆDÜ�eœd¤E˜]Ô+Ø×=Ñ=¸dÀEÓJˆEØ×#Ñ# EÕ*à%*Ð˜TÒ"ð	+ð *0×)QÑ)QÐRhÓ)iÐ&ð €KØ9×?Ñ?ÓAò .‰ˆˆeÜ�eœd¤E˜]Ô+Ø×=Ñ=¸dÀEÓJˆEØ×ÑÐ]b×]hÑ]hÓ]j×kÑCYÀ;ÐPY ¨Y¯_©_Ó->Ñ >ÓkÕlà %§¡£ˆK˜Òð.ð —;‘;Ð1°;Ó?€Lô ),Ð,<×,AÑ,AÓ,CÓ(DÄcÐJ\ÓF]Ð%€OØ×$Ñ$ _Ô5Ü�‰Ø-Ð.>Ð-?Ð?]Ð^mÐ]nÐoô	
ô ØUØ×*Ñ*¨?Ó;Ð<ð>ó
ð 	
ô
 	�‰ÐNÐO_ÐN`Ð`aÐbÔcô Ð1°<Ó@ó G‰ˆˆiÜÔ¤J¬t°OÓ/DÄoÔ$VØ(¨Ñ.×5Ñ5Ó7×=Ñ=Ó?‰Ià(¨Ñ.×4Ñ4Ó6ˆIÜ�‰Ð8¸¸¸bÐAÔBð �‰ )§/¡/Ò1Ü�K‰K˜/¨)¯/©/Ð):¸/È)Ï/É/ÐIZÐ[Ô\ÜðØ —‘Ð'Ð'8¸¿¹Ð8IÈðRóð ô
 �K‰K˜+ i§o¡oÐ%6°iÀ	ÇÁÐ?PÐQÔRô �{‰{˜9 i°dÕ;ÜŸ.™.¬¯©°I¸yÈtÔ)TÓUˆKÜ�K‰KÐBÀ4À&ÈÐJÔKÜð3Ü35·7±7¼2¿6¹6À)ÈiÑBWÓ;XÓ3YÐ2ZÐZ_Ø˜[Ñ)Ð*¨$¨y¸Ñ/EÐ.FðHóð ô �K‰KÐ=¸d¸VÀ1ÐEÖFñ7Gùó-  ls   È8S&rk   c                 ó¨  — t        «       r9t        t        | «      t        «      r t	        | j
                  «      j                  }nt	        | j                  «      j                  }t        |«      }t        |j                  «       «      }|j                  |«      }|j                  |«      }|j                  «       D �cg c]	  }||v sŒ|‘Œ }}||fS c c}w )z>

    :param model_inputs: :param config_inputs: :return:
    )r   rQ   rR   r   r   ÚforwardÚ
parametersÚcallr¥   r`   r¦   Úintersection)	r%   rk   Úforward_parametersÚmodel_inputs_setÚforward_inputs_setÚis_okÚmatching_inputsÚ	parameterÚordered_inputss	            r"   r_   r_   ¸  s¼   € ô Ô¤
¬4°«;¼Ô HÜ& u§}¡}Ó5×@Ñ@Ñä& u§z¡zÓ2×=Ñ=ÐÜ˜<Ó(Ðô Ð/×4Ñ4Ó6Ó7ÐØ×%Ñ%Ð&8Ó9€Eð )×5Ñ5Ð6FÓG€OØ1C×1HÑ1HÓ1JÖk IÈiÐ[jÒNj’iÐk€NÐkØ�.Ð Ð ùò ls   Â;	CÃC)Nr™   r9   )4rL   Úinspectr   Ú	itertoolsr   Úpathlibr   Útypingr   r   r   r	   r
   r   r£   r«   Úpackaging.versionr   r   Útokenization_utils_baser   rŠ   r   r   r   r   r&   r   Úmodeling_utilsr   Úmodeling_tf_utilsr   Úfeature_extraction_utilsr   Úprocessing_utilsr   Útokenization_utilsr   Ú
get_loggerÚ__name__rO   r   r#   ÚintÚstrrs   r†   r0   ÚfloatrÀ   Úboolr_   r�   rŽ   r"   ú<module>rÞ      s™  ðó Ý Ý Ý ß H× Hã ß ,å =÷ó õ ñ ÔÝ0áÔÝ5áÝAÝ1Ý8ð 
ˆ×	Ñ	˜HÓ	%€ñ  % W›~Ð ð
°Gó 
ðF 26Øñd(ØÐYÑZðd(àðd(ð ðd(ð ð	d(ð
 ðd(ð Ð-Ñ.ðd(ð ðd(ð ˆ4�‰9�d˜3‘iÐÑ ód(ðZ 26ñ?(ØÐGÑHð?(àð?(ð ð?(ð ð	?(ð
 ð?(ð Ð-Ñ.ð?(ð ˆ4�‰9�d˜3‘iÐÑ ó?(ðP 26Øñ?bØÐYÑZð?bàÐ7Ñ8ð?bð ð?bð ð	?bð
 ð?bð Ð-Ñ.ð?bð ð?bð ˆ4�‰9�d˜3‘iÐÑ ó?bðR 26ñxGØðxGàÐYÑZðxGð ÐAÑBðxGð ð	xGð
 ˜S™	ðxGð ðxGð Ð-Ñ.óxGðv!ØÐ7Ñ8ð!ØHPÐQTÉð!à
ˆ4��c‘ˆ?Ñô!rŽ   