§
    ¡)ýf�ƒ  ã                   ó  — d dl Z d dlmZ d dlmZmZmZmZ d dlm	Z
  G d„ de¦  «        Z G d„ de¦  «        Z G d	„ d
e¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ d e¦  «        Z G d!„ d"e¦  «        ZeeeeeeeeeeeeeeefZdS )#é    N)ÚOperator)ÚBoolPropertyÚEnumPropertyÚIntPropertyÚStringProperty)Úpgettext_rptc                   ó¸   — e Zd ZU dZdZdZddhZdZ eddd	d
¬¦  «        e	d<    e
ddd¬¦  «        e	d<    e
ddd¬¦  «        e	d<   d„ Zd„ Zd„ Zed„ ¦   «         ZdS )ÚSelectPatternz(Select objects matching a naming patternzobject.select_patternzSelect PatternÚREGISTERÚUNDOÚpatternÚPatternz;Name filter using '*', '?' and '[abc]' unix style wildcardsé@   Ú*)ÚnameÚdescriptionÚmaxlenÚdefaultzCase SensitivezDo a case sensitive compareF©r   r   r   Úcase_sensitiveÚExtendúExtend the existing selectionTÚextendc                 ó¾  ‡	— dd l Š	| j        r‰	j        }nˆ	fd„}d}d}|j        }|rF|j        dk    r;|j        j        }| j        s%t          j	        j
                             d¬¦  «         d}n†|rQ|j        dk    rF|j        d	k    r;|j        j        }| j        s%t          j	        j                             d¬¦  «         d}n3|j        }| j        s%t          j	        j                             d¬¦  «         |D ]f} ||j        | j        ¦  «        rN|r-d|_        d|_        d|_        |j        r|j        }|�d|_        ŒG|rd|_        ŒQ|                     d¦  «         Œgd
hS )Nr   c                 óx   •— ‰                      |                      ¦   «         |                     ¦   «         ¦  «        S ©N)ÚfnmatchcaseÚupper)ÚaÚbÚfnmatchs     €úY/home/blender/git/blender-v430/install_release/4.3/scripts/startup/bl_operators/object.pyú<lambda>z'SelectPattern.execute.<locals>.<lambda>0   s+   ø€ Ø$×0Ò0°·²±´¸A¿GºG¹I¼IÑFÔFð ó    FÚPOSEÚDESELECT©ÚactionTÚARMATUREÚEDITÚFINISHED)r!   r   r   ÚobjectÚmodeÚdataÚbonesr   ÚbpyÚopsÚposeÚ
select_allÚtypeÚ
edit_bonesÚarmatureÚvisible_objectsr   r   ÚselectÚselect_headÚselect_tailÚuse_connectÚparentÚ
select_set)
ÚselfÚcontextÚpattern_matchÚis_eboneÚis_pboneÚobjÚitemsÚitemÚitem_parentr!   s
            @r"   ÚexecutezSelectPattern.execute)   s±  ø€ àˆˆˆàÔð 	HØ#Ô/ˆMˆMðGð Gð Gð GˆMàˆØˆØŒnˆØð 	=�3”8˜vÒ%Ð%Ø”H”NˆEØ”;ð ;Ý””×'Ò'¨zÐ'Ñ:Ô:Ð:ØˆHˆHØð 	=�S”X Ò+Ð+°´¸FÒ0BÐ0BØ”HÔ'ˆEØ”;ð ?Ý”Ô ×+Ò+°:Ð+Ñ>Ô>Ð>ØˆHˆHàÔ+ˆEØ”;ð =Ý””×)Ò)°Ð)Ñ<Ô<Ð<ð ð 	*ð 	*ˆDØˆ}˜TœY¨¬Ñ5Ô5ð *ð ð *Ø"&�D”KØ'+�DÔ$Ø'+�DÔ$ØÔ'ð ;Ø&*¤k˜Ø&Ð2Ø6:˜KÔ3øØð *Ø"&�D”K�Kà—O’O DÑ)Ô)Ð)øàˆ|Ðr$   c                 ó<   — |j         }|                     | |¦  «        S r   )Úwindow_managerÚinvoke_props_popup)r>   r?   ÚeventÚwms       r"   ÚinvokezSelectPattern.invokeX   s    € ØÔ#ˆØ×$Ò$ T¨5Ñ1Ô1Ð1r$   c                 óÀ   — | j         }|                     | d¦  «         |                     ¦   «         }|                     | d¦  «         |                     | d¦  «         d S )Nr   r   r   )ÚlayoutÚpropÚrow)r>   Ú_contextrO   rQ   s       r"   ÚdrawzSelectPattern.draw\   sY   € Ø”ˆà�Š�D˜)Ñ$Ô$Ð$Ø�jŠj‰lŒlˆØ�Š�Ð'Ñ(Ô(Ð(Ø�Š��xÑ Ô Ð Ð Ð r$   c                 óB   — |j         }| p|j        dk    p
|j        dk    S )NÚOBJECTr)   )r,   r-   r4   ©Úclsr?   rC   s      r"   ÚpollzSelectPattern.polld   s)   € àŒnˆØ�ÐN˜SœX¨Ò1ÐN°s´xÀ:Ò7MÐNr$   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	bl_idnameÚbl_labelÚ
bl_optionsÚbl_propertyr   Ú__annotations__r   rG   rM   rS   ÚclassmethodrX   © r$   r"   r
   r
      s  € € € € € € Ø2Ð2Ø'€IØ€HØ˜fÐ%€JØ€Kàˆ^Øð'àØðñ ô ð ð ñ ð !�LØØ1Øðñ ô ð ð ñ ð
 ˆLØØ3Øðñ ô ð ð ñ ð-ð -ð -ð^2ð 2ð 2ð!ð !ð !ð ðOð Oñ „[ðOð Oð Or$   r
   c                   óL   — e Zd ZU dZdZdZddhZ eddd¬	¦  «        ed
<   d„ Z	dS )ÚSelectCamerazSelect the active camerazobject.select_camerazSelect Camerar   r   r   zExtend the selectionFr   r   c                 ó˜  — |j         }|j        }|j        }|r|j        dk    r|j        r|j        }n|j        }|€|                      dhd¦  «         nv|j        |j        vr|                      dhd¦  «         nP| j	        s%t          j        j                             d¬¦  «         ||j        _        |                     d¦  «         dhS d	hS )
NÚVIEW_3DÚWARNINGzNo camera foundz"Active camera is not in this scener&   r'   Tr+   Ú	CANCELLED)ÚsceneÚ
view_layerÚ
space_datar4   Úuse_local_cameraÚcameraÚreportr   Úobjectsr   r0   r1   r,   r3   Úactiver=   )r>   r?   rj   rk   Úviewrn   s         r"   rG   zSelectCamera.executev   sá   € Ø”ˆØÔ'ˆ
ØÔ!ˆØð 	"�D”I Ò*Ð*¨tÔ/DÐ*Ø”[ˆFˆFà”\ˆFàˆ>Ø�KŠK˜˜Ð%6Ñ7Ô7Ð7Ð7ØŒ[ ¤Ð-Ð-Ø�KŠK˜˜Ð%IÑJÔJÐJÐJà”;ð =Ý””×)Ò)°Ð)Ñ<Ô<Ð<Ø(.ˆJÔÔ%à×Ò˜dÑ#Ô#Ð#Ø�<Ðàˆ}Ðr$   N)
rY   rZ   r[   r\   r]   r^   r_   r   ra   rG   rc   r$   r"   re   re   j   sk   € € € € € € Ø"Ð"Ø&€IØ€HØ˜fÐ%€JàˆLØØ*Øðñ ô ð ð ñ ðð ð ð ð r$   re   c                   ó†   — e Zd ZU dZdZdZddhZ edddd	¬
¦  «        ed<    e	ddd¬¦  «        ed<   e
d„ ¦   «         Zd„ ZdS )ÚSelectHierarchyzGSelect object relative to the active object's position in the hierarchyzobject.select_hierarchyzSelect Hierarchyr   r   ))ÚPARENTÚParentÚ )ÚCHILDÚChildrw   Ú	Directionz$Direction to select in the hierarchyru   ©rD   r   r   r   Ú	directionr   r   Fr   r   c                 ó   — |j         S r   ©r,   ©rW   r?   s     r"   rX   zSelectHierarchy.poll¤   s
   € àŒ~Ðr$   c                 óX  — |j         }g }d }|j        }|j        }|j        |vr|                     |j        ¦  «         | j        dk    r@|D ]<}|j        }|r1|                     ¦   «         r||k    r|}|                     |¦  «         Œ=nJ|D ]&}|                     d„ |j        D ¦   «         ¦  «         Œ'|r| 	                    d„ ¬¦  «         |d         }|rU| j        s%t          j        j                             d¬¦  «         |D ]}|                     d¦  «         Œ||j        _        d	hS d
