§
    ø(g
X  ã                   ó†  — d Z ddlZddlmZmZmZ ddlmZm	Z
mZ d„ Z G d„ d¦  «        Z G d„ d	¦  «        Zd<d„ZdZh d£h d£h d£h d£h d£h d£h d£h d£h d£h d£h d£h d£h d£h d£h d£h d£h d£h d£h d £h d!£h d"£h d#£h d$£fZdd%d&d'd(d)d*œZd=d+„Zd,„ Zd-„ Zd.„ Zd/„ Zd0„ Z ed1d2d3d4¬5¦  «        Z	 	 	 	 d>d7„Zefd8„Zd?d;„ZdS )@)ÚExportHelperÚImportHelperÚorientation_helperÚaxis_conversionÚaxis_conversion_ensureÚcreate_derived_objectsÚunpack_listÚunpack_face_listÚpath_referenceÚpath_reference_copyÚpath_reference_modeÚunique_nameé    N)ÚBoolPropertyÚEnumPropertyÚStringProperty)ÚcontextsÚpgettext_ifaceÚpgettext_datac                 óh   — t          | d¦  «        r!t          | d¦  «        rt          | dd¦  «        S dS )NÚaxis_forwardÚaxis_upF)Úhasattrr   )Úops    úY/home/blender/git/blender-v430/install_release/4.3/scripts/modules/bpy_extras/io_utils.pyÚ_check_axis_conversionr   !   sG   € Ýˆr�>Ñ"Ô"ð 
¥w¨r°9Ñ'=Ô'=ð 
Ý%ØØØñ
ô 
ð 	
ð
 ˆ5ó    c                   ój   — e Zd ZU  edddd¬¦  «        ed<    eddd	d
h¬¦  «        ed<   d	Zd„ Zd„ ZdS )r   ú	File Pathz$Filepath used for exporting the fileé   Ú	FILE_PATH)ÚnameÚdescriptionÚmaxlenÚsubtypeÚfilepathzCheck Existingz,Check and warn on overwriting existing filesTÚHIDDEN)r!   r"   ÚdefaultÚoptionsÚcheck_existingc                 óì   — dd l }| j        sM|j        j        }|st          d¦  «        }n |j                             |¦  «        d         }|| j        z   | _        |j                             | ¦  «         dhS )Nr   ÚuntitledÚRUNNING_MODAL)	Úosr%   Ú
blend_dataÚdata_ÚpathÚsplitextÚfilename_extÚwindow_managerÚfileselect_add)ÚselfÚcontextÚ_eventr-   Úblend_filepaths        r   ÚinvokezExportHelper.invoke=   s�   € Øˆ	ˆ	ˆ	ØŒ}ð 	?Ø$Ô/Ô8ˆNØ!ð EÝ!& zÑ!2Ô!2��à!#¤×!1Ò!1°.Ñ!AÔ!AÀ!Ô!D�à*¨TÔ->Ñ>ˆDŒMàÔ×-Ò-¨dÑ3Ô3Ð3ØÐ Ð r   c                 ó:  — dd l }d}t          | ¦  «        }| j        }|�z| j        }|j                             |¦  «        rY|rCt          j                             |j                             |¦  «        d         | j	        ¦  «        }|| j        k    r	|| _        d}|p|S )Nr   FT)
r-   r   Úcheck_extensionr%   r0   ÚbasenameÚbpyÚ
ensure_extr1   r2   )r5   Ú_contextr-   Ú
change_extÚchange_axisr;   r%   s          r   ÚcheckzExportHelper.checkK   s­   € Øˆ	ˆ	ˆ	Øˆ
Ý,¨TÑ2Ô2ˆàÔ.ˆàÐ&Ø”}ˆHØŒw×Ò Ñ)Ô)ð &Ø"ð Ý"œx×2Ò2Øœ×(Ò(¨Ñ2Ô2°1Ô5ØÔ)ñ ô  �Hð ˜tœ}Ò,Ð,Ø$,�D”MØ!%�JàÐ)˜kÐ*r   N)	Ú__name__Ú
__module__Ú__qualname__r   Ú__annotations__r   r;   r9   rB   © r   r   r   r   +   s�   € € € € € € ØˆnØØ:ØØð	ñ ô ð ð ñ ð !�LØØBØØ�
ð	ñ ô ð ð ñ ð €Oð!ð !ð !ð+ð +ð +ð +ð +r   r   c                   óN   — e Zd ZU  eddddddh¬¦  «        ed<   d	„ Zdd„Zd„ ZdS )r   r   z$Filepath used for importing the filer   r    ÚSKIP_PRESETr&   )r!   r"   r#   r$   r(   r%   c                 ó<   — |j                              | ¦  «         dhS )Nr,   )r3   r4   )r5   r6   r7   s      r   r9   zImportHelper.invokej   s"   € ØÔ×-Ò-¨dÑ3Ô3Ð3ØÐ Ð r   Ú c                 ó´  — | j                              d¦  «        r¢| j        }t          | j        ¦  «        dk    r4t          d¦  «                             t          | j        ¦  «        ¦  «        }|rt          |¦  «        }nt          | j        t          j	        ¦  «        }|j
                             | ||d¬¦  «        S |j
                             | ¦  «         dhS )Nr%   é   zImport {:d} filesF)Úconfirm_textÚtitleÚ	translater,   )Ú
