
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3

  \‚6  ã               @   sÚ   d dl Z d dlZd dlZd dlZdddgZG dd„ deƒZd ZdZdZ	dZ
d	ZG d
d„ dƒZdd„ ZG dd„ dƒZG dd„ dƒZG dd„ dƒZG dd„ dƒZdd„ ZG dd„ dƒZG dd„ dƒZG dd„ dƒZdd„ ZdS )é    NÚbinhexÚhexbinÚErrorc               @   s   e Zd ZdS )r   N)Ú__name__Ú
__module__Ú__qualname__© r   r   ú/usr/lib64/python3.6/binhex.pyr      s   é   i €  é@   ó   �c               @   s   e Zd Zdd„ ZdS )ÚFInfoc             C   s   d| _ d| _d| _d S )Nz????r   )ÚTypeÚCreatorÚFlags)Úselfr   r   r	   Ú__init__0   s    zFInfo.__init__N)r   r   r   r   r   r   r   r	   r   /   s   r   c             C   st   t ƒ }tj| dƒ�2}|jdƒ}d|kr,d|_|jddƒ |jƒ }W d Q R X tjj	| ƒ\}}|j
dddƒ}|||dfS )	NÚrbi   r   ZTEXTé   ú:ú-r
   )r   ÚioÚopenÚreadr   ÚseekÚtellÚosÚpathÚsplitÚreplace)ÚnameÚfinfoÚfpÚdataZdsizeÚdirÚfiler   r   r	   Úgetfileinfo5   s    
r&   c               @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
Úopenrsrcc             G   s   d S )Nr   )r   Úargsr   r   r	   r   C   s    zopenrsrc.__init__c             G   s   dS )Nó    r   )r   r(   r   r   r	   r   F   s    zopenrsrc.readc             G   s   d S )Nr   )r   r(   r   r   r	   ÚwriteI   s    zopenrsrc.writec             C   s   d S )Nr   )r   r   r   r	   ÚcloseL   s    zopenrsrc.closeN)r   r   r   r   r   r*   r+   r   r   r   r	   r'   B   s   r'   c               @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
Ú_Hqxcoderenginec             C   s    || _ d| _d| _td | _d S )Nr)   r
   )Úofpr#   ÚhqxdataÚLINELENÚlinelen)r   r-   r   r   r	   r   R   s    z_Hqxcoderengine.__init__c             C   sh   | j | | _ t| j ƒ}|d d }| j d |… }| j |d … | _ |sHd S | jtj|ƒ | _| jdƒ d S )Né   r   )r#   Úlenr.   ÚbinasciiÚb2a_hqxÚ_flush)r   r#   ZdatalenZtodor   r   r	   r*   X   s    
z_Hqxcoderengine.writec             C   sv   d}xF|t | jƒ| j krJ|| j }| jj| j||… d ƒ t| _|}qW | j|d … | _|rr| jj| jd ƒ d S )Nr   ó   
s   :
)r2   r.   r0   r-   r*   r/   )r   ZforceÚfirstZlastr   r   r	   r5   c   s    
z_Hqxcoderengine._flushc             C   s6   | j r| jtj| j ƒ | _| jdƒ | jjƒ  | `d S )Nr
   )r#   r.   r3   r4   r5   r-   r+   )r   r   r   r	   r+   n   s
    

z_Hqxcoderengine.closeN)r   r   r   r   r*   r5   r+   r   r   r   r	   r,   O   s   r,   c               @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )Ú_Rlecoderenginec             C   s   || _ d| _d S )Nr)   )r-   r#   )r   r-   r   r   r	   r   x   s    z_Rlecoderengine.__init__c             C   s@   | j | | _ t| j ƒtk rd S tj| j ƒ}| jj|ƒ d| _ d S )Nr)   )r#   r2   ÚREASONABLY_LARGEr3   Úrlecode_hqxr-   r*   )r   r#   Úrledatar   r   r	   r*   |   s    z_Rlecoderengine.writec             C   s0   | j rtj| j ƒ}| jj|ƒ | jjƒ  | `d S )N)r#   r3   r:   r-   r*   r+   )r   r;   r   r   r	   r+   „   s
    
