o
    àý°j
›  ã                   @   s 
  d dl mZ d dl mZ d dlmZ d dlmZmZmZm	Z	m
Z
mZmZmZ d dlmZmZmZmZmZmZ d dlmZ d dlmZ d dlmZ ed	ƒZed
ƒZeZe	Ze	Ze	Z d Z!dZ"dZ#dZ$dZ%dZ&dZ'dZ(dZ)dZ*dZ+dZ,dZ-dZ.dZ/dZ0dZ1dZ2dZ3dZ4dZ5dZ6d Z7d!Z8d"Z9d#Z:d$Z;d%Z<d&Z=d'Z>d(Z?d)Z@d*ZAd+ZBd,ZCd-ZDd.ZEd/ZFd0ZGd1ZHd2ZId3ZJd4ZKd5ZLd6ZMd7ZNd8ZOd9ZPd:ZQd;ZRd<ZSd=ZTd>ZUd?ZVd@ZWdAZXdBZYdCZZdDZ[dEZ\dFZ]dGZ^dHZ_dIZ`dJZadKZbdLZcdMZddNZedOZfdPZgdQZhdRZidSZjdTZkdUZldVZmdWZndXZodYZpdZZqd[Zrd\Zsd]Ztd^Zud_Zvd`ZwdaZxdbZydcZzddZ{deZ|dfZ}dgZ~dhZdiZ€djZ�dkZ‚dlZƒdmZ„dnZ…doZ†dpZ‡dqZˆdrZ‰dsZŠdtZ‹duZŒdvZ�dwZŽdxZ�dyZ�dzZ‘d{Z’d|Z“d}Z”d~Z•dZ–d€Z—d�Z˜d‚Z™G dƒd„„ d„eƒZšG d…d†„ d†eƒZ›G d‡dˆ„ dˆeƒZœG d‰dŠ„ dŠeƒZ�G d‹dŒ„ dŒeƒZžG d�dŽ„ dŽeƒZŸG d�d�„ d�eƒZ e Z¡G d‘d’„ d’eƒZ¢G d“d”„ d”eƒZ£G d•d–„ d–eƒZ¤G d—d˜„ d˜eƒZ¥G d™dš„ dšeƒZ¦G d›dœ„ dœeƒZ§G d�dž„ džeƒZ¨G dŸd „ d eƒZ©G d¡d¢„ d¢eƒZªG d£d¤„ d¤eƒZ«G d¥d¦„ d¦eƒZ¬G d§d¨„ d¨eƒZ­G d©dª„ dªeƒZ®G d«d¬„ d¬eƒZ¯G d­d®„ d®eƒZ°G d¯d°„ d°eƒZ±G d±d²„ d²eƒZ²G d³d´„ d´eƒZ³G dµd¶„ d¶eƒZ´G d·d¸„ d¸eƒZµG d¹dº„ dºeƒZ¶G d»d¼„ d¼eƒZ·G d½d¾„ d¾eƒZ¸G d¿dÀ„ dÀeƒZ¹G dÁdÂ„ dÂeƒZºG dÃdÄ„ dÄeƒZ»G dÅdÆ„ dÆeƒZ¼G dÇdÈ„ dÈeƒZ½G dÉdÊ„ dÊeƒZ¾G dËdÌ„ dÌeƒZ¿G dÍdÎ„ dÎeƒZÀG dÏdÐ„ dÐeƒZÁG dÑdÒ„ dÒeƒZÂG dÓdÔ„ dÔeƒZÃG dÕdÖ„ dÖeƒZÄG d×dØ„ dØeƒZÅG dÙdÚ„ dÚeƒZÆG dÛdÜ„ dÜeƒZÇG dÝdÞ„ dÞeƒZÈG dßdà„ dàeƒZÉG dádâ„ dâeƒZÊG dãdä„ däeƒZËG dådæ„ dæeƒZÌG dçdè„ dèeƒZÍG dédê„ dêeƒZÎG dëdì„ dìeƒZÏG dídî„ dîeƒZÐG dïdð„ dðeƒZÑG dñdò„ dòeƒZÒG dódô„ dôeƒZÓG dõdö„ döeƒZÔG d÷dø„ døeƒZÕG dùdú„ dúeƒZÖG dûdü„ düeƒZ×G dýdþ„ dþeƒZØG dÿ�d „ �d eƒZÙG �d�d„ �deƒZÚG �d�d„ �deƒZÛG �d�d„ �deƒZÜG �d�d„ �deƒZÝG �d	�d
„ �d
eƒZÞG �d�d„ �deƒZßG �d�d„ �deƒZàG �d�d„ �deƒZáG �d�d„ �deƒZâG �d�d„ �deƒZãG �d�d„ �deƒZäG �d�d„ �deƒZåG �d�d„ �deƒZæG �d�d„ �deƒZçG �d�d„ �deƒZèG �d�d „ �d eƒZéG �d!�d"„ �d"eƒZêG �d#�d$„ �d$eƒZëG �d%�d&„ �d&eƒZìG �d'�d(„ �d(eƒZíG �d)�d*„ �d*eƒZîG �d+�d,„ �d,eƒZïG �d-�d.„ �d.eƒZðG �d/�d0„ �d0eƒZñG �d1�d2„ �d2eƒZòG �d3�d4„ �d4eƒZóG �d5�d6„ �d6eƒZôG �d7�d8„ �d8eƒZõG �d9�d:„ �d:eƒZöG �d;�d<„ �d<eƒZ÷G �d=�d>„ �d>eƒZøG �d?�d@„ �d@eƒZùeìeífeàeáfeâeãfeäeåfeæeçfeîeïfeðeñfeòeófeèeéfeêeëfeôeõfeöe÷feøeùf�dAœZú�dB�dC„ Zû�dD�dE„ Züe¿jýef�dF�dG„Zþe¿jýe�dHf�dI�dJ„Zÿe!eee¿jýe�dHf�dK�dL„�Z e!eee¿jýef�dM�dN„�Ze¿jýef�dO�dP„�Z�d\�dQ�dR„�Z�d\�dS�dT„�Z�d\�dU�dV„�Z�d]�dW�dX„�ZeÉ�j�dHf�dY�dZ„�Z�d[S (^  é    )Údivision)Úprint_function)Úsystem_errors)ÚLPWSTRÚULONGÚNULLÚDWORDÚBOOLÚBYTEÚLPDWORDÚWORD)ÚNDRCALLÚNDRUniConformantArrayÚ
NDRPOINTERÚ	NDRSTRUCTÚNDRENUMÚNDRUNION)ÚDCERPCException)ÚEnum)Úuuidtup_to_bin)z$6BFFD098-A112-3610-9833-46C3F874532Dú1.0)z$5B821720-F63B-11D0-AAD2-00C04FC324DBr   é   i N  i!N  i"N  i#N  i$N  i%N  i&N  i'N  i)N  i*N  i+N  i,N  i-N  i.N  i/N  i0N  i1N  i2N  i3N  i4N  i5N  i6N  i7N  i8N  i9N  i:N  i;N  i<N  i=N  i>N  i@N  iAN  iBN  iDN  iEN  iFN  iGN  iHN  iIN  iJN  iKN  iLN  iMN  iNN  iON  iPN  iQN  iRN  iSN  iTN  iUN  iVN  iWN  iXN  iYN  ifN  igN  ihN  iiN  ijN  ikN  ilN  imN  inN  ioN  ipN  iqN  irN  isN  itN  iuN  ivN  iwN  ixN  iyN  i{N  i|N  i}N  i~N  iN  i…N  i†N  i‡N  iˆN  i‰N  iŠN  i‹N  iŒN  i�N  iŽN  i�N  i�N  i‘N  i’N  i“N  i”N  i•N  i–N  i—N  i˜N  i™N  išN  i›N  iœN  i�N  ižN  iŸN  i N  i¡N  i¢N  i£N  i¤N  i¥N  i¦N  i§N  i¨N  i©N  iªN  i«N  c                   @   s2   e Zd ZedededediZd
dd„Zdd	„ Z	dS )ÚDCERPCSessionError)ÚERROR_DHCP_JET_ERRORz;An error occurred while accessing the DHCP server database.)ÚERROR_DHCP_SUBNET_NOT_PRESENTz)The specified IPv4 subnet does not exist.)ÚERROR_DHCP_SUBNET_EXISTSa‹  The IPv4 scope parameters are incorrect. Either the IPv4 scope already exists, corresponding to the SubnetAddress and SubnetMask members of the structure DHCP_SUBNET_INFO (section 2.2.1.2.8), or there is a range overlap of IPv4 addresses between those associated with the SubnetAddress and SubnetMask fields of the new IPv4 scope and the subnet address and mask of an already existing IPv4 scope)ÚERROR_DHCP_INVALID_DHCP_CLIENTz<The DHCP server received an invalid message from the client.Nc                 C   s   t  | |||¡ d S )N)r   Ú__init__)ÚselfÚerror_stringÚ
error_codeÚpacket© r"   ú‹/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/impacket/dcerpc/v5/dhcpm.pyr   Ã   s   zDCERPCSessionError.__init__c                 C   s|   | j }|tjv rtj| d }tj| d }d| j ||f S || jv r9| j| d }| j| d }d| j ||f S d| j  S )Nr   é   z(DHCPM SessionError: code: 0x%x - %s - %sz,DHCPM SessionError: unknown error code: 0x%x)r    r   ÚERROR_MESSAGES)r   ÚkeyÚerror_msg_shortÚerror_msg_verboser"   r"   r#   Ú__str__Æ   s   