propertiesÚis_property_setr%   ÚlenÚfilesÚiface_ÚformatÚbl_labelÚi18n_contextsÚoperator_defaultr3   Úinvoke_props_dialogr4   )r5   r6   rN   rO   s       r   Úinvoke_popupzImportHelper.invoke_popupn   sÕ   € ØŒ?×*Ò*¨:Ñ6Ô6ð 	OØ”MˆEÝ�4”:‰Œ Ò"Ð"ÝÐ2Ñ3Ô3×:Ò:½3¸t¼z¹?¼?ÑKÔK�àð UÝ% lÑ3Ô3��õ  & d¤mµ]Ô5SÑTÔT�àÔ)×=Ò=Ø <°uÈð >ñ Oô Oð Oð 	Ô×-Ò-¨dÑ3Ô3Ð3ØÐ Ð r   c                 ó    — t          | ¦  «        S ©N)r   ©r5   r?   s     r   rB   zImportHelper.check€   s   € Ý% dÑ+Ô+Ð+r   N)rK   )rC   rD   rE   r   rF   r9   r[   rB   rG   r   r   r   r   a   s   € € € € € € ØˆnØØ:ØØØ Ð)ðñ ô ð ð ñ ð!ð !ð !ð!ð !ð !ð !ð$,ð ,ð ,ð ,ð ,r   r   ÚYÚZc                 ó   ‡ ‡— ˆ ˆfd„}|S )z¥
    A decorator for import/export classes, generating properties needed by the axis conversion system and IO helpers,
    with specified default values (axes).
    c                 ó´   •— d| j         vrt          | di ¦  «         d„ }t          dd‰|¬¦  «        | j        d<   d„ }t          dd	‰|¬¦  «        | j        d
