§
    Þ)g¾r  ã                  óÞ  — d dl mZ 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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d„ 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¦  «        Z G d„ dee¦  «        Z G d„ d ee¦  «        ZeeeeeeeeeeeefZdS )!é    )ÚannotationsN)ÚOperator)ÚIntPropertyÚBoolPropertyÚEnumPropertyÚStringProperty)Úpgettext_rptÚcontextsc                  óP   — e Zd ZU dZdZdZded<   ded<   ded	<   d
ed<   d„ Zd„ ZdS )ÚANIM_OT_keying_set_exportz$Export Keying Set to a Python scriptzanim.keying_set_exportzExport Keying Set...z#StringProperty(subtype='FILE_PATH')ÚfilepathzEBoolProperty(name='Filter folders', default=True, options={'HIDDEN'})Úfilter_folderzBBoolProperty(name='Filter text', default=True, options={'HIDDEN'})Úfilter_textzDBoolProperty(name='Filter Python', default=True, options={'HIDDEN'})Úfilter_pythonc           	     ó€  — ddl m} | j        st          d¦  «        ‚t	          | j        dd¬¦  «        }|st          d¦  «        ‚|j        }|j        j        }|                     d 	                    |j
        ¦  «        ¦  «         |                     d	¦  «         |                     d
¦  «         |                     d¦  «         |                     d 	                    |j
        |j        ¦  «        ¦  «         |                     d 	                    |j        ¦  «        ¦  «         |                     d¦  «         |                     d 	                    |j        ¦  «        ¦  «         |                     d 	                    |j        ¦  «        ¦  «         |                     d¦  «         i }|j        D �]”}|j        €Œ|j        |v rŒ|j        j        j                             d¦  «        réd}d}	t(          j        j        D ]9}
|
j        |j        k    r'd 	                     ||
j        ¦  «        ¦  «        }d}	 nŒ:|	sKt(          j        j        D ]9}|j        |j        k    r'd 	                     ||j        ¦  «        ¦  «        }d}	 nŒ:|	sI|                      dht7          d¦  «         	                    t9          |j        ¦  «        ¦  «        ¦  «         �nD|j        j        j                             d¦  «        r“t(          j        j        D ]7}|j        |j        k    r%d 	                     ||j        ¦  «        ¦  «        } nJŒ8|                      dht7          d¦  «         	                    t9          |j        ¦  «        ¦  «        ¦  «         n�|j        j        j        dk    r)d 	                     ||j        j        ¦  «        ¦  «        }nO|j        j        j                             ¦   «         dz   }d 	                    | ||j        j        ¦  «        ¦  «        }d  	                    t?          |¦  «        ¦  «        }||g||j        <   �Œ–|                     d!¦  «         |                      ¦   «         D ]7}|                     d" 	                    |d         |d#         ¦  «        ¦  «         Œ8|                     d¦  «         |                     d$¦  «         |j        D �]9}|                     d%¦  «         |j        r||j                 d         }nd&}|                     d' 	                    ||j!        ¦  «        ¦  «         |j"        r|                     d(¦  «         n-|                     d) 	                    |j#        ¦  «        ¦  «         |j$        d*k    r4|                     d+ 	                    |j$        |j%        ¦  «        ¦  «         n8|j$        d,k    r-|                     d- 	                    |j$        ¦  «        ¦  «         |                     d.¦  «         �Œ;|                     d¦  «         | &                    ¦   «          d/hS )0Nr   )Úescape_identifierzFilepath not setÚwÚutf8)ÚencodingzCould not open filez# Keying Set: {:s}
zimport bpy

zscene = bpy.context.scene

z # Keying Set Level declarations
z3ks = scene.keying_sets.new(idname={!r}, name={!r})
zks.bl_description = {!r}
ú
zks.use_insertkey_needed = {!r}
zks.use_insertkey_visual = {!r}
ÚShaderNodeTreezbpy.data.nodes["{:s}"]Fz$bpy.data.materials["{:s}"].node_treeTz!bpy.data.lights["{:s}"].node_treeÚWARNz>Could not find material or light using Shader Node Tree - {:s}ÚCompositorNodeTreez!bpy.data.scenes["{:s}"].node_treez6Could not find scene using Compositor Node Tree - {:s}ÚKeyzbpy.data.shape_keys["{:s}"]Úszbpy.data.{:s}["{:s}"]zid_{:d}z# ID's that are commonly used
z{:s} = {:s}
é   z# Path Definitions
zksp = ks.paths.add(ÚNonez
{:s}, {!r}z
, index=-1z, index={:d}ÚNAMEDz$, group_method={!r}, group_name={!r}Ú	KEYINGSETz, group_method={!r}z)
ÚFINISHED)'Ú	bpy.utilsr   r   Ú	ExceptionÚopenÚsceneÚkeying_setsÚactiveÚwriteÚformatÚ	bl_idnameÚbl_labelÚbl_descriptionÚuse_insertkey_neededÚuse_insertkey_visualÚpathsÚidÚbl_rnaÚ
identifierÚ
startswithÚbpyÚdataÚ	materialsÚ	node_treeÚnameÚlightsÚreportÚrpt_ÚstrÚscenesÚlowerÚlenÚvaluesÚ	data_pathÚuse_entire_arrayÚarray_indexÚgroup_methodÚgroupÚclose)ÚselfÚcontextr   Úfr$   ÚksÚid_to_paths_cacheÚkspÚid_bpy_pathÚfoundÚmatÚlightÚidtype_listÚshort_idÚid_pairs                  úW/home/blender/git/blender-v430/install_release/4.3/scripts/startup/bl_operators/anim.pyÚexecutez!ANIM_OT_keying_set_export.execute.   s#  € Ø/Ð/Ð/Ð/Ð/Ð/àŒ}ð 	0ÝÐ.Ñ/Ô/Ð/å�” ¨fÐ5Ñ5Ô5ˆØð 	3ÝÐ1Ñ2Ô2Ð2à”ˆØÔÔ%ˆà	�ŠÐ&×-Ò-¨b¬lÑ;Ô;Ñ<Ô<Ð<à	�ŠÐ Ñ!Ô!Ð!Ø	�ŠÐ/Ñ0Ô0Ð0ð 	
�ŠÐ3Ñ4Ô4Ð4Ø	�ŠÐF×MÒMÈbÌlÐ\^Ô\gÑhÔhÑiÔiÐiØ	�ŠÐ,×3Ò3°BÔ4EÑFÔFÑGÔGÐGð
 	
