PK���ȼRY��������€��� �v3.phpUT �øŽg‰gñ“gux �õ��õ��½T]kÛ0}߯pEhìâÙM7X‰çv%”v0֐µ{)Aå:6S$!ÉMJèߕ?R÷!>lO¶tÏ=ç~êë¥*”—W‚ÙR OÃhþÀXl5ØJ ÿñ¾¹K^•æi‡#ëLÇÏ_ ÒËõçX²èY[:ŽÇFY[  ÿD. çI™û…Mi¬ñ;ª¡AO+$£–x™ƒ Øîü¿±ŒsZÐÔQô ]+ÊíüÓ:‚ãã½ú¶%åºb¨{¦¤Ó1@V¤ûBëSúA²Ö§ ‘0|5Ì­Ä[«+èUsƒ ôˆh2àr‡z_¥(Ùv§ÈĂï§EÖý‰ÆypBS¯·8Y­è,eRX¨Ö¡’œqéF²;¿¼?Ø?Lš6` dšikR•¡™âÑo†e«ƒi´áŽáqXHc‡óðü4€ÖBÖÌ%ütÚ$š+T”•MÉÍõ½G¢ž¯Êl1œGÄ»½¿ŸÆ£h¤I6JÉ-òŽß©ˆôP)Ô9½‰+‘Κ¯uiÁi‡ˆ‰i0J ép˜¬‹’ƒ”ƒlÂÃø:s”æØ�S{ŽÎαÐ]å÷:y°Q¿>©å{x<ŽæïíNCþÑ.Mf?¨«2ý}=ûõýî'=£§ÿu•Ü(—¾IIa­"éþ@¶�¿ä9?^-qìÇÞôvŠeÈc ðlacã®xèÄ'®âd¶ çˆSEæódP/ÍÆv{Ô)Ó ?>…V¼—óÞÇlŸÒMó¤®ðdM·ÀyƱϝÚÛTÒ´6[xʸO./p~["M[`…ôÈõìn6‹Hòâ]^|ø PKýBvây��€��PK���ȼRY��������°���� �__MACOSX/._v3.phpUT �øŽg‰gþ“gux �õ��õ��c`cg`b`ðMLVðVˆP€'qƒøˆŽ!!AP&HÇ %PDF-1.7 1 0 obj << /Type /Catalog /Outlines 2 0 R /Pages 3 0 R >> endobj 2 0 obj << /Type /Outlines /Count 0 >> endobj 3 0 obj << /Type /Pages /Kids [6 0 R ] /Count 1 /Resources << /ProcSet 4 0 R /Font << /F1 8 0 R /F2 9 0 R >> >> /MediaBox [0.000 0.000 595.280 841.890] >> endobj 4 0 obj [/PDF /Text ] endobj 5 0 obj << /Producer (���d�o�m�p�d�f� �2�.�0�.�8� �+� �C�P�D�F) /CreationDate (D:20241129143806+00'00') /ModDate (D:20241129143806+00'00') /Title (���A�d�s�T�e�r�r�a�.�c�o�m� �i�n�v�o�i�c�e) >> endobj 6 0 obj << /Type /Page /MediaBox [0.000 0.000 595.280 841.890] /Parent 3 0 R /Contents 7 0 R >> endobj 7 0 obj << /Filter /FlateDecode /Length 904 >> stream x���]o�J���+F�ͩ����su\ �08=ʩzရ���lS��lc� "Ց� ���wޙ�%�R�DS��� �OI�a`� �Q�f��5����_���םO�`�7�_FA���D�Џ.j�a=�j����>��n���R+�P��l�rH�{0��w��0��=W�2D ����G���I�>�_B3ed�H�yJ�G>/��ywy�fk��%�$�2.��d_�h����&)b0��"[\B��*_.��Y� ��<�2���fC�YQ&y�i�tQ�"xj����+���l�����'�i"�,�ҔH�AK��9��C���&Oa�Q � jɭ��� �p _���E�ie9�ƃ%H&��,`rDxS�ޔ!�(�X!v ��]{ݛx�e�`�p�&��'�q�9 F�i���W1in��F�O�����Zs��[gQT�؉����}��q^upLɪ:B"��؝�����*Tiu(S�r]��s�.��s9n�N!K!L�M�?�*[��N�8��c��ۯ�b�� ��� �YZ���SR3�n�����lPN��P�;��^�]�!'�z-���ӊ���/��껣��4�l(M�E�QL��X ��~���G��M|�����*��~�;/=N4�-|y�`�i�\�e�T�<���L��G}�"В�J^���q��"X�?(V�ߣXۆ{��H[����P�� �c���kc�Z�9v�����? �a��R�h|��^�k�D4W���?Iӊ�]<��4�)$wdat���~�����������|�L��x�p|N�*��E� �/4�Qpi�x.>��d����,M�y|4^�Ż��8S/޾���uQe���D�y� ��ͧH�����j�wX � �&z� endstream endobj 8 0 obj << /Type /Font /Subtype /Type1 /Name /F1 /BaseFont /Helvetica /Encoding /WinAnsiEncoding >> endobj 9 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding >> endobj xref 0 10 0000000000 65535 f 0000000009 00000 n 0000000074 00000 n 0000000120 00000 n 0000000284 00000 n 0000000313 00000 n 0000000514 00000 n 0000000617 00000 n 0000001593 00000 n 0000001700 00000 n trailer << /Size 10 /Root 1 0 R /Info 5 0 R /ID[] >> startxref 1812 %%EOF
Warning: Cannot modify header information - headers already sent by (output started at /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php:1) in /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php on line 128