<   | S )NrF   c                 óÄ   — | j         d         | j        d         k    rC| j        dd…         dd                     | j        d         ¦  «        dz   dz           z   | _        d S d S ©Néÿÿÿÿr   ÚXYZrM   é   )r   r   Úindexr^   s     r   Ú_update_axis_forwardzAorientation_helper.<locals>.wrapper.<locals>._update_axis_forward�   sh   € ØÔ  Ô$¨¬°RÔ(8Ò8Ð8à”L  2 Ô&Ø˜5Ÿ;š; t¤|°BÔ'7Ñ8Ô8¸1Ñ<ÀÑAÔBñCð ”��ð 9Ð8r   ÚForward))ÚXz	X ForwardrK   )r_   z	Y ForwardrK   )r`   z	Z ForwardrK   )ú-Xz
-X ForwardrK   )ú-Yz
-Y ForwardrK   )ú-Zz
-Z ForwardrK   )r!   Úitemsr'   Úupdater   c                 óÄ   — | j         d         | j        d         k    rC| j        dd…         dd                     | j        d         ¦  «        dz   dz           z   | _        d S d S rd   )r   r   rh   r^   s     r   Ú_update_axis_upz<orientation_helper.<locals>.wrapper.<locals>._update_axis_up¤   sm   € ØŒ|˜BÔ 4Ô#4°RÔ#8Ò8Ð8àÔ% a¨ dÔ+Ø˜5Ÿ;š; tÔ'8¸Ô'<Ñ=Ô=ÀÑAÀQÑFÔGñHð Ô!Ð!Ð!ð 9Ð8r   ÚUp))rk   zX UprK   )r_   zY UprK   )r`   zZ UprK   )rl   z-X UprK   )rm   z-Y UprK   )rn   z-Z UprK   r   )Ú__dict__Úsetattrr   rF   )Úclsri   rr   r   r   s      €€r   Úwrapperz#orientation_helper.<locals>.wrapper‰   s¦   ø€ ð  C¤LÐ0Ð0Ý�CÐ*¨BÑ/Ô/Ð/ð	ð 	ð 	õ /;Øðð !Ø'ð/
ñ /
ô /
ˆÔ˜NÑ+ð	ð 	ð 	õ *6Øðð Ø"ð*
ñ *
ô *
ˆÔ˜IÑ&ð ˆ
r   rG   )r   r   rw   s   `` r   r   r   „   s*   øø€ ð
0ð 0ð 0ð 0ð 0ð 0ðd €Nr   ))©ç      ð¿ç        rz   ©rz   ry   rz   ©rz   rz   ç      ð?)rx   ©rz   rz   ry   r{   )rx   r|   ©rz   r}   rz   )rx   r   r~   )r{   rx   r~   )r|   rx   r{   )r~   rx   r   )r   rx   r|   )r{   r|   rx   )r~   r{   rx   )r|   r   rx   )r   r~   rx   )r{   r~   ©r}   rz   rz   )r|   r{   r€   )r~   r   r€   )r   r|   r€   )r{   r€   r|   )r~   r€   r{   )r|   r€   r   )r   r€   r~   )r€   r{   r~   )r€   r|   r{   )r€   r~   r   >   é  é  é  é  é  é#  é)  é+
  éD  éE  éM	  éT  é]  ée  él
  é‚  éŠ  é¢  éÈ  éÐ  éà  éè
  é\   éš   >   é  é
  é
  é  é  é"  é#  é+  éA  éE  éM
  éQ	  éY  ée  éi  é„  é”  é¬  éÈ
  éÐ  éà  éè  é]   éœ   >   é  é  é  é  é  é#
  é%  é+  éB  éD  éJ  éT  é\  éb
  él	  é�  é‘  é©  éÈ  éÐ  éà
  éè  éZ   é™   >   é  é  é
  é  é  é#  é+  é,  éA  éB  éJ  éQ
  éZ  éb	  éi  é…  é�  é¥  éÈ  éÐ
  éà  éè  éY   é�   >   é  é  é  é
  é  é   é(  é,  éB	  éJ  éK  éS
  éZ  éb  ék  é…  é�  é�  éÁ  éÑ
  éÙ  éé  éc   é¥   >   é  é  é

  é  é  é   é"  é(  éA	  éK
  éQ  éY  éc  éi  ék  é„  éœ  é¬  éÅ  éÍ
  éÝ  éå  éS   é”   >   é  é  é  é  é  é   é%
  é(  éD	  éK  éS  éT  é\  éc
  él  é�  é‘  é™  éÂ  éÊ  éÚ  éâ
  ék   é©   >   é  é  é  é  é  é   é(  é)
  éE	  éM  éS  é]  éc  ée  ék
  é‚  éš  é¢  éÄ  éÔ  éÜ  éì
  éK   éŠ   >   é
  é  é  é  é  é  é%  é,  éB
  éH  éJ  éP  éZ  é`  éh	  é‹  é“  é«  éÁ
  éÑ  éÙ  éé  éb   é£   >   é  é
  é  é  é  é  é%  é)  éD
  éH	  éP  éT  é\  é`  éh  é‹  é“  é£  éÂ
  éÊ  éÚ  éâ  él   é«   >   é
  é  é
  é  é  é  é"  é,  éA
  éH  éP  éY  é`	  éh  éi  é‹  é£  é«  éÅ
  éÍ  éÝ  éå  éQ   é“   >   é
  é  é
  é  é  é  é"  é)  éE
  éH  éP	  é]  é`  ée  éh  é“  é£  é«  éÄ
  éÔ  éÜ  éì  éM   é‹   >   é  é  é
  é  é  é
  é"  é,  éE  éK  éM  éS	  é]
  éc  ék  éˆ  é�  é¨  éÁ  éÑ  éÙ
  éé  ée   é    >   é  é  é
  é  é  é
  é"  é)  éD  éK	  éS  é\
  éc  ék  él  éˆ  é   é¨  éÅ  éÍ  éÝ
  éå  éT   é�   >   é  é  é  é  é  é
  é%  é,  éA  éK  éQ  éS  éY
  éc	  ék  éˆ  é�  é   éÂ  éÊ  éÚ
  éâ  éi   é¨   >   é  é  é  é  é
  é  é%  é)  éB  éK  éS  éZ
  éb  éc  ék	  é�  é   é¨  éÄ  éÔ  éÜ
  éì  éJ   éˆ   >   é  é  é  é  é  é#  é+  é,
  éE  éH  éM  éP  é]	  ée  éh
  é‚  éŠ  éš  éÁ  éÑ  éÙ  éé
  é`   é¢   >   é  é  é
  é  é  é#  é%  é+  éA  éH
  éP  éQ  éY	  é`  éi  é„  é”  éœ  éÂ  éÊ
  éÚ  éâ  éh   é¬   >   é  é
  é  é  é  é"
  é#  é+  éD  éH  éT  é\	  é`
  éh  él  é�  é™  é©  éÅ  éÍ  éÝ  éå
  éP   é‘   >   é  é  é
  é  é  é#  é)  é+  éB  éJ  éP
  éZ	  é`  éb  éh  é…  é�  é¥  éÄ  éÔ
  éÜ  éì  éH   é�   >   é  é  é
  é  é  é   é(  é)  éB  éJ	  éT
  éZ  é\  éb  él  é�  é�  é¥  éË  éÓ
  éã  éë  éD   é…   >   é  é
  é  é  é  é   é%  é(  éA  éJ
  éQ  éY  éZ  éb  éi	  é”  éœ  é¬  éË
  éÓ  éã  éë  éB   é„   >   é  é  é
  é  é  é 
  é"  é(  éD  éM  éT	  é\  é]  ée
  él  é‘  é™  é©  éË  éÓ  éã
  éë  éE   é�   rM   é   rg   é   é   )rk   r_   r`   rl   rm   rn   c           
      ó²  — ddl m} ddlm} | |k    r"||k    r |¦   «                              ¦   «         S | d         |d         k    s|d         |d         k    rt          d¦  «        ‚ |t          j        d„ t          | |||f¦  «        D ¦   «         ¦  «        }t          t          ¦  «        D ]!\  }}||v r |t          |         ¦  «        c S Œ"J d¦   «         ‚)	z‹
    Each argument us an axis in ['X', 'Y', 'Z', '-X', '-Y', '-Z']
    where the first 2 are a source and the second 2 are the target.
    r   )ÚMatrix)Úreducere   zDInvalid axis arguments passed, can't use up/forward on the same axisc              3   óB   K  — | ]\  }}t           |         |d z  z  V — ŒdS )rg   N)Ú_axis_convert_num)Ú.0ÚiÚas      r   ú	<genexpr>z"axis_conversion.<locals>.<genexpr>9  sH   è è € ð  ;ð  ;Ù$( A qõ !2°!Ô 4¸¸Q¹Ñ ?ð  ;ð  ;ð  ;ð  ;ð  ;ð  ;r   FÚunreachable)Ú	mathutilsr­  Ú	functoolsr®  Úto_3x3Ú	ExceptionÚintÚ__or__Ú	enumerateÚ_axis_convert_lutÚ_axis_convert_matrix)	Úfrom_forwardÚfrom_upÚ