hS )Nru   c                 ó:   — g | ]}|                      ¦   «         ¯|‘ŒS rc   )Úvisible_get)Ú.0Úchilds     r"   ú
<listcomp>z+SelectHierarchy.execute.<locals>.<listcomp>¿   s)   € Ð"ZÐ"ZÐ"Z¨UÀe×FWÒFWÑFYÔFYÐ"Z 5Ð"ZÐ"ZÐ"Zr$   c                 ó   — | j         S r   )r   )Úobj_iters    r"   r#   z)SelectHierarchy.execute.<locals>.<lambda>Â   s   € °X´]€ r$   )Úkeyr   r&   r'   Tr+   ri   )rk   Úselected_objectsr,   Úappendr|   r<   r‚   r   ÚchildrenÚsortr0   r1   r3   r=   rp   rq   )	r>   r?   rk   Ú
select_newÚact_newr‰   Úobj_actrC   r<   s	            r"   rG   zSelectHierarchy.execute¨   s€  € ØÔ'ˆ
Øˆ
Øˆà"Ô3ÐØ”.ˆàŒ>Ð!1Ð1Ð1Ø×#Ò# G¤NÑ3Ô3Ð3àŒ>˜XÒ%Ð%Ø'ð .ð .�Øœ�àð .˜f×0Ò0Ñ2Ô2ð .Ø #’~�~Ø"(˜à×%Ò% fÑ-Ô-Ð-øð.ð (ð \ð \�Ø×!Ò!Ð"ZÐ"Z°c´lÐ"ZÑ"ZÔ"ZÑ[Ô[Ð[Ð[àð (Ø—’Ð$BÐ$B�ÑCÔCÐCØ$ Qœ-�ð ð 	 Ø”;ð =Ý””×)Ò)°Ð)Ñ<Ô<Ð<à!ð %ð %�Ø—’˜tÑ$Ô$Ð$Ð$à(/ˆJÔÔ%Ø�<Ðàˆ}Ðr$   N)rY   rZ   r[   r\   r]   r^   r_   r   ra   r   rb   rX   rG   rc   r$   r"   rt   rt   Ž   s¿   € € € € € € ðð à)€IØ!€HØ˜fÐ%€Jàˆ|ð
ð Ø:Øðñ ô ð ð ñ ð ˆLØØ3Øðñ ô ð ð ñ ð ðð ñ „[ðð(ð (ð (ð (ð (r$   rt   c                   óŠ   — e Zd ZU dZdZdZddhZ edddd	d
d¬¦  «        ed<    e	ddd¬¦  «        ed<   e
d„ ¦   «         Zd„ ZdS )ÚSubdivisionSetz)Sets a Subdivision Surface level (1 to 5)zobject.subdivision_setzSubdivision Setr   r   ÚLeveliœÿÿÿéd   iúÿÿÿé   é   )r   ÚminÚmaxÚsoft_minÚsoft_maxr   ÚlevelÚRelativezNApply the subdivision surface level as an offset relative to the current levelFr   Úrelativec                 ó   — |j         }|d uS r   ©Úselected_editable_objects©rW   r?   Úobss      r"   rX   zSubdivisionSet.pollæ   ó   € àÔ/ˆØ˜4�Ð r$   c                 óš   ‡ ‡‡— ‰ j         Š‰ j        Š‰r	‰dk    rdhS ‰s‰dk     r	dx‰ _         Šˆˆˆ fd„}|j        D ]} ||¦  «         ŒdhS )Nr   ri   c                 óè  •— | j         D �]-}|j        dk    rì‰sŠ‰|j        k    rA‰|j        z
  }t          |¦  «        D ]'}t          j        j                             d¬¦  «         Œ(| j        dk    r|j	        ‰k    r‰|_	        n| j        dk    r|j
        ‰k    r‰|_
         d S | j        dk    r$|j	        ‰z   |j        k    r|xj	        ‰z  c_	        n.| j        dk    r#|j
        ‰z   |j        k    r|xj
        ‰z  c_
         d S |j        dk    r(‰r|xj
        ‰z  c_
        n|j
        ‰k    r‰|_
         d S �Œ/	 | j        dk    r\| j                              dd¦  «        }‰dk    r7t          ‰¦  «        D ])}t          j        j                             d¬¦  «         Œ(d S d S | j                              dd¦  «        }‰|_
        d S # t          $ r# ‰                     d	hd
| j        z   ¦  «         Y d S w xY w)NÚMULTIRESÚMultires)ÚmodifierÚSCULPTrU   ÚSUBSURFr   ÚSubdivisionrh   z%Modifiers cannot be added to object: )Ú	modifiersr4   Útotal_levelsÚranger0   r1   r,   Úmultires_subdivider-   Úsculpt_levelsÚlevelsÚnewÚ	Exceptionro   r   )rC   ÚmodÚsubÚ_rš   rœ   r>   s       €€€r"   Úset_object_subdz/SubdivisionSet.execute.<locals>.set_object_subdõ   sd  ø€ Ø”}ð ñ �Ø”8˜zÒ)Ð)Ø#ð Ø  3Ô#3Ò3Ð3Ø"'¨#Ô*:Ñ":˜CÝ%*¨3¡Z¤Zð Wð W Ý #¤¤× AÒ AÈ:Ð AÑ VÔ VÐ VÐ Vàœ8 xÒ/Ð/Ø"Ô0°EÒ9Ð9Ø49 Ô 1øØ œX¨Ò1Ð1Ø"œz¨UÒ2Ð2Ø-2 ¤
Ø˜˜àœ8 xÒ/Ð/Ø"Ô0°5Ñ8¸CÔ<LÒLÐLØ #Ð 1Ô 1°UÑ :Ð 1Ô 1øØ œX¨Ò1Ð1Ø"œz¨EÑ1°SÔ5EÒEÐEØ # 
¤
¨eÑ 3 
¤
Ø˜˜à”X Ò*Ð*Øð /Ø˜
œ
 eÑ+˜