�Š�‰Œˆà	�ŠÐ2×9Ò9¸"Ô:QÑRÔRÑSÔSÐSØ	�ŠÐ2×9Ò9¸"Ô:QÑRÔRÑSÔSÐSØ	�Š�‰Œˆð Ðà”8ð :	@ñ :	@ˆCØŒvˆ~ØØŒvÐ*Ð*Ð*Øð ŒvŒ}Ô'×2Ò2Ð3CÑDÔDð 'là8�Ø�åœ8Ô-ð ð �CØ”}¨¬Ò.Ð.Ø&N×&UÒ&UÐVgÐVgÐhkÔhpÑVqÔVqÑ&rÔ&r˜Ø $˜Ø˜ð /ð
 ð "Ý!$¤¤ð "ð "˜Ø œ?¨c¬fÒ4Ð4Ø*O×*VÒ*VÐWhÐWhÐinÔisÑWtÔWtÑ*uÔ*u˜KØ$(˜EØ!˜Eð 5ð
 ð Ø—K’KØ˜ÝÐ]Ñ^Ô^×eÒeÕfiÐjmÔjpÑfqÔfqÑrÔrñô ð ùð ””Ô)×4Ò4Ð5IÑJÔJð lå œXœ_ð ð �EØ”¨#¬&Ò0Ð0Ø&K×&RÒ&RÐSdÐSdÐejÔeoÑSpÔSpÑ&qÔ&q˜Ø˜ð 1ð —K’KØ˜ÝÐUÑVÔV×]Ò]Õ^aÐbeÔbhÑ^iÔ^iÑjÔjñô ð øð ””Ô# uÒ,Ð,à=×DÒDÐEVÐEVÐWZÔW]ÔWbÑEcÔEcÑdÔd��à!œfœmÔ0×6Ò6Ñ8Ô8¸3Ñ>�Ø7×>Ò>¸{ÐL]ÐL]Ð^aÔ^dÔ^iÑLjÔLjÑkÔk�ð !×'Ò'­Ð,=Ñ(>Ô(>Ñ?Ô?ˆHð *2°;Ð(?Ð˜cœfÑ%Ñ%à	�ŠÐ1Ñ2Ô2Ð2Ø(×/Ò/Ñ1Ô1ð 	Dð 	DˆGØ�GŠG�O×*Ò*¨7°1¬:°w¸q´zÑBÔBÑCÔCÐCÐCØ	�Š�‰Œˆð 	
�ŠÐ&Ñ'Ô'Ð'Ø”8ð 	ñ 	ˆCØ�GŠGÐ)Ñ*Ô*Ð*ð Œvð %à/°´Ô7¸Ô:��à$�Ø�GŠG�L×'Ò'¨°S´]ÑCÔCÑDÔDÐDð Ô#ð @Ø—’˜Ñ%Ô%Ð%Ð%à—’˜×-Ò-¨c¬oÑ>Ô>Ñ?Ô?Ð?ð
 Ô 7Ò*Ð*Ø—’Ð>×EÒEÀcÔFVÐX[ÔXaÑbÔbÑcÔcÐcÐcØÔ! [Ò0Ð0Ø—’Ð-×4Ò4°SÔ5EÑFÔFÑGÔGÐGð �GŠG�E‰NŒNˆN‰Nà	�Š�‰ŒˆØ	�Š‰	Œ	ˆ	àˆ|Ðó    c                ó@   — |j         }|                     | ¦  «         dhS )NÚRUNNING_MODAL)Úwindow_managerÚfileselect_add)rF   rG   Ú_eventÚwms       rS   Úinvokez ANIM_OT_keying_set_export.invoke¸   s'   € ØÔ#ˆØ
×Ò˜$ÑÔÐØÐ Ð rU   N)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r)   r*   Ú__annotations__rT   r\   © rU   rS   r   r      s˜   € € € € € € Ø.Ð.Ø(€IØ%€Hðð ð ñ ðð ð ñ ð
ð ð ñ ð
ð ð ñ ðHð Hð HðT!ð !ð !ð !ð !rU   r   c                  óž   — e Zd ZU dZdZdZddhZded<   ded	<   d
ed<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   d„ Zd„ Z	dS )ÚNLA_OT_bakezHBake all selected objects location/scale/rotation animation to an actionznla.bakezBake ActionÚREGISTERÚUNDOzcIntProperty(name='Start Frame', description='Start frame for baking', min=0, max=300000, default=1)Úframe_startzaIntProperty(name='End Frame', description='End frame for baking', min=1, max=300000, default=250)Ú	frame_endz�IntProperty(name='Frame Step', description='Number of frames to skip forward while baking each frame', min=1, max=120, default=1)ÚstepzpBoolProperty(name='Only Selected Bones', description='Only key selected bones (Pose baking only)', default=True)Úonly_selectedzƒBoolProperty(name='Visual Keying', description='Keyframe from the final transformations (with constraints applied)', default=False)Úvisual_keyingz¼BoolProperty(name='Clear Constraints', description='Remove all constraints from keyed object/bones. To get a correct bake with this setting Visual Keying should be enabled', default=False)Úclear_constraintsz�BoolProperty(name='Clear Parents', description='Bake animation onto the object then clear parents (objects only)', default=False)Úclear_parentszÃBoolProperty(name='Overwrite Current Action', description='Bake animation into current action, instead of creating a new one (useful for baking only part of bones in an armature)', default=False)Úuse_current_actionzjBoolProperty(name='Clean Curves', description='After baking curves, remove redundant keys', default=False)Úclean_curvesa  EnumProperty(name='Bake Data', translation_context=i18n_contexts.id_action, description="Which data's transformations to bake", options={'ENUM_FLAG'}, items=(('POSE', 'Pose', 'Bake bones transformations'), ('OBJECT', 'Object', 'Bake object transformations')), default={'POSE'})Ú
bake_typesa™  EnumProperty(name='Channels', description='Which channels to bake', options={'ENUM_FLAG'}, items=(('LOCATION', 'Location', 'Bake location channels'), ('ROTATION', 'Rotation', 'Bake rotation channels'), ('SCALE', 'Scale', 'Bake scale channels'), ('BBONE', 'B-Bone', 'Bake B-Bone channels'), ('PROPS', 'Custom Properties', 'Bake custom properties')), default={'LOCATION', 'ROTATION', 'SCALE', 'BBONE', 'PROPS'})Úchannel_typesc                óì  — ddl m} |                     | j        d| j        v d| j        v | j        | j        | j        | j        d| j	        v d| j	        v d| j	        v d| j	        v d	| j	        v ¬
¦  «        }|j
        r,| j        r%|j        pg }d„ |D ¦   «         }t          |¦  «        }nM|j        }|j
        r?|j        s8t          |dd ¦  «        }|r||vr|                     |¦  «         d„ |D ¦   «         }| j        rd„ |D ¦   «         nd„ |D ¦   «         }|                     |t'          | j        | j        dz   | j        ¦  «        |¬¦  «        }	t/          |	¦  «        s|                      dhd¦  «         dhS dhS )Nr   )Ú
