<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
B
    :—°a8E  ã               @   s´   d dl mZ d dlZd dlZd dlZd dlZd dlZddlmZm	Z	m
Z
 ddlmZ ddlmZmZmZmZmZmZ e e¡Zd ¡ Ze d¡Zd	Zd
d„ ZeZG dd„ deƒZdS )é    )ÚBytesIONé   )Ú	sysconfigÚdetect_encodingÚZipFile)Úfinder)ÚFileOperatorÚget_export_entryÚconvert_pathÚget_executableÚget_platformÚin_venvañ  
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
 <assemblyIdentity version="1.0.0.0"
 processorArchitecture="X86"
 name="%s"
 type="win32"/>

 <!-- Identify the application security requirements. -->
 <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
 <security>
 <requestedPrivileges>
 <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
 </requestedPrivileges>
 </security>
 </trustInfo>
</assembly>s   ^#!.*pythonw?[0-9.]*([ 	].*)?$zÍ# -*- coding: utf-8 -*-
import re
import sys
from %(module)s import %(import_name)s
if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(%(func)s())
c             C   sX   d| krT|   d¡rB|  dd¡\}}d|krT|  d¡sTd||f } n|   d¡sTd|  } | S )Nú z/usr/bin/env r   ú"z%s "%s"z"%s")Ú
startswithÚsplit)Ú
executableÚenvZ_executable© r   ú@/opt/alt/python37/lib/python3.7/site-packages/distlib/scripts.pyÚenquote_executable3   s    

r   c               @   sæ   e Zd ZdZeZdZd*dd„Zdd„ Ze	j
 d	¡rBd
d„ Zdd„ Zdd„ Zd+dd„Zdd„ ZeZdd„ Zdd„ ZdZdd„ Zd,dd„Zdd„ Zed d!„ ƒZejd"d!„ ƒZejd#ksÆejd	krÎejd#krÎd$d%„ Zd-d&d'„Z d.d(d)„Z!dS )/ÚScriptMakerz_
    A class to copy or create scripts from source scripts or callable
    specifications.
    NTFc             C   s‚   || _ || _|| _d| _d| _tjdkp:tjdko:tjdk| _t	dƒ| _
|pRt|ƒ| _tjdkprtjdkortjdk| _tj| _d S )NFÚposixÚjava)Ú zX.YÚnt)Ú
source_dirÚ
target_dirÚadd_launchersÚforceÚclobberÚosÚnameÚ_nameÚset_modeÚsetÚvariantsr   Ú_fileopÚ_is_ntÚsysÚversion_info)Úselfr   r   r   Údry_runZfileopr   r   r   Ú__init__N   s    

zScriptMaker.__init__c             C   s@   |  dd¡r<| jr<tj |¡\}}| dd¡}tj ||¡}|S )NÚguiFÚpythonZpythonw)Úgetr(   r!   Úpathr   ÚreplaceÚjoin)r+   r   ÚoptionsZdnÚfnr   r   r   Ú_get_alternate_executable_   s
    z%ScriptMaker._get_alternate_executabler   c          	   C   sL   y"t |ƒ}| d¡dkS Q R X W n$ ttfk
rF   t d|¡ dS X dS )zl
            Determine if the specified executable is a script
            (contains a #! line)
            é   z#!NzFailed to open %sF)ÚopenÚreadÚOSErrorÚIOErrorÚloggerÚwarning)r+   r   Úfpr   r   r   Ú	_is_shellg   s    
zScriptMaker._is_shellc             C   sD   |   |¡r*dd l}|jj d¡dkr<|S n| ¡  d¡r<|S d| S )Nr   zos.nameZLinuxz
jython.exez/usr/bin/env %s)r?   r   ÚlangZSystemZgetPropertyÚlowerÚendswith)r+   r   r   r   r   r   Ú_fix_jython_executables   s    
z"ScriptMaker._fix_jython_executablec             C   s‚   t jdkrd}n8t|ƒt|ƒ d }tjdkr4d}nd}d|koF||k}|r^d| | d	 }n d
}|d| | d 7 }|d7 }|S )a  
        Build a shebang line. In the simple case (on Windows, or a shebang line
        which is not too long or contains spaces) use a simple formulation for
        the shebang. Otherwise, use /bin/sh as the executable, with a contrived
        shebang which allows the script to run either under Python or sh, using
        suitable quoting. Thanks to Harald Nordgren for his input.

        See also: http://www.in-ulm.de/~mascheck/various/shebang/#length
                  https://hg.mozilla.org/mozilla-central/file/tip/mach
        r   Té   Údarwini   é   ó    s   #!ó   