œ
˜
àœ:¨Ò.Ð.Ø).˜CœJà�F�Fñ +ð
]Ø”8˜xÒ'Ð'Øœ-×+Ò+¨J¸
ÑCÔC�CØ˜q’y�yÝ!& u¡¤ð Sð S˜AÝœGœN×=Ò=ÀzÐ=ÑRÔRÐRÐRð !�yðSð Sð œ-×+Ò+¨M¸9ÑEÔE�CØ!&�C”J�J�JøÝð ]ð ]ð ]Ø—’˜Y˜KÐ)PÐSVÔS[Ñ)[Ñ\Ô\Ð\Ð\Ð\Ð\ð]øøøs   Ä9A#G Æ "G Ç)G1Ç0G1r+   )rš   rœ   rŸ   )r>   r?   r¶   rC   rš   rœ   s   `   @@r"   rG   zSubdivisionSet.executeë   s¡   øøø€ Ø”
ˆØ”=ˆàð 	!˜ š
˜
Ø�=Ð àð 	#˜E AšI˜IØ!"Ð"ˆDŒJ˜ð-	]ð -	]ð -	]ð -	]ð -	]ð -	]ð -	]ð^ Ô4ð 	!ð 	!ˆCØˆO˜CÑ Ô Ð Ð àˆ|Ðr$   N)rY   rZ   r[   r\   r]   r^   r_   r   ra   r   rb   rX   rG   rc   r$   r"   r‘   r‘   Ó   s»   € € € € € € Ø3Ð3à(€IØ €HØ˜fÐ%€Jàˆ;ØØ�cØ˜aØð	ñ ô ð ð ñ ð ˆlØØdØðñ ô ð ð ñ ð ð!ð !ñ „[ð!ð<ð <ð <ð <ð <r$   r‘   c                   óŽ   — e Zd ZU dZdZdZddhZ edddd	¬
¦  «        ed<    e	ddd¬¦  «        ed<   dd„Z
ed„ ¦   «         Zd„ ZdS )ÚShapeTransferz@Copy the active shape key of another selected object to this onezobject.shape_key_transferzTransfer Shape Keyr   r   ))ÚOFFSETÚOffsetz$Apply the relative positional offset)ÚRELATIVE_FACEzRelative Facez)Calculate relative position (using faces))ÚRELATIVE_EDGEzRelative Edgez)Calculate relative position (using edges)zTransformation Modez0Relative shape positions to the new shape methodr¹   r{   r-   zClamp OffsetzPClamp the transformation to the distance each vertex moves in the original shapeFr   Ú	use_clampc                 ó$  — d„ }d„ }d„ }ddl m} ddlm}	 |r|dk    rd}|j        }
|j        j        } ||j        j        ¦  «        } ||
j        ¦  «        } ||
j        j	        d         j        ¦  «        }|D �]“}|j
        d	k    r=|                      d
ht          d¦  «                             |j        ¦  «        ¦  «         ŒK|j        }t          |j        ¦  «        t          |
j        ¦  «        k    r=|                      d
ht          d¦  «                             |j        ¦  «        ¦  «         Œ¹ ||j        ¦  «        }|j        r! ||j        j	        d         j        ¦  «        }n ||j        ¦  «        } |||¦  «         d„ |j        j        D ¦   «         }d„ t          t          |
j        ¦  «        ¦  «        D ¦   «         }|dk    rDt!          |¦  «        D ]2\  }}|                     ||         ||         ||         z
  z   ¦  «         Œ3�ny|dk    r‰|
j        D ]€}|j        d d …         }|d         }|d         }|D ]\} |||         ||         ||         ||         ||         ||         ||         ¦  «        }||                              |¦  «         |}|}Œ]Œ�nê|dk    rä|
j        D ]Ü}|j        \  }}||         ||         }!} | |!z
  j        }"| ||         |"z  z   }#|!||         |"z  z   }$||         ||         }&}%|%|&z
  j        }'|%||         |'z  z   }(|&||         |'z  z   }) |||         |!| |#|&|%|(¦  «        }||                              |¦  «          |||         | |!|$|%|&|)¦  «        }||                              |¦  «         ŒÝddlm}* |	j        }+t!          |¦  «        D ]e\  }}|r^ |*|+|¦  «        t          |¦  «        z  },|r3||         ||         z
  j        }-|,||         z
  }.|-|._        ||         |.z   },|,||         d d …<   Œf�Œ•dhS )Nc                 ó   — d„ | D ¦   «         S )Nc                 ó@   — g | ]}|j                              ¦   «         ‘ŒS rc   )ÚnormalÚcopy©rƒ   Úvs     r"   r…   z7ShapeTransfer._main.<locals>.me_nos.<locals>.<listcomp>M  s"   € Ð3Ð3Ð3¨�A”H—M’M‘O”OÐ3Ð3Ð3r$   rc   ©Úvertss    r"   Úme_nosz#ShapeTransfer._main.<locals>.me_nosL  s   € Ø3Ð3¨UÐ3Ñ3Ô3Ð3r$   c                 ó   — d„ | D ¦   «         S )Nc                 ó@   — g | ]}|j                              ¦   «         ‘ŒS rc   )ÚcorÂ   rÃ   s     r"   r…   z7ShapeTransfer._main.<locals>.me_cos.<locals>.<listcomp>P  s"   € Ð/Ð/Ð/ A�A”D—I’I‘K”KÐ/Ð/Ð/r$   rc   rÅ   s    r"   Úme_cosz#ShapeTransfer._main.<locals>.me_cosO  s   € Ø/Ð/¨Ð/Ñ/Ô/Ð/r$   c                 ó  — | j         }|                      d¬¦  «        }t          |j        j        ¦  «        dk    rd|_        |                      d¬¦  «        }||_        t          |j        j        ¦  «        dz
  | _        d| _        d S )NF)Úfrom_mixr•   ÚBasisT)r.   Úshape_key_addÚlenÚ