to_forwardÚto_upr­  r®  Úvaluer²  Úaxis_luts	            r   r   r   *  s8  € ð
 !Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à�zÒ!Ð! g°Ò&6Ð&6Øˆv‰xŒx�ŠÑ Ô Ð à�BÔ˜7 2œ;Ò&Ð&¨*°R¬.¸EÀ"¼IÒ*EÐ*EÝð @ñ Aô Að 	Að ˆF•3”:ð  ;ð  ;Ý,5°|Ø7>Ø7AØ7<ð79ñ -:ô -:ð ;ñ  ;ô  ;ñ <ô <€Eõ !Õ!2Ñ3Ô3ð 3ð 3‰ˆˆ8Ø�HÐÐØ�6Õ.¨qÔ1Ñ2Ô2Ð2Ð2Ð2ð à�-ÑÔˆ5r   c                 óÂ   — d„ }t          | |¦  «        t          | |¦  «        f} ||Ž }||k    r0t          | ||d         ¦  «         t          | ||d         ¦  «         dS dS )aØ  
    Function to ensure an operator has valid axis conversion settings, intended
    to be used from :class:`bpy.types.Operator.check`.

    :arg operator: the operator to access axis attributes from.
    :type operator: :class:`bpy.types.Operator`
    :arg forward_attr: attribute storing the forward axis
    :type forward_attr: str
    :arg up_attr: attribute storing the up axis
    :type up_attr: str
    :return: True if the value was modified.
    :rtype: bool
    c                 ó’   — | d         |d         k    r2|dd…         dd                      |d         ¦  «        dz   dz           z   }| |fS rd   )rh   )r   r   s     r   Úvalidatez(axis_conversion_ensure.<locals>.validateT  sR   € Ø˜Ô˜w rœ{Ò*Ð*Ø˜a ˜d”m e¨U¯[ª[¸À¼Ñ-EÔ-EÈÑ-IÈQÑ,NÔ&OÑOˆGà˜WÐ$Ð$r   r   rM   TF)Úgetattrru   )ÚoperatorÚforward_attrÚup_attrrÇ  ÚaxisÚaxis_news         r   r   r   F  s}   € ð%ð %ð %õ �8˜\Ñ*Ô*­G°H¸gÑ,FÔ,FÐF€DØˆx˜ˆ€HàˆxÒÐÝ�˜,¨°¬Ñ4Ô4Ð4Ý�˜' 8¨A¤;Ñ/Ô/Ð/àˆtàˆur   c                 ót  — i }|D ]=}|j         }|r
|j        dv rŒ|j        rg n||j                             ¦   «         fg||<   Œ>|rs| j        D ]k}|j         }|€Œ|j        }|j        sŒ|                     |¦  «        }|€Œ3|                     |j	        j        |j                             ¦   «         f¦  «         Œl|S )a  
    This function takes a sequence of objects, returning their instances.

    :arg depsgraph: The evaluated depsgraph.
    :type depsgraph: :class:`bpy.types.Depsgraph`
    :arg objects: A sequencer of objects.
    :type objects: Sequence[:class:`bpy.types.Object`]
    :return: A dictionary where each key is an object from ``objects``,
       values are lists of (object, matrix) tuples representing instances.
    :rtype: dict[:class:`bpy.types.Object`, list[tuple[:class:`bpy.types.Object`, :class:`mathutils.Matrix`]]]
    >   ÚFACESÚVERTS)
