ó
    ¸Rj0  ã                   óž  • S SK r S SKJr  S SKJr  S SKJr  S SKJrJ	r	  S SK
JrJrJrJrJr  S SKJr  S SKJrJr  S S	KJr  S
SKJr  SSKJr  S/r " S S\\5      r " S S5      r\R<                   " S S\\R>                  5      5       r \R<                   " S S\\RB                  5      5       r"\R<                   " S S\\5      5       r#\R<                   " S S\\RH                  5      5       r%\R<                   " S S\5      5       r&\R<                   " S S\5      5       r' " S S\5      r( " S  S!5      r) " S" S#\5      r* " S$ S%5      r+g)&é    N)Úlookups)ÚSimpleArrayField)ÚArrayMaxLengthValidator)ÚchecksÚ
exceptions)ÚFieldÚFuncÚIntegerFieldÚ	TransformÚValue)ÚCheckFieldDefaultMixin)ÚExactÚIn)Úgettext_lazyé   )Úprefix_validation_erroré   )ÚAttributeSetterÚ
ArrayFieldc                   ó>  ^ • \ rS rSrSr\" S5      \" S5      S.rSrSU 4S jjr\	S 5       r
\
R                  S	 5       r
\U 4S
 j5       rU 4S jrU 4S jr\	S 5       rS rS rU 4S jrS rSS jrU 4S jrS rS rS rU 4S jrU 4S jrU 4S jrU 4S jrSrU =r$ )r   é   Fz+Item %(nth)s in the array did not validate:z(Nested arrays must have the same length.)Úitem_invalidÚnested_array_mismatch)Úlistz[]c                 ó@  >• Xl         [        U R                   SS 5      U l        X l        U R                  (       a(  / U R                  Q[        U R                  5      PU l        [        U R                   S5      (       a  U R                  U l        [        TU ](  " S0 UD6  g )NÚdb_collationÚfrom_db_value© )Ú
base_fieldÚgetattrr   ÚsizeÚdefault_validatorsr   ÚhasattrÚ_from_db_valuer   ÚsuperÚ__init__)Úselfr   r!   ÚkwargsÚ	__class__s       €ÚPD:\diplom_project\venv\Lib\site-packages\django/contrib/postgres/fields/array.pyr&   ÚArrayField.__init__   sƒ   ø€ Ø$ŒÜ# D§O¡O°^ÀTÓJˆÔØŒ	Ø�9�9ð'Ø×(Ñ(ð'ä'¨¯	©	Ó2ð'ˆDÔ#ô �4—?‘? O×4Ñ4Ø!%×!4Ñ!4ˆDÔÜ‰ÒÑ"˜6Ó"ó    c                 ó‚   •  U R                   S   $ ! [         a#    [        SU R                  R                  -  5      ef = f)NÚmodelz$'%s' object has no attribute 'model')Ú__dict__ÚKeyErrorÚAttributeErrorr)   Ú__name__©r'   s    r*   r.   ÚArrayField.model)   sD   € ð	Ø—=‘= Ñ)Ð)øÜó 	Ü Ø6¸¿¹×9PÑ9PÑPóð ð	ús   ‚ ‘->c                 ó@   • XR                   S'   XR                  l        g )Nr.   )r/   r   r.   )r'   r.   s     r*   r.   r4   2   s   € à!&�‰�gÑØ %�‰Õr,   c                 ó\   >• [        U[        [        45      =(       d    [        TU ]  U5      $ ©N)Ú
isinstancer   Útupler%   Ú_choices_is_value)ÚclsÚvaluer)   s     €r*   r:   ÚArrayField._choices_is_value7   s#   ø€ ä˜%¤$¬ Ó/×S´5±7Ñ3LÈUÓ3SÐSr,   c                 ó
  >• [         TU ]  " S0 UD6nU R                  R                  (       a'  UR	                  [
        R                  " SU SS95        U$ U R                  R                  5       nU(       aŽ  SR                  S U 5       5      nU(       a(  UR	                  [
        R                  " SU-  U SS95        SR                  S U 5       5      nU(       a(  UR	                  [
        R                  " S	U-  U S
S95        U$ )Nz/Base field for array cannot be a related field.zpostgres.E002)ÚobjÚidz
    c              3   ó    #   • U  HD  n[        U[        R                  5      (       d  M$  UR                  < S UR                  < S3v •  MF     g7f©z (Ú)N)r8   r   ÚErrorÚmsgr@   ©Ú.0Ú
base_checks     r*   Ú	<genexpr>Ú#ArrayField.check.<locals>.<genexpr>I   s5   é € ð /â&1˜
Ü! *¬f¯l©l×;ó @ §¤°·´Õ?Ú&1ùó
   ‚#A©%Az'Base field for array has errors:
    %szpostgres.E001c              3   ó    #   • U  HD  n[        U[        R                  5      (       d  M$  UR                  < S UR                  < S3v •  MF     g7frB   )r8   r   ÚWarningrE   r@   rF   s     r*   rI   rJ   V   s5   é € ð 1â&1˜
Ü! *¬f¯n©n×=ó @ §¤°·´Õ?Ú&1ùrK   z)Base field for array has warnings:
    %szpostgres.W004r   )	r%   Úcheckr   Úremote_fieldÚappendr   rD   ÚjoinrM   )r'   r(   ÚerrorsÚbase_checksÚerror_messagesÚwarning_messagesr)   s         €r*   rN   ÚArrayField.check;   sú   ø€ Ü‘’Ñ( Ñ(ˆØ�?‰?×'×'Ø�M‰MÜ—’ØEØØ&ñôðL ˆð; Ÿ/™/×/Ñ/Ó1ˆKÞØ!)§¡ñ /á&1ó/ó "�ö
 "Ø—M‘MÜŸšØFÈÑWØ $Ø.ñôð $,§=¡=ñ 1á&1ó1ó $Ð ö
 $Ø—M‘MÜŸšØHØ.ñ/à $Ø.ñ	ôð ˆr,   c                 óZ   >• [         TU ]  U5        U R                  R                  U5        g r7   )r%   Úset_attributes_from_namer   )r'   Únamer)   s     €r*   rX   Ú#ArrayField.set_attributes_from_namef   s"   ø€ Ü‰Ñ(¨Ô.Ø�‰×0Ñ0°Õ6r,   c                 ó4   • SU R                   R                  -  $ )NzArray of %s)r   Údescriptionr3   s    r*   r\   ÚArrayField.descriptionj   s   € à˜tŸ™×:Ñ:Ñ:Ð:r,   c                 ór   • U R                   =(       d    SnU R                  R                  U5      < SU< S3$ ©NÚ Ú[Ú])r!   r   Údb_type©r'   Ú