anim_utilsÚPOSEÚOBJECTÚLOCATIONÚROTATIONÚSCALEÚBBONEÚPROPS)rj   Údo_poseÚ	do_objectÚdo_visual_keyingÚdo_constraint_clearÚdo_parents_clearÚdo_cleanÚdo_locationÚdo_rotationÚdo_scaleÚdo_bboneÚdo_custom_propsc                ó   — h | ]	}|j         ’Œ
S rb   )Úid_data)Ú.0Ú	pose_bones     rS   ú	<setcomp>z&NLA_OT_bake.execute.<locals>.<setcomp>"  s   € ÐGÐGÐG¨y˜Ô*ÐGÐGÐGrU   Úpose_objectc                ó    — g | ]}|j         ®	|‘ŒS ©N)Úpose©rˆ   Úobjs     rS   ú
<listcomp>z'NLA_OT_bake.execute.<locals>.<listcomp>,  s   € ÐJÐJÐJ 3°S´XÐ5I˜3Ð5IÐ5IÐ5IrU   c                ó>   — g | ]}|t          |j        d d¦  «        f‘ŒS )ÚactionN)ÚgetattrÚanimation_datar�   s     rS   r‘   z'NLA_OT_bake.execute.<locals>.<listcomp>/  s,   € ÐSÐSÐSÀCˆc•7˜3Ô-¨x¸Ñ>Ô>Ð?ÐSÐSÐSrU   c                ó   — g | ]}|d f‘ŒS r�   rb   r�   s     rS   r‘   z'NLA_OT_bake.execute.<locals>.<listcomp>1  s   € Ð,Ð,Ð,˜Sˆc�4ˆ[Ð,Ð,Ð,rU   r   )ÚframesÚbake_optionsÚINFOzNothing to bakeÚ	CANCELLEDr    )Ú
bpy_extrasrs   ÚBakeOptionsrj   rp   rk   rl   rm   ro   rq   r{   Úselected_pose_bonesÚlistÚselected_editable_objectsr|   r”   Úappendrn   Úbake_action_objectsÚrangerg   rh   ri   Úanyr9   )
rF   rG   rs   r˜   Ú
pose_bonesÚ	armaturesÚobjectsr‹   Úobject_action_pairsÚactionss
             rS   rT   zNLA_OT_bake.execute  sñ  € Ø)Ð)Ð)Ð)Ð)Ð)à!×-Ò-ØÔ,Ø˜dœoÐ-Ø $¤/Ð1Ø!Ô/Ø $Ô 6Ø!Ô/ØÔ&Ø" dÔ&8Ð8Ø" dÔ&8Ð8Ø Ô 2Ð2Ø Ô 2Ð2Ø# tÔ'9Ð9ð .ñ 
