§
    —Çj¥@  ã                  ó^  — U d Z ddlmZ ddlZddlZddlZddlmZ ddlm	Z	 ddl
mZmZ ddlmZ erdd	lmZ d
Zded<    G d„ de¦  «        Zd=d„Zd>d„Zddddddddddœ	Zded <   d?d"„Zd=d#„Zd$d%d&d'd(d)d*d+d,d-d.d/d0d1d2œZd3ed4<   ed@d6„¦   «         Zd=d7„Zd@d8„Z e¦   «         Zd=d9„ZdAd<„ZdgZ dS )BzWindows.é    )ÚannotationsN)Úcache)ÚPath)ÚTYPE_CHECKINGÚFinalé   )ÚPlatformDirsABC)ÚCallablei @  z
Final[int]Ú_KF_FLAG_DONT_VERIFYc                  ó¨  — e Zd ZdZed%d„¦   «         Zddœd&d
„Zed%d„¦   «         Zed%d„¦   «         Zed%d„¦   «         Z	ed%d„¦   «         Z
ed%d„¦   «         Zed%d„¦   «         Zed%d„¦   «         Zed%d„¦   «         Zed%d„¦   «         Zed%d„¦   «         Zed%d„¦   «         Zed%d„¦   «         Zed%d„¦   «         Zed%d„¦   «         Zed%d„¦   «         Zed%d„¦   «         Zed%d„¦   «         Zed%d„¦   «         Zed%d„¦   «         Zed%d„¦   «         Zed%d„¦   «         Zed%d „¦   «         Zed%d!„¦   «         Zed%d"„¦   «         Zed%d#„¦   «         Zed%d$„¦   «         Z dS )'ÚWindowsaë  `MSDN on where to store app data files <https://learn.microsoft.com/en-us/windows/win32/shell/knownfolderid>`_.

    Makes use of the `appname <platformdirs.api.PlatformDirsABC.appname>`, `appauthor
    <platformdirs.api.PlatformDirsABC.appauthor>`, `version <platformdirs.api.PlatformDirsABC.version>`, `roaming
    <platformdirs.api.PlatformDirsABC.roaming>`, `opinion <platformdirs.api.PlatformDirsABC.opinion>`, `ensure_exists
    <platformdirs.api.PlatformDirsABC.ensure_exists>`.

    ÚreturnÚstrc                óš   — | j         rdnd}t          j                             t	          |¦  «        ¦  «        }|                      |¦  «        S )z«Data directory tied to the user, e.g. ``%USERPROFILE%\AppData\Local\$appauthor\$appname`` (not roaming) or ``%USERPROFILE%\AppData\Roaming\$appauthor\$appname`` (roaming).ÚCSIDL_APPDATAÚCSIDL_LOCAL_APPDATA)ÚroamingÚosÚpathÚnormpathÚget_win_folderÚ_append_parts)ÚselfÚconstr   s      úEC:\Projects\Historical\venv\Lib\site-packages\platformdirs/windows.pyÚuser_data_dirzWindows.user_data_dir   sF   € ð $(¤<ÐJ��Ð5JˆÝŒw×Ò¥¨uÑ 5Ô 5Ñ6Ô6ˆØ×!Ò! $Ñ'Ô'Ð'ó    N©Úopinion_valuer   r   ú
str | Nonec               ó~  — g }| j         r…| j        dur#| j        p| j         }|                     |¦  «         |                     | j         ¦  «         |�| j        r|                     |¦  «         | j        r|                     | j        ¦  «         t          j        j        |g|¢R Ž }|                      |d¬¦  «         |S )NF©Úprivate)	ÚappnameÚ	appauthorÚappendÚopinionÚversionr   r   ÚjoinÚ_optionally_create_directory)r   r   r   ÚparamsÚauthors        r   r   zWindows._append_parts&   sÆ   € ØˆØŒ<ð 	,ØŒ~ UÐ*Ð*ØœÐ7¨4¬<�Ø—’˜fÑ%Ô%Ð%Ø�MŠM˜$œ,Ñ'Ô'Ð'ØÐ(¨T¬\Ð(Ø—’˜mÑ,Ô,Ð,ØŒ|ð ,Ø—’˜dœlÑ+Ô+Ð+ÝŒwŒ|˜DÐ* 6Ð*Ð*Ð*ˆØ×)Ò)¨$¸Ð)Ñ>Ô>Ð>Øˆr   c                ó„   — t           j                             t          d¦  «        ¦  «        }|                      |¦  «        S )zLData directory shared by users, e.g. ``C:\ProgramData\$appauthor\$appname``.ÚCSIDL_COMMON_APPDATA©r   r   r   r   r   ©r   r   s     r   Úsite_data_dirzWindows.site_data_dir5   s6   € õ Œw×Ò¥Ð/EÑ FÔ FÑGÔGˆØ×!Ò! $Ñ'Ô'Ð'r   c                ó   — | j         S )z;Config directory tied to the user, same as `user_data_dir`.©r   ©r   s    r   Úuser_config_dirzWindows.user_config_dir;   ó   € ð Ô!Ð!r   c                ó   — | j         S )z:Config directory shared by users, same as `site_data_dir`.©r1   r4   s    r   Úsite_config_dirzWindows.site_config_dir@   r6   r   c                óˆ   — t           j                             t          d¦  «        ¦  «        }|                      |d¬¦  «        S )z¤Cache directory tied to the user (if opinionated with ``Cache`` folder within ``$appname``) e.g. ``%USERPROFILE%\AppData\Local\$appauthor\$appname\Cache\$version``.r   ÚCacher   r/   r0   s     r   Úuser_cache_dirzWindows.user_cache_dirE   s;   € õ Œw×Ò¥Ð/DÑ EÔ EÑFÔFˆØ×!Ò! $°gÐ!Ñ>Ô>Ð>r   c                óˆ   — t           j                             t          d¦  «        ¦  «        }|                      |d¬¦  «        S )z\Cache directory shared by users, e.g. ``C:\ProgramData\$appauthor\$appname\Cache\$version``.r.   r;   r   r/   r0   s     r   Úsite_cache_dirzWindows.site_cache_dirK   s;   € õ Œw×Ò¥Ð/EÑ FÔ FÑGÔGˆØ×!Ò! $°gÐ!Ñ>Ô>Ð>r   c                ó   — | j         S )z:State directory tied to the user, same as `user_data_dir`.r3   r4   s    r   Úuser_state_dirzWindows.user_state_dirQ   r6   r   c                ó   — | j         S )z9State directory shared by users, same as `site_data_dir`.r8   r4   s    r   Úsite_state_dirzWindows.site_state_dirV   r6   r   c                ó�   — | j         }| j        r7t          j                             |d¦  «        }|                      |d¬¦  «         |S )z_Log directory tied to the user, same as `user_data_dir` if not opinionated else ``Logs`` in it.ÚLogsFr"   )r   r'   r   r   r)   r*   r0   s     r   Úuser_log_dirzWindows.user_log_dir[   óJ   € ð Ô!ˆØŒ<ð 	CÝ”7—<’<  fÑ-Ô-ˆDØ×-Ò-¨d¸EÐ-ÑBÔBÐBØˆr   c                ó�   — | j         }| j        r7t          j                             |d¦  «        }|                      |d¬¦  «         |S )z^Log directory shared by users, same as `site_data_dir` if not opinionated else ``Logs`` in it.rD   Fr"   )r1   r'   r   r   r)   r*   r0   s     r   Úsite_log_dirzWindows.site_log_dird   rF   r   c                óZ   — t           j                             t          d¦  «        ¦  «        S )zFDocuments directory tied to the user e.g. ``%USERPROFILE%\Documents``.ÚCSIDL_PERSONAL©r   r   r   r   r4   s    r   Úuser_documents_dirzWindows.user_documents_dirm   ó#   € õ Œw×Ò¥Ð/?Ñ @Ô @ÑAÔAÐAr   c                óZ   — t           j                             t          d¦  «        ¦  «        S )zFDownloads directory tied to the user e.g. ``%USERPROFILE%\Downloads``.ÚCSIDL_DOWNLOADSrK   r4   s    r   Úuser_downloads_dirzWindows.user_downloads_dirr   ó#   € õ Œw×Ò¥Ð/@Ñ AÔ AÑBÔBÐBr   c                óZ   — t           j                             t          d¦  «        ¦  «        S )zDPictures directory tied to the user e.g. ``%USERPROFILE%\Pictures``.ÚCSIDL_MYPICTURESrK   r4   s    r   Úuser_pictures_dirzWindows.user_pictures_dirw   s#   € õ Œw×Ò¥Ð/AÑ BÔ BÑCÔCÐCr   c                óZ   — t           j                             t          d¦  «        ¦  «        S )z@Videos directory tied to the user e.g. ``%USERPROFILE%\Videos``.ÚCSIDL_MYVIDEOrK   r4   s    r   Úuser_videos_dirzWindows.user_videos_dir|   ó"   € õ Œw×Ò¥¨Ñ ?Ô ?Ñ@Ô@Ð@r   c                óZ   — t           j                             t          d¦  «        ¦  «        S )z>Music directory tied to the user e.g. ``%USERPROFILE%\Music``.ÚCSIDL_MYMUSICrK   r4   s    r   Úuser_music_dirzWindows.user_music_dir�   rX   r   c                óZ   — t           j                             t          d¦  «        ¦  «        S )zCDesktop directory tied to the user, e.g. ``%USERPROFILE%\Desktop``.ÚCSIDL_DESKTOPDIRECTORYrK   r4   s    r   Úuser_desktop_dirzWindows.user_desktop_dir†   s#   € õ Œw×Ò¥Ð/GÑ HÔ HÑIÔIÐIr   c                óz   — t           j                             t           j                             d¦  «        ¦  «        S )zEProjects directory tied to the user, e.g. ``%USERPROFILE%\Projects``.z
~/Projects)r   r   r   Ú
expanduserr4   s    r   Úuser_projects_dirzWindows.user_projects_dir‹   s*   € õ Œw×Ò¥¤× 2Ò 2°<Ñ @Ô @ÑAÔAÐAr   c                óZ   — t           j                             t          d¦  «        ¦  «        S )z0Public share directory e.g. ``C:\Users\Public``.ÚCSIDL_PUBLICrK   r4   s    r   Úuser_publicshare_dirzWindows.user_publicshare_dir�   s"   € õ Œw×Ò¥¨~Ñ >Ô >Ñ?Ô?Ð?r   c                óZ   — t           j                             t          d¦  «        ¦  «        S )zTTemplates directory tied to the user e.g. ``%APPDATA%\Microsoft\Windows\Templates``.ÚCSIDL_TEMPLATESrK   r4   s    r   Úuser_templates_dirzWindows.user_templates_dir•   rQ   r   c           	     ó    — t           j                             t          t	          t          d¦  «        ¦  «        dz  dz  dz  ¦  «        ¦  «        S )zQFonts directory tied to the user e.g. ``%LOCALAPPDATA%\Microsoft\Windows\Fonts``.r   Ú	Microsoftr   ÚFonts)r   r   r   r   r   r   r4   s    r   Úuser_fonts_dirzWindows.user_fonts_dirš   sE   € õ Œw×Ò¥¥D­Ð8MÑ)NÔ)NÑ$OÔ$OÐR]Ñ$]Ð`iÑ$iÐlsÑ$sÑ tÔ tÑuÔuÐur   c                ó   — | j         S )zCPreference directory tied to the user, same as ``user_config_dir``.)r5   r4   s    r   Úuser_preference_dirzWindows.user_preference_dirŸ   s   € ð Ô#Ð#r   c                óZ   — t           j                             t          d¦  «        ¦  «        S )zABin directory tied to the user, e.g. ``%LOCALAPPDATA%\Programs``.ÚCSIDL_USER_PROGRAM_FILESrK   r4   s    r   Úuser_bin_dirzWindows.user_bin_dir¤   s#   € õ Œw×Ò¥Ð/IÑ JÔ JÑKÔKÐKr   c                ó–   — t           j                             t           j                             t	          d¦  «        d¦  «        ¦  «        S )z;Bin directory shared by users, e.g. ``C:\ProgramData\bin``.r.   Úbin)r   r   r   r)   r   r4   s    r   Úsite_bin_dirzWindows.site_bin_dir©   s4   € õ Œw×Ò¥¤§¢­^Ð<RÑ-SÔ-SÐUZÑ [Ô [Ñ\Ô\Ð\r   c                óZ   — t           j                             t          d¦  «        ¦  «        S )zFApplications directory tied to the user, e.g. ``Start Menu\Programs``.ÚCSIDL_PROGRAMSrK   r4   s    r   Úuser_applications_dirzWindows.user_applications_dir®   rM   r   c                óZ   — t           j                             t          d¦  «        ¦  «        S )zfApplications directory shared by users, e.g. ``C:\ProgramData\Microsoft\Windows\Start Menu\Programs``.ÚCSIDL_COMMON_PROGRAMSrK   r4   s    r   Úsite_applications_dirzWindows.site_applications_dir³   s#   € õ Œw×Ò¥Ð/FÑ GÔ GÑHÔHÐHr   c                óÀ   — t           j                             t           j                             t	          d¦  «        d¦  «        ¦  «        }|                      |¦  «        S )zbRuntime directory tied to the user, e.g. ``%USERPROFILE%\AppData\Local\Temp\$appauthor\$appname``.r   ÚTemp)r   r   r   r)   r   r   r0   s     r   Úuser_runtime_dirzWindows.user_runtime_dir¸   sG   € õ Œw×Ò¥¤§¢­^Ð<QÑ-RÔ-RÐTZÑ [Ô [Ñ\Ô\ˆØ×!Ò! $Ñ'Ô'Ð'r   c                ó   — | j         S )z>Runtime directory shared by users, same as `user_runtime_dir`.)r|   r4   s    r   Úsite_runtime_dirzWindows.site_runtime_dir¾   s   € ð Ô$Ð$r   )r   r   )r   r   r   r    r   r   )!Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úpropertyr   r   r1   r5   r9   r<   r>   r@   rB   rE   rH   rL   rP   rT   rW   r[   r^   ra   rd   rg   rk   rm   rp   rs   rv   ry   r|   r~   © r   r   r   r      sÛ  € € € € € ðð ð ð(ð (ð (ñ „Xð(ð GKð ð ð ð ð ð ð ð(ð (ð (ñ „Xð(ð
 ð"ð "ð "ñ „Xð"ð ð"ð "ð "ñ „Xð"ð ð?ð ?ð ?ñ „Xð?ð
 ð?ð ?ð ?ñ „Xð?ð
 ð"ð "ð "ñ „Xð"ð ð"ð "ð "ñ „Xð"ð ðð ð ñ „Xðð ðð ð ñ „Xðð ðBð Bð Bñ „XðBð ðCð Cð Cñ „XðCð ðDð Dð Dñ „XðDð ðAð Að Añ „XðAð ðAð Að Añ „XðAð ðJð Jð Jñ „XðJð ðBð Bð Bñ „XðBð ð@ð @ð @ñ „Xð@ð ðCð Cð Cñ „XðCð ðvð vð vñ „Xðvð ð$ð $ð $ñ „Xð$ð ðLð Lð Lñ „XðLð ð]ð ]ð ]ñ „Xð]ð ðBð Bð Bñ „XðBð ðIð Ið Iñ „XðIð ð(ð (ð (ñ „Xð(ð
 ð%ð %ð %ñ „Xð%ð %ð %r   r   Ú
csidl_namer   r   c                óô   — t          | ¦  «        }|�|S ddddœ                     | ¦  «        }|€d| › �}t          |¦  «        ‚t          j                             |¦  «        x}sd|› �}t          |¦  «        ‚|S )z&Get folder from environment variables.NÚAPPDATAÚALLUSERSPROFILEÚLOCALAPPDATA)r   r.   r   úUnknown CSIDL name: zUnset environment variable: )Ú(get_win_folder_if_csidl_name_not_env_varÚgetÚ
ValueErrorr   Úenviron)r…   ÚresultÚenv_var_nameÚmsgs       r   Úget_win_folder_from_env_varsr’   Ä   s›   € å5°jÑAÔA€FØÐØˆð #Ø 1Ø-ðð ÷ 
‚cˆ*�o„oð	 ð
 ÐØ1 ZÐ1Ð1ˆÝ˜‰oŒoÐÝ”j—n’n \Ñ2Ô2Ð2ˆFð Ø;¨\Ð;Ð;ˆÝ˜‰oŒoÐØ€Mr   r    c                ó†  — t                                | ¦  «        x}�E|^}}t          j        j        t          j                             t          |¦  «        ¦  «        g|¢R Ž S | dk    rUt          j                             d¦  «        p5t          t          d¦  «         
                    ¦   «         j        dz  ¦  «        S | dk    r~t          j                             t          j                             t          j                             d¦  «        p t          j                             d¦  «        pd	¦  «        d