shape_keysÚ
key_blocksr   Úactive_shape_key_indexÚshow_only_shape_key)Úobr   Úmerˆ   s       r"   Úob_add_shapez)ShapeTransfer._main.<locals>.ob_add_shapeR  sƒ   € Ø”ˆBØ×"Ò"¨EÐ"Ñ2Ô2ˆCÝ�2”=Ô+Ñ,Ô,°Ò1Ð1Ø"�”Ø×&Ò&°Ð&Ñ6Ô6�ØˆCŒHÝ(+¨B¬MÔ,DÑ(EÔ(EÈÑ(IˆBÔ%Ø%)ˆBÔ"Ð"Ð"r$   r   )Úbarycentric_transform©ÚVectorr¹   FÚMESHrh   zSkipping '{:s}', not a meshz%Skipping '{:s}', vertex count differsc                 ó   — g | ]	}|j         ‘Œ
S rc   )rÊ   rÃ   s     r"   r…   z'ShapeTransfer._main.<locals>.<listcomp>„  s   € Ð"PÐ"PÐ"P¨A 1¤4Ð"PÐ"PÐ"Pr$   c                 ó   — g | ]}g ‘ŒS rc   rc   )rƒ   Úis     r"   r…   z'ShapeTransfer._main.<locals>.<listcomp>†  s   € ÐAÐAÐA A˜RÐAÐAÐAr$   r»   éþÿÿÿéÿÿÿÿr¼   )Úreducer+   )Úmathutils.geometryrØ   Ú	mathutilsrÚ   r.   Úactive_shape_keyr   ÚverticesrÑ   rÒ   r4   ro   Úrpt_ÚformatrÐ   r­   Ú	enumeraterŠ   ÚpolygonsÚedgesÚlengthÚ	functoolsrá   Ú__add__)/r>   Úob_actrp   r-   r½   rÇ   rË   r×   rØ   rÚ   rÖ   Úorig_key_nameÚorig_shape_coordsÚorig_normalsÚorig_coordsÚob_otherÚme_otherÚtarget_normalsÚtarget_coordsÚtarget_shape_coordsÚmedian_coordsrÞ   Úvert_cosÚpolyÚidxsÚv_beforerÄ   Úv_afterÚptÚedÚi1Úi2Úv1Úv2Úedge_lengthÚn1locÚn2locÚv1_toÚv2_toÚedlen_toÚn1loc_toÚn2loc_torá   Ú	VectorAddrÊ   Úlen_fromÚofss/                                                  r"   Ú_mainzShapeTransfer._mainJ  s_  € ð	4ð 	4ð 	4ð	0ð 	0ð 	0ð	*ð 	*ð 	*ð 	=Ð<Ð<Ð<Ð<Ð<Ø$Ð$Ð$Ð$Ð$Ð$àð 	˜ Ò)Ð)ØˆIàŒ[ˆØÔ/Ô4ˆà"˜F 6Ô#:Ô#?Ñ@Ô@Ðà�v˜bœkÑ*Ô*ˆð �f˜Rœ]Ô5°aÔ8Ô=Ñ>Ô>ˆàð ]	3ñ ]	3ˆHØŒ} Ò&Ð&Ø—’Ø�KÝÐ6Ñ7Ô7×>Ò>¸x¼}ÑMÔMñô ð ð Ø”}ˆHÝ�8Ô$Ñ%Ô%­¨R¬[Ñ)9Ô)9Ò9Ð9Ø—’Ø�KÝÐ@ÑAÔA×HÒHÈÌÑWÔWñô ð ð à#˜V HÔ$5Ñ6Ô6ˆNØÔ"ð :Ø &  xÔ':Ô'EÀaÔ'HÔ'MÑ NÔ N��à &  xÔ'8Ñ 9Ô 9�àˆL˜ =Ñ1Ô1Ð1ð #QÐ"P°Ô1JÔ1OÐ"PÑ"PÔ"PÐàAÐA­­s°2´;Ñ/?Ô/?Ñ)@Ô)@ÐAÑAÔAˆMð �xÒÐÝ#,¨]Ñ#;Ô#;ð Mð M‘K�A�xØ—O’O M°!Ô$4Ø%6°qÔ%9¸KÈ¼NÑ%Jñ%Lñ Mô Mð Mð MñMð ˜Ò(Ð(ØœKð $ð $�DØœ=¨¨¨Ô+�DØ# Bœx�HØ˜Rœ�AØ#'ð $ð $˜Ø2Ð2Ø-¨aÔ0Ø'¨Ô1Ø'¨œNØ'¨Ô0Ø)¨(Ô3Ø)¨!Ô,Ø)¨'Ô2ñô ˜ð & aÔ(×/Ò/°Ñ3Ô3Ð3Ø#$˜Ø#˜˜ð$ð	$ð$ ˜Ò(Ð(Øœ(ð 1ð 1�BØœ[‘F�B˜Ø(¨œ_¨k¸"¬o˜�BØ#%¨¡7Ô"2�KØ ¨bÔ!1°KÑ!?Ñ?�EØ ¨bÔ!1°KÑ!?Ñ?�Eð $1°Ô#4°mÀBÔ6G˜5�EØ %¨¡Ô5�HØ$ ~°bÔ'9¸HÑ'DÑD�HØ$ ~°bÔ'9¸HÑ'DÑD�Hà.Ð.Ð/@ÀÔ/DØ/1°2°uØ/4°e¸XñGô G�Bð " "Ô%×,Ò,¨RÑ0Ô0Ð0à.Ð.Ð/@ÀÔ/DØ/1°2°uØ/4°e¸XñGô G�Bð " "Ô%×,Ò,¨RÑ0Ô0Ð0Ð0ð )Ð(Ð(Ð(Ð(Ð(ØœˆIå(¨Ñ7Ô7ð 3ð 3‘��8Øð 3Ø˜ 	¨8Ñ4Ô4µs¸8±}´}ÑD�Bà ð 4ð %6°aÔ$8¸;Àq¼>Ñ$IÔ#Q˜Ø  =°Ô#3Ñ3˜Ø%-˜œ
Ø*¨1Ô-°Ñ3˜à02Ð'¨Ô*¨1¨1¨1Ñ-øñ3ð ˆ|Ðr$   c                 ó*   — |j         }|o
|j        dk    S )Nr*   )Úactive_objectr-   rV   s      r"   rX   zShapeTransfer.pollÍ  ó   € àÔ#ˆØÐ*˜œ FÒ*Ð+r$   c                 ó|  ‡— |j         Šˆfd„|j        D ¦   «         }	 t          |¦  «        dk    r|                      dhd¦  «         dhS |d         ‰gcŠ}‰j        dk    r|                      dhd¦  «         dhS ‰j        €|                      dhd	¦  «         dhS |                      ‰|| j        | j        ¦  «        S )
Nc                 ó    •— g | ]
}|‰k    ¯|‘ŒS rc   rc   )rƒ   rÕ   rî   s     €r"   r…   z)ShapeTransfer.execute.<locals>.<listcomp>Ô  s*   ø€ ð 
ð 
ð 
ØØ�VŠ|ˆ|ð Øˆ|ˆ|r$   r•   ÚERRORz4Expected one other selected mesh object to copy fromri   r   rÛ   zOther object is not a meshzOther object has no shape key)	r  rŸ   rÐ   ro   r4   rä   r  r-   r½   )r>   r?   rp   rî   s      @r"   rG   zShapeTransfer.executeÒ  sì   ø€ ØÔ&ˆð
ð 
ð 
ð 
Ø Ô:ð
ñ 
ô 
ˆð
	3Ý�7‰|Œ|˜qÒ Ð Ø—’˜W˜IÐ']Ñ^Ô^Ð^Ø#�}Ð$Ø% aœj¨6¨(ˆOˆF�GàŒ;˜&Ò Ð Ø�KŠK˜˜	Ð#?Ñ@Ô@Ð@Ø�=Ð àÔ"Ð*Ø�KŠK˜˜	Ð#BÑCÔCÐCØ�=Ð Ø�zŠz˜& '¨4¬9°d´nÑEÔEÐEr$   N)r¹   F)rY   rZ   r[   r\   r]   r^   r_   r   ra   r   r  rb   rX   rG   rc   r$   r"   r¸   r¸   *  sÙ   € € € € € € ØJÐJà+€IØ#€HØ˜fÐ%€Jà