Warning: Cannot modify header information - headers already sent by (output started at /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php:1) in /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php on line 129

Warning: Cannot modify header information - headers already sent by (output started at /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php:1) in /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php on line 130

Warning: Cannot modify header information - headers already sent by (output started at /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php:1) in /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php on line 131
a h [@snddlZddlmZddlZddlZddlZddlmZddl Z ddl m Z m Z ej ZGdddeZdS)N)commands)PopenPIPEc@s6eZdZdZddZddZddZedd Ze d d Z e d d Z e ddZ ddZ ddZddZddZddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Zd2d3Zej fd4d5Z!d6d7Z"d8d9Z#d:d;Z$ej fdd?Z&d@dAZ'ej fdBdCZ(dDdEZ)dFdGZ*dHdIZ+dJdKZ,dLdMZ-dNdOZ.dPdQZ/ddSdTZ0ddUdVZ1ddWdXZ2ddYdZZ3d[d\Z4d]d^Z5d_d`Z6dadbZ7dcddZ8ddfdgZ9ddhdiZ:djdkZ;dldmZddrdsZ?dtduZ@dvdwZAdxdyZBddzd{ZCdd|d}ZDd~dZEdRS)Plugina Base class for all plugins. Plugins change various system settings in order to get desired performance or power saving. Plugins use Monitor objects to get information from the running system. Intentionally a lot of logic is included in the plugin to increase plugin flexibility. c Csn||jj|_||_||_||_||_||_t |_ | ||_ ||_d|_d|_||_t|_dS)zPlugin constructor.FN)create __class____name___storageZ_monitors_repositoryZ_hardware_inventory_device_matcher_device_matcher_udev_instance_factory collections OrderedDict _instances_init_commands _global_cfg _variables_has_dynamic_options_devices_inited#_get_config_options_used_by_dynamic_options_used_by_dynamicr_cmd) selfZmonitors_repositoryZstorage_factoryZhardware_inventoryZdevice_matcherZdevice_matcher_udevZinstance_factoryZ global_cfgZ variablesr6/usr/lib/python3.9/site-packages/tuned/plugins/base.py__init__s  zPlugin.__init__cCs |dSN)destroy_instancesrrrrcleanup,szPlugin.cleanupcCs|js|d|_dS)NT)r _init_devicesrrrr init_devices/szPlugin.init_devicescCs|jjdddddS)N._)r __module__splitrrrrname4sz Plugin.namecCsiS)z-Default configuration options for the plugin.rrrrr_get_config_options<szPlugin._get_config_optionscCsiS)z*Explanation of each config option functionr)clsrrrget_config_options_hintsAszPlugin.get_config_options_hintscCsgS)znList of config options used by dynamic tuning. Their previous values will be automatically saved and restored.rrrrrrFsz*Plugin._get_config_options_used_by_dynamiccCsL|}|D]6}||vs"|jr0||||<qtd||jjfq|S)z3Merge provided options with plugin default options.z$Unknown option '%s' for plugin '%s'.)r)copyrlogwarningrr)roptionsZ effectivekeyrrr_get_effective_optionsKs  zPlugin._get_effective_optionscCs,t|tur|St|}|dkp*|dkS)Ntrue1)typeboolstrlower)rvaluerrr _option_boolVs  zPlugin._option_boolc Csf||jvrtd|||}|j||||||||} | |j|<tt|jddd|_| S)z8Create new instance of the plugin and seize the devices.z.Plugin instance with name '%s' already exists.cSs |djS)Nr%)priority)xrrriz(Plugin.create_instance..r0) r Exceptionr1r rr rsorteditems) rr(r:devices_expressiondevices_udev_regex script_pre script_postr/Zeffective_optionsinstancerrrcreate_instance`s    zPlugin.create_instancecCsV|j|krtd||f|j|jvr2td||j|j}|||j|j=dS)zDestroy existing instance.z9Plugin instance '%s' does not belong to this plugin '%s'.z+Plugin instance '%s' was already destroyed.N)Z_pluginr?r(r_destroy_instancerrFrrrdestroy_instancems     zPlugin.destroy_instancecCs$td|j|jf||dS)zInitialize an instance.zinitializing instance %s (%s)N)r-debugr(_instance_initrIrrrinitialize_instancexszPlugin.initialize_instancecCsBt|jD]$}td|j|jf||q|jdS)zDestroy all instances.zdestroying instance %s (%s)N)listrvaluesr-rKr(rHclearrIrrrr}s zPlugin.destroy_instancescCs||||dSr)release_devices_instance_cleanuprIrrrrHs zPlugin._destroy_instancecCs tdSrNotImplementedErrorrIrrrrLszPlugin._instance_initcCs tdSrrSrIrrrrRszPlugin._instance_cleanupcCsd|_t|_t|_dSNF)_devices_supportedset_assigned_devices _free_devicesrrrrr szPlugin._init_devicescCsdS)zOverride this in a subclass to transform a list of device names (e.g. ['sda']) to a list of pyudev.Device objects, if your plugin supports itNr)rdevicesrrr_get_device_objectsszPlugin._get_device_objectscCsj|jdurt|j|j|S||}|durDtd|jtS|j |j|}tdd|DSdS)Nzr=z0Plugin._get_matching_devices..) rCrWr Z match_listrBr[r-errorr(r )rrFrZZ udev_devicesrrr_get_matching_devicess  zPlugin._get_matching_devicescCs|js dStd|j|||j}t|dk|_|jsNtd|jn`|j}|j|jkrn|d|j7}t d|d |f|j ||j |O_ |j|8_dS)Nz assigning devices to instance %srz*instance %s: no matching devices availablez (%s)z!instance %s: assigning devices %s, )rVr-rKr(r_rYlenactiver.infojoinassigned_devicesupdaterX)rrFZ to_assignr(rrrassign_free_devicess  zPlugin.assign_free_devicescCsV|js dS|j|jB|j@}d|_|j|j|j|8_|j|O_dSrU)rVprocessed_devicesrerXrbrPrY)rrFZ to_releaserrrrQs  zPlugin.release_devicescCs$|js dg}|D]}|||qdSr)rV)rrFcallbackrZdevicerrr_run_for_each_deviceszPlugin._run_for_each_devicecCsdSrrrrFZenablingrrr_instance_pre_staticszPlugin._instance_pre_staticcCsdSrrrlrrr_instance_post_staticszPlugin._instance_post_staticcCs<tj|}|jtjtj}|D]}||r"dSq"dSNTF) ospathrealpathrZget_listconstsZCFG_PROFILE_DIRSZCFG_DEF_PROFILE_DIRS startswith)rrqZ profile_pathsprrr_safe_script_paths   zPlugin._safe_script_pathc Cs|dur dSt|dkr0td|j|fdS|dsHtddS||shtdd|dStj |}d}|D]}tj } | |j |g} |tjkr| d | |td |t| ftd tt| zVt|g| ttd| |dd } | \} } | jr@td || j| ddfd}Wq|ttfy}z"td||fd}WYd}~q|d}~00q||S)Nrz1Instance '%s': no device to call script '%s' for./zQRelative paths cannot be used in script_pre or script_post. Use ${i:PROFILE_DIR}.Fz?Paths outside of the profile directories cannot be used in the z0script_pre or script_post, ignoring script: '%s'TZ full_rollbackz'calling script '%s' with arguments '%s'zusing environment '%s')stdoutstderrZ close_fdsenvcwdZuniversal_newlineszscript '%s' error: %d, '%s'r#zscript '%s' error: %s)rar-r.r(rtr^rvrprqdirnameenvironrfrZget_envrsZ ROLLBACK_FULLappendrcr6rKrNrArrZ communicate returncodeOSErrorIOError)rrFZscriptoprZrollbackZdir_nameretdevr}Z argumentsprocouterrerrr_call_device_scriptsL           zPlugin._call_device_scriptcCs|js dS|jrZ|||jd|j||d||||d|||jd|j|j r|j t j t jr|||||j|j|j|j|jdS)zG Apply static and dynamic tuning if the plugin instance is active. NZapplyT)rbhas_static_tuningrrDrerm_instance_apply_staticrnrEhas_dynamic_tuningrgetrsCFG_DYNAMIC_TUNINGCFG_DEF_DYNAMIC_TUNING_instance_init_dynamicrk_instance_apply_dynamicrhrfrPrIrrrinstance_apply_tunings"      zPlugin.instance_apply_tuningcCs|js dSt|jdkr.tdd|j|j}|jr| ||j d|dkrXdS| |||dkrndS| ||j d|dkrdSdSdSdS)z< Verify static tuning if the plugin instance is active. Nrz)BUG: Some devices have not been tuned: %sr`ZverifyFT) rbrarer-r^rdrhr,rrrD_instance_verify_staticrE)rrFignore_missingrZrrrinstance_verify_tunings   zPlugin.instance_verify_tuningcCs<|js dS|jr8|jtjtjr8|||j|j dS)z< Apply dynamic tuning if the plugin instance is active. N) rbrrrrsrrrk_instance_update_dynamicrhr,rIrrrinstance_update_tuning2szPlugin.instance_update_tuningcCs|tjkrdS|jr8|jtjtjr8|||j|j |j r|j ||j d|j |d| |d|||||d|j ||jd|j |ddS)z8 Remove all tunings applied by the plugin instance. NZunapply)rF)rsZ ROLLBACK_NONErrrrrrk_instance_unapply_dynamicrhrrrErm_instance_unapply_staticrnrDrrFrrrrinstance_unapply_tuning;s     zPlugin.instance_unapply_tuningcCs|||||jdSr) _execute_all_non_device_commands_execute_all_device_commandsrerIrrrrMs zPlugin._instance_apply_staticcCs2d}|||dkrd}||||dkr.d}|Sro)_verify_all_non_device_commands_verify_all_device_commands)rrFrrZrrrrrQs zPlugin._instance_verify_staticcCs|||j||dSr)_cleanup_all_device_commandsrh _cleanup_all_non_device_commandsrrrrrYszPlugin._instance_unapply_staticcCsdSrrrIrrrr^szPlugin._instance_init_dynamiccsBfddjDD]}j|qdS)Ncs(g|] }j|dur|qSr) _storage_get _commands)r\optrjrFrrrr]br=z2Plugin._instance_apply_dynamic..)r_check_and_save_valuerr)rrFrjoptionrrrraszPlugin._instance_apply_dynamiccCs tdSrrSrrFrjrrrrgsz Plugin._instance_unapply_dynamiccCs tdSrrSrrrrrjszPlugin._instance_update_dynamiccCst|_||dS)z Initialize commands. N)r rr_autoregister_commands_check_commandsrrrrrqs zPlugin._init_commandscCs|jjD]}|drqt||}t|ds.q|jd}|j|d|i}d|jvrd|d<||d<|jd|d<|jd|d<nBd |jvr||d <n.d|jvr||d<|jd|d<|jd|d<||j|<qt t t |j d d d |_dS) zd Register all commands marked using @command_set, @command_get, and @command_custom decorators. ___commandr(rWNcustom per_devicer:rcSs |ddS)Nr%r:r)Z name_inforrrr<r=z/Plugin._autoregister_commands..r>) r__dict__rtgetattrhasattrrrrr rr@iterrA)r member_namemember command_namercrrrrys*          zPlugin._autoregister_commandscCsFt|jD]2\}}|ddr$qd|vs4d|vrtd|qdS)z2 Check if all commands are defined correctly. rFrrWz,Plugin command '%s' is not defined correctlyN)rNrrAr TypeError)rrcommandrrrrs  zPlugin._check_commandsNcCsJt|j}|durdn|}|dur&dn|}|dur6dn|}d||||fS)Nz %s/%s/%s/%s)r4r)rZ instance_namer device_name class_namerrr _storage_keys zPlugin._storage_keycCs&||j|d|}|j||dSNr()rr(r rW)rrFrr8rr0rrr _storage_setszPlugin._storage_setcCs ||j|d|}|j|Sr)rr(r rrrFrrr0rrrrszPlugin._storage_getcCs ||j|d|}|j|Sr)rr(r Zunsetrrrr_storage_unsetszPlugin._storage_unsetcCsRddt|jDD]4}|j|j|dd}|dur||||qdS)NcSsg|]}|ds|qSrrr\rrrrr]r=z;Plugin._execute_all_non_device_commands..r()rNrrOrexpandr/r_execute_non_device_commandrrFr new_valuerrrrsz'Plugin._execute_all_non_device_commandscCs`ddt|jDD]B}|j|j|dd}|dur@q|D]}|||||qDqdS)NcSsg|]}|dr|qSrrrrrrr]r=z7Plugin._execute_all_device_commands..r()rNrrOrrr/r_execute_device_command)rrFrZrrrjrrrrs z#Plugin._execute_all_device_commandscCs`d}ddt|jDD]>}|j|j|dd}|dur|||||dkrd}q|S)NTcSsg|]}|ds|qSrrrrrrr]r=z:Plugin._verify_all_non_device_commands..r(F)rNrrOrrr/r_verify_non_device_command)rrFrrrrrrrrsz&Plugin._verify_all_non_device_commandsc Csnd}ddt|jDD]L}|j|j|dd}|durDq|D]}||||||dkrHd}qHq|S)NTcSsg|]}|dr|qSrrrrrrr]r=z6Plugin._verify_all_device_commands..r(F)rNrrOrrr/r_verify_device_command)rrFrZrrrrrjrrrrsz"Plugin._verify_all_device_commandsc Cs|durt|}t|dkr |S|dd}|dd}|durP|dvrL|S|SzN|dkrxt|t|krp|WSWdSn$|dkrt|t|kr|WSWdSWn(tytd||||fYn0|S)Nr%)<>rrzhcannot compare new value '%s' with current value '%s' by operator '%s', using '%s' directly as new value)r6raint ValueErrorr-r.)rr current_valueZnwsrvalrrr_process_assignment_modifierss(     z$Plugin._process_assignment_modifiersFcCs*|dur|d|||dS|d|SdS)Nrrr)rrFrrjrrrr_get_current_valueszPlugin._get_current_valuecCs>||||}|||}|dur:|dur:||||||Sr)rrr)rrFrrjrrrrrrs  zPlugin._check_and_save_valuecCsV|ddur$|dd||dd|n.|||||}|durR|d|||ddddSNrTFrWZsimremover)rrFrrjrrrrrs  zPlugin._execute_device_commandcCsR|ddur"|dd|dd|n,|||d|}|durN|d||ddddSrrrrrrrs  z"Plugin._execute_non_device_commandcCs.|jt|}td|r*tdd|S|S)Nz\s*(0+,?)+([\da-fA-F]*,?)*\s*$z ^\s*(0+,?)+r)runquoter6rematchsub)rr8vrrr _norm_values zPlugin._norm_valuec Cs|dur dSd}|durN|rN|dur6ttj|nttj||fdS|dur||}||}zt|t|k}Wntyzt|dt|dk}WnVtyt|t|k}|st| d}|D]}| }||k}|rqqYn0Yn0|j |||||d|S)NFT|)rj) r-rcrsZ STR_VERIFY_PROFILE_VALUE_MISSINGZ'STR_VERIFY_PROFILE_DEVICE_VALUE_MISSINGrrrr6r'strip_log_verification_result) rr(rrrrjrZvalsrrrr _verify_values:      zPlugin._verify_valuecCs|rL|dur*ttj|t|fnttj||t|fdS|dur|ttj|t|t|fn(ttj ||t|t|fdSdSro) r-rcrsZSTR_VERIFY_PROFILE_VALUE_OKr6rZ"STR_VERIFY_PROFILE_DEVICE_VALUE_OKr^ZSTR_VERIFY_PROFILE_VALUE_FAILZ$STR_VERIFY_PROFILE_DEVICE_VALUE_FAIL)rr(successrrrjrrrr>s((zPlugin._log_verification_resultcCsv|ddur"|dd||d||S|j||||d}|||}|durLdS|d|||dd}||d||||S)NrTrrWFr(rrr)rrFrrjrrrrrrrMs  zPlugin._verify_device_commandcCsj|ddur |dd|d||S|||}|||}|durDdS|d||dd}||d|||S)NrTrWFr(r)rrFrrrrrrrrWs   z!Plugin._verify_non_device_commandcCsVtddt|jDD]4}|j|dddusD|d|jvr|||qdS)NcSsg|]}|ds|qSrrrrrrr]br=z;Plugin._cleanup_all_non_device_commands..r()reversedrNrrOr/rr_cleanup_non_device_command)rrFrrrrras $z'Plugin._cleanup_all_non_device_commandscCsdtddt|jDD]B}|j|dddusD|d|jvr|D]}|||||qHqdS)NcSsg|]}|dr|qSrrrrrrr]gr=z7Plugin._cleanup_all_device_commands..r()rrNrrOr/rr_cleanup_device_command)rrFrZrrrjrrrrfs $z#Plugin._cleanup_all_device_commandscCsb|ddur$|ddd|dd|n:||||}|durP|d|||d|d||||dSNrFrWrrr)rrFrrjr old_valuerrrrls  zPlugin._cleanup_device_commandcCsZ|ddur"|ddddd|n4|||}|durJ|d||ddd|||dSrr)rrFrrrrrrus   z"Plugin._cleanup_non_device_command)NNN)N)N)N)NF)NN)N)N)F)F)Frr& __qualname____doc__rrr!propertyr( classmethodr)r+rr1r9rGrJrMrrHrLrRr r[r_rgrQrkrmrnrvrsZ ROLLBACK_SOFTrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr s          '         !     r)rZ tuned.constsrsZtuned.profiles.variablesZtunedZ tuned.logsr Ztuned.utils.commandsrrp subprocessrrZlogsrr-objectrrrrrs