§
    gkDg0{  ã                   ó�   — d dl mZmZ dZd„ Zd„ Zd„ Zd„ Zd„ Zdd	„Z	 G d
„ d¦  «        Z
 G d„ de
¦  «        Z G d„ d¦  «        ZdS )é    )ÚColorÚVector)ÚPrincipledBSDFWrapperc                 ó@   ‡ — ddl m}  |‰ ¦  «        ˆ fd„¦   «         }|S )Nr   )Úwrapsc                 ó.   •— | j         rJ ‚ ‰| g|¢R i |¤ŽS ©N)Úis_readonly)ÚselfÚargsÚkwargsÚfuncs      €úb/home/blender/git/blender-v430/install_release/4.3/scripts/modules/bpy_extras/node_shader_utils.pyÚwrapperz_set_check.<locals>.wrapper   s4   ø€ àÔð 	ØAÐAàˆt�DÐ*˜4Ð*Ð*Ð* 6Ð*Ð*Ð*ó    )Ú	functoolsr   )r   r   r   s   `  r   Ú
_set_checkr      sG   ø€ ØÐÐÐÐÐà
€Uˆ4�[„[ð+ð +ð +ð +ñ „[ð+ð
 €Nr   c                 ó(   — t          | ¦  «        dgz   S )Nç      ð?)Úlist)Úrgbs    r   Úrgb_to_rgbar      s   € Ý�‰9Œ9˜�uÑÐr   c                 óJ   — t          | d         | d         | d         f¦  «        S )Nr   é   é   )r   )Úrgbas    r   Úrgba_to_rgbr      s#   € Ý�$�q”'˜4 œ7 D¨¤GÐ,Ñ-Ô-Ð-r   c                 óš   ‡‡— t          | d¦  «        rt          ˆˆfd„| D ¦   «         ¦  «        S t          ‰t          ‰| ¦  «        ¦  «        S )NÚ__iter__c              3   óT   •K  — | ]"}t          ‰t          ‰|¦  «        ¦  «        V — Œ#d S r	   )ÚmaxÚmin)Ú.0ÚvÚmaxvÚminvs     €€r   ú	<genexpr>zvalues_clamp.<locals>.<genexpr>#   s5   øè è € Ð:Ð:°•S˜�s 4¨™|œ|Ñ,Ô,Ð:Ð:Ð:Ð:Ð:Ð:r   )ÚhasattrÚtupler!   r"   )Úvalr&   r%   s    ``r   Úvalues_clampr+   !   sT   øø€ Ýˆs�JÑÔð )ÝÐ:Ð:Ð:Ð:Ð:°cÐ:Ñ:Ô:Ñ:Ô:Ð:å�4�˜T 3™œÑ(Ô(Ð(r   c                 óD   — | �	|| j         vrd S || j         |         _        d S r	   ©ÚinputsÚdefault_value)ÚnodeÚinputÚvalues      r   Únode_input_value_setr3   ,   s-   € Ø€|�u D¤KÐ/Ð/Øˆà',€D„K�ÔÔ$Ð$Ð$r   Nc                 ó@   — | �	|| j         vr|S | j         |         j        S r	   r-   )r0   r1   r/   s      r   Únode_input_value_getr5   3   s)   € Ø€|�u D¤KÐ/Ð/ØÐàŒ;�uÔÔ+Ð+r   c                   ó–   — e Zd ZdZdZddddge¢R ZdZdZdd	„Zdd„Z	d„ Z
d„ Zed„ ¦   «         Z eee¦  «        Zd„ Z ee¦  «        ZdS )ÚShaderWrapperzq
    Base class with minimal common ground for all types of shader interfaces we may want/need to implement.
    )Únode_outÚ_node_texcoordsr
   ÚmaterialÚ	_texturesÚ_grid_locationsi,  Nc                 óþ  — |�Lt          |j        j        | j        z  ¦  «        }t          |j        j        | j        z  ¦  «        }||z  }||z  }d }	 || j        z  || j        z  f}|| j        vrnH|| j        z  |dz
  | j        z  f}|| j        vrn'|| j        z  |dz
  | j        z  f}|| j        vrn|dz  }Œf| j                             |¦  «         |�)||_        t          |j	        | j        dz
  ¦  «        |_	        |S )NTr   r   é   )
ÚroundÚlocationÚxÚ	_col_sizeÚyÚ	_row_sizer<   Úaddr"   Úwidth)r   rA   rC   Údst_nodeÚref_nodeÚnxÚnyÚlocs           r   Ú_grid_to_locationzShaderWrapper._grid_to_locationQ   s/  € ØÐÝ�xÔ(Ô*¨T¬^Ñ;Ñ<Ô<ˆBÝ�xÔ(Ô*¨T¬^Ñ;Ñ<Ô<ˆBØ�‰GˆAØ�‰GˆAØˆð
	Ø�t”~Ñ% q¨4¬>Ñ'9Ð:ˆCØ˜$Ô.Ð.Ð.ØØ�t”~Ñ%¨¨A©°´Ñ'?Ð@ˆCØ˜$Ô.Ð.Ð.ØØ�t”~Ñ%¨¨A©°´Ñ'?Ð@ˆCØ˜$Ô.Ð.Ð.ØØ�‰FˆAð
	ð 	Ô× Ò  Ñ%Ô%Ð%ØÐØ #ˆHÔÝ  ¤°´À"Ñ1DÑEÔEˆHŒNØˆ
r   Tc                 ó\   — || _         || _        |s|| _        |                      ¦   «          d S r	   )r
   r:   Ú	use_nodesÚupdate)r   r:   r
   rN   s       r   Ú__init__zShaderWrapper.__init__i   s1   € Ø&ˆÔØ ˆŒØð 	'Ø&ˆDŒNØ�Š‰Œˆˆˆr   c                 óp   — | j         D ]}t          | |d ¦  «         Œi | _        t          ¦   «         | _        d S r	   )Ú
NODES_LISTÚsetattrr;   Úsetr<   )r   r0   s     r   rO   zShaderWrapper.updatep   sA   € Ø”Oð 	&ð 	&ˆDÝ�D˜$ Ñ%Ô%Ð%Ð%ØˆŒÝ"™uœuˆÔÐÐr   c                 ó   — | j         j        S r	   )r:   rN   ©r   s    r   Úuse_nodes_getzShaderWrapper.use_nodes_getv   s   € ØŒ}Ô&Ð&r   c                 óF   — || j         _        |                      ¦   «          d S r	   )r:   rN   rO   )r   r*   s     r   Úuse_nodes_setzShaderWrapper.use_nodes_sety   s   € à"%ˆŒÔØ�Š‰Œˆˆˆr   c                 óŽ  — | j         sd S | j        du rP| j        j        j        D ].}|j        dk    r!|| _        |                      dd|¬¦  «          nŒ/| j        du rd | _        | j        €V| j        sO| j        j        }|j        }|                     d¬¦  «        }d|_	        |                      dd|¬	¦  «         || _        | j        S )
N.ÚShaderNodeTexCoordr   ©rH   ©ÚtypezTexture Coordséûÿÿÿr   ©rG   )
rN   r9   r:   Ú	node_treeÚnodesÚ	bl_idnamerL   r
   ÚnewÚlabel)r   ÚnÚtreerb   Únode_texcoordss        r   Únode_texcoords_getz ShaderWrapper.node_texcoords_get€   sõ   € ØŒ~ð 	Ø�4ØÔ 3Ð&Ð&à”]Ô,Ô2ð ð �Ø”;Ð"6Ò6Ð6Ø+,�DÔ(Ø×*Ò*¨1¨a¸!Ð*Ñ<Ô<Ð<Ø�Eð 7ð Ô# sÐ*Ð*Ø'+�Ô$ØÔÐ'°Ô0@Ð'Ø”=Ô*ˆDØ”JˆEð #ŸYšYÐ,@˜YÑAÔAˆNØ#3ˆNÔ Ø×"Ò" 2 q°>Ð"ÑBÔBÐBØ#1ˆDÔ ØÔ#Ð#r   )NN©TT)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rR   Ú	__slots__rB   rD   rL   rP   rO   rW   r   rY   ÚpropertyrN   ri   rh   © r   r   r7   r7   :   sä   € € € € € ðð ð
€Jð 	ØØØð	ð
 
ðð €Ið €IØ€Iðð ð ð ð0ð ð ð ð%ð %ð %ð'ð 'ð 'ð ðð ñ „Zðð �˜¨Ñ6Ô6€Ið$ð $ð $ð. �XÐ0Ñ1Ô1€N€N€Nr   r7   c                   óà  ‡ — e Zd ZdZdZddge¢R Zej        ez   Zd*ˆ fd„	Zˆ fd„Zd„ Z	 e
e	¦  «        Zd	„ Zed
„ ¦   «         Z e
ee¦  «        Zd„ Z e
e¦  «        Zd„ Zed„ ¦   «         Z e
ee¦  «        Zd„ Z e
e¦  «        Zd„ Zed„ ¦   «         Z e
ee¦  «        Zd„ Z e
e¦  «        Zd„ Zed„ ¦   «         Z e
ee¦  «        Zd„ Z e
e¦  «        Z d„ Z!ed„ ¦   «         Z" e
e!e"¦  «        Z#d„ Z$ e
e$¦  «        Z%d„ Z&ed„ ¦   «         Z' e
e&e'¦  «        Z(d„ Z) e
e)¦  «        Z*d„ Z+ed„ ¦   «         Z, e
e+e,¦  «        Z-d„ Z. e
e.¦  «        Z/d„ Z0ed„ ¦   «         Z1 e
e0e1¦  «        Z2d „ Z3 e
e3¦  «        Z4d!„ Z5ed"„ ¦   «         Z6 e
e5e6¦  «        Z7d#„ Z8 e
e8¦  «        Z9d$„ Z:ed%„ ¦   «         Z; e
e:e;¦  «        Z<d&„ Z= e
e=¦  «        Z>d'„ Z?ed(„ ¦   «         Z@ e
e?e@¦  «        ZAd)„ ZB e
eB¦  «        ZCˆ xZDS )+r   zì
    Hard coded shader setup, based in Principled BSDF.
    Should cover most common cases on import, and gives a basic nodal shaders support for export.
    Supports basic: diffuse/spec/reflect/transparency/normal, with texturing.
    )r8   Únode_principled_bsdfÚ_node_normalmapr9   r
   r:   Tc                 ó\   •— t          t          | ¦  «                             |||¦  «         d S r	   )Úsuperr   rP   )r   r:   r
   rN   Ú	__class__s       €r   rP   zPrincipledBSDFWrapper.__init__°   s,   ø€ ÝÕ# TÑ*Ô*×3Ò3°H¸kÈ9ÑUÔUÐUÐUÐUr   c                 óü  •— t          t          | ¦  «                             ¦   «          | j        sd S | j        j        }|j        }|j        }d }d }|D ]§}|j        dk    r2|j	        d         j
        r |}|j	        d         j        d         j        }nH|j        dk    r=|j        d         j
        r+|}|j        d         j        D ]}|j        }|j        dk    r nŒ|�|�|j        dk    r|j        dk    r nd x}}Œ¨|�|                      dd|¬¦  «         nC| j        s<|                     d¬¦  «        }d|_        d|_        |                      dd|¬	¦  «         || _        |�|                      dd|¬¦  «         nm| j        sf|                     d¬¦  «        }d
|_        |                      dd|¬	¦  «         |                     |j        d         | j        j	        d         ¦  «         || _        d| _        d| _        d S )NÚShaderNodeOutputMaterialr   ÚShaderNodeBsdfPrincipledr\   r]   zMaterial OutÚALLr   r`   zPrincipled BSDFÚBSDFÚSurface.)rv   r   rO   rN   r:   ra   rb   Úlinksrc   r.   Ú	is_linkedÚ	from_nodeÚoutputsÚto_noderL   r
   rd   re   Útargetr8   rs   rt   r9   )	r   rg   rb   r~   r8   Únode_principledrf   Úlnkrw   s	           €r   rO   zPrincipledBSDFWrapper.update³   sS  ø€ ÝÕ# TÑ*Ô*×1Ò1Ñ3Ô3Ð3àŒ~ð 	ØˆFàŒ}Ô&ˆà”