z_Rlecoderengine.closeN)r   r   r   r   r*   r+   r   r   r   r	   r8   u   s   r8   c               @   sL   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dS )ÚBinHexc       
   	   C   s    |\}}}}d}t |tƒr.|}tj|dƒ}d}yR|jdƒ t|ƒ}	t|	ƒ| _d| _|d kr`t	ƒ }|| _
|| _| j||ƒ t| _W n   |r”|jƒ  ‚ Y nX d S )NFÚwbTs0   (This file must be converted with BinHex 4.0):r   )Ú
isinstanceÚstrr   r   r*   r,   r8   r-   Úcrcr   ÚdlenÚrlenÚ
_writeinfoÚ_DID_HEADERÚstater+   )
r   Zname_finfo_dlen_rlenr-   r    r!   rA   rB   Zclose_on_errorZofnameZhqxerr   r   r	   r   Œ   s*    



zBinHex.__init__c             C   s´   t |ƒ}|dkrtdƒ‚t|gƒ|jdƒ d }|j|j }}t|tƒrR|jdƒ}t|tƒrf|jdƒ}|| }tj	d|j
ƒ}tj	d| j| jƒ}	|| | |	 }
| j|
ƒ | jƒ  d S )Né?   zFilename too longzlatin-1ó    z>hz>ii)r2   r   ÚbytesÚencoder   r   r>   r?   ÚstructÚpackr   rA   rB   Ú_writeÚ	_writecrc)r   r    r!   ÚnlÚdÚtpZcrZd2Zd3Zd4Úinfor   r   r	   rC   £   s    




zBinHex._writeinfoc             C   s    t j|| jƒ| _| jj|ƒ d S )N)r3   Úcrc_hqxr@   r-   r*   )r   r#   r   r   r	   rL   ¶   s    zBinHex._writec             C   s4   | j dk rd}nd}| jjtj|| j ƒƒ d| _ d S )Nr   z>hz>H)r@   r-   r*   rJ   rK   )r   Zfmtr   r   r	   rM   º   s
    
zBinHex._writecrcc             C   s0   | j tkrtdƒ‚| jt|ƒ | _| j|ƒ d S )NzWriting data at the wrong time)rE   rD   r   rA   r2   rL   )r   r#   r   r   r	   r*   Ä   s    
zBinHex.writec             C   s,   | j dkrtd| jf ƒ‚| jƒ  t| _d S )Nr   zIncorrect data size, diff=%r)rA   r   rB   rM   Ú	_DID_DATArE   )r   r   r   r	   Ú
close_dataÊ   s    
zBinHex.close_datac             C   sB   | j tk r| jƒ  | j tkr$tdƒ‚| jt|ƒ | _| j|ƒ d S )Nz'Writing resource data at the wrong time)rE   rS   rT   r   rB   r2   rL   )r   r#   r   r   r	   Ú
write_rsrcÐ   s    

zBinHex.write_rsrcc             C   sx   | j d krd S zJ| j tk r"| jƒ  | j tkr4tdƒ‚| jdkrNtd| jf ƒ‚| jƒ  W d d | _ | j}| `|jƒ  X d S )NzClose at the wrong timer   z$Incorrect resource-datasize, diff=%r)rE   rS   rT   r   rB   rM   r-   r+   )r   r-   r   r   r	   r+   Ø   s    



zBinHex.closeN)r   r   r   r   rC   rL   rM   r*   rT   rU   r+   r   r   r   r	   r<   ‹   s   
r<   c          
   C   s�   t | ƒ}t||ƒ}tj| dƒ�.}x|jdƒ}|s2P |j|ƒ q"W |jƒ  W d Q R X t| dƒ}x|jdƒ}|snP |j|ƒ q^W |j	ƒ  |j	ƒ  d S )Nr   i ô )
r&   r<   r   r   r   r*   rT   r'   rU   r+   )ÚinpÚoutr!   r-   ÚifprO   r   r   r	   r   é   s"    

 

 c               @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )Ú_Hqxdecoderenginec             C   s   || _ d| _d S )Nr   )rX   Úeof)r   rX   r   r   r	   r     s    z_Hqxdecoderengine.__init__c             C   s¾   d}|}x°|dkr¸| j r|S |d d d }| jj|ƒ}xRytj|ƒ\}| _ P W n tjk
rf   Y nX | jjdƒ}|s€tdƒ‚|| }q:W || }|t|ƒ }| r
| j  r
tdƒ‚q
W |S )Nr)   r   r   r1   é   r
   zPremature EOF on binhex file)rZ   rX   r   r3   Za2b_hqxZ
Incompleter   r2   )r   ZtotalwtdZdecdataÚwtdr#   Z
decdatacurÚnewdatar   r   r	   r     s,    
 z_Hqxdecoderengine.readc             C   s   | j jƒ  d S )N)rX   r+   )r   r   r   r	   r+   %  s    z_Hqxdecoderengine.closeN)r   r   r   r   r   r+   r   r   r   r	   rY   þ   s    rY   c               @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
Ú_Rledecoderenginec             C   s   || _ d| _d| _d| _d S )Nr)   r   )rX   Ú
pre_bufferÚpost_bufferrZ   )r   rX   r   r   r	   r   +  s    z_Rledecoderengine.__init__c             C   sD   |t | jƒkr"| j|t | jƒ ƒ | jd |… }| j|d … | _|S )N)r2   r`   Ú_fill)r   r\   Úrvr   r   r	   r   1  s
    z_Rledecoderengine.readc             C   sô   | j | jj|d ƒ | _ | jjr>| jtj| j ƒ | _d| _ d S t| j ƒ}| j dd … td t krl|d }nX| j dd … tkrˆ|d }n<| j d	d … td kr¨|d }n| j d