ô 
ˆð Ôð 	K DÔ$6ð 	KØ Ô4Ð:¸ˆJØGÐG¸JÐGÑGÔGˆIÝ˜9‘o”oˆGˆGàÔ7ˆGØÔ#ð K¨LÔ,Bð KÝ% g¨}¸dÑCÔC�Øð 0 ;°gÐ#=Ð#=ð —N’N ;Ñ/Ô/Ð/ØJÐJ¨'ÐJÑJÔJ�ð Ô&ð-ÐSÐSÈ7ÐSÑSÔSÐSà,Ð, GÐ,Ñ,Ô,ð 	ð ×0Ò0ØÝ˜Ô)¨4¬>¸AÑ+=¸t¼yÑIÔIØ%ð 1ñ 
ô 
ˆõ �7‰|Œ|ð 	!Ø�KŠK˜˜Ð"3Ñ4Ô4Ð4Ø�=Ð àˆ|ÐrU   c                óä   — |j         }|j        r|j        | _        |j        | _        n|j        | _        |j        | _        |j        dk    rdhndh| _        |j        }| 	                    | ¦  «        S )Nrt   ru   )
r$   Úuse_preview_rangeÚframe_preview_startrg   Úframe_preview_endrh   Úmoderp   rX   Úinvoke_props_dialog)rF   rG   rZ   r$   r[   s        rS   r\   zNLA_OT_bake.invoke@  sv   € Ø”ˆØÔ"ð 	-Ø$Ô8ˆDÔØ"Ô4ˆDŒNˆNà$Ô0ˆDÔØ"œ_ˆDŒNØ&-¤l°fÒ&<Ð&<˜6˜(˜(À8À*ˆŒàÔ#ˆØ×%Ò% dÑ+Ô+Ð+rU   N)
r]   r^   r_   r`   r)   r*   Ú
bl_optionsra   rT   r\   rb   rU   rS   rd   rd   ¾   s+  € € € € € € ØRÐRØ€IØ€HØ˜fÐ%€Jðð ð ñ ðð ð ñ ðð ð ñ ðð ð ñ ð
ð ð ñ ð
ð ð ñ ð
ð ð ñ ð
ð ð ñ ðð ð ñ ð

ð 
ð 
ñ 
ðð ð ñ ð0ð 0ð 0ðd,ð ,ð ,ð ,ð ,rU   rd   c                  óJ   — e Zd ZU dZdZdZddhZded<   ed„ ¦   «         Z	d	„ Z
d
S )ÚClearUselessActionszfMark actions with no F-Curves for deletion after save and reload of file preserving "action libraries"zanim.clear_useless_actionszClear Useless Actionsre   rf   zqBoolProperty(name='Only Unused', description='Only unused (Fake User only) actions get considered', default=True)Úonly_unusedc                ó>   — t          t          j        j        ¦  «        S r�   )Úboolr3   r4   r¨   )ÚclsÚ_contexts     rS   ÚpollzClearUselessActions.poll[  s   € å•C”HÔ$Ñ%Ô%Ð%rU   c                ó  — d}t           j        j        D ]=}| j        du s|j        r+|j        dk    r |j        s|                     ¦   «          |dz  }Œ>|                      dht          d¦  «         
                    |¦  «        ¦  «         dhS )Nr   Fr   r™   z0Removed {:d} empty and/or fake-user only Actionsr    )r3   r4   r¨   r²   Úuse_fake_userÚusersÚfcurvesÚ
user_clearr9   r:   r(   )rF   r¶   Úremovedr“   s       rS   rT   zClearUselessActions.execute_  s¡   € Øˆå”hÔ&ð 	!ð 	!ˆFð Ô! UÐ*Ð*ØÔ%ð +Ø*0¬,¸!Ò*;Ð*;ð ”~ð !à×%Ò%Ñ'Ô'Ð'Ø˜q‘L�Gøà�Š�V�H�dÐ#UÑVÔV×]Ò]Ð^eÑfÔfÑgÔgÐgØˆ|ÐrU   N)r]   r^   r_   r`   r)   r*   r¯   ra   Úclassmethodr·   rT   rb   rU   rS   r±   r±   N  sr   € € € € € € ð3ð 3à,€IØ&€HØ˜fÐ%€Jðð ð ñ ð ð&ð &ñ „[ð&ðð ð ð ð rU   r±   c                  ó4   — e Zd ZU dZdZdZddhZded<   d„ Zd	S )
Ú!UpdateAnimatedTransformConstraintzaUpdate f-curves/drivers affecting Transform constraints (use it with files from 2.70 and earlier)z*anim.update_animated_transform_constraintsz%Update Animated Transform Constraintsre   rf   zšBoolProperty(name='Convert to Radians', description='Convert f-curves/drivers affecting rotations to radians.\nWarning: Use this only once', default=True)Úuse_convert_to_radiansc                óR  ‡	‡
‡‡— dd l }ddlmŠ dd l}h d£Š	h d£}‰	|z  }ˆ	ˆfd„Šd| j        iŠ
ˆ
ˆfd„|D ¦   «         }|                     ¦   «         }|                     ||¦  «         |j                             |j        j	        ¦  «         | 
                    ¦   «         }|r„t          |¦  «         t          j        j                             d¦  «        }|                     |¦  «         |                      d	ht%          d