ÚparentÚinstance_typeÚis_instancerÚmatrix_worldÚcopyÚobject_instancesÚoriginalÚgetÚappendÚinstance_object)	Ú	depsgraphÚobjectsÚresultÚobÚ	ob_parentÚdupÚ
dup_parentÚdup_parent_originalÚinstance_lists	            r   r   r   f  sû   € ð €FØð Oð OˆØ”Iˆ	Øð 	˜Ô0Ð4FÐFÐFØØœ?ÐN�R�R°"°b´o×6JÒ6JÑ6LÔ6LÐ1MÐ0Nˆˆr‰
ˆ
àð ZØÔ-ð 	Zð 	ZˆCØœˆJØÐ!ØØ",Ô"5ÐØ&Ô3ð àØ"ŸJšJÐ':Ñ;Ô;ˆMØÐ$ØØ× Ò  #Ô"5Ô">ÀÔ@P×@UÒ@UÑ@WÔ@WÐ!XÑYÔYÐYÐYØ€Mr   c                 ó8   — g }|j         }| D ]} ||¦  «         Œ|S r]   )Úextend)Úlist_of_tuplesÚ	flat_listÚflat_list_extendÚts       r   r   r   ‰  s9   € Ø€IØ Ô'ÐØð ð ˆØÐ˜ÑÔÐÐØÐr   c                 óR  — dgt          | ¦  «        dz  z  }d}| D ]‹}t          |¦  «        dk    r$|d         dk    r|d         |d         |d         f}n6|d         dk    s|d         dk    r|d         |d         |d         |d         f}||||t          |¦  «        z   …<   |dz  }ŒŒ|S )Nr   rª  rg   r©  rM   )rS   )ræ  Úflat_lsr²  ré  s       r   r	   r	   ’  sÃ   € àˆc•S˜Ñ(Ô(¨1Ñ,Ñ-€GØ	€Aàð 	ð 	ˆÝˆq‰6Œ6�QŠ;ˆ;Ø�Œt�qŠyˆyØ�a”D˜!˜Aœ$  !¤Ð$�øà�Œt�qŠyˆy˜A˜aœD AšI˜IØ�a”D˜!˜Aœ$  !¤ a¨¤dÐ*�à !ˆ��!•c˜!‘f”f‘*�ÑØ	ˆQ‰ˆˆØ€Nr   c                 óv   — | j         }|sdS |j        dk    }|j        dk    o|j        j        j        dk    }|p|S )z¼
    A default implementation for FileHandler poll_drop methods. Allows for both the 3D Viewport and
    the Outliner (in ViewLayer display mode) to be targets for file drag and drop.
    FÚVIEW_3DÚOUTLINERÚ