ddd¦  «        S dS )zMGet a folder for a CSIDL name that does not exist as an environment variable.Nrc   ÚPUBLICú~ÚPublicrx   ÚPROGRAMDATArˆ   zC:\ProgramDatari   r   ú
Start MenuÚPrograms)Ú_ENV_VAR_SUBFOLDERSrŒ   r   r   r)   r   Ú_non_empty_envrŽ   r   r   r`   Úparent)r…   Úenv_var_and_partsÚenv_varÚpartss       r   r‹   r‹   Ø   s  € å0×4Ò4°ZÑ@Ô@Ð@ÐÐMØ+ˆˆ�%ÝŒwŒ|�BœG×,Ò,­^¸GÑ-DÔ-DÑEÔEÐNÈÐNÐNÐNÐNà�^Ò#Ð#ÝŒz�~Š~˜hÑ'Ô'ÐX­3­t°C©y¬y×/CÒ/CÑ/EÔ/EÔ/LÈxÑ/WÑ+XÔ+XÐXàÐ,Ò,Ð,ÝŒw�|Š|ÝŒG×Ò�RœZŸ^š^¨MÑ:Ô:Ðt½b¼j¿nºnÐM^Ñ>_Ô>_ÐtÐctÑuÔuØØØØñ
ô 
ð 	
ð ˆ4r   )ÚUSERPROFILEÚ	Documents)r    Ú	Downloads)r    ÚPictures)r    ÚVideos)r    ÚMusic)r    ÚDesktop)r‡   ri   r   r˜   r™   )r‡   ri   r   Ú	Templates)r‰   r™   )	rJ   rO   rS   rV   rZ   r]   ru   rf   ro   z!Final[dict[str, tuple[str, ...]]]rš   Únamec                óf   — t           j                             | ¦  «        x}r|S t          | ¦  «        ‚)N)r   rŽ   rŒ   ÚKeyError)r¨   Úvalues     r   r›   r›   ù   s.   € Ý”
—’˜tÑ$Ô$Ð$€uð ØˆÝ
�4‰.Œ.Ðr   c                óv  — ddh}ddddddd	d
dddddœ                      | ¦  «        }|€t          | ¦  «        S t          j        dk    rt          ‚ddl}| |v r|j        n|j        }|                     |d¦  «        5 }| 	                    ||¦  «        \  }}ddd¦  «         n# 1 swxY w Y   t          |¦  «        S )z·Get folder from the registry.

    This is a fallback technique at best. I'm not sure if using the registry for these guarantees us the correct answer
    for all CSIDL_* names.

    r.   rx   ÚAppDatazCommon AppDatazLocal AppDataÚPersonalú&{374DE290-123F-4565-9164-39C4925E467B}zMy PictureszMy VideozMy Musicr¦   r™   zCommon Programsr§   )r   r.   r   rJ   rO   rS   rV   rZ   r]   ru   rx   rf   NÚwin32r   z@Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders)rŒ   r’   ÚsysÚplatformÚNotImplementedErrorÚwinregÚHKEY_LOCAL_MACHINEÚHKEY_CURRENT_USERÚOpenKeyÚQueryValueExr   )r…   Úmachine_namesÚshell_folder_namer´   ÚhkeyÚkeyÚ	directoryÚ_s           r   Úget_win_folder_from_registryr¿   ÿ   s?  € ð 	Øð€Mð
 #Ø 0Ø.Ø$ØCØ)Ø#Ø#Ø"+Ø$Ø!2Ø&ðð ÷ 
‚cˆ*�o„oð ð Ð Ý+¨JÑ7Ô7Ð7Ý
„|�wÒÐÝ!Ð!Ø€M€M€Mð )3°mÐ(CÐ(Cˆ6Ô$Ð$ÈÔIa€Dà	�Š˜ÐaÑ	bÔ	bð CÐfiØ×*Ò*¨3Ð0AÑBÔB‰ˆ	�1ðCð Cð Cñ Cô Cð Cð Cð Cð Cð Cð Cøøøð Cð Cð Cð Cåˆy‰>Œ>Ðs   Á;B!Â!B%Â(B%z&{3EB685DB-65F9-4CF6-A03A-E3EF65729F3D}z&{62AB5D82-FDC1-4DC3-A9DD-070D1D495D97}z&{F1B32785-6FBA-4FCF-9D55-7B8E7F157091}z&{FDD39AD0-238F-46AF-ADB4-6C85480369C7}z&{33E28130-4E1E-4676-835A-98395C3BC3BB}z&{18989B1D-99B5-455B-841C-AB7C74E4DDFC}z&{4BD8D571-6D19-48D3-BE97-422220080E43}r¯   z&{B4BFCC3A-DB2C-424C-B029-7FE99A87C641}z&{A77F5D77-2E2B-44C3-A6A2-ABA601054A51}z&{0139D44E-6AFE-49F2-8690-3DAFCAE6FFB8}z&{A63293E8-664E-48DB-A079-DF759E0509F7}z&{DFDF76A2-C82A-4D63-906A-5644AC457385}z&{5CD7AEE2-2219-4A67-B85D-6C9CE15660CB})r   r.   r   rJ   rS   rV   rZ   rO   r]   ru   rx   rf   rc   ro   zdict[str, str]Ú_KNOWN_FOLDER_GUIDSúCallable[[str], str]c                 óÄ  ‡‡‡‡‡	— t           j        dk    rt          ‚ddlm} m}m}m}mŠm	Š	  G ˆ	fd„d|¦  «        Š |d¦  «        Š| ‰j
        _        ‰	j         |‰¦  «        g‰j
        _        d‰j        _        ‰	j        g‰j        _         |d¦  «        Š| ‰j        _         |‰¦  «        ‰	j        ‰	j         |‰	j        ¦  «        g‰j        _        dˆˆˆˆˆ	fd„}|S )z’Build the resolver once; a fresh ``_GUID`` per call leaks ctypes pointer types.

    See https://github.com/tox-dev/platformdirs/issues/501.

    r°   r   )ÚHRESULTÚPOINTERÚ	StructureÚWinDLLÚbyrefÚwintypesc                  óZ   •— e Zd Zd” j        fd” j        fd” j        fd” j        dz  fgZdS )ú/_build_get_win_folder_via_ctypes.<locals>._GUIDÚData1ÚData2ÚData3ÚData4é   N)r   r€   r�   ÚDWORDÚWORDÚBYTEÚ_fields_)rÈ   s   €r   Ú_GUIDrÊ   J  sC   ø€ € € € € à�h”nÐ%Ø�h”mÐ$Ø�h”mÐ$Ø�h”m aÑ'Ð(ð	
ˆˆˆr   rÔ   Úole32NÚshell32r…   r   r   c                ó¤  •— t                                | ¦  «        }|€d| › �}t          |¦  «        ‚ ‰¦   «         }‰                     | ‰|¦  «        ¦  «         ‰
                     ¦   «         }‰	                      ‰|¦  «        t          d  ‰|¦  «        ¦  «         |j        }‰                     |¦  «         |€d| › �}t          |¦  «        ‚|S )NrŠ   z'SHGetKnownFolderPath returned NULL for )	rÀ   rŒ   r�   ÚCLSIDFromStringÚLPWSTRÚSHGetKnownFolderPathr   r«   ÚCoTaskMemFree)r…   Úfolder_guidr‘   ÚguidÚpath_ptrr�   rÔ   rÇ   rÕ   rÖ   rÈ   s         €€€€€r   Úresolvez1_build_get_win_folder_via_ctypes.<locals>.resolve\  s×   ø€ Ý)×-Ò-¨jÑ9Ô9ˆØÐØ5¨Ð5Ð5ˆCÝ˜S‘/”/Ð!àˆu‰wŒwˆØ×Ò˜k¨5¨5°©;¬;Ñ7Ô7Ð7à—?’?Ñ$Ô$ˆØ×$Ò$ U U¨4¡[¤[Õ2FÈÈeÈeÐT\ÉoÌoÑ^Ô^Ð^Ø”ˆØ×Ò˜HÑ%Ô%Ð%àˆ>ØH¸JÐHÐHˆCÝ˜S‘/”/Ð!àˆr   ©r…   r   r   r   )r±   r²   r³   ÚctypesrÃ   rÄ   rÅ   rÆ   rÇ   rÈ   rØ   ÚrestypeÚ	LPCOLESTRÚargtypesrÛ   ÚLPVOIDrÚ   rÐ   ÚHANDLErÙ   )
rÃ   rÄ   rÅ   rÆ   rß   rÔ   rÇ   rÕ   rÖ   rÈ   s
        @@@@@r   Ú _build_get_win_folder_via_ctypesrç   8  ss  øøøøø€ õ „|�wÒÐÝ!Ð!ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð
ð 
ð 
ð 
ð 
ð 
ð 
�	ñ 
ô 
ð 
ð ˆF�7‰OŒO€EØ$+€EÔÔ!Ø&.Ô&8¸'¸'À%¹.¼.Ð%I€EÔÔ"Ø"&€EÔÔØ$,¤OÐ#4€EÔÔ àˆf�YÑÔ€GØ+2€GÔ Ô(Ø-4¨W°U©^¬^¸X¼^ÈXÌ_Ð^eÐ^eÐfnÔfuÑ^vÔ^vÐ,w€GÔ Ô)ðð ð ð ð ð ð ð ð ð ð( €Nr   c                ó0   —  t          ¦   «         | ¦  «        S )z Get folder via :func:`SHGetKnownFolderPath`.

    See https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shgetknownfolderpath.

    )rç   )r…   s    r   Úget_win_folder_via_ctypesré   s  s   € ð .Õ+Ñ-Ô-¨jÑ9Ô9Ð9r   c                 ó€   — 	 ddl } t          S # t          $ r Y nw xY w	 ddl}t          S # t          $ r
 t
          cY S w xY w)zjSelect the best method to resolve Windows folder paths: ctypes, then registry, then environment variables.r   N)rá   ré   ÚImportErrorr´   r¿   r’   )rá   r´   s     r   Ú_pick_get_win_folderrì   |  sy   € ð)Øˆˆˆõ )Ð(øõ ð ð ð Øˆðøøøð,Øˆˆˆõ ,Ð+øõ ð ,ð ,ð ,Ý+Ð+Ð+Ð+ð,øøøs   ‚ �
™ž) ©=¼=c                óÖ   — d|                       d¦  «        › �}t          t          j                             |d¦  «                             ¦   «         x}¦  «        r|S t          | ¦  «        S )zÓGet a Windows folder path, checking for ``WIN_PD_OVERRIDE_*`` environment variable overrides first.

    For example, ``CSIDL_LOCAL_APPDATA`` can be overridden by setting ``WIN_PD_OVERRIDE_LOCAL_APPDATA``.

    ÚWIN_PD_OVERRIDE_ÚCSIDL_Ú )ÚremoveprefixÚ_is_fully_qualifiedr   rŽ   rŒ   ÚstripÚ_resolve_win_folder)r…   rž   Úoverrides      r   r   r   �  sd   € ð E ×!8Ò!8¸Ñ!BÔ!BÐDÐD€GÝ¥r¤z§~¢~°g¸rÑ'BÔ'B×'HÒ'HÑ'JÔ'JÐJ˜8ÑKÔKð ØˆÝ˜zÑ*Ô*Ð*r   r   Úboolc                ó¢   — t          j        | ¦  «        \  }}|                     d¦  «        p#t          |¦  «        o|                     d¦  «        S )N)ú\ú/)ÚntpathÚ
splitdriveÚ
startswithrö   )r   ÚdriveÚtails      r   rò   rò   ›  sF   € åÔ# DÑ)Ô)�K€Eˆ4Ø×Ò˜KÑ(Ô(ÐZ­T°%©[¬[Ð-Y¸T¿_º_È[Ñ=YÔ=YÐZr   rà   )r…   r   r   r    )r¨   r   r   r   )r   rÁ   )r   r   r   rö   )!r‚   Ú
__future__r   rú   r   r±   Ú	functoolsr   Úpathlibr   Útypingr   r   Úapir	   Úcollections.abcr
   r   Ú__annotations__r   r’   r‹   rš   r›   r¿   rÀ   rç   ré   rì   rô   r   rò   Ú__all__r„   r   r   ú<module>r     sZ  ðØ €€à "Ð "Ð "Ð "Ð "Ð "à €€€Ø 	€	€	€	Ø 
€
€
€
Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'à  Ð  Ð  Ð  Ð  Ð  àð )Ø(Ð(Ð(Ð(Ð(Ð(ð $.Ð Ð -Ð -Ð -Ñ -ðl%ð l%ð l%ð l%ð l%ˆoñ l%ô l%ð l%ð^ð ð ð ð(ð ð ð ð* 3Ø3Ø3Ø.Ø-Ø8ØSØGØ <ð
:ð 
:Ð ð 
ð 
ð 
ñ 
ðð ð ð ð$ð $ð $ð $ðP >ØDØCØ>Ø@Ø=Ø=Ø?ØFØ>ØEØ?Ø<Ø Hð'ð 'Ð ð ð ð ñ ð$ ð7ð 7ð 7ñ „ð7ðt:ð :ð :ð :ð,ð ,ð ,ð ,ð  +Ð*Ñ,Ô,Ð ð	+ð 	+ð 	+ð 	+ð[ð [ð [ð [ð ð€€€r   