a „oe ã@sôdZddlZddlZddlZddlZddlZddlmZmZm Z dZ dZ dZ dZ d d ¡Zd d „Zd d „ZdNdd„Zdd„ZdOdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zd d!„ZdPd"d#„Zd$d%„Zed&k�rðejd'ed(�Zej d)d*d+d,d-d.d/�ej d0d1d2d3d4�ej d0d5d6d7�ej d0d8d9d7�ej d0d:d;d7�ej d0dd?d7�ej d0d@dAd7�ej d0dBdCd7�ej d0dDdEdFdG�ej d0dHdIdJdG�ej d0dKdLd7�e !¡\Z"Z#e#�sÈe $dM¡e#D]"Z%e e%¡D]Z&ee&e"ƒ�qÚ�qÌdS)Qz0 Stamp a Win32 binary with version information. éN)ÚBeginUpdateResourceÚEndUpdateResourceÚUpdateResourcei½ïþié?iúÚasciicCs |rdSdS)Nér©)Údebugr r ú8C:\Program Files\Certbot\pkgs\win32\lib\win32verstamp.pyÚ file_flagssr cCs |rdSdS)Néér )Úis_dllr r r Ú file_typesrrcCsLt dtt|d>|B|d>|B|d>|B|d>|Btt|ƒtt|ƒddd¡S)NZ lllllllllllllér)ÚstructÚpackÚVS_FFI_SIGNATUREÚVS_FFI_STRUCVERSIONÚVS_FFI_FILEFLAGSMASKr ÚVOS_NT_WINDOWS32r)ÚmajÚminÚsubÚbuildr rr r r ÚVS_FIXEDFILEINFO#s     òrcCs:tjdd…dkr$t|ƒd d¡St|ƒd d¡SdS)Nr )rérzunicode-internalzutf-16le)ÚsysÚ version_infoÚstrÚencode©Úsr r r Únullterm6sr$r cCs,dt|ƒ|d@}|dkr(|t|S|S)Nér)ÚlenÚ null_byte)r#ZextraÚlr r r Úpad32>s r)cCst dt|ƒd¡|S)NÚhr )rrr&r"r r r ÚaddlenFsr+cCsBt|ƒ}t|ƒ}t dt|ƒdd¡}||}t|ƒ|}t|ƒS)NÚhhr r)r$rrr&r)r+©ÚkeyÚvalueÚresultr r r ÚStringJs  r1cCsNt|ƒ}t ddd¡}||}| ¡D]\}}|t||ƒ}t|ƒ}q&t|ƒS)Nr,rr)r$rrÚitemsr1r)r+)r.Údatar0ÚkÚvr r r Ú StringTableSs r6cCs4t ddd¡}|tdƒ}t|ƒtd|ƒ}t|ƒS)Nr,rrÚStringFileInfoZ040904E4)rrr$r)r6r+)r3r0r r r r7]s r7cCs2t dt|ƒd¡}|t|ƒ}t|ƒ|}t|ƒS)Nr,r)rrr&r$r)r+r-r r r ÚVares  r8cCsJt ddd¡}|tdƒ}t|ƒ}| ¡D]\}}|t||ƒ}q*t|ƒS)Nr,rrÚ VarFileInfo)rrr$r)r2r8r+)r3r0r4r5r r r r9ls  r9c Cs\t||||||ƒ}t dt|ƒd¡} | tdƒ} t| ƒ|} t| ƒt|ƒt|ƒ} t| ƒS)Nr,rÚVS_VERSION_INFO) rrrr&r$r)r7r9r+) rrrrÚsdataÚvdatar rZffir0r r r r:us   r:c CsÒzt|dƒ}| ¡Wn4tyJ}ztd||fƒWYd}~n d}~00|j}z$dd„| d¡Dƒ}|\}}}} Wn$tttfyštd|ƒ‚Yn0|j } | s²t j   |¡} |j } | durÌt j   |¡} |j|j|j|| |j|j| |j|dœ } dt d d d ¡i} |j}|du�r0t j  |¡d  ¡d  ¡v}|j}|du�rZt j  |¡d ¡ d¡}t|  ¡ƒD]\}}|du�rfd| |<�qft|||| | | ||ƒ}t|dƒ}t|dd |ƒt |dƒ|j!�rÎtd|ƒdS)Nza+bz)WARNING: File %s could not be opened - %scSsg|] }t|ƒ‘qSr )Úint)Ú.0Úir r r Ú Šózstamp..Ú.z1--version must be a.b.c.d (all integers) - got %r) ZCommentsZ CompanyNameZFileDescriptionZ FileVersionZ InternalNameZLegalCopyrightZLegalTrademarksZOriginalFilenameZ ProductNameZProductVersionZ Translationr,i iärz .dll .pydrZ_dÚrzStamped:)"ÚopenÚcloseÚIOErrorÚprintÚversionÚsplitÚ IndexErrorÚ TypeErrorÚ ValueErrorZ internal_nameÚosÚpathÚbasenameZoriginal_filenameZcommentsZcompanyÚ descriptionÚ copyrightZ trademarksÚproductrrZdllÚsplitextÚlowerr ÚendswithÚlistr2r:rrrÚverbose)ÚpathnameÚoptionsÚfÚwhyZverÚbitsZvmajZvminZvsubZvbuildZifnZofnr;r<rZis_debugr4r5Zvsr*r r r Ústamp~sZ  &  ö ÿ      r]Ú__main__z%prog [options] filespec ...)rPz-qz--quietÚ store_falserWTz%don't print status messages to stdout)ÚactionÚdestÚdefaultÚhelprCz --versionz0.0.0.0zThe version number as m.n.s.b)rbrcz--dllzpStamp the file as a DLL. Default is to look at the file extension for .dll or .pyd.)rcz--debugz!Stamp the file as a debug binary.z --productzThe product name to embed.z --companyzThe company name to embed.z --trademarkszThe trademark string to embed.z --commentszThe comments string to embed.z --copyrightz&The copyright message string to embed.z --descriptionZDESCzThe description to embed.)Úmetavarrcz--internal-nameÚNAMEzdThe internal filename to embed. If not specified the base filename is used.z--original-filenamezgThe original filename to embed. If not specified the base filename is used.z9You must supply a file to stamp. Use --help for details.)rr)r )rr)'Ú__doc__ÚglobZoptparserMrrZwin32apirrrrrrrr!r'r rrr$r)r+r1r6r7r8r9r:r]Ú__name__Z OptionParserÚparserZ add_optionÚ parse_argsrYÚargsÚerrorÚgrZr r r r ÚsŒ      ; úÿýÿÿüý