zDCERPCSessionError.__str__)NNN)
Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r%   r   r)   r"   r"   r"   r#   r   ²   s    ô
r   c                   @   ó   e Zd ZG dd„ deƒZdS )ÚDHCP_SEARCH_INFO_TYPEc                   @   s   e Zd ZdZdZdZdS )zDHCP_SEARCH_INFO_TYPE.enumItemsr   r$   é   N)r*   r+   r,   ÚDhcpClientIpAddressÚDhcpClientHardwareAddressÚDhcpClientNamer"   r"   r"   r#   Ú	enumItemsÙ   s    r3   N©r*   r+   r,   r   r3   r"   r"   r"   r#   r.   Ø   ó    r.   c                   @   r-   )ÚQuarantineStatusc                   @   s(   e Zd ZdZdZdZdZdZdZdZ	dS )	zQuarantineStatus.enumItemsr   r$   r/   r   é   é   é   N)
r*   r+   r,   ÚNOQUARANTINEÚRESTRICTEDACCESSÚ
DROPPACKETÚ	PROBATIONÚEXEMPTÚDEFAULTQUARSETTINGÚ
NOQUARINFOr"   r"   r"   r#   r3   à   s    r3   Nr4   r"   r"   r"   r#   r6   ß   r5   r6   c                   @   s"   e Zd ZdefdefdeffZdS )ÚDHCP_HOST_INFOÚ	IpAddressÚNetBiosNameÚHostNameN)r*   r+   r,   ÚDHCP_IP_ADDRESSr   Ú	structurer"   r"   r"   r#   rA   ê   ó
    ýrA   c                   @   s   e Zd ZdZdS )Ú
BYTE_ARRAYÚcN)r*   r+   r,   Úitemr"   r"   r"   r#   rH   ò   ó    rH   c                   @   ó   e Zd ZdeffZdS )ÚPBYTE_ARRAYÚDataN)r*   r+   r,   rH   Úreferentr"   r"   r"   r#   rM   õ   ó    ÿrM   c                   @   ó   e Zd ZdefdeffZdS )ÚDHCP_BINARY_DATAÚ
DataLengthÚData_N)r*   r+   r,   r   rM   rF   r"   r"   r"   r#   rR   ú   ó    þrR   c                   @   ó   e Zd ZdefdeffZdS )Ú	DATE_TIMEÚdwLowDateTimeÚdwHighDateTimeN©r*   r+   r,   r   rF   r"   r"   r"   r#   rW     rU   rW   c                   @   sX   e Zd Zdefdefdefdefdefdefdefde	fd	e	fd
e
fdefdeffZdS )ÚDHCP_CLIENT_INFO_VQÚClientIpAddressÚ
SubnetMaskÚClientHardwareAddressÚ
ClientNameÚClientCommentÚClientLeaseExpiresÚ	OwnerHostÚbClientTypeÚAddressStateÚStatusÚProbationEndsÚQuarantineCapableN)r*   r+   r,   rE   ÚDHCP_IP_MASKÚDHCP_CLIENT_UIDr   rW   rA   r
   r6   r	   rF   r"   r"   r"   r#   r[   
  s    ôr[   c                   @   s.   e Zd Zejdefejdefejde	fiZ
dS )ÚDHCP_CLIENT_SEARCH_UNIONr\   r^   r_   N)r*   r+   r,   r.   r0   rE   r1   ri   r2   r   Úunionr"   r"   r"   r#   rj     s
    