VIEW_LAYER)ÚareaÚtypeÚspacesÚactiveÚdisplay_mode)r6   rð  Úis_v3dÚis_outliner_view_layers       r   Úpoll_file_object_dropr÷  ¤  sP   € ð
 Œ<€DØð ØˆuØŒY˜)Ò#€FØ!œY¨*Ò4Ðh¸¼Ô9KÔ9XÐ\hÒ9hÐØÐ+Ð+Ð+r   z	Path ModezMethod used to reference paths))ÚAUTOÚAutoz+Use relative paths with subdirectories only)ÚABSOLUTEÚAbsolutezAlways write absolute paths)ÚRELATIVEÚRelativez,Always write relative paths (where possible))ÚMATCHÚMatchz/Match absolute/relative setting with input path)ÚSTRIPz
Strip PathzFilename only)ÚCOPYÚCopyz7Copy the file to the destination path (or subdirectory)rø  )r!   r"   ro   r'   rK   c                 ó>  — ddl }|                      d¦  «        }t          j                             | ||¬¦  «        }	|j                             |	¦  «        }	|dv rnæ|dk    r|rdnd}nÙ|d	k    r%t          j                             |	|¦  «        rdnd}n®|d
k    r†|j                             |¦  «        }
|r|j                             |
|¦  «        }
|j                             |
|j                             |	¦  «        ¦  «        }| 	                    |	|f¦  «         |}	d}n"t          d                     |¦  «        ¦  «        ‚|dk    r|	S |dk    r.	 |j                             |	|¦  «        S # t          $ r |	cY S w xY w|dk    r|j                             |	¦  «        S dS )aú  
    Return a filepath relative to a destination directory, for use with
    exporters.

    :arg filepath: the file path to return,
       supporting blenders relative '//' prefix.
    :type filepath: str
    :arg base_src: the directory the *filepath* is relative too
       (normally the blend file).
    :type base_src: str
    :arg base_dst: the directory the *filepath* will be referenced from
       (normally the export path).
    :type base_dst: str
    :arg mode: the method used get the path in
       ['AUTO', 'ABSOLUTE', 'RELATIVE', 'MATCH', 'STRIP', 'COPY']
    :type mode: str
    :arg copy_subdir: the subdirectory of *base_dst* to use when mode='COPY'.
    :type copy_subdir: str
    :arg copy_set: collect from/to pairs when mode='COPY',
       pass to *path_reference_copy* when exporting is done.
    :type copy_set: set[tuple[str, str]]
    :arg library: The library this path is relative to.
    :type library: :class:`bpy.types.Library` | None
    :return: the new filepath.
    :rtype: str
    r   Nz//)ÚstartÚlibrary>   r   rú  rü  rþ  rü  rú  rø  r  zinvalid mode given {!r}r   )r-   Ú