ˆ,ð
ð #ØFØð#ñ ô ð ð ñ ð& ˆ|ØØfØðñ ô ð ð ñ ðAð Að Að AðF ð,ð ,ñ „[ð,ðFð Fð Fð Fð Fr$   r¸   c                   óD   — e Zd ZdZdZdZddhZed„ ¦   «         Zd„ Z	d„ Z
d	S )
ÚJoinUVszJTransfer UV Maps from active to selected objects (needs matching geometry)zobject.join_uvszTransfer UV Mapsr   r   c                 ó*   — |j         }|o
|j        dk    S )NrÛ   )r  r4   rV   s      r"   rX   zJoinUVs.pollð  r  r$   c                 ó<  — dd l }|j        }|j        }|j        dk    }|r&t          j        j                             dd¬¦  «         |j        sD|  	                    dht          d¦  «                             |j        |j        ¦  «        ¦  «         �nát          |j        ¦  «        }|                      dd	gd
z  ¦  «        |z  }|j        j        j                             d|¦  «         |j        d d …         }|D ]}	|	j        dk    rd|	j        _        Œ|D �]\}	|	|k    r|	j        dk    sŒ|	j        }
|
|k    rŒ#|
j        du rŒ-d|
_        t          |
j        ¦  «        |k    rj|  	                    dht          d¦  «                             |	j        |
j        t          |
j        ¦  «        t          |
j        ¦  «        |¦  «        ¦  «         Œ¶|
j        j        }|si|
j                             ¦   «          |
j        j        }|sB|  	                    dht          d¦  «                             |	j        |
j        ¦  «        ¦  «         |j                             d|¦  «         |
                     ¦   «          �Œ^|r(t          j        j                             dd¬¦  «         d S d S )Nr   r*   rU   F)r-   Útogglerh   z%Object: {:s}, Mesh: '{:s}' has no UVsÚfç        é   ÚuvrÛ   TzIObject: {:s}, Mesh: '{:s}' has {:d} loops (for {:d} faces), expected {:d}r  z9Could not add a new UV map to object '{:s}' (Mesh '{:s}'))Úarrayr  r.   r-   r0   r1   r,   Úmode_setÚ	uv_layersro   ræ   rç   r   rÐ   Úloopsrq   Úforeach_getrŸ   r4   Útagré   r±   Úforeach_setÚupdate)r>   r?   r  rC   ÚmeshÚis_editmodeÚ	nbr_loopsÚuv_arrayrp   Ú	obj_otherÚ
mesh_otherÚuv_others               r"   r  zJoinUVs._mainõ  sÓ  € ØˆˆˆØÔ#ˆØŒxˆà”x 6Ò)ˆØð 	AÝŒGŒN×#Ò#¨¸%Ð#Ñ@Ô@Ð@àŒ~ð ;	(Ø�KŠKØ�ÝÐ<Ñ=Ô=×DÒDÀSÄXÈtÌyÑYÔYñô ð ñ õ
 ˜DœJ™œˆIð —{’{ 3¨¨°©	Ñ2Ô2°YÑ>ˆHØŒNÔ!Ô&×2Ò2°4¸ÑBÔBÐBàÔ7¸¸¸Ô:ˆGà$ð /ð /�	Ø”> VÒ+Ð+Ø).�I”NÔ&øà$ð )(ñ )(�	Ø! SÒ(Ð(¨Y¬^¸vÒ-EÐ-EØØ&œ^�
Ø Ò%Ð%ØØ”> TÐ)Ð)Øà!%�
”Ý�zÔ'Ñ(Ô(¨IÒ5Ð5Ø—K’KØ"˜ÝØgñô ç š&Ø%œNØ&œOÝ 
Ô 0Ñ1Ô1Ý 
Ô 3Ñ4Ô4Ø%ñô ñ	ô ð ð ð  *Ô3Ô:�HØ#ð Ø"Ô,×0Ò0Ñ2Ô2Ð2Ø#-Ô#7Ô#>˜Ø'ð 	Ø ŸKšKØ!( 	Ý $Ø$_ñ!"ô !"ç"(¢&Ø$-¤NØ$.¤Oñ#"ô #"ñ	ô ð ð ”M×-Ò-¨d°HÑ=Ô=Ð=Ø×%Ò%Ñ'Ô'Ð'Ñ'àð 	?ÝŒGŒN×#Ò#¨¸Ð#Ñ>Ô>Ð>Ð>Ð>ð	?ð 	?r$   c                 ó2   — |                       |¦  «         dhS ©Nr+   ©r  ©r>   r?   s     r"   rG   zJoinUVs.execute>  ó   € Ø�
Š
�7ÑÔÐØˆ|Ðr$   N)rY   rZ   r[   r\   r]   r^   r_   rb   rX   r  rG   rc   r$   r"   r  r  é  sm   € € € € € ð(ð (à!€IØ!€HØ˜fÐ%€Jàð,ð ,ñ „[ð,ðG?ð G?ð G?ðRð ð ð ð r$   r  c                   ó>   — e Zd ZdZdZdZddhZed„ ¦   «         Zd„ Z	dS )	ÚMakeDupliFacez$Convert objects into instanced faceszobject.make_dupli_facezMake Instance Facer   r   c           	      ó  ‡‡— ddl m} ddlm} d}d|z  } || | df¦  «         ||
 | df¦  «         ||
 |
 df¦  «         || |
 df¦  «        fŠˆfd„Š |t          ¦  «        }| j        D ]k}|j        dk    r!||j                                      |¦  «         Œ.|j        d	k    r2|j	        d
k    r'|j
        r ||j
                                      |¦  «         Œl|                     ¦   «         D �]˜\  }}ˆfd„|D ¦   «         }	t          |	¦  «        dz  }