ˆØ”
ˆð ˆØˆØð 	.ð 	.ˆAØŒ{Ð8Ò8Ð8¸Q¼XÀa¼[Ô=RÐ8Ø�Ø"#¤(¨1¤+Ô"3°AÔ"6Ô"@��Ø”Ð :Ò:Ð:¸q¼yÈ¼|Ô?UÐ:Ø"#�Øœ9 Qœ<Ô-ð ð �CØ"œ{�HØÔ)Ð-GÒGÐGØ˜ð Hð Ð(¨_Ð-HØÔ&Ð*DÒDÐDØ#Ô-Ð1KÒKÐKà�Ø)-Ð-ˆH��àÐØ×"Ò" 1 a°(Ð"Ñ;Ô;Ð;Ð;ØÔ!ð 	<Ø—y’yÐ&@�yÑAÔAˆHØ+ˆHŒNØ#ˆHŒOØ×"Ò" 1 a°(Ð"Ñ;Ô;Ð;Ø ˆŒàÐ&Ø×"Ò" 1 a°/Ð"ÑBÔBÐBÐBØÔ!ð 	XØ#ŸišiÐ-G˜iÑHÔHˆOØ$5ˆOÔ!Ø×"Ò" 1 a°/Ð"ÑBÔBÐBà�IŠI�oÔ-¨fÔ5°t´}Ô7KÈIÔ7VÑWÔWÐWØ$3ˆÔ!ð  #ˆÔð  #ˆÔÐÐr   c                 óD  — | j         r| j        €d S | j        }| j        du ri|j        d         j        rG|j        d         j        d         j        }|j        dk    r|| _        |                      dd|¬¦  «         | j        du rd | _        | j        €Š| j	        sƒ| j
        j        }|j        }|j        }|                     d¬¦  «        }d|_        |                      dd	||¬