startswithr=   r0   ÚabspathÚnormpathÚ	is_subdirÚjoinr<   Úaddr¹  rV   ÚrelpathÚ
ValueError)r%   Úbase_srcÚbase_dstÚmodeÚcopy_subdirÚcopy_setr  r-   Úis_relativeÚfilepath_absÚ
subdir_absÚfilepath_cpys               r   r
   r
   Ã  sÑ  € ðF €I€I€IØ×%Ò% dÑ+Ô+€KÝ”8×#Ò# H°HÀgÐ#ÑNÔN€LØ”7×#Ò# LÑ1Ô1€LàÐ0Ð0Ð0ØØ	�ŠˆØ(Ð8ˆzˆz¨jˆˆØ	�Šˆå”8×%Ò% l°HÑ=Ô=ð �
�
àð 	ˆð 
�ŠˆØ”W×%Ò% hÑ/Ô/ˆ
Øð 	?ØœŸš j°+Ñ>Ô>ˆJà”w—|’| J°´×0@Ò0@ÀÑ0NÔ0NÑOÔOˆà�Š�l LÐ1Ñ2Ô2Ð2à#ˆØˆˆåÐ1×8Ò8¸Ñ>Ô>Ñ?Ô?Ð?àˆzÒÐØÐØ	�Ò	Ð	ð	 Ø”7—?’? <°Ñ:Ô:Ð:øÝð 	 ð 	 ð 	 ØÐÐÐð	 øøøà	�ŠˆØŒw×Ò Ñ-Ô-Ð-ð 
ˆs   ÅE+ Å+E:Å9E:c                 ó  — | sdS ddl }ddl}| D ]ü\  }}|j                             |¦  «        s |d                     |¦  «        ¦  «         Œ>|j                             |¦  «        r|j                             ||¦  «        rŒt|j                             |¦  «        }	 |                     |d¬¦  «         n#  ddl}| 	                    ¦   «          Y nxY w	 | 
                    ||¦  «         ŒÞ#  ddl}| 	                    ¦   «          Y ŒúxY wdS )a  
    Execute copying files of path_reference

    :arg copy_set: set of (from, to) pairs to copy.
    :type copy_set: set[tuple[str, str]]
    :arg report: function used for reporting warnings, takes a string argument.
    :type report: Callable[[str], None]
    Nr   zmissing {!r}, not copyingT)Úexist_ok)r-   Úshutilr0   ÚexistsrV   ÚsamefileÚdirnameÚmakedirsÚ	tracebackÚ	print_excrÕ  )r  Úreportr-   r  Úfile_srcÚfile_dstÚdir_tor  s           r   r   r     sR  € ð ð Øˆà€I€I€IØ€M€M€Mà&ð &ð &Ñˆ�(ØŒw�~Š~˜hÑ'Ô'ð 	&ØˆFÐ.×5Ò5°hÑ?Ô?Ñ@Ô@Ð@Ð@ØŒW�^Š^˜HÑ%Ô%ð 	&¨"¬'×*:Ò*:¸8ÀXÑ*NÔ*Nð 	&Øà”W—_’_ XÑ.Ô.ˆFð&Ø—’˜F¨T�Ñ2Ô2Ð2Ð2øð&Ø Ð Ð Ð Ø×#Ò#Ñ%Ô%Ð%Ð%Ð%øøøð&Ø—’˜H hÑ/Ô/Ð/Ð/øð&Ø Ð Ð Ð Ø×#Ò#Ñ%Ô%Ð%Ð%Ð%øøøð%&ð &s   ÂB6Â6CÃC-Ã-D	re   ú.c                 ó�  — |                      | ¦  «        }|€®d}|                     ¦   «         }|€|n
 ||¦  «        x}}	|dk    r%||v r d                     |	||¦  «        }|dz  }||v ° nW|d|…         }||v rId                     |¦  «        }