|
dz  }t	          t          |
¦  «        ¦  «        }t          j        j                             |j        dz   ¦  «        }|j                             |
¦  «         |j                             |dz  ¦  «         |j                             |¦  «         |j                             d|	¦  «         |j                             d|¦  «         |j                             dt          d|dz  d¦  «        ¦  «         |                     ¦   «          t          j        j                             |j        |¦  «        }| j        j                             |¦  «         t          |¦  «        t          j        j        u r9t          j        j                             |j        d ¦  «        }d
|_	        ||_
        n*t          j        j                             |j        |¦  «        }| j        j                             |¦  «         d|_	        ||_        d|_        d|z  |_        |                      d¦  «         |                      d¦  «         |D ]&}|j!        D ]}|j         "                    |¦  «         ŒŒ'�Œšd S )Nr   rÙ   )Údefaultdictg{®Gáz„?g      à?r  c                 óv   •‡‡— |                       ¦   «         Š|                      ¦   «         Šˆˆfd„‰D ¦   «         S )Nc                 ó    •— g | ]
}‰|z  ‰z   ‘ŒS rc   rc   )rƒ   r    ÚrotÚtranss     €€r"   r…   z?MakeDupliFace._main.<locals>.matrix_to_quad.<locals>.<listcomp>[  s"   ø€ Ð8Ð8Ð8¨!�S˜1‘W Ñ%Ð8Ð8Ð8r$   )Úto_translationÚto_3x3)Úmatrixr9  r:  Úbase_tris    @@€r"   Úmatrix_to_quadz+MakeDupliFace._main.<locals>.matrix_to_quadV  s@   øøø€ à×)Ò)Ñ+Ô+ˆEØ—-’-‘/”/ˆCà8Ð8Ð8Ð8Ð8¨xÐ8Ñ8Ô8Ð8r$   rÛ   ÚEMPTYÚ
COLLECTIONc                 óD   •— g | ]} ‰|j         ¦  «        D ]	}|D ]}|‘ŒŒ
ŒS rc   )Úmatrix_world)rƒ   rC   rÄ   Úaxisr?  s       €r"   r…   z'MakeDupliFace._main.<locals>.<listcomp>d  sb   ø€ ð ð ð ØØ'˜¨Ô(8Ñ9Ô9ðð àØðð ð ð ðð ð ð ð r$   é   é   Ú_duplirÊ   Úvertex_indexÚ
loop_startÚFACESTç      ð?)#rã   rÚ   Úcollectionsr6  Úlistr‰   r4   r.   rŠ   Úinstance_typeÚinstance_collectionrD   rÐ   r­   r0   Úmeshesr±   r   rå   Úaddr"  ré   r%  r&  rp   Ú
collectionÚlinkÚtypesÚ
Collectionr<   Úuse_instance_faces_scaleÚinstance_faces_scaler=   Úusers_collectionÚunlink)r?   rÚ   r6  Ú	SCALE_FACÚoffsetÚlinkedrC   r.   rp   Ú
face_vertsÚ	nbr_vertsÚ	nbr_facesÚfacesr'  Úob_newÚob_instrR  r>  r?  s                    @@r"   r  zMakeDupliFace._mainI  sÉ  øø€ à$Ð$Ð$Ð$Ð$Ð$Ø+Ð+Ð+Ð+Ð+Ð+àˆ	Ø�y‘ˆØ�F˜V˜G f W¨cÐ2Ñ3Ô3Ø�F˜V˜G f W¨cÐ2Ñ3Ô3Ø�F˜V˜G f W¨cÐ2Ñ3Ô3Ø�F˜V˜G f W¨cÐ2Ñ3Ô3ðˆð	9ð 	9ð 	9ð 	9ð 	9ð ��TÑ"Ô"ˆØÔ+ð 	<ð 	<ˆCØŒx˜6Ò!Ð!Ø�s”xÔ ×'Ò'¨Ñ,Ô,Ð,Ð,Ø”˜WÒ$Ð$¨Ô):¸lÒ)JÐ)JÈsÔOfÐ)JØ�sÔ.Ô/×6Ò6°sÑ;Ô;Ð;øà#Ÿ\š\™^œ^ð +	3ñ +	3‰MˆD�'ðð ð ð Ø 'ðñ ô ˆJõ
 ˜J™œ¨1Ñ,ˆIØ! Q™ˆIå�˜yÑ)Ô)Ñ*Ô*ˆEå”8”?×&Ò& t¤y°8Ñ';Ñ<Ô<ˆDàŒM×Ò˜iÑ(Ô(Ð(ØŒJ�NŠN˜9 q™=Ñ)Ô)Ð)ØŒM×Ò˜iÑ(Ô(Ð(àŒM×%Ò% d¨JÑ7Ô7Ð7ØŒJ×"Ò" >°5Ñ9Ô9Ð9ØŒM×%Ò% lµE¸!¸YÈ¹]ÈAÑ4NÔ4NÑOÔOÐOØ�KŠK‰MŒMˆMå”XÔ%×)Ò)¨$¬)°TÑ:Ô:ˆFØÔÔ&×+Ò+¨FÑ3Ô3Ð3å�D‰zŒz�SœYÔ1Ð1Ð1Ýœ(Ô*×.Ò.¨t¬y¸$Ñ?Ô?�Ø(4�Ô%Ø.2�Ô+Ð+åœ(Ô*×.Ò.¨t¬y¸$Ñ?Ô?�ØÔÔ&×+Ò+¨GÑ4Ô4Ð4à#*ˆFÔ Ø#ˆGŒNØ.2ˆFÔ+Ø*-°	©/ˆFÔ'à×Ò˜tÑ$Ô$Ð$Ø×Ò˜dÑ#Ô#Ð#àð 3ð 3�Ø"%Ô"6ð 3ð 3�JØÔ&×-Ò-¨cÑ2Ô2Ð2Ð2ð3ñ3ðS+	3ð +	3r$   c                 ó2   — |                       |¦  «         dhS r/  r0  r1  s     r"   rG   zMakeDupliFace.execute�  r2  r$   N)
rY   rZ   r[   r\   r]   r^   r_   Ústaticmethodr  rG   rc   r$   r"   r4  r4  C  sZ   € € € € € Ø.Ð.Ø(€IØ#€HØ˜fÐ%€JàðD3ð D3ñ „\ðD3ðLð ð ð ð r$   r4  c                   ó>   — e Zd ZdZdZdZddhZed„ ¦   «         Zd„ Z	dS )	ÚIsolateTypeRenderzUHide unselected render objects of same type as active by setting the hide render flagzobject.isolate_type_renderzRestrict Render Unselectedr   r   c                 ó   — |j         }|d uS r   r~   )rW   r?   rÕ   s      r"   rX   zIsolateTypeRender.pollœ  s   € àŒ^ˆØ˜$�Ðr$   c                 ó�   — |j         j        }|j        D ]0}|                     ¦   «         rd|_        Œ|j        |k    rd|_        Œ1dhS )NFTr+   )r,   r4   r7   Ú
select_getÚhide_render)r>   r?   Úact_typerC   s       r"   rG   zIsolateTypeRender.execute¡  sV   € Ø”>Ô&ˆàÔ*ð 	+ð 	+ˆCà�~Š~ÑÔð +Ø"'�”�à”8˜xÒ'Ð'Ø&*�C”Oøàˆ|Ðr$   N©
rY   rZ   r[   r\   r]   r^   r_   rb   rX   rG   rc   r$   r"   rf  rf  •  sZ   € € € € € ð.ð .à,€IØ+€HØ˜fÐ%€Jàð ð  ñ „[ð ðð ð ð ð r$   rf  c                   ó(   — e Zd ZdZdZdZddhZd„ ZdS )ÚClearAllRestrictRenderz9Reveal all render objects by setting the hide render flagzobject.hide_render_clear_allzClear All Restrict Renderr   r   c                 ó4   — |j         j        D ]	}d|_        Œ
dhS )NFr+   )rj   rp   rj  ©r>   r?   rC   s      r"   rG   zClearAllRestrictRender.executeµ  s'   € Ø”=Ô(ð 	$ð 	$ˆCØ#ˆCŒOˆOØˆ|Ðr$   N©rY   rZ   r[   r\   r]   r^   r_   rG   rc   r$   r"   rn  rn  ¯  s=   € € € € € ØCÐCØ.€IØ*€HØ˜fÐ%€Jðð ð ð ð r$   rn  c                   ó˜   — e Zd ZU dZdZdZddhZ edddd	¬
¦  «        ed<    e	ddd¬¦  «        ed<   e
d„ ¦   «         Zd„ Zd„ Zd„ Zd„ ZdS )ÚTransformsToDeltaszlConvert normal object transforms to delta transforms, any existing delta transforms will be included as wellzobject.transforms_to_deltaszTransforms to Deltasr   r   ))ÚALLzAll Transformsz1Transfer location, rotation, and scale transforms)ÚLOCÚLocationz!Transfer location transforms only)ÚROTÚRotationz!Transfer rotation transforms only)ÚSCALEÚScalezTransfer scale transforms onlyÚModezWhich transforms to transferrt  r{   r-   zReset Valuesz3Clear transform values after transferring to deltasTr   Úreset_valuesc                 ó   — |j         }|d uS r   rž   r    s      r"   rX   zTransformsToDeltas.pollÓ  r¢   r$   c                 óÐ   — |j         D ]\}| j        dv r|                      |¦  «         | j        dv r|                      |¦  «         | j        dv r|                      |¦  «         Œ]dhS )N>   rt  ru  >   rt  rw  >   rt  ry  r+   )rŸ   r-   Útransfer_locationÚtransfer_rotationÚtransfer_scalerp  s      r"   rG   zTransformsToDeltas.executeØ  s�   € ØÔ4ð 	)ð 	)ˆCØŒy˜NÐ*Ð*Ø×&Ò& sÑ+Ô+Ð+àŒy˜NÐ*Ð*Ø×&Ò& sÑ+Ô+Ð+àŒyÐ,Ð,Ð,Ø×#Ò# CÑ(Ô(Ð(øàˆ|Ðr$   c                 ót   — |xj         |j        z  c_         | j        r|j                             ¦   «          d S d S r   )Údelta_locationÚlocationr|  Úzero©r>   rC   s     r"   r  z$TransformsToDeltas.transfer_locationå  sG   € ØÐÔ˜cœlÑ*ÐÔàÔð 	 ØŒL×ÒÑÔÐÐÐð	 ð 	 r$   c                 ó¾  — |j         dk    rc|j                             ¦   «         }|j        |_        |j                             |¦  «         | j        r|j                             ¦   «          d S d S |j         dk    rd S |j                             ¦   «         }|j        |_        |j                             |¦  «         | j        r|j         	                    ¦   «          d S d S )NÚ
QUATERNIONÚ
AXIS_ANGLE)
Úrotation_modeÚdelta_rotation_quaternionrÂ   Úrotation_quaternionÚrotater|  ÚidentityÚdelta_rotation_eulerÚrotation_eulerr…  )r>   rC   Údeltas      r"   r€  z$TransformsToDeltas.transfer_rotationë  sï   € àÔ Ò,Ð,ØÔ1×6Ò6Ñ8Ô8ˆEØ,/Ô,CˆCÔ)ØÔ)×0Ò0°Ñ7Ô7Ð7àÔ ð 3ØÔ'×0Ò0Ñ2Ô2Ð2Ð2Ð2ð3ð 3àÔ ,Ò.Ð.ØˆDàÔ,×1Ò1Ñ3Ô3ˆEØ'*Ô'9ˆCÔ$ØÔ$×+Ò+¨EÑ2Ô2Ð2àÔ ð *ØÔ"×'Ò'Ñ)Ô)Ð)Ð)Ð)ð*ð *r$   c                 óð   — |j         dxx         |j        d         z  cc<   |j         dxx         |j        d         z  cc<   |j         dxx         |j        d         z  cc<   | j        rd|j        d d …<   d S d S )Nr   r•   r  )r•   r•   r•   )Údelta_scaleÚscaler|  r†  s     r"   r�  z!TransformsToDeltas.transfer_scaleþ  s–   € ØŒ˜ÐÐÔ˜cœi¨œlÑ*ÐÐÑØŒ˜ÐÐÔ˜cœi¨œlÑ*ÐÐÑØŒ˜ÐÐÔ˜cœi¨œlÑ*ÐÐÑàÔð 	%Ø$ˆCŒI�a�a�a‰LˆLˆLð	%ð 	%r$   N)rY   rZ   r[   r\   r]   r^   r_   r   ra   r   rb   rX   rG   r  r€  r�  rc   r$   r"   rs  rs  »  sî   € € € € € € ðEð Eà-€IØ%€HØ˜fÐ%€Jà
ˆ,ð
ð Ø2Øð
ñ 
ô 
ð 
ð 
ñ 
ð �,ØØJØðñ ô ð ð ñ ð ð!ð !ñ „[ð!ðð ð ð ð  ð  ð*ð *ð *ð&%ð %ð %ð %ð %r$   rs  c                   ó>   — e Zd ZdZdZdZddhZed„ ¦   «         Zd„ Z	dS )	ÚTransformsToDeltasAnimzBConvert object animation for normal transforms to delta transformsz object.anim_transforms_to_deltaszAnimated Transforms to Deltasr   r   c                 ó   — |j         }|d uS r   rž   r    s      r"   rX   zTransformsToDeltasAnim.poll  r¢   r$   c           	      óÜ  — dddddœ}|                      ¦   «         }|j        D �]¢}|j        }|�|j        €=|                      dht          d¦  «                             |j        ¦  «        ¦  «         ŒPi }|j        j        D ]—}|j	        }||v r	||         }	n||v r|}	nŒ|	|v rj|j
        ||	         v rD|                      dht          d	¦  «                             |j        |	¦  «        ¦  «         d