¦  «         |                     |j        d         |j        d         ¦  «         || _        | j        S )N.ÚNormalr   ÚShaderNodeNormalMapr\   r]   z
Normal/Mapéÿÿÿÿéþÿÿÿ©rG   rH   )rN   rs   rt   r.   r   r~   r€   rc   rL   r
   r:   ra   rb   rd   re   r�   )r   r„   Únode_normalmaprg   rb   r~   s         r   Únode_normalmap_getz(PrincipledBSDFWrapper.node_normalmap_getï   s:  € ØŒ~ð 	 Ô!:Ð!BØ�4ØÔ3ˆØÔ 3Ð&Ð&àÔ% hÔ/Ô9ð JØ!0Ô!7¸Ô!AÔ!GÈÔ!JÔ!T�Ø!Ô+Ð/DÒDÐDØ+9�DÔ(Ø×*Ò*¨1¨a¸.Ð*ÑIÔIÐIØÔ# sÐ*Ð*Ø'+�Ô$ØÔÐ'°Ô0@Ð'Ø”=Ô*ˆDØ”JˆEØ”JˆEà"ŸYšYÐ,A˜YÑBÔBˆNØ#/ˆNÔ Ø×"Ò" 2 r°NÈ_Ð"Ñ]Ô]Ð]à�IŠI�nÔ,¨XÔ6¸Ô8NÈxÔ8XÑYÔYÐYØ#1ˆDÔ ØÔ#Ð#r   c                 ó~   — | j         r| j        €| j        j        S t	          | j        j        d         j        ¦  «        S )Nú
Base Color)rN   rs   r:   Údiffuse_colorr   r.   r/   rV   s    r   Úbase_color_getz$PrincipledBSDFWrapper.base_color_get  s;   € ØŒ~ð 	/ Ô!:Ð!BØ”=Ô.Ð.Ý˜4Ô4Ô;¸LÔIÔWÑXÔXÐXr   c                 ó°   — t          |dd¦  «        }t          |¦  «        }|| j        _        | j        r | j        �|| j        j        d         _        d S d S d S )Nç        r   r�   )r+   r   r:   r�   rN   rs   r.   r/   ©r   Úcolors     r   Úbase_color_setz$PrincipledBSDFWrapper.base_color_set  sh   € å˜U C¨Ñ-Ô-ˆÝ˜EÑ"Ô"ˆØ&+ˆŒÔ#ØŒ>ð 	Q˜dÔ7ÐCØKPˆDÔ%Ô,¨\Ô:ÔHÐHÐHð	Qð 	QÐCÐCr   c                 ór   — | j         r| j        €d S t          | | j        | j        j        d         d¬¦  «        S )Nr�   r   ©Úgrid_row_diff©rN   rs   ÚShaderImageTextureWrapperr.   rV   s    r   Úbase_color_texture_getz,PrincipledBSDFWrapper.base_color_texture_get  sI   € ØŒ~ð 	 Ô!:Ð!BØ�4Ý(Ø�$Ô+ØÔ%Ô,¨\Ô:Øð
ñ 
ô 
ð 	
r   c                 ód   — | j         r| j        €| j        j        S | j        j        d         j        S )NúSpecular IOR Level)rN   rs   r:   Úspecular_intensityr.   r/   rV   s    r   Úspecular_getz"PrincipledBSDFWrapper.specular_get+  s4   € ØŒ~ð 	4 Ô!:Ð!BØ”=Ô3Ð3ØÔ(Ô/Ð0DÔEÔSÐSr   c                 ó’   — t          |dd¦  «        }|| j        _        | j        r | j        �|| j        j        d         _        d S d S d S )Nr“   r   rž   )r+   r:   rŸ   rN   rs   r.   r/   ©r   r2   s     r   Úspecular_setz"PrincipledBSDFWrapper.specular_set0  s\   € å˜U C¨Ñ-Ô-ˆØ+0ˆŒÔ(ØŒ>ð 	Y˜dÔ7ÐCØSXˆDÔ%Ô,Ð-AÔBÔPÐPÐPð	Yð 	YÐCÐCr   c                 ót   — | j         r| j        €d S t          | | j        | j        j        d         dd¬¦  «        S )Nrž   r   ú	Non-Color©r™   Úcolorspace_namerš   rV   s    r   Úspecular_texture_getz*PrincipledBSDFWrapper.specular_texture_get:  sM   € ØŒ~ð 	 Ô!:Ð!BØ�4Ý(Ø�$Ô+ØÔ%Ô,Ð-AÔBØØ'ð	
ñ 
ô 
ð 	
r   c                 ó„   — | j         r| j        €t          d¦  «        S t          | j        j        d         j        ¦  «        S )N©r“   r“   r“   úSpecular Tint©rN   rs   r   r   r.   r/   rV   s    r   Úspecular_tint_getz'PrincipledBSDFWrapper.specular_tint_getI  s>   € ØŒ~ð 	* Ô!:Ð!BÝ˜Ñ)Ô)Ð)Ý˜4Ô4Ô;¸OÔLÔZÑ[Ô[Ð[r   c                 ó˜   — t          |dd¦  «        }t          |¦  «        }| j        r | j        �|| j        j        d         _        d S d S d S )Nr“   r   r«   )r+   r   rN   rs   r.   r/   r”   s     r   Úspecular_tint_setz'PrincipledBSDFWrapper.specular_tint_setN  s^   € å˜U C¨Ñ-Ô-ˆÝ˜EÑ"Ô"ˆØŒ>ð 	T˜dÔ7ÐCØNSˆDÔ%Ô,¨_Ô=ÔKÐKÐKð	Tð 	TÐCÐCr   c                 ór   — | j         r| j        €d S t          | | j        | j        j        d         d¬¦  «        S )Nr«   r   r˜   rš   rV   s    r   Úspecular_tint_texture_getz/PrincipledBSDFWrapper.specular_tint_texture_getW  sI   € ØŒ~ð 	 Ô!:Ð!BØ�4Ý(Ø�$Ô+ØÔ%Ô,¨_Ô=Øð
ñ 
ô 
ð 	
r   c                 ód   — | j         r| j        €| j        j        S | j        j        d         j        S )NÚ	Roughness)rN   rs   r:   Ú	roughnessr.   r/   rV   s    r   Úroughness_getz#PrincipledBSDFWrapper.roughness_gete  s3   € ØŒ~ð 	+ Ô!:Ð!BØ”=Ô*Ð*ØÔ(Ô/°Ô<ÔJÐJr   c                 ó’   — t          |dd¦  «        }|| j        _        | j        r | j        �|| j        j        d         _        d S d S d S )Nr“   r   r³   )r+   r:   r´   rN   rs   r.   r/   r¢   s     r   Úroughness_setz#PrincipledBSDFWrapper.roughness_setj  s[   € å˜U C¨Ñ-Ô-ˆØ"'ˆŒÔØŒ>ð 	P˜dÔ7ÐCØJOˆDÔ%Ô,¨[Ô9ÔGÐGÐGð	Pð 	PÐCÐCr   c                 ót   — | j         r| j        €d S t          | | j        | j        j        d         dd¬¦  «        S )Nr³   r   r¥   r¦   rš   rV   s    r   Úroughness_texture_getz+PrincipledBSDFWrapper.roughness_texture_gett  sL   € ØŒ~ð 	 Ô!:Ð!BØ�4Ý(Ø�$Ô+ØÔ%Ô,¨[Ô9ØØ'ð	
ñ 
ô 
ð 	
r   c                 ód   — | j         r| j        €| j        j        S | j        j        d         j        S )NÚMetallic)rN   rs   r:   Úmetallicr.   r/   rV   s    r   Úmetallic_getz"PrincipledBSDFWrapper.metallic_getƒ  s3   € ØŒ~ð 	* Ô!:Ð!BØ”=Ô)Ð)ØÔ(Ô/°
Ô;ÔIÐIr   c                 ó’   — t          |dd¦  «        }|| j        _        | j        r | j        �|| j        j        d         _        d S d S d S )Nr“   r   r»   )r+   r:   r¼   rN   rs   r.   r/   r¢   s     r   Úmetallic_setz"PrincipledBSDFWrapper.metallic_setˆ  s[   € å˜U C¨Ñ-Ô-ˆØ!&ˆŒÔØŒ>ð 	O˜dÔ7ÐCØINˆDÔ%Ô,¨ZÔ8ÔFÐFÐFð	Oð 	OÐCÐCr   c                 ót   — | j         r| j        €d S t          | | j        | j        j        d         dd¬¦  «        S )Nr»   r   r¥   r¦   rš   rV   s    r   Úmetallic_texture_getz*PrincipledBSDFWrapper.metallic_texture_get’  sL   € ØŒ~ð 	 Ô!:Ð!BØ�4Ý(Ø�$Ô+ØÔ%Ô,¨ZÔ8ØØ'ð	
ñ 
ô 
ð 	
r   c                 óP   — | j         r| j        €dS | j        j        d         j        S )Nr   ÚIOR©rN   rs   r.   r/   rV   s    r   Úior_getzPrincipledBSDFWrapper.ior_get¡  s-   € ØŒ~ð 	 Ô!:Ð!BØ�3ØÔ(Ô/°Ô6ÔDÐDr   c                 óz   — t          |dd¦  «        }| j        r | j        �|| j        j        d         _        d S d S d S )Nr“   g     @�@rÃ   ©r+   rN   rs   r.   r/   r¢   s     r   Úior_setzPrincipledBSDFWrapper.ior_set¦  sQ   € å˜U C¨Ñ0Ô0ˆØŒ>ð 	J˜dÔ7ÐCØDIˆDÔ%Ô,¨UÔ3ÔAÐAÐAð	Jð 	JÐCÐCr   c                 ót   — | j         r| j        €d S t          | | j        | j        j        d         dd¬¦  «        S )NrÃ   r‰   r¥   r¦   rš   rV   s    r   Úior_texture_getz%PrincipledBSDFWrapper.ior_texture_get¯  sL   € ØŒ~ð 	 Ô!:Ð!BØ�4Ý(Ø�$Ô+ØÔ%Ô,¨UÔ3ØØ'ð	
ñ 
ô 
ð 	
r   c                 óP   — | j         r| j        €dS | j        j        d         j        S )Nr“   úTransmission WeightrÄ   rV   s    r   Útransmission_getz&PrincipledBSDFWrapper.transmission_get»  s.   € ØŒ~ð 	 Ô!:Ð!BØ�3ØÔ(Ô/Ð0EÔFÔTÐTr   c                 óz   — t          |dd¦  «        }| j        r | j        �|| j        j        d         _        d S d S d S )Nr“   r   rÌ   rÇ   r¢   s     r   Útransmission_setz&PrincipledBSDFWrapper.transmission_setÀ  sR   € å˜U C¨Ñ-Ô-ˆØŒ>ð 	Z˜dÔ7ÐCØTYˆDÔ%Ô,Ð-BÔCÔQÐQÐQð	Zð 	ZÐCÐCr   c                 ót   — | j         r| j        €d S t          | | j        | j        j        d         dd¬¦  «        S )NrÌ   r‰   r¥   r¦   rš   rV   s    r   Útransmission_texture_getz.PrincipledBSDFWrapper.transmission_texture_getÉ  sM   € ØŒ~ð 	 Ô!:Ð!BØ�4Ý(Ø�$Ô+ØÔ%Ô,Ð-BÔCØØ'ð	
ñ 
ô 
ð 	
r   c                 óP   — | j         r| j        €dS | j        j        d         j        S )Nr   ÚAlpharÄ   rV   s    r   Ú	alpha_getzPrincipledBSDFWrapper.alpha_getÕ  s-   € ØŒ~ð 	 Ô!:Ð!BØ�3ØÔ(Ô/°Ô8ÔFÐFr   c                 óz   — t          |dd¦  «        }| j        r | j        �|| j        j        d         _        d S d S d S )Nr“   r   rÓ   rÇ   r¢   s     r   Ú	alpha_setzPrincipledBSDFWrapper.alpha_setÚ  sQ   € å˜U C¨Ñ-Ô-ˆØŒ>ð 	L˜dÔ7ÐCØFKˆDÔ%Ô,¨WÔ5ÔCÐCÐCð	Lð 	LÐCÐCr   c                 óv   — | j         r| j        €d S t          | | j        | j        j        d         ddd¬¦  «        S )NrÓ   Tr‰   r¥   )Ú	use_alphar™   r§   rš   rV   s    r   Úalpha_texture_getz'PrincipledBSDFWrapper.alpha_texture_getã  sO   € ØŒ~ð 	 Ô!:Ð!BØ�4Ý(Ø�$Ô+ØÔ%Ô,¨WÔ5ØØØ'ð
ñ 
ô 
ð 	
r   c                 ó„   — | j         r| j        €t          d¦  «        S t          | j        j        d         j        ¦  «        S )Nrª   úEmission Colorr¬   rV   s    r   Úemission_color_getz(PrincipledBSDFWrapper.emission_color_getó  s?   € ØŒ~ð 	* Ô!:Ð!BÝ˜Ñ)Ô)Ð)Ý˜4Ô4Ô;Ð<LÔMÔ[Ñ\Ô\Ð\r   c                 ó˜   — | j         r@| j        �;t          |dd¦  «        }t          |¦  «        }|| j        j        d         _        d S d S d S )Nr“   ç    €„.ArÛ   )rN   rs   r+   r   r.   r/   r”   s     r   Úemission_color_setz(PrincipledBSDFWrapper.emission_color_setø  s_   € àŒ>ð 	U˜dÔ7ÐCÝ  ¨¨YÑ7Ô7ˆEÝ Ñ&Ô&ˆEØOTˆDÔ%Ô,Ð-=Ô>ÔLÐLÐLð	Uð 	UÐCÐCr   c                 ór   — | j         r| j        €d S t          | | j        | j        j        d         d¬¦  «        S )NrÛ   r   r˜   rš   rV   s    r   Úemission_color_texture_getz0PrincipledBSDFWrapper.emission_color_texture_get  sJ   € ØŒ~ð 	 Ô!:Ð!BØ�4Ý(Ø�$Ô+ØÔ%Ô,Ð-=Ô>Øð
ñ 
ô 
ð 	
r   c                 óP   — | j         r| j        €dS | j        j        d         j        S )Nr   úEmission StrengthrÄ   rV   s    r   Úemission_strength_getz+PrincipledBSDFWrapper.emission_strength_get  s.   € ØŒ~ð 	 Ô!:Ð!BØ�3ØÔ(Ô/Ð0CÔDÔRÐRr   c                 óz   — t          |dd¦  «        }| j        r | j        �|| j        j        d         _        d S d S d S )Nr“   rÞ   rã   rÇ   r¢   s     r   Úemission_strength_setz+PrincipledBSDFWrapper.emission_strength_set  sR   € å˜U C¨Ñ3Ô3ˆØŒ>ð 	X˜dÔ7ÐCØRWˆDÔ%Ô,Ð-@ÔAÔOÐOÐOð	Xð 	XÐCÐCr   c                 ót   — | j         r| j        €d S t          | | j        | j        j        d         dd¬¦  «        S )Nrã   r‰   r¥   r¦   rš   rV   s    r   Úemission_strength_texture_getz3PrincipledBSDFWrapper.emission_strength_texture_get  sM   € ØŒ~ð 	 Ô!:Ð!BØ�4Ý(Ø�$Ô+ØÔ%Ô,Ð-@ÔAØØ'ð	
ñ 
ô 
ð 	
r   c                 óP   — | j         r| j        €dS | j        j        d         j        S )Nr“   ÚStrength)rN   rŒ   r.   r/   rV   s    r   Únormalmap_strength_getz,PrincipledBSDFWrapper.normalmap_strength_get(  s-   € ØŒ~ð 	 Ô!4Ð!<Ø�3ØÔ"Ô)¨*Ô5ÔCÐCr   c                 óz   — t          |dd¦  «        }| j        r | j        �|| j        j        d         _        d S d S d S )Nr“   g      $@rê   )r+   rN   rŒ   r.   r/   r¢   s     r   Únormalmap_strength_setz,PrincipledBSDFWrapper.normalmap_strength_set-  sQ   € å˜U C¨Ñ.Ô.ˆØŒ>ð 	I˜dÔ1Ð=ØCHˆDÔÔ& zÔ2Ô@Ð@Ð@ð	Ið 	IÐ=Ð=r   c                 ót   — | j         r| j        €d S t          | | j        | j        j        d         dd¬¦  «        S )Nr   rŠ   T)r™   Úcolorspace_is_data)rN   rŒ   r›   r.   rV   s    r   Únormalmap_texture_getz+PrincipledBSDFWrapper.normalmap_texture_get5  sL   € ØŒ~ð 	 Ô!4Ð!<Ø�4Ý(Ø�$Ô%ØÔÔ& wÔ/ØØ#ð	
ñ 
ô 
ð 	
r   rj   )Erk   rl   rm   rn   rR   ro   r7   rP   rO   r�   rp   rŒ   r‘   r   r–   Ú
base_colorrœ   Úbase_color_texturer    r£   Úspecularr¨   Úspecular_texturer­   r¯   Úspecular_tintr±   Úspecular_tint_texturerµ   r·   r´   r¹   Úroughness_texturer½   r¿   r¼   rÁ   Úmetallic_texturerÅ   rÈ   ÚiorrÊ   Úior_texturerÍ   rÏ   ÚtransmissionrÑ   Útransmission_texturerÔ   rÖ   ÚalpharÙ   Úalpha_texturerÜ   rß   Úemission_colorrá   Úemission_color_texturerä   ræ   Úemission_strengthrè   Úemission_strength_texturerë   rí   Únormalmap_strengthrð   Únormalmap_textureÚ__classcell__©rw   s   @r   r   r   š   s  ø€ € € € € ðð ð
€Jð 	Øðð 
ðð €Ið Ô)¨JÑ6€JðVð Vð Vð Vð Vð Vð:#ð :#ð :#ð :#ð :#ðx$ð $ð $ð4 �XÐ0Ñ1Ô1€Nð
Yð Yð Yð
 ðQð Qñ „ZðQð �˜.¨.Ñ9Ô9€Jð