ýrj   c                   @   rQ   )ÚDHCP_SEARCH_INFOÚ
SearchTypeÚ
SearchInfoN)r*   r+   r,   r.   rj   rF   r"   r"   r"   r#   rl   !  rU   rl   c                	   @   s@   e Zd Zdefdefdefdefdefdefdefde	ffZ
d	S )
ÚDHCP_CLIENT_INFO_V4r\   r]   r^   r_   r`   ra   rb   rc   N©r*   r+   r,   rE   rh   ri   r   rW   rA   r
   rF   r"   r"   r"   r#   ro   (  s    øro   c                
   @   sF   e Zd Zdefdefdefdefdefdefdefde	fd	e	ff	Z
d
S )ÚDHCP_CLIENT_INFO_V5r\   r]   r^   r_   r`   ra   rb   rc   rd   Nrp   r"   r"   r"   r#   rq   4  s    ÷rq   c                   @   rL   )ÚLPDHCP_CLIENT_INFO_V4rN   N)r*   r+   r,   ro   rO   r"   r"   r"   r#   rr   A  rP   rr   c                   @   rL   )ÚLPDHCP_CLIENT_INFO_V5rN   N)r*   r+   r,   rq   rO   r"   r"   r"   r#   rs   F  rP   rs   c                   @   sd   e Zd Zdefdefdefdefdefdefdefde	fd	e	fd
e
fdefdefdefdeffZdS )ÚDHCP_CLIENT_INFO_PBr\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   ÚFilterStatusÚ
PolicyNameN)r*   r+   r,   rE   rh   ri   r   rW   rA   r
   r6   r	   r   rF   r"   r"   r"   r#   rt   L  s     òrt   c                   @   rL   )ÚLPDHCP_CLIENT_INFO_PBrN   N)r*   r+   r,   rt   rO   r"   r"   r"   r#   rw   ^  rP   rw   c                   @   rL   )ÚLPDHCP_CLIENT_INFO_VQrN   N)r*   r+   r,   r[   rO   r"   r"   r"   r#   rx   c  rP   rx   c                   @   ó   e Zd ZeZdS )ÚDHCP_CLIENT_INFO_VQ_ARRAYN)r*   r+   r,   rx   rJ   r"   r"   r"   r#   rz   h  rK   rz   c                   @   rL   )ÚLPDHCP_CLIENT_INFO_VQ_ARRAYrN   N)r*   r+   r,   rz   rO   r"   r"   r"   r#   r{   k  rP   r{   c                   @   rQ   )ÚDHCP_CLIENT_INFO_ARRAY_VQÚNumElementsÚClientsN)r*   r+   r,   r   r{   rF   r"   r"   r"   r#   r|   p  rU   r|   c                   @   rL   )ÚLPDHCP_CLIENT_INFO_ARRAY_VQrN   N)r*   r+   r,   r|   rO   r"   r"   r"   r#   r   v  rP   r   c                   @   ry   )ÚDHCP_CLIENT_INFO_V4_ARRAYN)r*   r+   r,   rr   rJ   r"   r"   r"   r#   r€   {  rK   r€   c                   @   ry   )ÚDHCP_CLIENT_INFO_V5_ARRAYN)r*   r+   r,   rs   rJ   r"   r"   r"   r#   r�   ~  rK   r�   c                   @   rL   )ÚLPDHCP_CLIENT_INFO_V4_ARRAYrN   N)r*   r+   r,   r€   rO   r"   r"   r"   r#   r‚   �  rP   r‚   c                   @   rL   )ÚLPDHCP_CLIENT_INFO_V5_ARRAYrN   N)r*   r+   r,   r�   rO   r"   r"   r"   r#   rƒ   †  rP   rƒ   c                   @   rQ   )ÚDHCP_CLIENT_INFO_ARRAY_V4r}   r~   N)r*   r+   r,   r   r‚   rF   r"   r"   r"   r#   r„   ‹  rU   r„   c                   @   rQ   )ÚDHCP_CLIENT_INFO_ARRAY_V5r}   r~   N)r*   r+   r,   r   rƒ   rF   r"   r"   r"   r#   r…   ‘  rU   r…   c                   @   rL   )ÚLPDHCP_CLIENT_INFO_ARRAY_V5rN   N)r*   r+   r,   r…   rO   r"   r"   r"   r#   r†   —  rP   r†   c                   @   rL   )ÚLPDHCP_CLIENT_INFO_ARRAY_V4rN   N)r*   r+   r,   r„   rO   r"   r"   r"   r#   r‡   œ  rP   r‡   c                   @   ry   )ÚDHCP_IP_ADDRESS_ARRAYN)r*   r+   r,   rE   rJ   r"   r"   r"   r#   rˆ   ¡  rK   rˆ   c                   @   rL   )ÚLPDHCP_IP_ADDRESS_ARRAYrN   N)r*   r+   r,   rˆ   rO   r"   r"   r"   r#   r‰   ¤  rP   r‰   c                   @   rQ   )ÚDHCP_IP_ARRAYr}   ÚElementsN)r*   r+   r,   r   r‰   rF   r"   r"   r"   r#   rŠ   ©  rU   rŠ   c                   @   r-   )ÚDHCP_SUBNET_STATEc                   @   ó    e Zd ZdZdZdZdZdZdS )zDHCP_SUBNET_STATE.enumItemsr   r$   r/   r   r7   N)r*   r+   r,   ÚDhcpSubnetEnabledÚDhcpSubnetDisabledÚDhcpSubnetEnabledSwitchedÚDhcpSubnetDisabledSwitchedÚDhcpSubnetInvalidStater"   r"   r"   r#   r3   °  ó    r3   Nr4   r"   r"   r"   r#   rŒ   ¯  r5   rŒ   c                   @   s4   e Zd ZdefdefdefdefdefdeffZdS )ÚDHCP_SUBNET_INFOÚSubnetAddressr]   Ú