¦  «                             |j        ¦  «        ¦  «         dhS )Nr   )Úradians>   Ú
from_max_xÚ
from_max_yÚ
from_max_zÚ
from_min_xÚ
from_min_yÚ
from_min_z>   Úto_max_xÚto_max_yÚto_max_zÚto_min_xÚto_min_yÚto_min_zc                ó„  •— ˆfd„}d}	 t          d|z   ¦  «        }n# t          $ r Y nw xY w||f}t          | t          j        j        ¦  «        rp|durld }|‰
v r| j        n| j        }	|	dk    r|dz   }|�|d         r ||¦  «         n|	dk    r|dz   }|�*d}	 t          d|z   ¦  «        }n# t          $ r Y nw xY w||f}|S )	Nc                ó²  •— | �Ót          | d¦  «        r)| j        D ]!} ‰|j        j        ¦  «        |j        _        Œ"| j        D ]|}|j        dk    rO|j        dk    rˆfd„|j        D ¦   «         |j        d d …<   Œ6ˆfd„|j        d d…         D ¦   «         |j        d d…<   Œ\|j        dk    r ‰|j        ¦  «        |_        Œ}|  	                    ¦   «          d S d S )NÚ	keyframesÚ	GENERATORÚ
POLYNOMIALc                ó&   •— g | ]} ‰|¦  «        ‘ŒS rb   rb   ©rˆ   ÚcrÃ   s     €rS   r‘   zhUpdateAnimatedTransformConstraint.execute.<locals>.update_cb.<locals>.handle_deg2rad.<locals>.<listcomp>–  s!   ø€ Ð6\Ð6\Ð6\Àa°w°w¸q±z´zÐ6\Ð6\Ð6\rU   c                ó&   •— g | ]} ‰|¦  «        ‘ŒS rb   rb   rÖ   s     €rS   r‘   zhUpdateAnimatedTransformConstraint.execute.<locals>.update_cb.<locals>.handle_deg2rad.<locals>.<listcomp>˜  s!   ø€ Ð7aÐ7aÐ7aÀq¸¸À¹
¼
Ð7aÐ7aÐ7arU   é   ÚFNGENERATOR)
ÚhasattrrÒ   ÚcoÚyÚ	modifiersÚtyper­   ÚcoefficientsÚ	amplitudeÚupdate)ÚfcurveÚkÚmodrÃ   s      €rS   Úhandle_deg2radzTUpdateAnimatedTransformConstraint.execute.<locals>.update_cb.<locals>.handle_deg2radŽ  s  ø€ ØÐ%Ý˜v {Ñ3Ô3ð 5Ø!'Ô!1ð 5ð 5˜AØ%, W¨Q¬T¬V¡_¤_˜AœDœF˜FØ%Ô/ð Cð C˜Øœ8 {Ò2Ð2Ø"œx¨<Ò7Ð7Ø6\Ð6\Ð6\Ð6\È3ÔK[Ð6\Ñ6\Ô6\ Ô 0°°°Ñ 3Ð 3à7aÐ7aÐ7aÐ7aÈCÔL\Ð]_Ð^_Ð]_ÔL`Ð7aÑ7aÔ7a Ô 0°°!°Ñ 4Ð 4Ø œX¨Ò6Ð6Ø,3¨G°C´MÑ,BÔ,B˜CœMøØ—M’M‘O”O�O�O�Oð &Ð%rU   .zbase.rw   Ú_rotrÁ   rx   Ú_scale)Úevalr"   Ú
isinstancer3   ÚtypesÚTransformConstraintÚmap_fromÚmap_to)ÚbaseÚ
class_nameÚold_pathrã   Úoptionsræ   r4   ÚretÚnew_pathÚmap_infoÚ
from_pathsrÃ   s             €€rS   Ú	update_cbz<UpdateAnimatedTransformConstraint.execute.<locals>.update_cb‹  sB  ø€ ð$ð $ð $ð $ð $ð ˆDðÝ˜G hÑ.Ñ/Ô/��øÝð ð ð Ø�ðøøøà˜Ð"ˆCÝ˜$¥¤	Ô =Ñ>Ô>ð +À4ÈsÀ?À?Ø�Ø,4¸
Ð,BÐ,B˜4œ=˜=ÈÌ�Ø˜zÒ)Ð)Ø'¨&Ñ0�HØÐ*¨wÐ7OÔ/PÐ*Ø&˜ vÑ.Ô.Ð.øØ Ò(Ð(Ø'¨(Ñ2�HàÐ'Ø�DðÝ# G¨hÑ$6Ñ7Ô7˜˜øÝ$ð ð ð Ø˜ðøøøà Ð*�Cð ˆJs   Š �
*©*ÂB, Â,
B9Â8B9rÁ   c                ó   •— g | ]}d |‰‰f‘Œ	S )rì   rb   )rˆ   Úprò   r÷   s     €€rS   r‘   z=UpdateAnimatedTransformConstraint.execute.<locals>.<listcomp>¹  s#   ø€ ÐTÐTÐTÈÐ,¨a°¸GÐDÐTÐTÐTrU   z(UpdateAnimatedTransformConstraint Reportr™   z2Complete report available on '{:s}' text datablockr    )Úanimsys_refactorÚmathrÃ   ÚiorÁ   ÚStringIOÚupdate_data_pathsr$   Ú	frame_setÚframe_currentÚgetvalueÚprintr3   r4   ÚtextsÚnewÚfrom_stringr9   r:   r(   r7   )rF   rG   rú   rü   Úto_pathsr.   Ú
replace_lsÚlogÚtextrö   rò   rÃ   r÷   s            @@@@rS   rT   z)UpdateAnimatedTransformConstraint.execute‚  s[  øøøø€ ØÐÐÐØ Ð Ð Ð Ð Ð Øˆ	ˆ	ˆ	àiÐiÐiˆ
Ø[Ð[Ð[ˆØ˜XÑ%ˆð+	ð +	ð +	ð +	ð +	ð +	ðZ ,¨TÔ-HÐIˆØTÐTÐTÐTÐTÈeÐTÑTÔTˆ
Ø�kŠk‰mŒmˆà×*Ò*¨:°sÑ;Ô;Ð;àŒ×Ò ¤Ô ;Ñ<Ô<Ð<à�lŠl‰nŒnˆØð 	pÝ�#‰JŒJˆJÝ”8”>×%Ò%Ð&PÑQÔQˆDØ×Ò˜SÑ!Ô!Ð!Ø�KŠK˜˜¥$Ð'[Ñ"\Ô"\×"cÒ"cÐdhÔdmÑ"nÔ"nÑoÔoÐoØˆ|ÐrU   N)	r]   r^   r_   r`   r)   r*   r¯   ra   rT   rb   rU   rS   rÀ   rÀ   u  sX   € € € € € € ØkÐkØ<€IØ6€HØ˜fÐ%€Jðð ð ñ ðDð Dð Dð Dð DrU   rÀ   c                  óR   — e Zd ZU dZdZdZddhZddgZded	<   e	d
„ ¦   «         Z
d„ ZdS )Ú'ARMATURE_OT_copy_bone_color_to_selectedz<Copy the bone color of the active bone to all selected bonesz$armature.copy_bone_color_to_selectedzCopy Colors to Selectedre   rf   )ÚEDITÚBonez;Copy Bone colors from the active bone to all selected bones)rt   z	Pose BonezJCopy Pose Bone colors from the active pose bone to all selected pose bonesz0EnumProperty(name='Type', items=_bone_type_enum)Ú	bone_typec                ó   — |j         dv S )N>   rt   ÚEDIT_ARMATURE)r­   ©rµ   rG   s     rS   r·   z,ARMATURE_OT_copy_bone_color_to_selected.pollØ  s   € àŒ|Ð8Ð8Ð8rU   c                óÔ  — | j         |j        fx  r- dk    r'\  dk    r dk    r |                      dhd¦  «         dhS  x  r$ dk    r\  dk    rdk    r |j        }|j        }g }nŒ x  r$ dk    r\  dk    rdk    r |j        }|j        }g }nd   r- dk    r'\  dk    r dk    r|j        }|j        }d„ |D ¦   «         }n4 	 |                      dhd	                     |j        ¦  «        ¦  «         d
hS |s|                      dhd¦  «         d
hS |s|                      dhd¦  «         d
hS d}t          |¦  «        D ]\  }}|j	        j
        |j	        _
        dD ]7}t          |j	        j        |¦  «        }	t          |j	        j        ||	¦  «         Œ8| j         dk    r|r||         }
|
j	        j
        dk    r|dz  }Œ€|r*|                      dhd                     |¦  «        ¦  «         dhS )NrÙ   rt   r  ÚERRORz(Go to pose mode to copy pose bone colorsÚOPERATOR_CANCELLEDr  c                ó   — g | ]	}|j         ‘Œ