d… tkr¼n|d }| jtj| j d |… ƒ | _| j |d … | _ d S )Nr[   r)   r1   rG   r
   r   éýÿÿÿéÿÿÿÿéþÿÿÿre   rd   )	r_   rX   r   rZ   r`   r3   Zrledecode_hqxr2   ÚRUNCHAR)r   r\   Zmarkr   r   r	   ra   8  s&    



z_Rledecoderengine._fillc             C   s   | j jƒ  d S )N)rX   r+   )r   r   r   r	   r+   [  s    z_Rledecoderengine.closeN)r   r   r   r   r   ra   r+   r   r   r   r	   r^   (  s   #r^   c               @   sL   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dS )ÚHexBinc             C   sj   t |tƒrtj|dƒ}x.|jdƒ}|s.tdƒ‚|dkr8q|dkrP qW t|ƒ}t|ƒ| _d| _	| j
ƒ  d S )Nr   r
   zNo binhex data foundó   ó   :r   )r>   r?   r   r   r   r   rY   r^   rX   r@   Ú_readheader)r   rX   ZchZhqxifpr   r   r	   r   _  s    


zHexBin.__init__c             C   s    | j j|ƒ}tj|| jƒ| _|S )N)rX   r   r3   rR   r@   )r   r2   r#   r   r   r	   Ú_readu  s    zHexBin._readc             C   sN   t jd| jjdƒƒd d@ }| jd@ | _|| jkrDtd| j|f ƒ‚d| _d S )Nz>hr   r   iÿÿ  zCRC error, computed %x, read %x)rJ   ÚunpackrX   r   r@   r   )r   Zfilecrcr   r   r	   Ú	_checkcrcz  s    
zHexBin._checkcrcc             C   s¾   | j dƒ}| j t|ƒƒ}| j dƒ}| jƒ  |dd… }|dd… }tjd|dd… ƒd }tjd	|dd
… ƒd | _tjd	|d
d… ƒd | _|| _tƒ | _|| j_	|| j_
|| j_t| _d S )Nr
   r[   r   é   é	   z>hé   r   z>lé   é   rn   ro   rp   rq   rr   )rk   Úordrm   rJ   rl   rA   rB   ÚFNamer   r   r   r   rD   rE   )r   r2   ZfnameÚrestÚtypeZcreatorÚflagsr   r   r	   rj   „  s    

zHexBin._readheaderc             G   sn   | j tkrtdƒ‚|r,|d }t|| jƒ}n| j}d}x&t|ƒ|k r\|| j|t|ƒ ƒ }q8W | j| | _|S )NzRead data at wrong timer   r)   )rE   rD   r   ÚminrA   r2   rk   )r   Únrb   r   r   r	   r   ˜  s    
zHexBin.readc             C   s6   | j tkrtdƒ‚| jr$| j| jƒ}| jƒ  t| _ d S )Nzclose_data at wrong time)rE   rD   r   rA   rk   rm   rS   )r   Údummyr   r   r	   rT   ¦  s    
zHexBin.close_datac             G   sZ   | j tkr| jƒ  | j tkr$tdƒ‚|r>|d }t|| jƒ}n| j}| j| | _| j|ƒS )Nz Read resource data at wrong timer   )rE   rD   rT   rS   r   rx   rB   rk   )r   ry   r   r   r	   Ú	read_rsrc®  s    

zHexBin.read_rsrcc             C   sD   | j d krd S z| jr"| j| jƒ}| jƒ  W d d | _ | jjƒ  X d S )N)rE   rB   r{   rm   rX   r+   )r   rz   r   r   r	   r+   »  s    
zHexBin.closeN)r   r   r   r   rk   rm   rj   r   rT   r{   r+   r   r   r   r	   rg   ^  s   
rg   c          
   C   s®   t | ƒ}|j}|s|j}tj|dƒ�&}x|jdƒ}|s8P |j|ƒ q(W W d Q R X |jƒ  |jdƒ}|r¢t	|dƒ}|j|ƒ x|jdƒ}|sŒP |j|ƒ q|W |j
ƒ  |j
ƒ  d S )Nr=   i ô )rg   r   rt   r   r   r   r*   rT   r{   r'   r+   )rV   rW   rX   r!   r-   rO   r   r   r	   r   Æ  s,    
 



 )r   r   rJ   r3   Ú__all__Ú	Exceptionr   rD   rS   r9   r/   rf   r   r&   r'   r,   r8   r<   r   rY   r^   rg   r   r   r   r   r	   Ú<module>   s*   
&^*6h