ð 
ð 
ð "˜Ð"8Ñ9Ô9Ðð
Tð Tð Tð
 ðYð Yñ „ZðYð ˆx˜ lÑ3Ô3€Hð
ð 
ð 
ð  �xÐ 4Ñ5Ô5Ðð
\ð \ð \ð
 ðTð Tñ „ZðTð �HÐ.Ð0AÑBÔB€Mð
ð 
ð 
ð %˜HÐ%>Ñ?Ô?Ðð
Kð Kð Kð
 ðPð Pñ „ZðPð �˜¨Ñ6Ô6€Ið
ð 
ð 
ð !˜Ð!6Ñ7Ô7Ðð
Jð Jð Jð
 ðOð Oñ „ZðOð ˆx˜ lÑ3Ô3€Hð
ð 
ð 
ð  �xÐ 4Ñ5Ô5Ðð
Eð Eð Eð
 ðJð Jñ „ZðJð
 ˆ(�7˜GÑ
$Ô
$€Cð
ð 
ð 
ð �(˜?Ñ+Ô+€KðUð Uð Uð
 ðZð Zñ „ZðZð
 �8Ð,Ð.>Ñ?Ô?€Lð
ð 
ð 
ð $˜8Ð$<Ñ=Ô=ÐðGð Gð Gð
 ðLð Lñ „ZðLð
 ˆH�Y 	Ñ*Ô*€Eð	
ð 	
ð 	
ð �HÐ.Ñ/Ô/€Mð
]ð ]ð ]ð
 ðUð Uñ „ZðUð �XÐ0Ð2DÑEÔE€Nð