hc c S ||	xx         |j
        gz  cc<   ŒŒ|j
        g||	<   Œ˜|j        j        D ]Ÿ}|j	        dk    r!d|_	        |j                             ¦   «          Œ.|j	        dk    r!d|_	        |j                             ¦   «          ŒZ|j	        dk    r!d|_	        |j                             ¦   «          Œ†|j	        dk    rd|_	        d|_        Œ �Œ¤|j                             |j        j        ¦  «         dhS )Nrƒ  r�  r‹  r“  )r„  r�  rŒ  r”  rh   z,No animation data to convert on object: {!r}r  zIObject {!r} already has {!r} F-Curve(s). Remove these before trying againri   r„  r�  rŒ  r”  )rK  rK  rK  r+   )ÚvaluesrŸ   Úanimation_datar(   ro   ræ   rç   r   ÚfcurvesÚ	data_pathÚarray_indexr„  r…  r�  rŒ  rŽ  r”  rj   Ú	frame_setÚframe_current)
r>   r?   ÚSTANDARD_TO_DELTA_PATHSÚDELTA_PATHSrC   ÚadtÚexistingFCurvesÚfcuÚpathÚdpaths
             r"   rG   zTransformsToDeltasAnim.execute  sz  € ð )Ø4Ø#>à"ð#