d                     |	|t          |
¦  «        dz   z
  ||
¦  «        }|dz  }||v °I||| <   |S )a„  
    Helper function for storing unique names which may have special characters
    stripped and restricted to a maximum length.

    :arg key: Unique item this name belongs to, name_dict[key] will be reused
       when available.
       This can be the object, mesh, material, etc instance itself.
       Any hashable object associated with the *name*.
    :type key: Any
    :arg name: The name used to create a unique value in *name_dict*.
    :type name: str
    :arg name_dict: This is used to cache namespace to ensure no collisions
       occur, this should be an empty dict initially and only modified by this
       function.
    :type name_dict: dict
    :arg clean_func: Function to call on *name* before creating a unique value.
    :type clean_func: function
    :arg sep: Separator to use when between the name and a number when a
       duplicate name is found.
    :type sep: str
    NrM   re   z{:s}{:s}{:03d}z{:03d}z{:.{:d}s}{:s}{:s})rØ  ÚvaluesrV   rS   )Úkeyr!   Ú	name_dictÚname_maxÚ
clean_funcÚsepÚname_newÚcountÚname_dict_valuesÚname_new_origÚ	count_strs              r   r   r   2  s(  € ð, �}Š}˜SÑ!Ô!€HØÐØˆØ$×+Ò+Ñ-Ô-ÐàÐ&ˆDˆDØ�˜DÑ!Ô!ð	
ˆ�=ð
 �rŠ>ˆ>ØÐ.Ð.Ð.Ø+×2Ò2Ø!ØØñô �ð
 ˜‘
�ð Ð.Ð.Ð.øð   	  	Ô*ˆHØÐ.Ð.Ð.Ø$ŸOšO¨EÑ2Ô2�	Ø.×5Ò5Ø!Ø¥ I¡¤°Ñ 2Ñ3ØØñ	ô �ð ˜‘
�ð Ð.Ð.Ð.ð "ˆ	�#‰à€Or   )r_   r`   )r_   r`   r_   r`   )rø  rK   NN)re   Nr$  )Ú__all__r=   Ú	bpy.propsr   r   r   Úbpy.app.translationsr   rX   r   rU   r   r/   r   r   r   r   r¾  r½  r°  r   r   r   r   r	   r÷  r   r
   Úprintr   r   rG   r   r   ú<module>r5     s_  ðð
€ð €
€
€
ðð ð ð ð ð ð ð ð ð ð
ð ð ð ð ð ð ð ð ð ðð ð ð3+ð 3+ð 3+ð 3+ð 3+ñ 3+ô 3+ð 3+ðl ,ð  ,ð  ,ð  ,ð  ,ñ  ,ô  ,ð  ,ðF7ð 7ð 7ð 7ðxÐ ð@!ð !ð !ð!ð !ð !ð!ð !ð !ð!ð !ð !ð!ð !ð !ð!ð !ð !ð!ð !ð !ð!ð !ð !ð!ð !ð !ð!ð !ð !ð!ð !ð !ð!ð !ð !ð!ð !ð !ð!ð !ð !ð!ð !ð !ð!ð !ð !ð!ð !ð !ð!ð !ð !ð!ð !ð !ð!ð !ð !ð!ð !ð !ð!ð !ð !ð!ð !ð !ðGFÐ ðP  !¨!°1¸AÀQÐGÐGÐ ð ð  ð  ð  ð8ð ð ð@ ð  ð  ðFð ð ðð ð ð$
,ð 
,ð 
,ð #�lØ	Ø0ð
ð ðñ ô Ð ð, ØØØðH.ð H.ð H.ð H.ðV */ð !&ð !&ð !&ð !&ðH5ð 5ð 5ð 5ð 5ð 5r   