S rb   )Úbone)rˆ   Úposebones     rS   r‘   zCARMATURE_OT_copy_bone_color_to_selected.execute.<locals>.<listcomp>ï  s   € ÐPÐPÐP°˜hœmÐPÐPÐPrU   zCannot do anything in mode {!r}rš   zNo active bone to copy fromzNo selected bones to copy tor   )ÚnormalÚselectr&   ÚDEFAULTr   r™   zaBone colors were synced; for {:d} bones this will not be visible due to pose bone color overridesr    )r  r­   r9   Úactive_boneÚselected_bonesÚactive_pose_boner�   r(   Ú	enumerateÚcolorÚpaletter”   ÚcustomÚsetattr)rF   rG   Úbone_sourceÚ
bones_destÚpose_bones_to_checkÚnum_pose_color_overridesÚindexÚ	bone_destÚcustom_fieldr  r‰   s              rS   rT   z/ARMATURE_OT_copy_bone_color_to_selected.executeÜ  s­  € ØŒn˜gœlÐ+à)Ð)Ð)Ð)Ð)Ò)Ð)Ñ)�’�˜š˜˜Ø—’˜W˜IÐ'QÑRÔRÐRØ,Ð-Ð-ð *ð *Ð)Ð)Ð)Ð)Ò)Ð)Ñ)�’�˜š˜˜Ø%Ô1�Ø$Ô3�
Ø&(Ð#Ð#ð *ð !Ð Ð Ð Ð Ò Ð Ñ �’�˜š˜˜Ø%Ô6�Ø$Ô8�
Ø&(Ð#Ð#ð !ð !Ð Ð Ð Ò Ð Ñ �’�˜š˜Ø%Ô1�Ø&-Ô&AÐ#ØPÐPÐ<OÐPÑPÔP�
�
ð !ð Ø—’˜W˜IÐ'H×'OÒ'OÐPWÔP\Ñ']Ô']Ñ^Ô^Ð^Ø#�}Ð$àð 	!Ø�KŠK˜˜	Ð#@ÑAÔAÐAØ�=Ð àð 	!Ø�KŠK˜˜	Ð#AÑBÔBÐBØ�=Ð à#$Ð Ý )¨*Ñ 5Ô 5ð 	2ð 	2ÑˆE�9Ø&1Ô&7Ô&?ˆIŒOÔ#Ø >ð Eð E�Ý Ô 1Ô 8¸,ÑGÔG�Ý˜	œÔ.°¸eÑDÔDÐDÐDàŒ~ Ò'Ð'Ð,?Ð'Ø/°Ô6�	Ø”?Ô*¨iÒ7Ð7ð -°Ñ1Ð,øà#ð 	Ø�KŠKØ�ð[ß[aÒ[aØ,ñ\ô \ñô ð ð ˆ|ÐrU   N)r]   r^   r_   r`   r)   r*   r¯   Ú_bone_type_enumra   r¾   r·   rT   rb   rU   rS   r  r  É  s~   € € € € € € ØFÐFØ6€IØ(€HØ˜fÐ%€Jð 	XØkð€Oð
ð ð ñ ð ð9ð 9ñ „[ð9ð9ð 9ð 9ð 9ð 9rU   r  c                óf   — t          | dd ¦  «        }|r|S | j        }|r|j        dk    r|j        S d S )NÚarmatureÚARMATURE)r”   Úobjectrß   r4   )rG   Úpin_armatureÚobs      rS   Ú_armature_from_contextr1    sH   € Ý˜7 J°Ñ5Ô5€LØð ØÐØ	Œ€BØ	ð ˆbŒg˜Ò#Ð#ØŒwˆØˆ4rU   c                  ó>   — e Zd ZdZdZdZddhZed„ ¦   «         Zd„ Z	dS )	ÚARMATURE_OT_collection_show_allzShow all bone collectionszarmature.collection_show_allzShow Allre   rf   c                ó$   — t          |¦  «        d uS r�   )r1  r  s     rS   r·   z$ARMATURE_OT_collection_show_all.poll(  s   € å% gÑ.Ô.°dÐ:Ð:rU   c                óH   — t          |¦  «        }|j        D ]	}d|_        Œ
dhS )NTr    )r1  Úcollections_allÚ
is_visible©rF   rG   ÚarmÚbcolls       rS   rT   z'ARMATURE_OT_collection_show_all.execute,  s4   € Ý$ WÑ-Ô-ˆØÔ(ð 	$ð 	$ˆEØ#ˆEÔÐØˆ|ÐrU   N©
r]   r^   r_   r`   r)   r*   r¯   r¾   r·   rT   rb   rU   rS   r3  r3  "  sV   € € € € € Ø#Ð#Ø.€IØ€HØ˜fÐ%€Jàð;ð ;ñ „[ð;ðð ð ð ð rU   r3  c                  ó>   — e Zd ZdZdZdZddhZed„ ¦   «         Zd„ Z	dS )	Ú!ARMATURE_OT_collection_unsolo_allz0Clear the 'solo' setting on all bone collectionszarmature.collection_unsolo_allzUn-solo Allre   rf   c                ór   — t          |¦  «        }|sdS |j        j        s|                      d¦  «         dS dS )NFz-None of the bone collections is marked 'solo'T)r1  ÚcollectionsÚis_solo_activeÚpoll_message_set©rµ   rG   r,  s      rS   r·   z&ARMATURE_OT_collection_unsolo_all.poll9  sI   € å)¨'Ñ2Ô2ˆØð 	Ø�5ØÔ#Ô2ð 	Ø× Ò Ð!PÑQÔQÐQØ�5ØˆtrU   c                óH   — t          |¦  «        }|j        D ]	}d|_        Œ
dhS )NFr    )r1  r6  Úis_solor8  s       rS   rT   z)ARMATURE_OT_collection_unsolo_all.executeC  s2   € Ý$ WÑ-Ô-ˆØÔ(ð 	"ð 	"ˆEØ!ˆEŒMˆMØˆ|ÐrU   Nr;  rb   rU   rS   r=  r=  3  sV   € € € € € Ø:Ð:Ø0€IØ€HØ˜fÐ%€Jàðð ñ „[ððð ð ð ð rU   r=  c                  óP   — e Zd ZdZdZdZddhZed„ ¦   «         Zd„ Z	d„ Z
d	„ Zd
„ ZdS )Ú$ARMATURE_OT_collection_remove_unusedzŸRemove all bone collections that have neither bones nor children. This is done recursively, so bone collections that only have unused children are also removedz!armature.collection_remove_unusedzRemove Unused Bone Collectionsre   rf   c                óX   — t          |¦  «        }|sdS t          |j        ¦  «        dk    S )NFr   )r1  r>   r?  rB  s      rS   r·   z)ARMATURE_OT_collection_remove_unused.pollR  s2   € å)¨'Ñ2Ô2ˆØð 	Ø�5Ý�8Ô'Ñ(Ô(¨1Ò,Ð,rU   c                óì   — |j         dk    r|                      |¦  «        S t          |¦  «        }d„ |j        D ¦   «         }|s|                      dhd¦  «         dhS |                      ||¦  «         dhS )Nr  c                óB   — h | ]}t          |j        ¦  «        d k    ¯|’ŒS )r   )r>   Úbones_recursive)rˆ   r:  s     rS   rŠ   z?ARMATURE_OT_collection_remove_unused.execute.<locals>.<setcomp>a  s8   € ð 0ð 0ð 0àÝ�5Ô(Ñ)Ô)¨QÒ.Ð.ð à.Ð.Ð.rU   r™   úAll bone collections are in userš   r    )r­   Úexecute_edit_moder1  r6  r9   Úremove_bcolls)rF   rG   r,  Úbcolls_to_removes       rS   rT   z,ARMATURE_OT_collection_remove_unused.executeY  sš   € ØŒ<˜?Ò*Ð*Ø×)Ò)¨'Ñ2Ô2Ð2å)¨'Ñ2Ô2ˆð0ð 0à!Ô1ð0ñ 0ô 0Ðð
  ð 	!Ø�KŠK˜˜Ð"CÑDÔDÐDØ�=Ð à×Ò˜8Ð%5Ñ6Ô6Ð6Øˆ|ÐrU   c                óò   — t          |¦  «        }d„ |j        D ¦   «         }g }|j        D ]}|                      |||¦  «         Œ|s|                      dhd¦  «         dhS |                      ||¦  «         dhS )Nc                ó&   — h | ]}|j         D ]}|’ŒŒS rb   )r?  )rˆ   Úeboner:  s      rS   rŠ   zIARMATURE_OT_collection_remove_unused.execute_edit_mode.<locals>.<setcomp>s  sB   € ð 
ð 
ð 
àØÔ*ð
ð 
ð ð ð
ð 
ð 
ð 
rU   r™   rK  rš   r    )r1  Ú
edit_bonesr?  Úvisitr9   rM  )rF   rG   r,  Úbcolls_with_bonesrN  Úroots         rS   rL  z6ARMATURE_OT_collection_remove_unused.execute_edit_modem  s°   € õ
 *¨'Ñ2Ô2ˆð
ð 
à!Ô,ð
ñ 
ô 
Ðð ÐØÔ(ð 	Bð 	BˆDØ�JŠJ�tÐ.Ð0@ÑAÔAÐAÐAàð 	!Ø�KŠK˜˜Ð"CÑDÔDÐDØ�=Ð à×Ò˜8Ð%5Ñ6Ô6Ð6Øˆ|ÐrU   c                ó†   — ||v }|j         D ]}|                      |||¦  «        }|p|}Œ|s|                     |¦  «         |S r�   )ÚchildrenrS  r    )rF   r:  rT  rN  Ú	has_bonesÚchildÚchild_has_boness          rS   rS  z*ARMATURE_OT_collection_remove_unused.visit„  sc   € ØÐ.Ð.ˆ	à”^ð 	5ð 	5ˆEØ"Ÿjšj¨Ð0AÐCSÑTÔTˆOØ!Ð4 _ˆIˆIàð 	+Ø×#Ò# EÑ*Ô*Ð*àÐrU   c                ó  — t          |j        ¦  «        }t          |¦  «        }t          t          |¦  «        ¦  «        D ]}|j                             |¦  «         Œ|                      dhd                     ||¦  «        ¦  «         d S )Nr™   z%Removed {:d} of {:d} bone collections)r>   r6  Úreversedrž   r?  Úremover9   r(   )rF   r,  rN  Únum_bcolls_before_removalÚnum_bcolls_to_remover:  s         rS   rM  z2ARMATURE_OT_collection_remove_unused.remove_bcolls�  s˜   € å$'¨Ô(@Ñ$AÔ$AÐ!Ý"Ð#3Ñ4Ô4Ðõ �dÐ#3Ñ4Ô4Ñ5Ô5ð 	/ð 	/ˆEØÔ ×'Ò'¨Ñ.Ô.Ð.Ð.à�ŠØˆHÐ=×DÒDÐEYÐ[tÑuÔuñ	
ô 	
ð 	
ð 	
ð 	
rU   N)r]   r^   r_   r`   r)   r*   r¯   r¾   r·   rT   rL  rS  rM  rb   rU   rS   rF  rF  J  s‹   € € € € € ðlð lð 4€IØ/€HØ˜fÐ%€Jàð-ð -ñ „[ð-ðð ð ð(ð ð ð.
ð 
ð 
ð
ð 
ð 
ð 
ð 
rU   rF  c                  óB   — e Zd ZdZdZdZdZddhZed„ ¦   «         Z	d„ Z
d	S )
ÚANIM_OT_slot_new_for_idzÐCreate a new Action Slot for an ID.

    Note that _which_ ID should get this slot must be set in the 'animated_id' context pointer, using:

    >>> layout.context_pointer_set("animated_id", animated_id)
    zanim.slot_new_for_idzNew SlotzCCreate a new action slot for this data-block, to hold its animationre   rf   c                óÔ   — t          |dd ¦  «        }|sdS |j        r|j        j        s|                      d¦  «         dS |j        j        j        s|                      d¦  «         dS dS )NÚanimated_idFz>An action slot can only be created when an action was assignedzMAction slots are only supported by layered Actions. Upgrade this Action firstT)r”   r•   r“   rA  Úis_action_layered©rµ   rG   rc  s      rS   r·   zANIM_OT_slot_new_for_id.poll«  s‚   € å˜g }°dÑ;Ô;ˆØð 	Ø�5ØÔ)ð 	°Ô1KÔ1Rð 	Ø× Ò Ð!aÑbÔbÐbØ�5ØÔ)Ô0ÔBð 	Ø× Ò Ð!pÑqÔqÐqØ�5ØˆtrU   c                ó|   — |j         }|j        j        }|j                             |¬¦  «        }||j        _        dhS )N)Úfor_idr    )rc  r•   r“   Úslotsr  Úaction_slot)rF   rG   rc  r“   Úslots        rS   rT   zANIM_OT_slot_new_for_id.execute¸  s@   € ØÔ)ˆàÔ+Ô2ˆØŒ|×Ò {ÐÑ3Ô3ˆØ15ˆÔ"Ô.Øˆ|ÐrU   N©r]   r^   r_   r`   r)   r*   r+   r¯   r¾   r·   rT   rb   rU   rS   ra  ra  Ÿ  sa   € € € € € ðð ð '€IØ€HØZ€NØ˜fÐ%€Jàð
ð 
ñ „[ð
ðð ð ð ð rU   ra  c                  óB   — e Zd ZdZdZdZdZddhZed„ ¦   «         Z	d„ Z
d	S )
ÚANIM_OT_slot_unassign_from_idzêUn-assign the assigned Action Slot from an ID.

    Note that _which_ ID should get this slot unassigned must be set in the
    "animated_id" context pointer, using:

    >>> layout.context_pointer_set("animated_id", animated_id)
    zanim.slot_unassign_from_idúUnassign SlotzJUn-assign the action slot, effectively making this data-block non-animatedre   rf   c                ó„   — t          |dd ¦  «        }|sdS |j        r|j        j        s|                      d¦  «         dS dS )Nrc  Fz+This data-block has no Action slot assignedT)r”   r•   ri  rA  re  s      rS   r·   z"ANIM_OT_slot_unassign_from_id.pollÎ  sW   € å˜g }°dÑ;Ô;ˆØð 	Ø�5ØÔ)ð 	°Ô1KÔ1Wð 	Ø× Ò Ð!NÑOÔOÐOØ�5ØˆtrU   c                ó.   — |j         }d |j        _        dhS ©Nr    )rc  r•   ri  )rF   rG   rc  s      rS   rT   z%ANIM_OT_slot_unassign_from_id.executeØ  s   € ØÔ)ˆØ15ˆÔ"Ô.Øˆ|ÐrU   Nrk  rb   rU   rS   rm  rm  Á  sa   € € € € € ðð ð -€IØ€HØa€NØ˜fÐ%€Jàðð ñ „[ððð ð ð ð rU   rm  c                  ó0   — e Zd ZdZ	 ed„ ¦   «         Zd„ ZdS )Úgeneric_slot_unassign_mixinÚ c                óv   — t          || j        d ¦  «        }|sdS |j        s|                      d¦  «         dS dS )NFz<No Action slot is assigned, so there is nothing to un-assignT)r”   Úcontext_property_nameri  rA  )rµ   rG   Ú	slot_users      rS   r·   z generic_slot_unassign_mixin.pollâ  sM   € å˜G SÔ%>ÀÑEÔEˆ	Øð 	Ø�5àÔ$ð 	Ø× Ò Ð!_Ñ`Ô`Ð`Ø�5ØˆtrU   c                óB   — t          || j        d ¦  «        }d |_        dhS rq  )r”   rv  ri  )rF   rG   rw  s      rS   rT   z#generic_slot_unassign_mixin.executeí  s&   € Ý˜G TÔ%?ÀÑFÔFˆ	Ø $ˆ	ÔØˆ|ÐrU   N)r]   r^   r_   rv  r¾   r·   rT   rb   rU   rS   rs  rs  Þ  sE   € € € € € ØÐØQàðð ñ „[ððð ð ð ð rU   rs  c                  ó*   — e Zd ZdZdZdZdZddhZdZdS )	Ú$ANIM_OT_slot_unassign_from_nla_stripzòUn-assign the assigned Action Slot from an NLA strip.

    Note that _which_ NLA strip should get this slot unassigned must be set in
    the "nla_strip" context pointer, using:

    >>> layout.context_pointer_set("nla_strip", nla_strip)
    z!anim.slot_unassign_from_nla_striprn  zQUn-assign the action slot from this NLA strip, effectively making it non-animatedre   rf   Ú	nla_stripN©	r]   r^   r_   r`   r)   r*   r+   r¯   rv  rb   rU   rS   rz  rz  ó  s;   € € € € € ðð ð 4€IØ€HØh€NØ˜fÐ%€Jà'ÐÐÐrU   rz  c                  ó*   — e Zd ZdZdZdZdZddhZdZdS )	Ú%ANIM_OT_slot_unassign_from_constraintzþUn-assign the assigned Action Slot from an Action constraint.

    Note that _which_ constraint should get this slot unassigned must be set in
    the "constraint" context pointer, using:

    >>> layout.context_pointer_set("constraint", constraint)
    z"anim.slot_unassign_from_constraintrn  z.Un-assign the action slot from this constraintre   rf   Ú