ð #
Ðð .×4Ò4Ñ6Ô6ˆð Ô4ð >	.ñ >	.ˆCØÔ$ˆCØ� ¤Ð!3Ø—’Ø�KÝÐGÑHÔH×OÒOÐPSÔPXÑYÔYñô ð ð ð !ˆOØ”zÔ)ð ?ð ?�à”}�ØÐ2Ð2Ð2à3°DÔ9�E�EØ˜[Ð(Ð(à �E�Eð ð ˜OÐ+Ð+à”¨/¸%Ô*@Ð@Ð@àŸšØ$˜IÝ ð!Cñô ÷ %šf S¤X¨uÑ5Ô5ñ7ô 7ð 7ð !,˜}Ð,Ð,Ð,Ð,Ð,ð (¨Ð.Ð.Ô.°3´?Ð2CÑCÐ.Ð.Ñ.Ð.ð /2¬oÐ->�O EÑ*Ð*ð ”zÔ)ð .ð .�Ø”= JÒ.Ð.Ø$4�C”MØ”L×%Ò%Ñ'Ô'Ð'Ð'Ø”]Ð&6Ò6Ð6Ø$:�C”MØÔ&×+Ò+Ñ-Ô-Ð-Ð-Ø”]Ð&;Ò;Ð;Ø$?�C”MØÔ+×4Ò4Ñ6Ô6Ð6Ð6ð ”] gÒ-Ð-Ø$1�C”MØ -�C”Iøñ.ð$ 	Œ×Ò ¤Ô ;Ñ<Ô<Ð<àˆ|Ðr$   Nrl  rc   r$   r"   r–  r–    s[   € € € € € ØLÐLØ2€IØ.€HØ˜fÐ%€Jàð!ð !ñ „[ð!ðOð Oð Oð Oð Or$   r–  c                   ó(   — e Zd ZdZdZdZddhZd„ ZdS )ÚDupliOffsetFromCursorzASet offset used for collection instances based on cursor positionz"object.instance_offset_from_cursorzSet Offset from CursorÚINTERNALr   c                 óF   — |j         }|j        }|j        j        |_        dhS r/  )rj   rR  Úcursorr„  Úinstance_offset©r>   r?   rj   rR  s       r"   rG   zDupliOffsetFromCursor.executej  s&   € Ø”ˆØÔ'ˆ
à%*¤\Ô%:ˆ
Ô"àˆ|Ðr$   Nrq  rc   r$   r"   r¨  r¨  d  s=   € € € € € ØKÐKØ4€IØ'€HØ˜fÐ%€Jðð ð ð ð r$   r¨  c                   ó(   — e Zd ZdZdZdZddhZd„ ZdS )ÚDupliOffsetToCursorz?Set cursor position to the offset used for collection instancesz object.instance_offset_to_cursorzSet Cursor to Offsetr©  r   c                 óF   — |j         }|j        }|j        |j        _        dhS r/  )rj   rR  r¬  r«  r„  r­  s       r"   rG   zDupliOffsetToCursor.executey  s&   € Ø”ˆØÔ'ˆ
Ø *Ô :ˆŒÔØˆ|Ðr$   Nrq  rc   r$   r"   r¯  r¯  s  s=   € € € € € ØIÐIØ2€IØ%€HØ˜fÐ%€Jðð ð ð ð r$   r¯  c                   ó>   — e Zd ZdZdZdZddhZed„ ¦   «         Zd„ Z	dS )	ÚDupliOffsetFromObjectzLSet offset used for collection instances based on the active object positionz"object.instance_offset_from_objectzSet Offset from Objectr©  r   c                 ó   — |j         d uS r   )r  r   s     r"   rX   zDupliOffsetFromObject.poll†  s   € àÔ%¨TÐ1Ð2r$   c                 óž   — |j                              |j        j        ¦  «        }|j                             ¦   «         }|j        }||_        dhS r/  )r  Úevaluated_getrk   Ú	depsgraphrC  r;  rR  r¬  )r>   r?   Úob_evalÚ	world_locrR  s        r"   rG   zDupliOffsetFromObject.executeŠ  sJ   € ØÔ'×5Ò5°gÔ6HÔ6RÑSÔSˆØÔ(×7Ò7Ñ9Ô9ˆ	ØÔ'ˆ
Ø%.ˆ
Ô"Øˆ|Ðr$   Nrl  rc   r$   r"   r²  r²  €  sV   € € € € € ØVÐVØ4€IØ'€HØ˜fÐ%€Jàð3ð 3ñ „[ð3ðð ð ð ð r$   r²  c                   ó–   — e Zd ZU dZdZdZddhZ edd¬¦  «        ed	<    ed
d¬¦  «        ed<   e	d„ ¦   «         Z
ed„ ¦   «         Zd„ ZdS )Ú"OBJECT_OT_assign_property_defaultsz|Assign the current values of custom properties as their defaults, for use as part of the rest pose state in NLA track mixingzobject.assign_property_defaultsz(Assign Custom Property Values as Defaultr   r   zProcess data propertiesT)r   r   Úprocess_datazProcess bone propertiesÚprocess_bonesc                 ó8   — |j         }|d uo|j        o|j        dv S )N>   r%   rU   )r  Úis_editabler-   rV   s      r"   rX   z'OBJECT_OT_assign_property_defaults.pollœ  s(   € àÔ#ˆØ˜$ˆÐU 3¤?ÐU°s´xÐCUÐ7UÐUr$   c                 ó”   — ddl m} d„ | j        j        D ¦   «         }|                      ¦   «         D ]\  }}||vr || ||¦  «         Œd S )Nr   )Úrna_idprop_ui_prop_default_setc                 ó*   — h | ]}|j         ¯	|j        ’ŒS rc   )Ú
is_runtimeÚ
identifier)rƒ   rP   s     r"   ú	<setcomp>zEOBJECT_OT_assign_property_defaults.assign_defaults.<locals>.<setcomp>¥  s!   € Ð_Ð_Ð_¨dÈtÌÐ_˜$œ/Ð_Ð_Ð_r$   )Úrna_prop_uirÀ  Úbl_rnaÚ
propertiesrD   )rC   rÀ  Úrna_propertiesrP   Úvalues        r"   Úassign_defaultsz2OBJECT_OT_assign_property_defaults.assign_defaults¡  sv   € à>Ð>Ð>Ð>Ð>Ð>à_Ð_°c´jÔ6KÐ_Ñ_Ô_ˆàŸ9š9™;œ;ð 	Að 	A‰KˆD�%Ø˜>Ð)Ð)Ø.Ð.¨s°D¸%Ñ@Ô@Ð@øð	Að 	Ar$   c                 óª  — |j         }|                      |¦  «         | j        r+|j        r$|j        j        D ]}|                      |¦  «         Œ| j        r||j        ru|j        j        ri|                      |j        ¦  «         | j        rHt          |j        t          j
        j        ¦  «        r$|j        j        D ]}|                      |¦  «         ŒdhS r/  )r  rÊ  r¼  r2   r/   r»  r.   r¾  Ú
isinstancer0   rT  ÚArmature)r>   r?   rC   ÚpboneÚbones        r"   rG   z*OBJECT_OT_assign_property_defaults.execute«  sç   € ØÔ#ˆà×Ò˜SÑ!Ô!Ð!àÔð 	, #¤(ð 	,Øœœð ,ð ,�Ø×$Ò$ UÑ+Ô+Ð+Ð+àÔð 	/ ¤ð 	/¨c¬hÔ.Bð 	/Ø× Ò  ¤Ñ*Ô*Ð*àÔ!ð /¥j°´½3¼9Ô;MÑ&NÔ&Nð /ØœHœNð /ð /�DØ×(Ò(¨Ñ.Ô.Ð.Ð.àˆ|Ðr$   N)rY   rZ   r[   r\   r]   r^   r_   r   ra   rb   rX   rd  rÊ  rG   rc   r$   r"   rº  rº  ’  s·   € € € € € € ðIð Ià1€IØ9€HØ˜*Ð%€Jà�,Ð$=ÀtÐLÑLÔLÐLÐLÑLØ�<Ð%>ÈÐMÑMÔMÐMÐMÑMàðVð Vñ „[ðVð ðAð Añ „\ðAðð ð ð ð r$   rº  )r0   Ú	bpy.typesr   Ú	bpy.propsr   r   r   r   Úbpy.app.translationsr   ræ   r
   re   rt   r‘   r¸   r  r4  rf  rn  rs  r–  r¨  r¯  r²  rº  Úclassesrc   r$   r"   ú<module>rÔ     s|  ðð
 €
€
€
Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð 6Ð 5Ð 5Ð 5Ð 5Ð 5ðWOð WOð WOð WOð WO�Hñ WOô WOð WOðt!ð !ð !ð !ð !�8ñ !ô !ð !ðHBð Bð Bð Bð B�hñ Bô Bð BðJTð Tð Tð Tð T�Xñ Tô Tð Tðn|Fð |Fð |Fð |Fð |F�Hñ |Fô |Fð |Fð~Wð Wð Wð Wð Wˆhñ Wô Wð WðtOð Oð Oð Oð O�Hñ Oô Oð Oðdð ð ð ð ˜ñ ô ð ð4	ð 	ð 	ð 	ð 	˜Xñ 	ô 	ð 	ðI%ð I%ð I%ð I%ð I%˜ñ I%ô I%ð I%ðXZð Zð Zð Zð Z˜Xñ Zô Zð Zðzð ð ð ð ˜Hñ ô ð ð
ð 
ð 
ð 
ð 
˜(ñ 
ô 
ð 
ðð ð ð ð ˜Hñ ô ð ð$)ð )ð )ð )ð )¨ñ )ô )ð )ðZ ØØØØØØØØØØØØØØ&ð€€€r$   