SubnetNameÚSubnetCommentÚPrimaryHostÚSubnetStateN)	r*   r+   r,   rE   rh   r   rA   rŒ   rF   r"   r"   r"   r#   r”   ·  s    úr”   c                   @   rL   )ÚLPDHCP_SUBNET_INFOrN   N)r*   r+   r,   r”   rO   r"   r"   r"   r#   rš   Á  rP   rš   c                   @   r-   )ÚDHCP_OPTION_SCOPE_TYPEc                   @   r�   )z DHCP_OPTION_SCOPE_TYPE.enumItemsr   r$   r/   r   r7   N)r*   r+   r,   ÚDhcpDefaultOptionsÚDhcpGlobalOptionsÚDhcpSubnetOptionsÚDhcpReservedOptionsÚDhcpMScopeOptionsr"   r"   r"   r#   r3   Ç  r“   r3   Nr4   r"   r"   r"   r#   r›   Æ  r5   r›   c                   @   rV   )ÚDHCP_RESERVED_SCOPEÚReservedIpAddressÚReservedIpSubnetAddressN©r*   r+   r,   rE   rF   r"   r"   r"   r#   r¡   Î  rU   r¡   c                   @   s:   e Zd Zejdejdejdefejde	fej
defiZdS )ÚDHCP_OPTION_SCOPE_UNIONr"   ÚSubnetScopeInfoÚReservedScopeInfoÚ
MScopeInfoN)r*   r+   r,   r›   rœ   r�   rž   rE   rŸ   r¡   r    r   rk   r"   r"   r"   r#   r¥   Ô  s    


ûr¥   c                   @   rQ   )ÚDHCP_OPTION_SCOPE_INFOÚ	ScopeTypeÚ	ScopeInfoN)r*   r+   r,   r›   r¥   rF   r"   r"   r"   r#   r©   Ý  rU   r©   c                   @   ó   e Zd ZdefZdS )ÚLPDHCP_OPTION_SCOPE_INFOrN   N)r*   r+   r,   r©   rO   r"   r"   r"   r#   r­   ã  ó    ÿr­   c                   @   rV   )ÚDWORD_DWORDÚDWord1ÚDWord2NrZ   r"   r"   r"   r#   r¯   è  rU   r¯   c                   @   s.   e Zd ZdefdefdefdefdeffZdS )ÚDHCP_BOOTP_IP_RANGEÚStartAddressÚ
EndAddressÚBootpAllocatedÚMaxBootpAllowedN)r*   r+   r,   rE   r   rF   r"   r"   r"   r#   r²   î  ó    ûr²   c                   @   s"   e Zd ZdefdefdeffZdS )ÚDHCP_IP_RESERVATION_V4r¢   ÚReservedForClientÚbAllowedClientTypesN)r*   r+   r,   rE   ri   r
   rF   r"   r"   r"   r#   r¸   ÷  rG   r¸   c                   @   rV   )ÚDHCP_IP_RANGEr³   r´   Nr¤   r"   r"   r"   r#   r»   þ  rU   r»   c                   @   rQ   )ÚDHCP_IP_CLUSTERÚClusterAddressÚClusterMaskN)r*   r+   r,   rE   r   rF   r"   r"   r"   r#   r¼     rU   r¼   c                   @   r-   )ÚDHCP_SUBNET_ELEMENT_TYPEc                   @   s,   e Zd ZdZdZdZdZdZdZdZ	dZ
d	S )
z"DHCP_SUBNET_ELEMENT_TYPE.enumItemsr   r$   r/   r   r7   r8   r9   é   N)r*   r+   r,   ÚDhcpIpRangesÚDhcpSecondaryHostsÚDhcpReservedIpsÚDhcpExcludedIpRangesÚDhcpIpUsedClustersÚDhcpIpRangesDhcpOnlyÚDhcpIpRangesDhcpBootpÚDhcpIpRangesBootpOnlyr"   r"   r"   r#   r3     s    r3   Nr4   r"   r"   r"   r#   r¿   
  r5   r¿   c                   @   sB   e Zd Zejdefejdefejde	fej
defejdefiZdS )ÚDHCP_SUBNET_ELEMENT_UNION_V5ÚIpRangeÚSecondaryHostÚ
ReservedIpÚExcludeIpRangeÚIpUsedClusterN)r*   r+   r,   r¿   rÁ   r²   rÂ   rA   rÃ   r¸   rÄ   r»   rÅ   r¼   rk   r"   r"   r"   r#   rÉ     s    




ûrÉ   c                   @   rQ   )ÚDHCP_SUBNET_ELEMENT_DATA_V5ÚElementTypeÚElementN)r*   r+   r,   r¿   rÉ   rF   r"   r"   r"   r#   rÏ     rU   rÏ   c                   @   ry   )ÚLPDHCP_SUBNET_ELEMENT_DATA_V5N)r*   r+   r,   rÏ   rJ   r"   r"   r"   r#   rÒ   $  rK   rÒ   c                   @   rQ   )Ú!DHCP_SUBNET_ELEMENT_INFO_ARRAY_V5r}   r‹   N)r*   r+   r,   r   rÒ   rF   r"   r"   r"   r#   rÓ   '  rU   rÓ   c                   @   r¬   )Ú#LPDHCP_SUBNET_ELEMENT_INFO_ARRAY_V5rN   N)r*   r+   r,   rÓ   rO   r"   r"   r"   r#   rÔ   -  r®   rÔ   c                   @   r-   )ÚDHCP_OPTION_DATA_TYPEc                   @   s0   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
S )zDHCP_OPTION_DATA_TYPE.enumItemsr   r$   r/   r   r7   r8   r9   rÀ   é   N)r*   r+   r,   ÚDhcpByteOptionÚDhcpWordOptionÚDhcpDWordOptionÚDhcpDWordDWordOptionÚDhcpIpAddressOptionÚDhcpStringDataOptionÚDhcpBinaryDataOptionÚDhcpEncapsulatedDataOptionÚDhcpIpv6AddressOptionr"   r"   r"   r#   r3   3  s    r3   Nr4   r"   r"   r"   r#   rÕ   2  r5   rÕ   c                   @   st   e Zd ZdeffZejdefejdefej	de
fejdefejdefejdefejdefejd	efejd
efi	ZdS )ÚDHCP_OPTION_ELEMENT_UNIONÚtagÚ
ByteOptionÚ
WordOptionÚDWordOptionÚDWordDWordOptionÚIpAddressOptionÚStringDataOptionÚBinaryDataOptionÚEncapsulatedDataOptionÚIpv6AddressDataOptionN)r*   r+   r,   rÕ   Ú	commonHdrr×   r
   rØ   r   rÙ   r   rÚ   r¯   rÛ   rE   rÜ   r   rÝ   rR   rÞ   rß   rk   r"   r"   r"   r#   rà   >  s    ÿ