s
   #!/bin/sh
s	   '''exec' s    "$0" "$@"
s   ' ''')r!   r"   Úlenr)   Úplatform)r+   r   Úpost_interpZsimple_shebangZshebang_lengthZmax_shebang_lengthÚresultr   r   r   Ú_build_shebang   s    

zScriptMaker._build_shebangó    c             C   s~  d}| j r| j }d}nˆt ¡ s&tƒ }nxtƒ rLtj t d¡dt 	d¡ ¡}nRtj t 	d¡dt 	d¡t 	d¡f ¡}tj 
|¡sžtj t 	d¡dt 	d¡ ¡}|r®|  ||¡}tj d	¡rÄ|  |¡}|rÐt|ƒ}| d
¡}tjdkrüd|krüd|krü|d7 }|  ||¡}y| d
¡ W n" tk
r8   td| ƒ‚Y nX |d
krzy| |¡ W n& tk
rx   td||f ƒ‚Y nX |S )NTFÚscriptszpython%sÚEXEÚBINDIRz
python%s%sÚVERSIONr   zutf-8Zcliz	-X:Framesz-X:FullFramess
    -X:Framesz,The shebang (%r) is not decodable from utf-8z?The shebang (%r) is not decodable from the script encoding (%r))r   r   Zis_python_buildr   r   r!   r1   r3   Zget_pathÚget_config_varÚisfiler6   r)   rJ   r   rC   r   ÚencoderM   ÚdecodeÚUnicodeDecodeErrorÚ
ValueError)r+   ÚencodingrK   r4   Zenquoter   Úshebangr   r   r   Ú_get_shebangž   sP    



zScriptMaker._get_shebangc             C   s$   | j t|j|j d¡d |jd S )NÚ.r   )ÚmoduleZimport_nameÚfunc)Úscript_templateÚdictÚprefixÚsuffixr   )r+   Úentryr   r   r   Ú_get_script_textã   s    
zScriptMaker._get_script_textc             C   s   t j |¡}| j| S )N)r!   r1   ÚbasenameÚmanifest)r+   ZexenameÚbaser   r   r   Úget_manifestê   s    zScriptMaker.get_manifestc             C   sú  | j o
| j}tj d¡}| |¡s*||7 }|s8|| }nZ|dkrL|  d¡}n
|  d¡}tƒ }	t|	dƒ}
|
 	d|¡ W d Q R X |	 
