
    iZP                         S SK r S SKrS SKJr  S rSrS rS rS r " S S	5      r	SS
 jr
S r " S S5      r " S S5      r " S S5      r " S S5      rS r " S S5      r " S S5      rS rS rg)    N)win32apic                      [         R                  " U SS9n[        UR                  R                  S-  5      $ ! [
         a     gf = f)a6  
Checks if the specified PE file has CFG (Control Flow Guard) enabled.

Parameters
----------
filename : str
    Path to the PE file to inspect.

Returns
----------
bool
    True if file is a PE file with CFG enabled. False if CFG is not enabled or if file could not be processed using
    the pefile library.
T	fast_loadi @  F)pefilePEboolOPTIONAL_HEADERDllCharacteristics	Exception)filenamepes     PC:\des-py\RoboSAPF\venv\Lib\site-packages\PyInstaller\utils\win32\versioninfo.pypefile_check_control_flow_guardr      sG    YYx40 B&&99FBCC s   69 
AA   c                 $    U R                  S5      $ )zD
Encodes text as UTF-16LE (Microsoft 'Unicode') for use in structs.
UTF-16LE)encode)texts    r   getRawr   /   s     ;;z""    c                 j   [         R                  " U S[        5      n[         R                  " U[        R
                  S   5      n[        U5      (       d  g[         R                  " U[        R
                  S   US   5      n[        5       nUR                  U5        [         R                  " U5        U$ )z
Read the version information structure from the given executable's resources, and return it as an instance of
`VSVersionInfo` structure.
r   
RT_VERSIONN)r   LoadLibraryExLOAD_LIBRARY_AS_DATAFILEEnumResourceNamesr   RESOURCE_TYPElenLoadResourceVSVersionInfofromRawFreeLibrary)exe_filenamehresdatainfos        r   !read_version_info_from_executabler(   6   s    
 	|Q0HIA

$
$Q(<(<\(J
KCs88  F$8$8$FAOD?DLLKr   c                     U S-   S-	  S-  $ )z-
Align `offset` to the next 4-byte boundary.
   r    )offsets    r   	nextDWordr-   F   s     aZA!##r   c                   D    \ rS rSrSrSS jrS rS rS rSS jr	S	 r
S
rg)r    M   a  
WORD  wLength;        // length of the VS_VERSION_INFO structure
WORD  wValueLength;   // length of the Value member
WORD  wType;          // 1 means text, 0 means binary
WCHAR szKey[];        // Contains the Unicode string "VS_VERSION_INFO".
WORD  Padding1[];
VS_FIXEDFILEINFO Value;
WORD  Padding2[];
WORD  Children[];     // zero or more StringFileInfo or VarFileInfo
                      // structures (or both) that are children of the
                      // current version structure.
Nc                 0    Xl         U=(       d    / U l        g Nffikids)selfr3   r4   s      r   __init__VSVersionInfo.__init__Z   s    JB	r   c           	         [        U5      u  nu  p4pV[        U5      n[        5       U l        U R                  R	                  X5      nUnX#:  a  Un[        X5      u  nu  ppUR                  5       S:X  a>  [        5       nUR	                  XXaX'U-   5      nU R                  R                  U5        UnO=[        5       nUR	                  XXaX'U-   5      nU R                  R                  U5        UnXx-   n[        U5      nX#:  a  M  U$ NStringFileInfo)
parseCommonr-   FixedFileInfor3   r!   stripr:   r4   appendVarFileInfo)r5   r&   isublenvallenwTypenmjcsublencvallenctypsfikvfis                 r   r!   VSVersionInfo.fromRaw^   s    )4T):&&FEaL ?HHT%jA.9$.B+A+$xxz--$&KK"A7{K		  %!mKK"A7{K		  %A!A j r   c                    [        S5      nU R                  R                  5       n[        U5      nSnS[        U5      -   S-   nSnUS-  (       a  SnU[        U5      -   U-   nSnUS-  (       a  SnSR	                  U R
                   Vs/ s H  oR                  5       PM     sn5      n	U[        U5      -   [        U	5      -   n[        R                  " SXSU5      U-   S-   U-   U-   U-   U	-   $ s  snf )	NVS_VERSION_INFOr      r   r           HHH)r   r3   toRawr   joinr4   structpack)
r5   raw_namerawffirB   typrA   padpad2kidtmps
             r   rS   VSVersionInfo.toRaww   s    +,!VS]"Q&A:C#c("V+A:Dhhtyy9y		y9:#d)#c#h.{{5&#6AKORUUX^^aeehkkk :s   
C.c                 (    U R                  5       U:H  $ r1   rS   r5   others     r   __eq__VSVersionInfo.__eq__       zz|u$$r   c                    US-   nU R                    Vs/ s H  o"R                  US-   5      PM     nnSR                  U5      nSR                  SSSSSUS	U R                  R                  U5       S
3-   US-   UUS-   S/
5      $ s  snf )N  , 

z# UTF-8#z3# For more details about fixed file info 'ffi' see:z7# http://msdn.microsoft.com/en-us/library/ms646997.aspxzVSVersionInfo(zffi=,zkids=[]))r4   __str__rT   r3   )r5   indentr\   r]   s       r   rn   VSVersionInfo.__str__   s    $59YY?Yc{{6D=)Y?kk#yyAEtDHH,,V45Q77XSL
  	 @s   Bc                 @    SU R                   < SU R                  < S3$ )Nzversioninfo.VSVersionInfo(ffi=z, kids=rm   r2   r5   s    r   __repr__VSVersionInfo.__repr__   s    ?CxxSSr   r2   NN __name__
__module____qualname____firstlineno____doc__r6   r!   rS   rc   rn   rs   __static_attributes__r+   r   r   r    r    M   s'    2l"%"Tr   r    c                 p    US-   n[         R                  " SXU 5      u  p4n[        XX#-   5      u  p&X#XEU44$ )NrO   3H)rU   unpackparseUString)r&   startr@   wLengthwValueLengthrC   r   s          r   r;   r;      sD    	A%+]]4A%G"WE4AK0GAT222r   c                 v    UnX2:  a  XUS-    S:X  a  OUS-  nX2:  a  M  XU R                  S5      nUS-  nX44$ )Nr   rQ   r   )decode)r&   r   limitr@   r   s        r   r   r      sU    A
)!a%=K'	Q ) a=
+DFA7Nr   c                   T    \ rS rSrSr        SS jrS rS rS rSS jr	S r
S	rg
)r<      a  
DWORD dwSignature;        //Contains the value 0xFEEFO4BD
DWORD dwStrucVersion;     // binary version number of this structure.
                          // The high-order word of this member contains
                          // the major version number, and the low-order
                          // word contains the minor version number.
DWORD dwFileVersionMS;    // most significant 32 bits of the file's binary
                          // version number
DWORD dwFileVersionLS;    //
DWORD dwProductVersionMS; // most significant 32 bits of the binary version
                          // number of the product with which this file was
                          // distributed
DWORD dwProductVersionLS; //
DWORD dwFileFlagsMask;    // bitmask that specifies the valid bits in
                          // dwFileFlags. A bit is valid only if it was
                          // defined when the file was created.
DWORD dwFileFlags;        // VS_FF_DEBUG, VS_FF_PATCHED etc.
DWORD dwFileOS;           // VOS_NT, VOS_WINDOWS32 etc.
DWORD dwFileType;         // VFT_APP etc.
DWORD dwFileSubtype;      // 0 unless VFT_DRV or VFT_FONT or VFT_VXD
DWORD dwFileDateMS;
DWORD dwFileDateLS;
c	                 4   SU l         SU l        US   S-  US   S-  -  U l        US   S-  US   S-  -  U l        US   S-  US   S-  -  U l        US   S-  US   S-  -  U l        X0l        X@l        XPl        X`l	        Xpl
        US   U l        US   U l        g )	Nl   } i   r           r   r*   )sigstrucVersionfileVersionMSfileVersionLSproductVersionMSproductVersionLSfileFlagsMask	fileFlagsfileOSfileTypefileSubtype
fileDateMS
fileDateLS)	r5   fileversprodversmaskflagsOSr   subtypedates	            r   r6   FixedFileInfo.__init__   s     #&qkR/HQK&4HI&qkR/HQK&4HI!)!!2x{V7K L!)!!2x{V7K L! "q'q'r   c                     [         R                  " SXUS-    5      u  U l        U l        U l        U l        U l        U l        U l        U l	        U l
        U l        U l        U l        U l        US-   $ )N13L4   )rU   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r5   r&   r@   s      r   r!   FixedFileInfo.fromRaw   sp     MM%B0	
H!!NKMOO2vr   c                 L   [         R                  " SU R                  U R                  U R                  U R
                  U R                  U R                  U R                  U R                  U R                  U R                  U R                  U R                  U R                  5      $ )Nr   )rU   rV   r   r   r   r   r   r   r   r   r   r   r   r   r   rr   s    r   rS   FixedFileInfo.toRaw   s    {{HH!!!!NNKKMMOOOO
 	
r   c                 (    U R                  5       U:H  $ r1   r`   ra   s     r   rc   FixedFileInfo.__eq__  re   r   c                 j   U R                   S-	  U R                   S-  U R                  S-	  U R                  S-  4nU R                  S-	  U R                  S-  U R                  S-	  U R                  S-  4nU R                  U R
                  4nSSSSU< S3SU< S3S	S
[        U R                  5      -  SS[        U R                  5      -  SSS[        U R                  5      -  SSS[        U R                  5      -  SSS[        U R                  5      -  SSU< 3S/nSU S3R                  U5      $ )Nr   r   zFixedFileInfo(zN# filevers and prodvers should be always a tuple with four items: (1, 2, 3, 4)z!# Set not needed items to zero 0.z	filevers=rk   z	prodvers=z;# Contains a bitmask that specifies the valid bits 'flags'rzmask=%s,zG# Contains a bitmask that specifies the Boolean attributes of the file.z	flags=%s,z8# The operating system for which this file was designed.z-# 0x4 - NT and there is no need to change it.zOS=%s,z# The general type of file.z## 0x1 - the file is an application.zfileType=%s,z# The function of the file.z5# 0x0 - the function is not defined for this fileTypezsubtype=%s,z# Creation date and time stamp.zdate=rm   ri   rg   )r   r   r   r   r   r   hexr   r   r   r   r   rT   )r5   ro   fvpvfdr]   s         r   rn   FixedFileInfo.__str__
  sF   "$d&8&86&A"$d&8&86&A

 !!R')>)>)G!!R')>)>)G
 oot/\/ " "IT//00U#dnn--F;s4;;'')1S//)CC 0 011-+
. F82##C((r   c           	         U R                   S-	  U R                   S-  U R                  S-	  U R                  S-  4nU R                  S-	  U R                  S-  U R                  S-	  U R                  S-  4nU R                  U R
                  4nSXU R                  U R                  U R                  U R                  U R                  U4-  $ )Nr   r   zwversioninfo.FixedFileInfo(filevers=%r, prodvers=%r, mask=0x%x, flags=0x%x, OS=0x%x, fileType=%r, subtype=0x%x, date=%r))r   r   r   r   r   r   r   r   r   r   r   )r5   r   r   r   s       r   rs   FixedFileInfo.__repr__-  s    "$d&8&86&A"$d&8&86&A

 !!R')>)>)G!!R')>)>)G
 oot/2 T''dmmUYUeUegijk	
r   )r   r   r   r   r   r   r   r   r   r   r   r   r   N)r   r   r   r   r   ?   r   i  r   r   )r   r   rv   rx   r+   r   r   r<   r<      s@    2 "2$
$%!)F
r   r<   c                   D    \ rS rSrSrSS jrS rS rS rSS jr	S	 r
S
rg)r:   i?  a  
WORD        wLength;      // length of the version resource
WORD        wValueLength; // length of the Value member in the current
                          // VS_VERSION_INFO structure
WORD        wType;        // 1 means text, 0 means binary
WCHAR       szKey[];      // Contains the Unicode string 'StringFileInfo'.
WORD        Padding[];
StringTable Children[];   // list of zero or more String structures
Nc                 2    SU l         U=(       d    / U l        g r9   namer4   r5   r4   s     r   r6   StringFileInfo.__init__I  s    $	JB	r   c                     X0l         XV:  a@  [        5       nUR                  XEU5      nU R                  R	                  U5        UnXV:  a  M@  U$ r1   )r   StringTabler!   r4   r>   )	r5   rA   rB   r   r&   r@   r   strE   s	            r   r!   StringFileInfo.fromRawM  sH    	iB

4E*AIIR A	 i
 r   c                 j   [        U R                  5      nSnSnS[        U5      -   S-   nSnUS-  (       a  SnSR                  U R                   Vs/ s H  ofR                  5       PM     sn5      nU[        U5      -   [        U5      -   n[        R                  " SXBU5      U-   S-   U-   U-   $ s  snf )	Nr   r   rO   r   r   rP   rQ   rR   )r   r   r   rT   r4   rS   rU   rV   )r5   rW   rB   rY   rA   rZ   r\   r]   s           r   rS   StringFileInfo.toRawV  s    $))$S]"Q&A:Chhtyy9y		y9:#c("SX-{{5&#6AKORUUX[[[ :s   B0c                 (    U R                  5       U:H  $ r1   r`   ra   s     r   rc   StringFileInfo.__eq__b  re   r   c                 t   ^ US-   mSR                  U4S jU R                   5       5      nU ST SU ST S3$ )Nrg   rh   c              3   D   >#    U  H  oR                  T5      v   M     g 7fr1   )rn   ).0r\   
new_indents     r   	<genexpr>)StringFileInfo.__str__.<locals>.<genexpr>g  s     GYc++j11Ys    zStringFileInfo(
z[
ri   ])rT   r4   )r5   ro   r]   r   s      @r   rn   StringFileInfo.__str__e  sD    d]
kkGTYYGG*:,c#bBOOr   c                      SU R                   -  $ )Nzversioninfo.StringFileInfo(%r)r4   rr   s    r   rs   StringFileInfo.__repr__j  s    /$));;r   r4   r   r1   rv   rx   r+   r   r   r:   r:   ?  s'    
\%P
<r   r:   c                   D    \ rS rSrSrSS jrS rS rS rSS jr	S	 r
S
rg)r   in  z
WORD   wLength;
WORD   wValueLength;
WORD   wType;
WCHAR  szKey[];
String Children[];    // list of zero or more String structures.
Nc                 D    U=(       d    SU l         U=(       d    / U l        g Nrw   r   r5   r   r4   s      r   r6   StringTable.__init__v      JB	JB	r   c                     [        XU5      u  nu  pEo`l        [        U5      nX#:  aK  [        5       nUR	                  XU5      nUnU R
                  R                  U5        [        U5      nX#:  a  MK  U$ r1   )parseCodePager   r-   StringStructr!   r4   r>   )	r5   r&   r@   r   cpsublencpwValueLengthcpwTypessrE   s	            r   r!   StringTable.fromRawz  sn    <I$SX<Y99HgyaLiB

4E*AAIIR !A i r   c                 r   [        U R                  5      nSnSnS[        U5      -   S-   n/ nU R                   H<  nUR	                  5       n[        U5      S-  (       a  US-   nUR                  U5        M>     SR                  U5      nU[        U5      -  n[        R                  " SXBU5      U-   S-   U-   $ )	Nr   r   rO   r   rP   rQ   r   rR   )	r   r   r   r4   rS   r>   rT   rU   rV   )r5   rW   rB   rY   rA   r]   r\   raws           r   rS   StringTable.toRaw  s    $))$S]"Q&99C))+C3x!|K'JJsO	 
 hhsm#c({{5&#6AKORUUUr   c                 (    U R                  5       U:H  $ r1   r`   ra   s     r   rc   StringTable.__eq__  re   r   c           
          US-   nSU-   R                  S U R                   5       5      nU SU SU R                   SU SU S3
$ )	Nrg   z,
c              3   8   #    U  H  n[        U5      v   M     g 7fr1   strr   r\   s     r   r   &StringTable.__str__.<locals>.<genexpr>  s     'FISCI   zStringTable(
'z',
[r   )rT   r4   r   )r5   ro   r   r]   s       r   rn   StringTable.__str__  sV    d]
z!'''FDII'FF
|1TYYKtJ<qQTPUUWXXr   c                 @    SU R                   < SU R                  < S3$ )Nzversioninfo.StringTable(, rm   r   rr   s    r   rs   StringTable.__repr__  s    48IItyyIIr   r   ru   rv   rx   r+   r   r   r   r   n  s(    	V%Y
Jr   r   c                   D    \ rS rSrSrSS jrS rS rS rSS jr	S	 r
S
rg)r   i  zf
WORD   wLength;
WORD   wValueLength;
WORD   wType;
WCHAR  szKey[];
WORD   Padding[];
String Value[];
Nc                 D    U=(       d    SU l         U=(       d    SU l        g r   r   val)r5   r   r   s      r   r6   StringStruct.__init__  s    JB	9"r   c                 v    [        X5      u  nu  pEo`l        X$-   n[        U5      n[        XU5      u  o l        U$ r1   )r;   r   r-   r   r   )r5   r&   r@   r   rA   rB   rY   s          r   r!   StringStruct.fromRaw  s=    .9$.B++FC
aL"4E28r   c                 >   [        U R                  5      n[        U R                  5      n[        U R                  5      S-   nSnS[        U5      -   S-   nSnUS-  (       a  SnU[        U5      -   US-  -   n[        R
                  " SXSU5      U-   S-   U-   U-   S-   $ )Nr   rO   r   r   rP   rQ   rR   )r   r   r   r   rU   rV   )r5   rW   raw_valrB   rY   rA   rZ   s          r   rS   StringStruct.toRaw  s    $))$"TXX"S]"Q&A:C#c("fqj1{{5&#6AKORUUX__bmmmr   c                 (    U R                  5       U:H  $ r1   r`   ra   s     r   rc   StringStruct.__eq__  re   r   c                 @    SU R                   < SU R                  < S3$ )NzStringStruct(r   rm   r   r5   ro   s     r   rn   StringStruct.__str__  s    )-DHH==r   c                 @    SU R                   < SU R                  < S3$ )Nzversioninfo.StringStruct(r   rm   r   rr   s    r   rs   StringStruct.__repr__  s    59YYIIr   r   ru   rv   rx   r+   r   r   r   r     s'    n%>Jr   r   c                 0    [        X5      u  nu  p4pVXXEU44$ r1   )r;   )r&   r@   r   rA   r   rC   rD   s          r   r   r     s&    +6t+?(A(e|B///r   c                   D    \ rS rSrSrSS jrS rS rS rSS jr	S	 r
S
rg)r?   i  aw  
WORD  wLength;        // length of the version resource
WORD  wValueLength;   // length of the Value member in the current
                      // VS_VERSION_INFO structure
WORD  wType;          // 1 means text, 0 means binary
WCHAR szKey[];        // Contains the Unicode string 'VarFileInfo'.
WORD  Padding[];
Var   Children[];     // list of zero or more Var structures
Nc                 $    U=(       d    / U l         g r1   r   r   s     r   r6   VarFileInfo.__init__  s    JB	r   c                     Xl         X l        X0l        [        U5      nXV:  a@  [	        5       nUR                  XEU5      nU R                  R                  U5        UnXV:  a  M@  U$ r1   )rA   rB   r   r-   	VarStructr!   r4   r>   )	r5   rA   rB   r   r&   r@   r   vsrE   s	            r   r!   VarFileInfo.fromRaw  s[    	aLiB

4E*AIIR A	 i
 r   c                    SU l         SU l        SU l        [        U R                  5      nS[	        U5      -   S-   nSnUS-  (       a  SnSR                  U R                   Vs/ s H  oDR                  5       PM     sn5      nU[	        U5      -   [	        U5      -   U l        [        R                  " S	U R                  U R                   U R                  5      U-   S-   U-   U-   $ s  snf )
Nr   r   r?   rO   r   r   rP   rQ   rR   )rB   rC   r   r   r   rT   r4   rS   rA   rU   rV   r5   rW   rA   rZ   r\   r]   s         r   rS   VarFileInfo.toRaw  s    
!	$))$S]"Q&A:Chhtyy9y		y9:s3x'#c(2{{5$++t{{DJJG(RU``cffilll :s   #C%c                 (    U R                  5       U:H  $ r1   r`   ra   s     r   rc   VarFileInfo.__eq__  re   r   c                 R    USSR                  S U R                   5       5      -  -   $ )NzVarFileInfo([%s])r   c              3   8   #    U  H  n[        U5      v   M     g 7fr1   r   r   s     r   r   &VarFileInfo.__str__.<locals>.<genexpr>  s     7VISCIr   r   r   s     r   rn   VarFileInfo.__str__  s&    +dii7VDII7V.VVVVr   c                      SU R                   -  $ )Nzversioninfo.VarFileInfo(%r)r   rr   s    r   rs   VarFileInfo.__repr__  s    ,tyy88r   )r4   r   rA   rB   rC   r1   rv   rx   r+   r   r   r?   r?     s'    
m%W9r   r?   c                   D    \ rS rSrSrSS jrS rS rS rSS jr	S	 r
S
rg)r  i   a  
WORD  wLength;        // length of the version resource
WORD  wValueLength;   // length of the Value member in the current
                      // VS_VERSION_INFO structure
WORD  wType;          // 1 means text, 0 means binary
WCHAR szKey[];        // Contains the Unicode string 'Translation'
                      // or a user-defined key string value
WORD  Padding[];      //
WORD  Value[];        // list of one or more values that are language
                      // and code-page identifiers
Nc                 D    U=(       d    SU l         U=(       d    / U l        g r   r   r   s      r   r6   VarStruct.__init__  r   r   c                 $   [        X5      u  nu  U l        U l        U l        U l        [        U5      n[        SU R                  S5       HB  n[        R                  " SXUS-    5      S   nU R                  R                  U5        US-  nMD     U$ )Nr   r   H)r;   rA   r   rC   r   r-   rangerU   r   r4   r>   )r5   r&   r@   r   rE   r\   s         r   r!   VarStruct.fromRaw  s    EPQUEYBBDK*DJ	aLq$++Q/A--TAE]3A6CIIS!FA 0 r   c           	         [        U R                  5      S-  U l        SU l        [	        U R
                  5      nS[        U5      -   S-   nSnUS-  (       a  SnU[        U5      -   U R                  -   U l        SR                  U R                   Vs/ s H  n[        R                  " SU5      PM     sn5      n[        R                  " SU R                  U R                  U R                  5      U-   S-   U-   U-   $ s  snf )	Nr   r   rO   r   rP   rQ   r  rR   )
r   r4   r   rC   r   r   rA   rT   rU   rV   r  s         r   rS   VarStruct.toRaw  s    		NQ.
$))$S]"Q&A:Cs3x'$*;*;;hhC#C-CD{{5$++t/@/@$**MPXX[ffillorrr Ds   !C=c                 (    U R                  5       U:H  $ r1   r`   ra   s     r   rc   VarStruct.__eq__%  re   r   c                 @    SU R                   < SU R                  < S3$ )NzVarStruct('z', rm   r   r   s     r   rn   VarStruct.__str__(  s    (,		499==r   c                 @    SU R                   < SU R                  < S3$ )Nzversioninfo.VarStruct(r   rm   r   rr   s    r   rs   VarStruct.__repr__+  s    26))TYYGGr   )r4   r   rA   rC   r   ru   rv   rx   r+   r   r   r  r     s'    

s%>Hr   r  c                 H   SSK Js  Jn  [        U S5       nUR	                  UR                  5       5      nSSS5         [        W5      n[        U[        5      (       d   S[        U5      < 35       eU$ ! , (       d  f       NE= f! [         a  n[        S5      UeSnAff = f)z
Load the `VSVersionInfo` structure from its string-based (`VSVersionInfo.__str__`) serialization by reading the
text from the file and running it through `eval()`.
r   NrbzCFailed to deserialize VSVersionInfo from text-based representation!zALoaded incompatible structure type! Expected VSVersionInfo, got: )PyInstaller.utils.miscutilsmiscopenr   readevalr   
ValueError
isinstancer    type)r   	miscutilsfpr   r'   es         r    load_version_info_from_text_filer2  /  s     /.	h		* 
gDz
 dM** [
KDQUJ>Z[* K 
	  g^_effgs"    A5B 5
B
B!BB!c                 `   [        U[        5      (       d   e[        R                  " U SS9nUR	                  5       nUR                  5         [        R                  " U S5      n[        R                  " U[        R                  S   SUR                  5       5        [        R                  " US5        U(       ad  [        R                  " U SS9nUR	                  5       nUR                  5         U(       d'  [        U S5       nUR                  U5        S S S 5        g g g ! , (       d  f       g = f)NTr   r   r   r   ab)r-  r    r   r   get_overlaycloser   BeginUpdateResourceUpdateResourcer   rS   EndUpdateResourcer)  write)r#   r'   r   overlay_beforehdstoverlay_afterexefs          r    write_version_info_to_executabler?  G  s    dM**** 
<4	0B^^%NHHJ''a8DD&"6"6|"DaVtQ'YY|t4(

 lD)T

>* *)   *)s   D
D-)r   )rU   r   PyInstaller.compatr   r   r   r   r(   r-   r    r;   r   r<   r:   r   r   r   r?   r  r2  r?  r+   r   r   <module>rA     s      '2  # $PT PTf3J
 J
Z,< ,<^/J /Jd(J (JV0
-9 -9`,H ,H^0+r   