÷rà   c                   @   rQ   )ÚDHCP_OPTION_DATA_ELEMENTÚ
OptionTyperÑ   N)r*   r+   r,   rÕ   rà   rF   r"   r"   r"   r#   rì   N  rU   rì   c                   @   ry   )ÚDHCP_OPTION_DATA_ELEMENT_ARRAY2N)r*   r+   r,   rì   rJ   r"   r"   r"   r#   rî   T  rK   rî   c                   @   rL   )ÚLPDHCP_OPTION_DATA_ELEMENTrN   N)r*   r+   r,   rî   rO   r"   r"   r"   r#   rï   W  rP   rï   c                   @   rQ   )ÚDHCP_OPTION_DATAr}   r‹   N)r*   r+   r,   r   rï   rF   r"   r"   r"   r#   rð   \  rU   rð   c                   @   rQ   )ÚDHCP_OPTION_VALUEÚOptionIDÚValueN)r*   r+   r,   ÚDHCP_OPTION_IDrð   rF   r"   r"   r"   r#   rñ   b  rU   rñ   c                   @   rL   )ÚPDHCP_OPTION_VALUErN   N)r*   r+   r,   rñ   rO   r"   r"   r"   r#   rõ   h  rP   rõ   c                   @   ry   )ÚDHCP_OPTION_VALUE_ARRAY2N)r*   r+   r,   rñ   rJ   r"   r"   r"   r#   rö   m  rK   rö   c                   @   rL   )ÚLPDHCP_OPTION_VALUErN   N)r*   r+   r,   rö   rO   r"   r"   r"   r#   r÷   p  rP   r÷   c                   @   rQ   )ÚDHCP_OPTION_VALUE_ARRAYr}   ÚValuesN)r*   r+   r,   r   r÷   rF   r"   r"   r"   r#   rø   u  rU   rø   c                   @   rL   )ÚLPDHCP_OPTION_VALUE_ARRAYrN   N)r*   r+   r,   rø   rO   r"   r"   r"   r#   rú   {  rP   rú   c                   @   s(   e Zd ZdefdefdefdeffZdS )ÚDHCP_ALL_OPTION_VALUESÚ	ClassNameÚ
VendorNameÚIsVendorÚOptionsArrayN)r*   r+   r,   r   r	   rú   rF   r"   r"   r"   r#   rû   €  ó    ürû   c                   @   ry   )ÚOPTION_VALUES_ARRAYN)r*   r+   r,   rû   rJ   r"   r"   r"   r#   r  ˆ  rK   r  c                   @   rL   )ÚLPOPTION_VALUES_ARRAYrN   N)r*   r+   r,   r  rO   r"   r"   r"   r#   r  ‹  rP   r  c                   @   s"   e Zd ZdefdefdeffZdS )ÚDHCP_ALL_OPTIONS_VALUESÚFlagsr}   ÚOptionsN)r*   r+   r,   r   r  rF   r"   r"   r"   r#   r  �  rG   r  c                   @   rL   )ÚLPDHCP_ALL_OPTION_VALUESrN   N)r*   r+   r,   r  rO   r"   r"   r"   r#   r  —  rP   r  c                   @   ó    e Zd ZdZdefdeffZdS )ÚDhcpGetSubnetInfor/   ÚServerIpAddressr•   N)r*   r+   r,   ÚopnumÚDHCP_SRV_HANDLErE   rF   r"   r"   r"   r#   r     ó
    þr  c                   @   rQ   )ÚDhcpGetSubnetInfoResponseÚ
SubnetInfoÚ	ErrorCodeN)r*   r+   r,   rš   r   rF   r"   r"   r"   r#   r  §  rU   r  c                   @   ó&   e Zd ZdZdefdefdeffZdS )ÚDhcpEnumSubnetsr   r	  ÚResumeHandleÚPreferredMaximumN)r*   r+   r,   r
  r  r   r   rF   r"   r"   r"   r#   r  ­  ó    ýr  c                   @   ó.   e Zd ZdefdefdefdefdeffZdS )ÚDhcpEnumSubnetsResponser  ÚEnumInfoÚEnumReadÚ	EnumTotalr  N)r*   r+   r,   r   rŠ   r   r   rF   r"   r"   r"   r#   r  µ  r·   r  c                   @   r  )ÚDhcpGetOptionValueé   r	  rò   r«   N)r*   r+   r,   r
  r  rô   r©   rF   r"   r"   r"   r#   r  ¾  r  r  c                   @   rQ   )ÚDhcpGetOptionValueResponseÚOptionValuer  N©r*   r+   r,   rõ   r   rF   r"   r"   r"   r#   r  Æ  rU   r  c                   @   ó,   e Zd ZdZdefdefdefdeffZdS )ÚDhcpEnumOptionValuesé   r	  r«   r  r  N)	r*   r+   r,   r
  r  r©   r   r   rF   r"   r"   r"   r#   r   Ì  ó    ür   c                   @   ó.   e Zd ZdefdefdefdefdeffZdS )ÚDhcpEnumOptionValuesResponser  ÚOptionValuesÚOptionsReadÚOptionsTotalr  N©r*   r+   r,   r   rú   r   rF   r"   r"   r"   r#   r$  Õ  r·   r$  c                   @   r  )ÚDhcpGetClientInfoV4é"   r	  rn   N©r*   r+   r,   r
  r  rl   rF   r"   r"   r"   r#   r)  Þ  r  r)  c                   @   rQ   )ÚDhcpGetClientInfoV4ResponseÚ
ClientInfor  N)r*   r+   r,   rr   r   rF   r"   r"   r"   r#   r,  å  rU   r,  c                   @   s,   e Zd ZdZdefdefdefdeffZdS )ÚDhcpEnumSubnetClientsV4é#   r	  r•   r  r  N)r*   r+   r,   r
  r  rE   r   rF   r"   r"   r"   r#   r.  ë  r"  r.  c                   @   r  )ÚDhcpEnumSubnetClientsV4Responser  r-  ÚClientsReadÚClientsTotalr  N)r*   r+   r,   r   r‡   r   r   rF   r"   r"   r"   r#   r0  ô  r·   r0  c                   @   r  )ÚDhcpEnumSubnetClientsV5r   r	  r•   r  r  N©	r*   r+   r,   r
  r  rE   r   r   rF   r"   r"   r"   r#   r3  ÿ  r"  r3  c                   @   s(   e Zd ZdefdefdefdeffZdS )ÚDhcpEnumSubnetClientsV5Responser  ÚClientsInfor1  r2  N)r*   r+   r,   r   r†   rF   r"   r"   r"   r#   r5    r   r5  c                   @   s8   e Zd ZdZdefdefdefdefdefdeffZ	dS )	ÚDhcpGetOptionValueV5é   r	  r  rò   rü   rý   r«   N)