constraintNr|  rb   rU   rS   r~  r~    s;   € € € € € ðð ð 5€IØ€HØE€NØ˜fÐ%€Jà(ÐÐÐrU   r~  )Ú
__future__r   r3   Ú	bpy.typesr   Ú	bpy.propsr   r   r   r   Úbpy.app.translationsr	   r:   r
   Úi18n_contextsr   rd   r±   rÀ   r  r1  r3  r=  rF  ra  rm  rs  rz  r~  Úclassesrb   rU   rS   ú<module>r†     s/  ðð
 #Ð "Ð "Ð "Ð "Ð "ð €
€
€
Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ðe!ð e!ð e!ð e!ð e! ñ e!ô e!ð e!ðPM,ð M,ð M,ð M,ð M,�(ñ M,ô M,ð M,ð`$ð $ð $ð $ð $˜(ñ $ô $ð $ðNQð Qð Qð Qð Q¨ñ Qô Qð QðhLð Lð Lð Lð L¨hñ Lô Lð Lð^ð ð ðð ð ð ð  hñ ô ð ð"ð ð ð ð ¨ñ ô ð ð.R
ð R
ð R
ð R
ð R
¨8ñ R
ô R
ð R
ðjð ð ð ð ˜hñ ô ð ðDð ð ð ð  Hñ ô ð ð:ð ð ð ð ñ ô ð ð*(ð (ð (ð (ð (Ð+FÈñ (ô (ð (ð )ð )ð )ð )ð )Ð,GÈñ )ô )ð )ð" ØØØ%Ø+Ø#Ø%Ø(ØØ!Ø(Ø)ð€€€rU   