¡ }|| | }x`|D ]V}tj | j|¡}|r|tj |¡\}}| d¡rÔ|}d| }y| j ||¡ W nŠ tk
rx   t d¡ d	| }tj |¡r*t |¡ t ||¡ | j ||¡ t d
¡ yt |¡ W n tk
rr   Y nX Y nX nl| jr | d| ¡s d||f }tj |¡rÄ| jsÄt d|¡ qš| j ||¡ | jrè| j |g¡ | |¡ qšW d S )Nzutf-8ÚpyÚtÚwz__main__.pyz.pyz%s.exez:Failed to write executable - trying to use .deleteme logicz%s.deletemez0Able to replace executable using .deleteme logicr\   z%s.%szSkipping existing file %s)r   r(   r!   ÚlineseprU   rB   Ú_get_launcherr   r   ÚwritestrÚgetvaluer1   r3   r   Úsplitextr   r'   Zwrite_binary_fileÚ	Exceptionr<   r=   ÚexistsÚremoveÚrenameÚdebugr    r$   Úset_executable_modeÚappend)r+   ÚnamesrZ   Zscript_bytesÚ	filenamesÚextZuse_launcherrl   ZlauncherÚstreamÚzfZzip_datar"   ÚoutnameÚnÚeZdfnamer   r   r   Ú_write_scriptî   sX    






zScriptMaker._write_scriptú-c             C   sn   t ƒ }d| jkr| |¡ d| jkr<| d|| jd f ¡ d| jkrj| d|| j| jd | jd f ¡ |S )Nr   ÚXz%s%sr   zX.Yz	%s%s%s.%sr   )r%   r&   Úaddr*   Úvariant_separator)r+   r"   rL   r   r   r   Úget_script_filenames$  s    



z ScriptMaker.get_script_filenamesc       
      C   sŒ   d}|r0|  dg ¡}|r0dd |¡ }| d¡}| jd||d}|  |¡ d¡}|  |j¡}|rr|  dd¡rrd	}	nd
}	|  |||||	¡ d S )NrN   Zinterpreter_argsz %sr   zutf-8)r4   r.   FÚpywri   )r0   r3   rU   r[   rd   r…   r"   r€   )
r+   rc   ry   r4   rK   ÚargsrZ   ÚscriptZscriptnamesrz   r   r   r   Ú_make_script/  s    
zScriptMaker._make_scriptc             C   s  d}t j | jt|ƒ¡}t j | jt j |¡¡}| jsT| j 	||¡sTt
 d|¡ d S yt|dƒ}W n  tk
r‚   | jsz‚ d }Y nFX | ¡ }|s t
 d|¡ d S t | dd¡¡}|rÈd}| d¡pÆd	}|s|rÚ| ¡  | j ||¡ | jrü| j |g¡ | |¡ n„t
 d
|| j¡ | jjs~t|jƒ\}	}
| d¡ |  |	|¡}d|krVd}nd}t j |¡}|  |g|| ¡ ||¡ |rŒ| ¡  d S )NFznot copying %s (up-to-date)Úrbz%s is an empty file (skipping)s   
rH   Tr   rN   zcopying and adjusting %s -> %sr   s   pythonwr†   ri   ) r!   r1   r3   r   r
   r   re   r   r'   Únewerr<   ru   r8   r;   r,   Úreadliner=   ÚFIRST_LINE_REÚmatchr2   ÚgroupÚcloseÚ	copy_filer$   rv   rw   Úinfor   Úseekr[   r€   r9   )r+   rˆ   ry   Zadjustr}   ÚfZ
first_linerŽ   rK   rY   ÚlinesrZ   rz   r~   r   r   r   Ú_copy_script?  sP    



zScriptMaker._copy_scriptc             C   s   | j jS )N)r'   r,   )r+   r   r   r   r,   r  s    zScriptMaker.dry_runc             C   s   || j _d S )N)r'   r,   )r+   Úvaluer   r   r   r,   v  s    r   c             C   st   t  d¡dkrd}nd}tƒ dkr&dnd}d|||f }t d	d
¡d }t|ƒ |¡}|snd||f }t|ƒ‚|jS )NÚPé   Z64Z32z	win-arm64z-armr   z
%s%s%s.exer\   r   r   z(Unable to find resource %s in package %s)	ÚstructÚcalcsizer   Ú__name__Úrsplitr   ÚfindrX   Úbytes)r+   ÚkindÚbitsZplatform_suffixr"   Zdistlib_packageÚresourceÚmsgr   r   r   rm   ~  s    zScriptMaker._get_launcherc             C   s6   g }t |ƒ}|dkr"|  ||¡ n| j|||d |S )aÓ  
        Make a script.

        :param specification: The specification, which is either a valid export
                              entry specification (to make a script from a
                              callable) or a filename (to make a script by
                              copying from a source location).
        :param options: A dictionary of options controlling script generation.
        :return: A list of all absolute pathnames written to.
        N)r4   )r	   r–   r‰   )r+   Úspecificationr4   ry   rc   r   r   r   Úmake‘  s    zScriptMaker.makec             C   s(   g }x|D ]}|  |  ||¡¡ q
W |S )zÂ
        Take a list of specifications and make scripts from them,
        :param specifications: A list of specifications.
        :return: A list of all absolute pathnames written to,
        )Úextendr¥   )r+   Zspecificationsr4   ry   r¤   r   r   r   Úmake_multiple¤  s    
zScriptMaker.make_multiple)TFN)rN   N)N)N)N)"rœ   Ú
__module__Ú__qualname__Ú__doc__ÚSCRIPT_TEMPLATEr_   r   r-   r6   r)   rJ   r   r?   rC   rM   r[   rd   Ú_DEFAULT_MANIFESTrf   rh   r€   r„   r…   r‰   r–   Úpropertyr,   Úsetterr!   r"   r#   rm   r¥   r§   r   r   r   r   r   E   s2    

E4
3
r   ) Úior   Úloggingr!   Úrerš   r)   Úcompatr   r   r   Z	resourcesr   Úutilr   r	   r
   r   r   r   Ú	getLoggerrœ   r<   Ústripr¬   Úcompiler   r«   r   Z_enquote_executableÚobjectr   r   r   r   r   Ú<module>   s    