r*   r+   r,   r
  r  r   rô   r   r©   rF   r"   r"   r"   r#   r7    s    úr7  c                   @   rQ   )ÚDhcpGetOptionValueV5Responser  r  Nr  r"   r"   r"   r#   r9    rU   r9  c                   @   s>   e Zd ZdZdefdefdefdefdefdefdeffZ	d	S )
ÚDhcpEnumOptionValuesV5é   r	  r  rü   rý   r«   r  r  N)
r*   r+   r,   r
  r  r   r   r©   r   rF   r"   r"   r"   r#   r:  !  s    ùr:  c                   @   r#  )ÚDhcpEnumOptionValuesV5Responser  r%  r&  r'  r  Nr(  r"   r"   r"   r#   r<  -  r·   r<  c                   @   r  )ÚDhcpGetAllOptionValuesé   r	  r  r«   N)r*   r+   r,   r
  r  r   r©   rF   r"   r"   r"   r#   r=  6  r  r=  c                   @   rQ   )ÚDhcpGetAllOptionValuesResponserù   r  N)r*   r+   r,   r  r   rF   r"   r"   r"   r#   r?  >  rU   r?  c                   @   s2   e Zd ZdZdefdefdefdefdeffZ	dS )ÚDhcpEnumSubnetElementsV5é&   r	  r•   ÚEnumElementTyper  r  N)
r*   r+   r,   r
  r  rE   r¿   r   r   rF   r"   r"   r"   r#   r@  D  s    ûr@  c                   @   r#  )Ú DhcpEnumSubnetElementsV5Responser  ÚEnumElementInfoÚElementsReadÚElementsTotalr  N)r*   r+   r,   r   rÔ   r   rF   r"   r"   r"   r#   rC  N  r·   rC  c                   @   r  )ÚDhcpEnumSubnetClientsVQé/   r	  r•   r  r  Nr4  r"   r"   r"   r#   rG  W  r"  rG  c                   @   r  )ÚDhcpEnumSubnetClientsVQResponser  r-  r1  r2  r  N)r*   r+   r,   r   r   r   r   rF   r"   r"   r"   r#   rI  `  r·   rI  c                   @   r  )ÚDhcpV4GetClientInfoé{   r	  rn   Nr+  r"   r"   r"   r#   rJ  i  r  rJ  c                   @   rQ   )ÚDhcpV4GetClientInfoResponser-  r  N)r*   r+   r,   rw   r   rF   r"   r"   r"   r#   rL  p  rU   rL  )r   r/   r   r  r!  r8  r;  r>  r*  r/  rA  rH  rK  c                 C   s|   t ƒ }t|d< ||d d< ||d d d< |tjkr#||d d d< n|tjkr1||d d d< n||d d d< |  |¡S )Nr	  rn   rm   rá   r\   r^   r_   )r)  r   r.   r0   r1   Úrequest)ÚdceÚ
searchTypeÚsearchValuerM  r"   r"   r#   ÚhDhcpGetClientInfoV4�  s   


rQ  c                 C   s$   t ƒ }t|d< ||d< |  |¡}|S )Nr	  r•   )r  r   rM  )rN  ÚsubnetaddressrM  Úrespr"   r"   r#   ÚhDhcpGetSubnetInfo�  s
   
rT  c              
   C   s   t ƒ }t|d< ||d< ||d d< |tjkr#|tjkr#||d d d< |tjkr1||d d d< n|tjkr?||d d d< n|tjkrL||d d d< tj	}|tj	kr~z|  
|¡}W |S  ty} } zt|ƒ d	¡d
k rn‚ | ¡ }W Y d }~|S d }~ww d S )Nr	  rò   r«   rª   rá   r¦   r§   r¨   ÚERROR_NO_MORE_ITEMSr   )r  r   r›   rœ   r�   rž   rŸ   r    r   ÚERROR_MORE_DATArM  r   ÚstrÚfindÚ
get_packet)rN  ÚoptionIDÚ	scopetypeÚoptionsrM  ÚstatusrS  Úer"   r"   r#   ÚhDhcpGetOptionValue¦  s2   



ü€üýr_  ì   ÿÿ c              
   C   s  t ƒ }t|d< ||d d< |tjkr|tjkr||d d d< |tjkr-||d d d< n|tjkr;||d d d< n|tjkrH||d d d< t|d< ||d	< tj	}|tj	kr‚z|  
|¡}W |S  ty� } zt|ƒ d
¡dk rr‚ | ¡ }W Y d }~|S d }~ww d S )Nr	  r«   rª   rá   r¦   r§   r¨   r  r  rU  r   )r   r   r›   rœ   r�   rž   rŸ   r    r   rV  rM  r   rW  rX  rY  )rN  r[  r\  ÚpreferredMaximumrM  r]  rS  r^  r"   r"   r#   ÚhDhcpEnumOptionValues¿  s4   



ü€üýrb  c              
   C   s  t ƒ }t|d< ||d< ||d< ||d< ||d d< ||d d d< |tjkr/||d d d< n|tjkr=||d d d	< n|tjkrJ||d d d
< t|d< ||d< tj}|tjkr„z|  |¡}	W |	S  t	yƒ }
 zt
|
ƒ d¡dk rt‚ |
 ¡ }	W Y d }
~
|	S d }
~
ww d S )Nr	  r  rü   rý   r«   rª   rá   r¦   r§   r¨   r  r  rU  r   )r:  r   r›   rž   rŸ   r    r   rV  rM  r   rW  rX  rY  )rN  ÚflagsÚ	classnameÚ
vendornamer[  r\  ra  rM  r]  rS  r^  r"   r"   r#   ÚhDhcpEnumOptionValuesV5Ú  s8   



ü€üýrf  c              
   C   s  t ƒ }t|d< ||d< ||d< ||d< ||d< ||d d< ||d d d< |tjkr3||d d d	< n|tjkrA||d d d
< n|tjkrN||d d d< tj}|tjkr€z|  |¡}	W |	S  t	y }
 zt
|
ƒ d¡dk rp‚ |
 ¡ }	W Y d }
~
|	S d }
~
ww d S )Nr	  r  rò   rü   rý   r«   rª   rá   r¦   r§   r¨   rU  r   )r7  r   r›   rž   rŸ   r    r   rV  rM  r   rW  rX  rY  )rN  Ú	option_idrc  rd  re  r[  r\  rM  r]  rS  r^  r"   r"   r#   ÚhDhcpGetOptionValueV5ø  s6   