connectionr!   s      r*   rc   ÚArrayField.db_typen   s)   € Ø�y‰y�˜BˆØŸ?™?×2Ñ2°:Ö>ÃÐEÐEr,   c                 ór   • U R                   =(       d    SnU R                  R                  U5      < SU< S3$ r_   )r!   r   Úcast_db_typerd   s      r*   rh   ÚArrayField.cast_db_typer   s)   € Ø�y‰y�˜BˆØŸ?™?×7Ñ7¸
ÖCÃTÐJÐJr,   c                 óD   >• [         TU ]  U5      nU R                  US'   U$ )NÚ	collation)r%   Údb_parametersr   )r'   re   Ú	db_paramsr)   s      €r*   rl   ÚArrayField.db_parametersv   s(   ø€ Ü‘GÑ)¨*Ó5ˆ	Ø!%×!2Ñ!2ˆ	�+ÑØÐr,   c                 óB   • SR                  U R                  U5      5      $ )Nz%s::{})Úformatrc   )r'   r<   Úcompilerre   s       r*   Úget_placeholderÚArrayField.get_placeholder{   s   € Ø�‰˜tŸ|™|¨JÓ7Ó8Ð8r,   c           	      óœ   • [        U[        [        45      (       a+  U Vs/ s H  nU R                  R	                  XBSS9PM     sn$ U$ s  snf )NF)Úprepared)r8   r   r9   r   Úget_db_prep_value)r'   r<   re   ru   Úis        r*   rv   ÚArrayField.get_db_prep_value~   sU   € Ü�eœd¤E˜]×+Ñ+ñ óâ�Að —‘×1Ñ1°!È%Ð1ÓPÙñð ð ˆùò	s    $A	c                 óª   >• [         TU ]  5       u  pp4US:X  a  SnUR                  U R                  R	                  5       U R
                  S.5        XX44$ )Nz/django.contrib.postgres.fields.array.ArrayFieldz)django.contrib.postgres.fields.ArrayField)r   r!   )r%   ÚdeconstructÚupdater   Úcloner!   )r'   rY   ÚpathÚargsr(   r)   s        €r*   rz   ÚArrayField.deconstruct†   sX   ø€ Ü#(¡7Ñ#6Ó#8Ñ ˆ�DØÐDÓDØ>ˆDØ�‰à"Ÿo™o×3Ñ3Ó5ØŸ	™	ñô	