ð 
ð 
ð &˜XÐ&@ÑAÔAÐðSð Sð Sð
 ðXð Xñ „ZðXð
 !˜Ð!6Ð8MÑNÔNÐð
ð 
ð 
ð !) Ð)FÑ GÔ GÐð
Dð Dð Dð
 ðIð Iñ „ZðIð
 "˜Ð"8Ð:PÑQÔQÐð
ð 
ð 
ð !˜Ð!6Ñ7Ô7ÐÐÐÐÐr   r   c                   ó
  ‡ — e Zd ZdZdZddddddge¢R Zdefˆ fd	„Z	 	 d!defd„Zd„ Z	d„ Z
d„ Z ee¦  «        Zd„ Zed„ ¦   «         Z eee¦  «        Zd„ Zed„ ¦   «         Z eee¦  «        Zd„ Zed„ ¦   «         Z eee¦  «        Zd„ Zed„ ¦   «         Z eee¦  «        Zd„ Zd„ Z ee¦  «        Zd„ Zed„ ¦   «         Z eee¦  «        Z d„ Z!ed„ ¦   «         Z" ee!e"¦  «        Z#d„ Z$ed „ ¦   «         Z% ee$e%¦  «        Z&ˆ xZ'S )"r›   zœ
    Generic 'image texture'-like wrapper, handling image node, some mapping (texture coordinates transformations),
    and texture coordinates source.
    )Únode_dstÚ