ü€üýrh  c              
   C   sì   t ƒ }t|d< t|d< ||d d< ||d d d< |tjkr'||d d d< n|tjkr5||d d d< n|tjkrB||d d d< tj}|tjkrtz|  |¡}W |S  t	ys } zt
|ƒ d	¡d
k rd‚ | ¡ }W Y d }~|S d }~ww d S )Nr	  r  r«   rª   rá   r¦   r§   r¨   rU  r   )r=  r   r›   rž   rŸ   r    r   rV  rM  r   rW  rX  rY  )rN  r[  r\  rM  r]  rS  r^  r"   r"   r#   ÚhDhcpGetAllOptionValues  s0   



ü€üýri  c              
   C   s†   t ƒ }t|d< t|d< ||d< tj}|tjkrAz|  |¡}W |S  ty@ } zt|ƒ d¡dk r1‚ | ¡ }W Y d }~|S d }~ww d S )Nr	  r  r  ÚSTATUS_MORE_ENTRIESr   )	r  r   r   rV  rM  r   rW  rX  rY  ©rN  ra  rM  r]  rS  r^  r"   r"   r#   ÚhDhcpEnumSubnets,  s"   
ü€üýrl  c              
   C   óŽ   t ƒ }t|d< t|d< t|d< ||d< tj}|tjkrEz|  |¡}W |S  tyD } zt|ƒ d¡dk r5‚ | ¡ }W Y d }~|S d }~ww d S ©Nr	  r•   r  r  rj  r   )	rG  r   r   rV  rM  r   rW  rX  rY  rk  r"   r"   r#   ÚhDhcpEnumSubnetClientsVQ<  ó$   
ü€üýro  c              
   C   rm  rn  )	r.  r   r   rV  rM  r   rW  rX  rY  rk  r"   r"   r#   ÚhDhcpEnumSubnetClientsV4M  rp  rq  c              
   C   sŽ   t ƒ }t|d< ||d< t|d< ||d< tj}|tjkrEz|  |¡}W |S  tyD } zt|ƒ d¡dk r5‚ | ¡ }W Y d }~|S d }~ww d S rn  )	r3  r   r   rV  rM  r   rW  rX  rY  )rN  ÚsubnetAddressra  rM  r]  rS  r^  r"   r"   r#   ÚhDhcpEnumSubnetClientsV5^  rp  rs  c              
   C   s–   t ƒ }t|d< ||d< ||d< t|d< ||d< tj}|tjkrIz|  |¡}W |S  tyH } zt|ƒ d¡dk r9‚ | ¡ }W Y d }~|S d }~ww d S )Nr	  r•   rB  r  r  rU  r   )	r@  r   r   rV  rM  r   rW  rX  rY  )rN  Úsubnet_addressÚelement_typera  rM  r]  rS  r^  r"   r"   r#   ÚhDhcpEnumSubnetElementsV5o  s&   