ð ˜4Ð'Ð'r,   c                 óº   • [        U[        5      (       a@  [        R                  " U5      nU Vs/ s H  o0R                  R                  U5      PM     nnU$ s  snf r7   )r8   ÚstrÚjsonÚloadsr   Ú	to_python)r'   r<   ÚvalsÚvals       r*   r„   ÚArrayField.to_python’   sI   € Ü�eœS×!Ñ!ä—:’:˜eÓ$ˆDÙ?CÓDºt¸—_‘_×.Ñ.¨sÖ3¹tˆEÐDØˆùò Es   °$Ac                 óp   • Uc  U$ U Vs/ s H  nU R                   R                  XBU5      PM!     sn$ s  snf r7   )r   r   )r'   r<   Ú
expressionre   Úitems        r*   r$   ÚArrayField._from_db_value™   sD   € Ø‰=ØˆLñ ó
â�ð �O‰O×)Ñ)¨$¸JÖGÙñ
ð 	
ùò 
s   Š&3c                 ó  • / nU R                  U5      nU R                  nU HO  nUc  UR                  S 5        M  [        UR                  U5      nUR                  UR                  U5      5        MQ     [        R                  " U5      $ r7   )Úvalue_from_objectr   rP   r   ÚattnameÚvalue_to_stringr‚   Údumps)r'   r?   Úvaluesr…   r   r†   s         r*   r�   ÚArrayField.value_to_string¡   su   € ØˆØ×%Ñ% cÓ*ˆØ—_‘_ˆ
ãˆCØ‰{Ø—‘˜dÖ#ä% j×&8Ñ&8¸#Ó>�Ø—‘˜j×8Ñ8¸Ó=Ö>ñ ô �zŠz˜&Ó!Ð!r,   c                 ó<  >• [         TU ]  U5      nU(       a  U$ SU;  a&   [        U5      nUS-  n[        X0R                  5      $  UR                  S5      u  pE[        U5      S-   n[        U5      n[        XE5      $ ! [
         a     NDf = f! [
         a     g f = f)NÚ_r   )r%   Úget_transformÚintÚIndexTransformFactoryr   Ú
ValueErrorÚsplitÚSliceTransformFactory)r'   rY   Ú	transformÚindexÚstartÚendr)   s         €r*   r•   ÚArrayField.get_transform®   s©   ø€ Ü‘GÑ)¨$Ó/ˆ	ÞØÐØ�d‹?ðEÜ˜D›	�ð ˜‘
�Ü,¨U·O±OÓDÐDð	5ØŸ™ C›‰JˆEÜ˜“J ‘NˆEÜ�c“(ˆCô )¨Ó4Ð4øô ó Ùðûô ó 	Ùð	ús#   ¡A> Á,B Á>
BÂ
BÂ
BÂBc           
      óØ  >• [         TU ]  X5        [        U5       H!  u  p4 U R                  R                  XB5        M#     [        U R                  [        5      (       aL  [        U Vs1 s H  n[        U5      iM     sn5      S:”  a"  [        R
                  " U R                  S   SS9eg g ! [        R
                   a#  n[        UU R                  S   SSUS-   0S9eS nAff = fs  snf )Nr   Únthr   ©ÚprefixÚcodeÚparamsr   )r¤   )r%   ÚvalidateÚ	enumerater   r   ÚValidationErrorr   rT   r8   r   Úlen)r'   r<   Úmodel_instancerœ   ÚpartÚerrorrw   r)   s          €r*   r¦   ÚArrayField.validateÃ   sã   ø€ Ü‰Ñ˜Ô/Ü$ UÖ+‰KˆEðØ—‘×(Ñ(¨Ö>ñ ,ô �d—o‘o¤z×2Ñ2Ü¡EÓ*¢E˜q”C˜–F¡EÑ*Ó+¨aÓ/Ü ×0Ò0Ø×'Ñ'Ð(?Ñ@Ø0ñð ð 0ð 3øô ×-Ñ-ó Ü-ØØ×.Ñ.¨~Ñ>Ø'Ø! 5¨1¡9Ð-ñ	ð ûðüò +s   ¢B-Á)C'Â-C$ÃCÃC$c           
      óø   >• [         TU ]  U5        [        U5       H!  u  p# U R                  R                  U5        M#     g ! [        R
                   a#  n[        UU R                  S   SSUS-   0S9eS nAff = f)Nr   r¡   r   r¢   )r%   Úrun_validatorsr§   r   r   r¨   r   rT   )r'   r<   rœ   r«   r¬   r)   s        €r*   r¯   ÚArrayField.run_validatorsÖ   s}   ø€ Ü‰Ñ˜uÔ%Ü$ UÖ+‰KˆEðØ—‘×.Ñ.¨tÖ4ò ,øô ×-Ñ-ó Ü-ØØ×.Ñ.¨~Ñ>Ø'Ø! 5¨1¡9Ð-ñ	ð ûðús   ¢AÁA9ÁA4Á4A9c                 ó|   >• [         TU ]  " S0 [        U R                  R                  5       U R                  S.UED6$ )N)Ú
form_classr   Ú
max_lengthr   )r%   Ú	formfieldr   r   r!   )r'   r(   r)   s     €r*   r´   ÚArrayField.formfieldã   sC   ø€ Ü‰wÒ ñ 
ä.Ø"Ÿo™o×7Ñ7Ó9Ø"Ÿi™iñð ð	ñ
ð 	
r,   )r   r   r"   r   r!   r7   )F) r2   Ú
__module__Ú__qualname__Ú__firstlineno__Úempty_strings_allowedr”   Údefault_error_messagesÚ_default_hintr&   Úpropertyr.   ÚsetterÚclassmethodr:   rN   rX   r\   rc   rh   rl   rr   rv   rz   r„   r$   r�   r•   r¦   r¯   r´   Ú__static_attributes__Ú__classcell__©r)   s   @r*   r   r      sØ   ø† Ø!ÐáÐGÓHÙ!"Ð#MÓ!NñÐð #€M÷#ð ñó ðð ‡\�\ñ&ó ð&ð ôTó ðTõ)õV7ð ñ;ó ð;òFòKõò
9ôõ
(òò
ò"õ5õ*õ&÷
ó 
r,   c                   ó:   ^ • \ rS rSrU 4S jrU 4S jrS rSrU =r$ )ÚArrayRHSMixinéî   c                 ój  >• [        U[        [        45      (       aˆ  [        U R	                  U5      5      (       ai  / nU HU  n[        US5      (       d0  UR                  n[        UR                  R                  U5      5      nUR                  U5        MW     [        USSS.6n[        TU ]5  X5        g )NÚresolve_expressionÚARRAYz%(function)s[%(expressions)s])ÚfunctionÚtemplate)r8   r9   r   ÚanyÚ_rhs_not_none_valuesr#   Úoutput_fieldr   r   Úget_prep_valuerP   r	   r%   r&   )r'   ÚlhsÚrhsÚexpressionsr<   Úfieldr)   s         €r*   r&   ÚArrayRHSMixin.__init__ï   s    ø€ ô �cœE¤4˜=×)Ñ)¬c°$×2KÑ2KÈCÓ2P×.QÑ.QØˆKÛ�Ü˜uÐ&:×;Ñ;Ø×,Ñ,�EÜ! %×"2Ñ"2×"AÑ"AÀ%Ó"HÓI�EØ×"Ñ" 5Ö)ñ	 ô
 ØØ Ø8òˆCô
 	‰Ñ˜Õ"r,   c                 ó†   >• [         TU ]  X5      u  p4U R                  R                  R	                  U5      nU< SU< 3U4$ )Nz::)r%   Úprocess_rhsrÎ   rÌ   rh   )r'   rq   re   rÏ   Ú
rhs_paramsÚ	cast_typer)   s         €r*   rÔ   ÚArrayRHSMixin.process_rhs   s>   ø€ Ü™'Ñ-¨hÓC‰ˆØ—H‘H×)Ñ)×6Ñ6°zÓBˆ	Û¢	Ð*¨JÐ6Ð6r,   c              #   ó    #   • U HB  n[        U[        [        45      (       a  U R                  U5       S h  v•N   M9  Uc  M>  Sv •  MD     g  N7f)NT)r8   r   r9   rË   )r'   rÏ   Úxs      r*   rË   Ú"ArrayRHSMixin._rhs_not_none_values  sA   é € ÛˆAÜ˜!œd¤E˜]×+Ñ+Ø×4Ñ4°QÓ7×7Ò7Ø“Ø”
ò	 á7ùs   ‚5A·A¸AÁ
Ar   )	r2   r¶   r·   r¸   r&   rÔ   rË   r¿   rÀ   rÁ   s   @r*   rÃ   rÃ   î   s   ø† õ#õ"7÷
ð r,   rÃ   c                   ó   • \ rS rSrSrg)ÚArrayContainsi  r   N©r2   r¶   r·   r¸   r¿   r   r,   r*   rÜ   rÜ     ó   † âr,   rÜ   c                   ó   • \ rS rSrSrg)ÚArrayContainedByi  r   NrÝ   r   r,   r*   rà   rà     rÞ   r,   rà   c                   ó   • \ rS rSrSrg)Ú
ArrayExacti  r   NrÝ   r   r,   r*   râ   râ     rÞ   r,   râ   c                   ó   • \ rS rSrSrg)ÚArrayOverlapi  r   NrÝ   r   r,   r*   rä   rä     rÞ   r,   rä   c                   ó,   • \ rS rSrSr\" 5       rS rSrg)ÚArrayLenTransformi!  r©   c                 óT   • UR                  U R                  5      u  p4SSU0-  US-  4$ )NzRCASE WHEN %(lhs)s IS NULL THEN NULL ELSE coalesce(array_length(%(lhs)s, 1), 0) ENDrÎ   r   )ÚcompilerÎ   ©r'   rq   re   rÎ   r¥   s        r*   Úas_sqlÚArrayLenTransform.as_sql&  s<   € Ø×&Ñ& t§x¡xÓ0‰ˆð8à�CˆLñð ! 1™*ð%ð 	%r,   r   N)	r2   r¶   r·   r¸   Úlookup_namer
   rÌ   rê   r¿   r   r,   r*   ræ   ræ   !  s   † à€KÙ“>€Lõ%r,   ræ   c                   ó(   ^ • \ rS rSrU 4S jrSrU =r$ )ÚArrayInLookupi/  c                 óÜ   >• [         TU ]  5       n[        US5      (       a  U$ / nU HA  n[        US5      (       a  UR                  U5        M'  UR                  [	        U5      5        MC     U$ )NrÆ   )r%   Úget_prep_lookupr#   rP   r9   )r'   r‘   Úprepared_valuesr<   r)   s       €r*   rð   ÚArrayInLookup.get_prep_lookup1  sj   ø€ Ü‘Ñ(Ó*ˆÜ�6Ð/×0Ñ0ØˆMð ˆÛˆEÜ�uÐ2×3Ñ3Ø×&Ñ& uÖ-à×&Ñ&¤u¨U£|Ö4ñ	 ð
 Ðr,   r   )r2   r¶   r·   r¸   rð   r¿   rÀ   rÁ   s   @r*   rî   rî   /  s   ø† ÷ó r,   rî   c                   ó>   ^ • \ rS rSrU 4S jrS r\S 5       rSrU =r	$ )ÚIndexTransformi@  c                 ó>   >• [         TU ]  " U0 UD6  Xl        X l        g r7   )r%   r&   rœ   r   )r'   rœ   r   r~   r(   r)   s        €r*   r&   ÚIndexTransform.__init__A  s   ø€ Ü‰Ò˜$Ð) &Ò)ØŒ
Ø$�r,   c                 óž   • UR                  U R                  5      u  p4UR                  S5      (       d  SU-  nSU-  / UQU R                  P74$ )Nrb   ú(%s)z%s[%%s])rè   rÎ   Úendswithrœ   ré   s        r*   rê   ÚIndexTransform.as_sqlF  sN   € Ø×&Ñ& t§x¡xÓ0‰ˆØ�|‰|˜C× Ñ Ø˜3‘,ˆCØ˜3‰Ð 5 &Ð 5¨$¯*©*Ñ 5Ð5Ð5r,   c                 ó   • U R                   $ r7   )r   r3   s    r*   rÌ   ÚIndexTransform.output_fieldL  s   € à�‰Ðr,   ©r   rœ   )
r2   r¶   r·   r¸   r&   rê   r¼   rÌ   r¿   rÀ   rÁ   s   @r*   rô   rô   @  s!   ø† õ%ò
6ð ñó ör,   rô   c                   ó    • \ rS rSrS rS rSrg)r—   iQ  c                 ó   • Xl         X l        g r7   )rœ   r   )r'   rœ   r   s      r*   r&   ÚIndexTransformFactory.__init__R  s   € ØŒ
Ø$�r,   c                 óJ   • [        U R                  U R                  /UQ70 UD6$ r7   )rô   rœ   r   ©r'   r~   r(   s      r*   Ú__call__ÚIndexTransformFactory.__call__V  s!   € Ü˜dŸj™j¨$¯/©/ÐK¸DÒKÀFÑKÐKr,   rý   N©r2   r¶   r·   r¸   r&   r  r¿   r   r,   r*   r—   r—   Q  s   † ò%õLr,   r—   c                   ó.   ^ • \ rS rSrU 4S jrS rSrU =r$ )ÚSliceTransformiZ  c                 ó>   >• [         TU ]  " U0 UD6  Xl        X l        g r7   )r%   r&   r�   rž   )r'   r�   rž   r~   r(   r)   s        €r*   r&   ÚSliceTransform.__init__[  s   ø€ Ü‰Ò˜$Ð) &Ò)ØŒ
Ø�r,   c                 ó¶   • UR                  U R                  5      u  p4UR                  S5      (       d  SU-  nSU-  / UQU R                  PU R                  P74$ )Nrb   rø   z%s[%%s:%%s])rè   rÎ   rù   r�   rž   ré   s        r*   rê   ÚSliceTransform.as_sql`  sX   € Ø×&Ñ& t§x¡xÓ0‰ˆØ�|‰|˜C× Ñ Ø˜3‘,ˆCØ˜sÑ"Ð$C fÐ$C¨d¯j©jÐ$C¸$¿(¹(Ñ$CÐCÐCr,   ©rž   r�   )r2   r¶   r·   r¸   r&   rê   r¿   rÀ   rÁ   s   @r*   r  r  Z  s   ø† õ÷
Dð Dr,   r  c                   ó    • \ rS rSrS rS rSrg)rš   ig  c                 ó   • Xl         X l        g r7   )r�   rž   )r'   r�   rž   s      r*   r&   ÚSliceTransformFactory.__init__h  s   € ØŒ
Ø�r,   c                 óJ   • [        U R                  U R                  /UQ70 UD6$ r7   )r  r�   rž   r  s      r*   r  ÚSliceTransformFactory.__call__l  s!   € Ü˜dŸj™j¨$¯(©(ÐD°TÒD¸VÑDÐDr,   r  Nr  r   r,   r*   rš   rš   g  s   † òõEr,   rš   ),r‚   Údjango.contrib.postgresr   Údjango.contrib.postgres.formsr   Ú"django.contrib.postgres.validatorsr   Údjango.corer   r   Údjango.db.modelsr   r	   r
   r   r   Údjango.db.models.fields.mixinsr   Údjango.db.models.lookupsr   r   Údjango.utils.translationr   r”   Úutilsr   r   Ú__all__r   rÃ   Úregister_lookupÚDataContainsrÜ   ÚContainedByrà   râ   ÚOverlaprä   ræ   rî   rô   r—   r  rš   r   r,   r*   Ú<module>r      s\  ðÛ å +Ý :Ý Fß *ß HÕ HÝ Aß .Ý 6å +Ý "àˆ.€ôY
Ð'¨ô Y
÷xñ ð> ×Ñô	�M 7×#7Ñ#7ó 	ó ð	ð ×Ñô	�} g×&9Ñ&9ó 	ó ð	ð ×Ñô	� ó 	ó ð	ð ×Ñô	�= '§/¡/ó 	ó ð	ð ×Ñô
%˜	ó 
%ó ð
%ð ×Ñô�Bó ó ðô �Yô ÷"Lñ Lô
D�Yô 
D÷Eò Er,   