socket_dstÚ_node_imageÚ_node_mappingÚowner_shaderr
   r™   rØ   rï   r§   c                 ó²   •— |j                              ||fd ¦  «        }|�|S t          t          | ¦  «                             | ¦  «        }||j         ||f<   |S r	   )r;   Úgetrv   r›   Ú__new__)Úclsr  r  r	  Ú_argsÚ_kwargsÚinstancerw   s          €r   r  z!ShaderImageTextureWrapper.__new__\  s`   ø€ ØÔ)×-Ò-¨x¸Ð.DÀdÑKÔKˆØÐØˆOÝÕ2°CÑ8Ô8×@Ò@ÀÑEÔEˆØ9AˆÔ ¨*Ð5Ñ6Øˆr   r   F.c                 ó†  — || _         |j        | _        || _        || _        || _        || _        || _        || _        d| _        d| _	        |j
        r$|j        d         j        }|j        dk    r|| _        | j        �?| j        j        d         }|j
        r(|j        d         j        }|j        dk    r|| _	        d S d S d S d S )N.r   ÚShaderNodeTexImager   ÚShaderNodeMapping)r  r
   r  r	  r™   rØ   rï   r§   r
  r  r   r~   r€   rc   Ú
node_imager.   )	r   r  r  r	  r™   rØ   rï   r§   r€   s	            r   rP   z"ShaderImageTextureWrapper.__init__d  sí   € à(ˆÔØ'Ô3ˆÔØ ˆŒØ$ˆŒØ*ˆÔØ"ˆŒØ"4ˆÔØ.ˆÔàˆÔØ ˆÔð Ôð 	-Ø"Ô(¨Ô+Ô5ˆIØÔ"Ð&:Ò:Ð:Ø#,�Ô àŒ?Ð&ØœÔ/°Ô9ˆJØÔ#ð 3Ø&Ô,¨QÔ/Ô9�	ØÔ&Ð*=Ò=Ð=Ø)2�DÔ&Ð&Ð&ð 'Ð&ð3ð 3à=Ð=r   c                 ó°   — |j         }d|_         |j        �9|j        | _        |j        | _        |j        | _        |                      |¦  «         ||_         d S )NT)r
   r  ÚimageÚ
projectionÚ	texcoordsÚcopy_mapping_from)r   ÚtexÚis_readonly_backs      r   Ú	copy_fromz#ShaderImageTextureWrapper.copy_from‚  sS   € àœ?ÐØˆŒàŒ>Ð%ØœˆDŒJØ!œnˆDŒOØ œ]ˆDŒNØ×"Ò" 3Ñ'Ô'Ð'à*ˆŒˆˆr   c                 ó  — |j         }d|_         |j        €¸|                      ¦   «         r£d x}}| j        j        d         j        r4| j        j        d         }| j        j        d         j        d         j        }| j        j	        j
        }|j                             | j        ¦  «         d | _        |�|j                             ||¦  «         n+| j        �$|j        | _        |j        | _        |j        | _        ||_         d S )NTr   r   )r
   Únode_mappingÚhas_mapping_noder.   r   r  r~   Úfrom_socketr  r:   ra   rb   Úremover  rd   ÚtranslationÚrotationÚscale)r   r  r  r	  Ú
socket_srcrg   s         r   r  z+ShaderImageTextureWrapper.copy_mapping_from�  sù   € àœ?ÐØˆŒàÔÐ#Ø×$Ò$Ñ&Ô&ð ;ð +/Ð.�
˜ZØÔ$Ô+¨HÔ5Ô?ð YØ!%¤Ô!7¸Ô!A�JØ!%Ô!2Ô!9¸(Ô!CÔ!IÈ!Ô!LÔ!X�JàÔ(Ô1Ô;�Ø”
×!Ò! $Ô"3Ñ4Ô4Ð4Ø%)�Ô"ð Ð)Ø”J—N’N :¨zÑ:Ô:Ð:øØÔÐ*Ø"œˆDÔØœLˆDŒMØœˆDŒJà*ˆŒˆˆr   c                 óx  — | j         du rb| j        j        rF| j        j        d         j        }|j        dk    r$|| _         | j                             dd|¬¦  «         | j         du rd | _         | j         €Â| j        s»| j        j	        j
        }|j                             d¬¦  «        }| j                             dd| j        z   || j        ¬¦  «         |j                             |j        | j        rdnd	         | j        ¦  «         | j        r"d
| j        j	        _        d| j        j	        _        || _         | j         S )N.r   r  r\   r]   r‰   r‹   rÓ   r   ÚDITHEREDF)r
  r	  r   r~   r€   rc   r  rL   r
   r:   ra   rb   rd   r™   r  r�   rØ   Úsurface_render_methodÚuse_transparency_overlap)r   r  rg   s      r   Únode_image_getz(ShaderImageTextureWrapper.node_image_get®  sK  € ØÔ˜sÐ"Ð"àŒÔ(ð SØ!œ_Ô2°1Ô5Ô?�
ØÔ'Ð+?Ò?Ð?Ø'1�DÔ$ØÔ%×7Ò7¸¸1ÀzÐ7ÑRÔRÐRØÔ 3Ð&Ð&Ø#'�Ô ØÔÐ#¨DÔ,<Ð#ØÔ$Ô-Ô7ˆDàœŸšÐ-A˜ÑBÔBˆJØÔ×/Ò/Ø�A˜Ô*Ñ*Ø#¨d¬mð 0ñ ô ð ð
 ŒJ�NŠN˜:Ô-¸¼Ð.T¨g¨gÈWÔUÐW[ÔWfÑgÔgÐgØŒ~ð LØCM�Ô!Ô*Ô@ØFK�Ô!Ô*ÔCà)ˆDÔØÔÐr   c                 ó,   — | j         �| j         j        nd S r	   )r  r  rV   s    r   Ú	image_getz#ShaderImageTextureWrapper.image_getË  s   € Ø(,¬Ð(CˆtŒÔ$Ð$ÈÐMr   c                 óp  — | j         durE|j        j        | j         k    r|j        dk    r|                     ¦   «         }| j         |j        _        | j        durE|j        j        | j        k    r|j        dk    r|                     ¦   «         }| j        |j        _        | j        r†| j        j	        j
        }|j        dk     s	|j        dv r1|j                             | j        j        d         | j        ¦  «         n0|j                             | j        j        d         | j        ¦  «         || j        _        d S )N.r   é   >   é   é   r   rÓ   )rï   Úcolorspace_settingsÚis_dataÚusersÚcopyr§   ÚnamerØ   r  r:   ra   ÚchannelsÚdepthr~   rd   r  r�   r	  r  )r   r  rg   s      r   Ú	image_setz#ShaderImageTextureWrapper.image_setÎ  s!  € àÔ"¨#Ð-Ð-ØÔ(Ô0°DÔ4KÒKÐKÐPUÔP[Ð_`ÒP`ÐP`ØŸ