ü€üýrv  N)r`  )r   r`  (	  Ú
__future__r   r   Úimpacketr   Úimpacket.dcerpc.v5.dtypesr   r   r   r   r	   r
   r   r   Úimpacket.dcerpc.v5.ndrr   r   r   r   r   r   Úimpacket.dcerpc.v5.rpcrtr   Úimpacket.dcerpc.v5.enumr   Úimpacket.uuidr   ÚMSRPC_UUID_DHCPSRVÚMSRPC_UUID_DHCPSRV2r  rE   rh   rô   ÚDHCP_FLAGS_OPTION_DEFAULTÚDHCP_FLAGS_OPTION_IS_VENDORÚERROR_DHCP_REGISTRY_INIT_FAILEDÚERROR_DHCP_DATABASE_INIT_FAILEDÚERROR_DHCP_RPC_INIT_FAILEDÚERROR_DHCP_NETWORK_INIT_FAILEDÚERROR_DHCP_SUBNET_EXITSr   ÚERROR_DHCP_PRIMARY_NOT_FOUNDÚERROR_DHCP_ELEMENT_CANT_REMOVEÚERROR_DHCP_OPTION_EXITSÚERROR_DHCP_OPTION_NOT_PRESENTÚ ERROR_DHCP_ADDRESS_NOT_AVAILABLEÚERROR_DHCP_RANGE_FULLr   ÚERROR_DHCP_CLIENT_EXISTSÚERROR_DHCP_INVALID_DHCP_MESSAGEr   ÚERROR_DHCP_SERVICE_PAUSEDÚERROR_DHCP_NOT_RESERVED_CLIENTÚERROR_DHCP_RESERVED_CLIENTÚERROR_DHCP_RANGE_TOO_SMALLÚERROR_DHCP_IPRANGE_EXITSÚERROR_DHCP_RESERVEDIP_EXITSÚERROR_DHCP_INVALID_RANGEÚERROR_DHCP_RANGE_EXTENDEDÚERROR_EXTEND_TOO_SMALLÚWARNING_EXTENDED_LESSÚERROR_DHCP_JET_CONV_REQUIREDÚ$ERROR_SERVER_INVALID_BOOT_FILE_TABLEÚ#ERROR_SERVER_UNKNOWN_BOOT_FILE_NAMEÚ$ERROR_DHCP_SUPER_SCOPE_NAME_TOO_LONGÚERROR_DHCP_IP_ADDRESS_IN_USEÚ!ERROR_DHCP_LOG_FILE_PATH_TOO_LONGÚERROR_DHCP_UNSUPPORTED_CLIENTÚERROR_DHCP_JET97_CONV_REQUIREDÚERROR_DHCP_ROGUE_INIT_FAILEDÚERROR_DHCP_ROGUE_SAMSHUTDOWNÚERROR_DHCP_ROGUE_NOT_AUTHORIZEDÚERROR_DHCP_ROGUE_DS_UNREACHABLEÚERROR_DHCP_ROGUE_DS_CONFLICTÚ#ERROR_DHCP_ROGUE_NOT_OUR_ENTERPRISEÚ!ERROR_DHCP_ROGUE_STANDALONE_IN_DSÚERROR_DHCP_CLASS_NOT_FOUNDÚERROR_DHCP_CLASS_ALREADY_EXISTSÚERROR_DHCP_SCOPE_NAME_TOO_LONGÚERROR_DHCP_DEFAULT_SCOPE_EXITSÚ ERROR_DHCP_CANT_CHANGE_ATTRIBUTEÚERROR_DHCP_IPRANGE_CONV_ILLEGALÚERROR_DHCP_NETWORK_CHANGEDÚ!ERROR_DHCP_CANNOT_MODIFY_BINDINGSr   ÚERROR_DHCP_MSCOPE_EXISTSÚERROR_MSCOPE_RANGE_TOO_SMALLÚERROR_DHCP_EXEMPTION_EXISTSÚ ERROR_DHCP_EXEMPTION_NOT_PRESENTÚ%ERROR_DHCP_INVALID_PARAMETER_OPTION32ÚERROR_DDS_NO_DS_AVAILABLEÚERROR_DDS_NO_DHCP_ROOTÚERROR_DDS_UNEXPECTED_ERRORÚERROR_DDS_TOO_MANY_ERRORSÚERROR_DDS_DHCP_SERVER_NOT_FOUNDÚERROR_DDS_OPTION_ALREADY_EXISTSÚERROR_DDS_OPTION_DOES_NOT_EXISTÚERROR_DDS_CLASS_EXISTSÚERROR_DDS_CLASS_DOES_NOT_EXISTÚERROR_DDS_SERVER_ALREADY_EXISTSÚERROR_DDS_SERVER_DOES_NOT_EXISTÚ!ERROR_DDS_SERVER_ADDRESS_MISMATCHÚERROR_DDS_SUBNET_EXISTSÚ ERROR_DDS_SUBNET_HAS_DIFF_SSCOPEÚERROR_DDS_SUBNET_NOT_PRESENTÚ!ERROR_DDS_RESERVATION_NOT_PRESENTÚERROR_DDS_RESERVATION_CONFLICTÚ!ERROR_DDS_POSSIBLE_RANGE_CONFLICTÚERROR_DDS_RANGE_DOES_NOT_EXISTÚERROR_DHCP_DELETE_BUILTIN_CLASSÚ ERROR_DHCP_INVALID_SUBNET_PREFIXÚERROR_DHCP_INVALID_DELAYÚ#ERROR_DHCP_LINKLAYER_ADDRESS_EXISTSÚ/ERROR_DHCP_LINKLAYER_ADDRESS_RESERVATION_EXISTSÚ+ERROR_DHCP_LINKLAYER_ADDRESS_DOES_NOT_EXISTÚ/ERROR_DHCP_HARDWARE_ADDRESS_TYPE_ALREADY_EXEMPTÚ*ERROR_DHCP_UNDEFINED_HARDWARE_ADDRESS_TYPEÚERROR_DHCP_OPTION_TYPE_MISMATCHÚ!ERROR_DHCP_POLICY_BAD_PARENT_EXPRÚERROR_DHCP_POLICY_EXISTSÚERROR_DHCP_POLICY_RANGE_EXISTSÚERROR_DHCP_POLICY_RANGE_BADÚ)ERROR_DHCP_RANGE_INVALID_IN_SERVER_POLICYÚ$ERROR_DHCP_INVALID_POLICY_EXPRESSIONÚ#ERROR_DHCP_INVALID_PROCESSING_ORDERÚERROR_DHCP_POLICY_NOT_FOUNDÚ'ERROR_SCOPE_RANGE_POLICY_RANGE_CONFLICTÚ+ERROR_DHCP_FO_SCOPE_ALREADY_IN_RELATIONSHIPÚ!ERROR_DHCP_FO_RELATIONSHIP_EXISTSÚ)ERROR_DHCP_FO_RELATIONSHIP_DOES_NOT_EXISTÚ'ERROR_DHCP_FO_SCOPE_NOT_IN_RELATIONSHIPÚ#ERROR_DHCP_FO_RELATION_IS_SECONDARYÚERROR_DHCP_FO_NOT_SUPPORTEDÚERROR_DHCP_FO_TIME_OUT_OF_SYNCÚERROR_DHCP_FO_STATE_NOT_NORMALÚERROR_DHCP_NO_ADMIN_PERMISSIONÚERROR_DHCP_SERVER_NOT_REACHABLEÚERROR_DHCP_SERVER_NOT_RUNNINGÚ#ERROR_DHCP_SERVER_NAME_NOT_RESOLVEDÚ(ERROR_DHCP_FO_RELATIONSHIP_NAME_TOO_LONGÚ#ERROR_DHCP_REACHED_END_OF_SELECTIONÚ(ERROR_DHCP_FO_ADDSCOPE_LEASES_NOT_SYNCEDÚERROR_DHCP_FO_MAX_RELATIONSHIPSÚ'ERROR_DHCP_FO_IPRANGE_TYPE_CONV_ILLEGALÚERROR_DHCP_FO_MAX_ADD_SCOPESÚ ERROR_DHCP_FO_BOOT_NOT_SUPPORTEDÚERROR_DHCP_FO_RANGE_PART_OF_RELÚ$ERROR_DHCP_FO_SCOPE_SYNC_IN_PROGRESSÚ#ERROR_DHCP_FO_FEATURE_NOT_SUPPORTEDÚ(ERROR_DHCP_POLICY_FQDN_RANGE_UNSUPPORTEDÚ)ERROR_DHCP_POLICY_FQDN_OPTION_UNSUPPORTEDÚ'ERROR_DHCP_POLICY_EDIT_FQDN_UNSUPPORTEDÚERROR_DHCP_NAP_NOT_SUPPORTEDÚERROR_LAST_DHCP_SERVER_ERRORr   r.   r6   rA   rH   rM   rR   ri   rW   r[   rj   rl   ro   rq   rr   rs   rt   rw   rx   rz   r{   r|   r   r€   r�   r‚   rƒ   r„   r…   r†   r‡   rˆ   r‰   rŠ   rŒ   r”   rš   r›   r¡   r¥   r©   r­   r¯   r²   r¸   r»   r¼   r¿   rÉ   rÏ   rÒ   rÓ   rÔ   rÕ   rà   rì   rî   rï   rð   rñ   rõ   rö   r÷   rø   rú   rû   r  r  r  r  r  r  r  r  r  r  r   r$  r)  r,  r.  r0  r3  r5  r7  r9  r:  r<  r=  r?  r@  rC  rG  rI  rJ  rL  ÚOPNUMSrQ  rT  rœ   r_  rb  rf  rh  ri  rl  ro  rq  rs  rÁ   rv  r"   r"   r"   r#   Ú<module>   s  ( &
										
			
ó	ÿþÿ 