š
™œ�Ø04Ô0GˆEÔ%Ô-ØÔ sÐ*Ð*ØÔ(Ô-°Ô1EÒEÐEÈ%Ì+ÐYZÒJZÐJZØŸ
š
™œ�Ø-1Ô-AˆEÔ%Ô*ØŒ>ð 	RàÔ$Ô-Ô7ˆDØŒ~ Ò!Ð! U¤[°GÐ%;Ð%;Ø”
—’˜tœÔ6°wÔ?ÀÄÑQÔQÐQÐQà”
—’˜tœÔ6°wÔ?ÀÄÑQÔQÐQØ %ˆŒÔÐÐr   c                 ó,   — | j         �| j         j        ndS )NÚFLAT©r  r  rV   s    r   Úprojection_getz(ShaderImageTextureWrapper.projection_getã  s   € Ø-1¬_Ð-HˆtŒÔ)Ð)ÈfÐTr   c                 ó   — || j         _        d S r	   r>  )r   r  s     r   Úprojection_setz(ShaderImageTextureWrapper.projection_setæ  s   € à%/ˆŒÔ"Ð"Ð"r   c                 óª   — | j         �K|                      ¦   «         r| j        n| j         j        d         }|j        r|j        d         j        j        S dS )Nr   r   ÚUV)r  r"  r!  r.   r   r~   r#  r8  )r   Úsockets     r   Útexcoords_getz'ShaderImageTextureWrapper.texcoords_getì  sU   € ØŒ?Ð&Ø+/×+@Ò+@Ñ+BÔ+BÐW�dÔ'Ð'ÈÌÔ_Ð`hÔiˆFØÔð 8Ø”| A”Ô2Ô7Ð7Øˆtr   c                 ó  — |dk    r|                       ¦   «         sd S | j        j        }|j        }|                       ¦   «         r| j        n| j        }| j        j        j        |         }|                     ||j	        d         ¦  «         d S )NrC  r   )
r"  r  Úid_datar~   r!  r  rh   r�   rd   r.   )r   r  rg   r~   r  r(  s         r   Útexcoords_setz'ShaderImageTextureWrapper.texcoords_setó  sŠ   € ð ˜ÒÐ T×%:Ò%:Ñ%<Ô%<ÐØˆFØŒÔ&ˆØ”
ˆØ(,×(=Ò(=Ñ(?Ô(?ÐT�4Ô$Ð$ÀTÄ_ˆØÔ&Ô5Ô=¸iÔHˆ
Ø�	Š	�*˜hœo¨hÔ7Ñ8Ô8Ð8Ð8Ð8r   c                 ó,   — | j         �| j         j        ndS )NÚREPEAT©r  Ú	extensionrV   s    r   Úextension_getz'ShaderImageTextureWrapper.extension_get  s   € Ø,0¬OÐ,GˆtŒÔ(Ð(ÈXÐUr   c                 ó   — || j         _        d S r	   rK  )r   rL  s     r   Úextension_setz'ShaderImageTextureWrapper.extension_set  s   € à$-ˆŒÔ!Ð!Ð!r   c                 ó   — | j         dvS )N>   .N)r  rV   s    r   r"  z*ShaderImageTextureWrapper.has_mapping_node  s   € ØÔ!¨Ð4Ð4r   c                 ó&  — | j         du r‰| j        €d S | j        j        d         j        rY| j        j        d         j        d         j        }|j        dk    r,|| _         | j                             dd| j	        z   |¬¦  «         | j         du rd | _         | j         €ò| j
        së| j        j        d         }|j        r|j        d         j        n| j        j        j        d         }| j        j        j        }|j                             d¬¦  «        }d|_        | j                             d	d|| j        ¬
¦  «         |j                             |j        d         |¦  «         |j                             ||j        d         ¦  «         || _         | j         S )N.r   r   r  r\   rC  r]   ÚTEXTUREr‰   r‹   )r  r  r.   r   r~   r€   rc   r  rL   r™   r
   r#  rh   r�   r:   ra   rb   rd   Úvector_type)r   r!  r	  r(  rg   s        r   Únode_mapping_getz*ShaderImageTextureWrapper.node_mapping_get  s”  € ØÔ Ð$Ð$àŒÐ&Ø�tØŒÔ% hÔ/Ô9ð jØ#œÔ5°hÔ?ÔEÀaÔHÔR�ØÔ)Ð-@Ò@Ð@Ø)5�DÔ&ØÔ%×7Ò7¸¸1¸tÔ?QÑ;QÐ\hÐ7ÑiÔiÐiØÔ! SÐ(Ð(Ø%)�Ô"ØÔÐ%¨dÔ.>Ð%àœÔ/°Ô9ˆJà=GÔ=Qð N˜*Ô*¨1Ô-Ô9Ð9Ø#Ô0Ô?ÔGÈÔMð ð Ô$Ô-Ô7ˆDØœ:Ÿ>š>Ð/B˜>ÑCÔCˆLØ'0ˆLÔ$ØÔ×/Ò/°°AÀÐW[ÔWfÐ/ÑgÔgÐgð ŒJ�NŠN˜<Ô/°Ô9¸:ÑFÔFÐFàŒJ�NŠN˜: |Ô':¸8Ô'DÑEÔEÐEà!-ˆDÔØÔ!Ð!r   c                 óH   — t          | j        dt          d¦  «        ¦  «        S )NÚLocationrª   )r5   r!  r   rV   s    r   Útranslation_getz)ShaderImageTextureWrapper.translation_get2  s   € Ý# DÔ$5°zÅ6È/ÑCZÔCZÑ[Ô[Ð[r   c                 ó2   — t          | j        d|¦  «         d S )NrV  )r3   r!  )r   r%  s     r   Útranslation_setz)ShaderImageTextureWrapper.translation_set5  s   € å˜TÔ.°
¸KÑHÔHÐHÐHÐHr   c                 ó\   — | j         €t          d¦  «        S | j         j        d         j        S )Nrª   ÚRotation©r!  r   r.   r/   rV   s    r   Úrotation_getz&ShaderImageTextureWrapper.rotation_get;  s-   € ØÔÐ$Ý˜/Ñ*Ô*Ð*ØÔ Ô'¨
Ô3ÔAÐAr   c                 ó4   — || j         j        d         _        d S )Nr[  ©r!  r.   r/   )r   r&  s     r   Úrotation_setz&ShaderImageTextureWrapper.rotation_set@  s   € à=EˆÔÔ  Ô,Ô:Ð:Ð:r   c                 ó\   — | j         €t          d¦  «        S | j         j        d         j        S )N)r   r   r   ÚScaler\  rV   s    r   Ú	scale_getz#ShaderImageTextureWrapper.scale_getF  s-   € ØÔÐ$Ý˜/Ñ*Ô*Ð*ØÔ Ô'¨Ô0Ô>Ð>r   c                 ó4   — || j         j        d         _        d S )Nrb  r_  )r   r'  s     r   Ú	scale_setz#ShaderImageTextureWrapper.scale_setK  s   € à:?ˆÔÔ  Ô)Ô7Ð7Ð7r   )r   F..)(rk   rl   rm   rn   rR   ro   r7   r  rP   r  r  r-  rp   r  r/  r   r;  r  r?  rA  r  rE  rH  r  rM  rO  rL  r"  rT  r!  rW  rY  r%  r]  r`  r&  rc  re  r'  r  r  s   @r   r›   r›   B  sÏ  ø€ € € € € ðð ð€Jð 	ØØØØØðð 
ðð €Ið =ð ð ð ð ð ð ð YZØJMð3ð 3 ]ð 3ð 3ð 3ð 3ð<+ð +ð +ð+ð +ð +ð> ð  ð  ð6 �˜.Ñ)Ô)€JðNð Nð Nð ð&ð &ñ „Zð&ð$ ˆH�Y 	Ñ*Ô*€EðUð Uð Uð ð0ð 0ñ „Zð0ð �˜.¨.Ñ9Ô9€Jðð ð ð ð	9ð 	9ñ „Zð	9ð �˜¨Ñ6Ô6€IðVð Vð Vð ð.ð .ñ „Zð.ð �˜¨Ñ6Ô6€Ið
5ð 5ð 5ð"ð "ð "ð@ �8Ð,Ñ-Ô-€Lð\ð \ð \ð ðIð Iñ „ZðIð �(˜?¨OÑ<Ô<€KðBð Bð Bð
 ðFð Fñ „ZðFð ˆx˜ lÑ3Ô3€Hð?ð ?ð ?ð
 ð@ð @ñ „Zð@ð ˆH�Y 	Ñ*Ô*€E€E€E€E€Er   r›   r	   )Ú	mathutilsr   r   Ú__all__r   r   r   r+   r3   r5   r7   r   r›   rq   r   r   ú<module>rh     s%  ðð
 $Ð #Ð #Ð #Ð #Ð #Ð #Ð #ð€ð
	ð 	ð 	ðð ð ð.ð .ð .ð
)ð )ð )ð-ð -ð -ð,ð ,ð ,ð ,ð]2ð ]2ð ]2ð ]2ð ]2ñ ]2ô ]2ð ]2ð@e8ð e8ð e8ð e8ð e8˜Mñ e8ô e8ð e8ðPM+ð M+ð M+ð M+ð M+ñ M+ô M+ð M+ð M+ð M+r   