
    i;                       d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dlmZ d dl	m
Z
 d dl	mZ d dl	mZ d dl	mZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ g dZ ej        eej                  Zej        Zej        ZdZ dZ!dZ" G d de#          Z$ G d de$          Z% G d de%          Z& e&            Z' G d de%          Z( G d de(          Z) G d  d!e%          Z* G d" d#e%          Z+ G d$ d%e%          Z, G d& d'e%          Z- G d( d)e%          Z. G d* d+e%          Z/ G d, d-e$          Z0 G d. d/e0          Z1 G d0 d1e1          Z2 G d2 d3e2          Z3 G d4 d5e2          Z4 G d6 d7e1          Z5 G d8 d9e5          Z6 G d: d;e5          Z7 G d< d=e1          Z8 G d> d?e%          Z9 G d@ dAe+          Z: G dB dCe+          Z; G dD dEe+          Z< G dF dGe+          Z= G dH dIe+          Z> G dJ dKe+          Z? G dL dMe+          Z@ G dN dOe+          ZA G dP dQe+          ZB G dR dSe+          ZC G dT dUe+          ZD G dV dWe+          ZE G dX dYe+          ZF G dZ d[e+          ZGi ejH        jI         e(            ejJ        jI         e)            ejK        jI         e*            ejL        jI         e+            ejM        jI         e,            ejN        jI         e-            ejO        jI         e.            ejP        jI         e(            ejQ        jI         e/            ejR        jI         e2            ejS        jI         e5            ejT        jI         e8            ejU        jI         e:            ejV        jI         e;            ejW        jI         e<            ejX        jI         e=            ejY        jI         e>            ejZ        jI         e?            ej[        jI         e@            ej\        jI         eA            ej]        jI         eB            ej^        jI         eC            ej_        jI         eD            ej`        jI         eE            eja        jI         eF            ejb        jI         eG            i	ZcejS        jd         e6            eje        jd         e7            ejR        jd         e3            ejf        jd         e4            ejT        jd         e8            ejg        jd         e9            iZheci                                D ]%Zjejjk        ejjk        jl        jd        Zded	edehvrejehed<   &d\  emd]          D             \
  ZnZoZpZqZrZsZtZuZvZw exd^          Zy G d_ d`e#          Zz G da dbe#          Z{ G dc dde#          Z| e|            Z}dee~fdfZdS )g    N)debug)error)eoo)asSeekableStream)isEndOfStream)peekIntoStreamreadFromStream)_MISSING)PyAsn1Error)base)char)tag)tagmap)univ)useful)StreamingDecoderDecoderdecode)flags   d      c                   @    e Zd ZdZ	 	 ddZ	 	 ddZed             ZdS )AbstractPayloadDecoderNc                 0    t          j        d|          )ztDecode value with fixed byte length.

        The decoder is allowed to consume as many bytes as necessary.
        z&SingleItemDecoder not implemented for r   r   	self	substrateasn1SpectagSetlengthstate	decodeFunsubstrateFunoptionss	            h/var/www/html/crypto-mining-system/backend/venv/lib/python3.11/site-packages/pyasn1/codec/ber/decoder.pyvalueDecoderz#AbstractPayloadDecoder.valueDecoder0   s     ff VWWW    c                 0    t          j        d|          )zsDecode value with undefined length.

        The decoder is allowed to consume as many bytes as necessary.
        z3Indefinite length mode decoder not implemented for r   r   s	            r(   indefLenValueDecoderz+AbstractPayloadDecoder.indefLenValueDecoder:   s     [a[a cdddr*   c                     d|vr| |d<   |S )N
asn1Object )r.   r'   s     r(   _passAsn1Objectz&AbstractPayloadDecoder._passAsn1ObjectD   s    w&&$.GL!r*   NNNNN)__name__
__module____qualname__protoComponentr)   r,   staticmethodr0   r/   r*   r(   r   r   -   su        N 6:26X X X X >B:>e e e e   \  r*   r   c                   *    e Zd Zed             Zd ZdS )AbstractSimplePayloadDecoderc              #   :   K   t          |||          D ]}|V  d S Nr	   )r.   r    r#   r'   chunks        r(   substrateCollectorz/AbstractSimplePayloadDecoder.substrateCollectorM   s6      #Ivw?? 	 	EKKKK	 	r*   c                     |                     d          r|S || j                            ||          S |t          u r|S |                    |          S )Nnativer"   )getr5   clonenoValuer   r!   r"   valuer'   s        r(   _createComponentz-AbstractSimplePayloadDecoder._createComponentR   s_    ;;x   	)L&,,U6,BBBgO>>%(((r*   N)r2   r3   r4   r6   r<   rE   r/   r*   r(   r8   r8   L   s<          \) ) ) ) )r*   r8   c                   F    e Zd Z ej        d          Z	 	 ddZ	 	 ddZdS )RawPayloadDecoder Nc              +      K   |r' | j         ||dfi |}	 ||	|||          D ]}
|
V  d S  |||||fi |D ]}|V  d S )NrH   )rE   r   r    r!   r"   r#   r$   r%   r&   r'   r.   r;   rD   s               r(   r)   zRawPayloadDecoder.valueDecoder`   s        	..xOOwOOJ%j)VWMM  FYy(FFNNgNN 	 	EKKKK	 	r*   c              +      K   |r' | j         ||dfi |}	 ||	|||          D ]}
|
V  d S 	  |||||fddi|D ]}|t          j        u r d S |V  ')NrH   TallowEoo)rE   r   endOfOctetsrJ   s               r(   r,   z&RawPayloadDecoder.indefLenValueDecodero   s        	..xOOwOOJ%j)VWMM  F	"x. .!.%,. .   CO++FF	r*   r1   r2   r3   r4   r   Anyr5   r)   r,   r/   r*   r(   rG   rG   ]   s\        TXb\\N 6:26     >B:>     r*   rG   c                   :    e Zd Z ej        d          Z	 	 ddZdS )IntegerPayloadDecoderr   Nc              +   D  K   |d         j         t          j        k    rt          j        d          t          |||          D ]}	t          |	t                    r|	V  |	r+t          	                    t          |	          dd          }
nd}
 | j        |||
fi |V  d S )Nr   Simple tag format expectedbigT)signed)	tagFormatr   tagFormatSimpler   r   r
   
isinstanceSubstrateUnderrunErrorint
from_bytesbytesrE   )r   r    r!   r"   r#   r$   r%   r&   r'   r;   rD   s              r(   r)   z"IntegerPayloadDecoder.valueDecoder   s      
 !9#"555#$@AAA#Ivw?? 	 	E%!788  	NN5<<tNDDEE E#d#HfeGGwGGGGGGGr*   r1   )r2   r3   r4   r   Integerr5   r)   r/   r*   r(   rQ   rQ      sE        !T\!__N 6:26H H H H H Hr*   rQ   c                   4    e Zd Z ej        d          Zd ZdS )BooleanPayloadDecoderr   c                 4    t          j        | |||rdpdfi |S )N   r   )rQ   rE   rC   s        r(   rE   z&BooleanPayloadDecoder._createComponent   s;    $5(FEKa$41A A8?A A 	Ar*   N)r2   r3   r4   r   Booleanr5   rE   r/   r*   r(   r_   r_      s7        !T\!__NA A A A Ar*   r_   c                   J    e Zd Z ej        d          ZdZ	 	 ddZ	 	 ddZdS )BitStringPayloadDecoderr/   TNc              +   (  K   |r, | j         ||t          fi |}	 ||	|||          D ]}
|
V  d S |st          j        d          t	          |          D ]}
t          |
t                    r|
V  |
rt          j        d          |d         j        t          j	        k    rt          |d|          D ]}t          |t                    r|V  t          |          }|dk    rt          j        d|z            t          ||dz
  |          D ]}
t          |
t                    r|
V  | j                            |
d|          } | j         |||fi |V  d S | j        s!t          j        d| j        j        z            t"          rt#          d	           | j        }| j                            d
d          }|                                }|                                |z
  |k     r ||| j        fd|i|D ]}t          |t                    r|V  |d         }|dk    rt          j        d|z            | j                            |dd          d||          }|                                |z
  |k      | j         |||fi |V  d S )NzEmpty BIT STRING substrater   ra      Trailing bits overflow %sT)internalFormatpadding*Constructed encoding form prohibited at %s$assembling constructed serializationr*   rh   r&   rh   prependri   )rE   rB   r   r   r   rX   rY   rV   r   rW   r
   ordr5   fromOctetStringsupportConstructedForm	__class__r2   LOGr<   tell)r   r    r!   r"   r#   r$   r%   r&   r'   r.   r;   trailingBitsrD   	bitStringcurrent_position	components                   r(   r)   z$BitStringPayloadDecoder.valueDecoder   s     
  	..xTTGTTJ%j)VWMM  F 	B#$@AAA"9-- 	 	E%!788  	B#$@AAA!9#"555 .y!W E E ' 'l,BCC '&&&&|,,La'/,>   (	6A:wGG    e%;<<  KKK'77dL 8 B BE ($'&%KK7KKKKKF* 	G# %,.2n.E%F G G G  	86777 .'77D7QQ	$>>++nn!11F::&Yt2 AM  $ $	 i)?@@ $#OOO$Q<La'/,>   +;;!""d!< <  I nn!11F::$ $d#HfiKK7KKKKKKKr*   c              +     K   |r, | j         ||t          fi |}	 ||	|||          D ]}
|
V  d S | j        }| j                            dd          }	  ||| j        f|dd|D ]+}|t
          j        u r nt          |t                    r|V  ,|t
          j        u rnL|d         }|dk    rt          j
        d|z            | j                            |dd          d||	          } | j         |||fi |V  d S )
Nr*   Trl   r&   rL   r   rf   rg   ra   rm   )rE   rB   r<   r5   rp   r   rM   rX   rY   r   r   )r   r    r!   r"   r#   r$   r%   r&   r'   r.   r;   rv   rx   ru   s                 r(   r,   z,BitStringPayloadDecoder.indefLenValueDecoder   s     
  	..xTTGTTJ%j)VWMM  F .'77D7QQ		&Yt2.AM!. .%,. . $ $	 //Ei)?@@ $#OOOCO++$Q<La'/,>   +;;!""d!< <  I+	4 $d#HfiKK7KKKKKKKr*   r1   )	r2   r3   r4   r   	BitStringr5   rq   r)   r,   r/   r*   r(   rd   rd      ss        #T^B''N! 6:26NL NL NL NLb >B:>,L ,L ,L ,L ,L ,Lr*   rd   c                   J    e Zd Z ej        d          ZdZ	 	 ddZ	 	 ddZdS )OctetStringPayloadDecoderrH   TNc              +     K   |r, | j         ||t          fi |}	 ||	|||          D ]}
|
V  d S |d         j        t          j        k    rAt          |||          D ]}
t          |
t                    r|
V   | j         |||
fi |V  d S | j        s!t          j
        d| j        j        z            t          rt          d           | j        }d}|                                }|                                |z
  |k     rM ||| j        fd|i|D ]}t          |t                    r|V  ||z  }|                                |z
  |k     M | j         |||fi |V  d S )Nr   rj   rk   r*   r&   )rE   rB   rV   r   rW   r
   rX   rY   rq   r   r   rr   r2   rs   r<   rt   r5   )r   r    r!   r"   r#   r$   r%   r&   r'   r.   r;   headeroriginal_positionrx   s                 r(   r)   z&OctetStringPayloadDecoder.valueDecoder0  s       	..xTTGTTJ%j)VWMM  F!9#"555'	67CC    e%;<<  KKK'$'&%KK7KKKKKF* 	l#$PSWSaSj$jkkk 	86777 .%NN,,nn!22V;;&Yt2 AM  $ $	 i)?@@ $#OOOiF nn!22V;; $d#HffHHHHHHHHHr*   c              +   V  K   |r5|| j         ur, | j        ||t          fi |}	 ||	|||          D ]}
|
V  d S | j         }d}	  ||| j        f|dd|D ]+}t	          |t
                    r|V  |t          j        u r n,|t          j        u rn||z  }S | j        |||fi |V  d S )Nr*   Trz   )r<   rE   rB   r5   rX   rY   r   rM   )r   r    r!   r"   r#   r$   r%   r&   r'   r.   r;   r   rx   s                r(   r,   z.OctetStringPayloadDecoder.indefLenValueDecoder]  s<       	L0GGG..xTTGTTJ%j)VWMM  F .	 &Yt2.AM!. .%,. .  	 i)?@@ $#OOO//E 0 CO++iF	 " $d#HffHHHHHHHHHr*   r1   )	r2   r3   r4   r   OctetStringr5   rq   r)   r,   r/   r*   r(   r}   r}   ,  sp        %T%b))N! 6:26+I +I +I +I\ >B:>"I "I "I "I "I "Ir*   r}   c                   :    e Zd Z ej        d          Z	 	 ddZdS )NullPayloadDecoderrH   Nc              +     K   |d         j         t          j        k    rt          j        d          t          |||          D ]}	t          |	t                    r|	V   | j        ||dfi |}
|	rt          j        d|z            |
V  d S )Nr   rS   rH   z&Unexpected %d-octet substrate for Null)	rV   r   rW   r   r   r
   rX   rY   rE   )r   r    r!   r"   r#   r$   r%   r&   r'   r;   rx   s              r(   r)   zNullPayloadDecoder.valueDecoder  s      
 !9#"555#$@AAA#Ivw?? 	 	E%!788 )D)(FBJJ'JJ	 	W#$Lv$UVVVr*   r1   )r2   r3   r4   r   Nullr5   r)   r/   r*   r(   r   r     s?        TYr]]N 6:26     r*   r   c                   :    e Zd Z ej        d          Z	 	 ddZdS )ObjectIdentifierPayloadDecoderr/   Nc              +     K   |d         j         t          j        k    rt          j        d          t          |||          D ]}	t          |	t                    r|	V  |	st          j        d          d}
d}t          |	          }||k     r|	|         }|dz  }|dk     r|
|fz  }
n|dk    r|}d}d}|dk    ri|dz  }|t          k    rt          j        dt          |fz            |dz  |d	z  z   }||k    rt          j        d
|
          |	|         }|dz  }|dk    i|
|dz  |z   fz  }
n|dk    rt          j        d          ||k     d|
d         cxk    rdk    r	n nd|
z   }
nqd|
d         cxk    rdk    rn nd|
d         dz
  f|
dd          z   }
nB|
d         dk    rd|
d         dz
  f|
dd          z   }
nt          j        d|	d         z             | j
        |||
fi |V  d S )Nr   rS   Empty substrater/   ra      zEOID arc exceeds maximum continuation octets limit (%d) at position %drf      !Short substrate for sub-OID past z"Invalid octet 0x80 in OID encoding'   )r   (   O   P      zMalformed first OID octet: %srV   r   rW   r   r   r
   rX   rY   lenMAX_OID_ARC_CONTINUATION_OCTETSrE   )r   r    r!   r"   r#   r$   r%   r&   r'   r;   oidindexsubstrateLensubId	nextSubIdcontinuationOctetCounts                   r(   r)   z+ObjectIdentifierPayloadDecoder.valueDecoder  s      !9#"555#$@AAA#Ivw?? 	 	E%!788  	7#$56665zzl""%LEQJEs{{x!	)*&3&&*a/*-0OOO#/-0OQV/WX   #aZI,<=E,,#::EHSJ   !&eIQJE  3&& !y022#
 '(LMMM= l""B A"*CC3q6Rc!frk"SW,CCVr\\c!frk"SW,CC#$CeAh$NOOO#d#HfcEEWEEEEEEEr*   r1   )r2   r3   r4   r   ObjectIdentifierr5   r)   r/   r*   r(   r   r     sH        *T*2..N 6:26;F ;F ;F ;F ;F ;Fr*   r   c                   :    e Zd Z ej        d          Z	 	 ddZdS )RelativeOIDPayloadDecoderr/   Nc              +     K   |d         j         t          j        k    rt          j        d          t          |||          D ]}	t          |	t                    r|	V  |	st          j        d          d}
d}t          |	          }||k     r|	|         }|dz  }|dk     r|
|fz  }
n|dk    r|}d}d}|dk    ri|dz  }|t          k    rt          j        dt          |fz            |dz  |d	z  z   }||k    rt          j        d
|
          |	|         }|dz  }|dk    i|
|dz  |z   fz  }
n|dk    rt          j        d          ||k      | j
        |||
fi |V  d S )Nr   rS   r   r/   ra   r   zNRELATIVE-OID arc exceeds maximum continuation octets limit (%d) at position %drf   r   r   z+Invalid octet 0x80 in RELATIVE-OID encodingr   )r   r    r!   r"   r#   r$   r%   r&   r'   r;   reloidr   r   r   r   r   s                   r(   r)   z&RelativeOIDPayloadDecoder.valueDecoder  s      !9#"555#$@AAA#Ivw?? 	 	E%!788  	7#$56665zzl""%LEQJEs{{5("!	)*&3&&*a/*-0OOO#/-0OQV/WX   #aZI,<=E,,#::EKVM   !&eIQJE  3&& EQJ)355#
 '(UVVV= l""@ $d#HffHHHHHHHHHr*   r1   )r2   r3   r4   r   RelativeOIDr5   r)   r/   r*   r(   r   r     sH        %T%b))N 6:261I 1I 1I 1I 1I 1Ir*   r   c                   8    e Zd Z ej                    Z	 	 ddZdS )RealPayloadDecoderNc              +   n  K   |d         j         t          j        k    rt          j        d          t          |||          D ]}	t          |	t                    r|	V  |	s | j        ||dfi |V  d S |	d         }
|	dd          }	|
dz  r|	st          j        d          t          rt          d           |
dz  dz   }|d	k    r|	d         }|	dd          }	|	d |         |	|d          }	}|r|	st          j        d
          |d         dz  rdpd}|r|dz  }||d         z  }|dd          }||
d	z	  dz  }|dk    rt          j        d          |dk    r|dz  }n|dk    r|d	z  }d}|	r|dz  }||	d         z  }|	dd          }	|	|
dz  r| }|
dz	  dz  }|d|z  z  }|d|f}n|
dz  r t          rt          d           |
dz  rdpd}n|
dz  dk    r|	st          j        d          t          rt          d           	 |
dz  dk    rt          |	          ddf}nI|
dz  dk    rt          |	          }n0|
dz  dk    rt          |	          }nt          j        d|
z            n9# t          $ r t          j        d          w xY wt          j        d|
z             | j        |||fi |V  d S )Nr   rS   g        ra   r   zIncomplete floating-point valuezdecoding binary encoded REAL      zReal exponent screwedr   r   zIllegal Real base@   zdecoding infinite REALz-infinf   zdecoding character encoded REAL
   zUnknown NR (tag %s)zBad character Real syntaxzUnknown encoding (tag %s))rV   r   rW   r   r   r
   rX   rY   rE   rs   rZ   float
ValueError)r   r    r!   r"   r#   r$   r%   r&   r'   r;   foneoebpsfrD   s                     r(   r)   zRealPayloadDecoder.valueDecoder  s      !9#"555#$@AAA#Ivw?? 	 	E%!788  	'$'&#IIIIIIIF1Xabb	9 U	 K'(IJJJ 42333daAAvv!Habb	bqb	59B AU A'(?@@@1#(qA aRU
V  
 a$A1uu'(;<<<AvvQaQA "aU1Xabb	  "
 Dy Bq4BbLA1IEE$Y $	 .,---I(&1EEE$Y!^^ K'(IJJJ 756668s?? ZZQ/EE#X__!%LLEE#X__!%LLEE  6-2      2/   .+b0   $d#HfeGGwGGGGGGGs   A%I* *J	r1   )r2   r3   r4   r   Realr5   r)   r/   r*   r(   r   r     sI        TY[[N 6:26hH hH hH hH hH hHr*   r   c                       e Zd ZdZdS )!AbstractConstructedPayloadDecoderN)r2   r3   r4   r5   r/   r*   r(   r   r     s        NNNr*   r   c                   F    e Zd ZdZdZd Zd Z	 	 ddZ	 	 ddZ	 	 ddZ	dS )	ConstructedPayloadDecoderBaseNc                     t           r:   NotImplementedError)r   r.   idxs      r(   _getComponentTagMapz1ConstructedPayloadDecoderBase._getComponentTagMap      !!r*   c                     t           r:   r   )r   r.   r"   r   s       r(   _getComponentPositionByTypez9ConstructedPayloadDecoderBase._getComponentPositionByType  r   r*   c              +     K   d }g }t                      }|                                }	|dk    s|                                |	|z   k     r ||fi |D ]}
t          |
t                    r|
V  |dk    r|
t          j        u rn|                    |
           |                    |
j                   t          |          dk    r| j
        }n| j        }|                    t          j        |j        j        g|j        R            }|dk    |                                |	|z   k     t"          rt#          d|z             t%          |          D ]\  }}
|                    ||
ddd            |V  d S )Nr   ra   r?   z@guessed %r container type (pass `asn1Spec` to guide the decoder)FverifyConstraints	matchTagsmatchConstraints)setrt   rX   rY   r   rM   appendaddr"   r   protoRecordComponentprotoSequenceComponentrA   r   TagSetbaseTag	superTagsrs   	enumeratesetComponentByPosition)r   r    r"   r%   r#   r'   r.   
componentscomponentTypesr   rx   r5   r   s                r(   _decodeComponentsSchemalessz9ConstructedPayloadDecoderBase._decodeComponentsSchemaless  s      

%NN,,llinn..1BV1KKK&Yy<<G<< $ $	i)?@@ $#OOO||	S_ < <i(((y/000 >""Q&&!%!: "&!<'-- z."7"?S&BRSSS .  J+ llinn..1BV1KKK6  	) '( ) ) ) (
33 	 	NC--Y"'% .     r*   c              +   @  K   |d         j         t          j        k    rt          j        d          |                                }	|r_||                                }
n1| j        | j                            |          }
n| j        | j	        f}
 ||
|||          D ]}|V  d S | | j
        |f|||d|D ]}
t          |
t                    r|
V  |                                |	|z   k     rgt          r`t          ||          D ]}t          |t                    r|V  t          dt          |          t!          j        |          fz             |
V  d S |                                }
|
                                 |                     |
|          }|j        t*          j        j        t*          j        j        fv r6|j        }|j        t*          j        j        k    }| o|j         }t          r"t          d| rdpd	d
|rdpd	d|d           t5                      }d}|                                |	z
  |k     rO|sd }n~|r|j        }nt	 |r||         j        }n=||         j        s||         j        r|                    |          }n||         j        }n%# t@          $ r t          j        d|          w xY w |||fi |D ]}t          |t                    r|V  |sT|rR|r|!                    |j"                  }n5||         j        s||         j        r|#                    |j"        |          }|
$                    ||ddd           |%                    |           |dz  }|                                |	z
  |k     Ot          rt          d|z             |r|j&        '                    |          s!t          j        d|
j(        j)        z            |j*        r|+                    di           }t          r=t          d           |,                                D ]\  }}t          |d|           |s|+                    dd          rgt[          |j.                  D ]Q\  }}|j/        s|j        r|
0                    |          j1        s0|
2                    |j/        j3                  }	 ||         }n# th          $ r t          rrt          d|
j(        j)        d|j3        d|
j(        j)        d|j/        j3        d	           |j/        ,                                D ]\  }}t          |d|           	 |j/        |         }n+# th          $ r t          rt          d|           Y Y w xY wY nw xY wt          rt          d|d|           |
0                    |          }|j        t*          j5        j        t*          j6        j        fv rjt[          |          D ]X\  }}to          ||         8                                          } ||fd|i|D ]}t          |t                    r|V  |||<   Yto          |
0                    |          8                                          } ||fd|i|D ]}t          |t                    r|V  |
$                    ||           Sn|
j9        }|r"t          j        d |
j(        j)         d!          n|j        }t          rt          d"|z             d}|                                |	z
  |k     r` |||fi |D ]}t          |t                    r|V  |
$                    ||ddd           |dz  }|                                |	z
  |k     `|
V  d S )#Nr   Constructed tag format expectedr?   r"   r%   r#   )contextz)Unused trailing %d octets encountered: %s	decoding non-rH   deterministic SET type  chosen by type ID Excessive components decoded at Fr   ra   seen component indices %s,ASN.1 object %s has uninitialized components	openTypesuser-specified open types map: -> decodeOpenTypes%default open types map of component "." governed by component "":/failed to resolve open type by governing value resolved open type  by governing value r!   ASN.1 object  is inconsistent+decoding type %r chosen by given `asn1Spec`):rV   r   tagFormatConstructedr   r   rt   rA   r5   r   r   r   rX   rY   rs   r
   r   r   hexdumpclearr0   typeIdr   SequenceSetcomponentTypehasOptionalOrDefaultr   tagMapUniquer.   
isOptionalisDefaultedgetTagMapNearPosition
IndexErrorgetPositionByTypeeffectiveTagSetgetPositionNearTyper   r   requiredComponentsissubsetrr   r2   hasOpenTypesr@   itemsr   
namedTypesopenTypegetComponentByPositionisValuegetComponentByNamenameKeyErrorSetOf
SequenceOfr   asOctetsisInconsistent)r   r    r!   r"   r#   r$   r%   r&   r'   r   r.   r;   trailingr  	isSetTypeisDeterministicseenIndicesr   r   rx   r   kv	namedTypegoverningValuer  containerValueposcontainerElementstreaminconsistencys                                  r(   r)   z*ConstructedPayloadDecoderBase.valueDecoder  s
      !9#":::#$EFFF%NN,, 	#%^^--

$0!066f6EE

 "68SS
%j)VWMM  F>d>.&,	!. .%,. . % %
 j*@AA %$$$$~~"3f"<<< A$29g$N$N$N + +%h0FGG +"*NNNCHu}X'>'>G@ @ A A A F^^%%
&&z7;;?t}3TX_EEE!/J 48?:I"+mSJ4S0SO ''2F8b88):M:SQS:S:SHH    %%KC..""%66??! $(MM $.$;MM* G,6sO,FMM'_7 G:c?;V G,6,L,LS,Q,QMM -7sO,FM%   #//DLHN  
 "+9m!O!Ow!O!O ( (I!)-CDD ('& ]: ]  ](::9;TUU#C3 ]z#7R ](<<Y=VX[\\11&+#e 2    $$$qS ..""%66??V  ?/+=>>> WY!4==kJJ F+%'1';'DEF F F + KR 'K < <I 5<===$-OO$5$5 5 5DAqaaa 34444  ARGKK0A5$I$I AR.7
8M.N.N ?R ?RNC#,#5 ) ((3 )J<]<]^a<b<b<j ) (-7-J-J ) 2 7. .N-+4^+D#+ - - -#& 	!A$'C/9/C/L/L/L/8~~~/9/C/L/L/L/8/A/F/F/F)H %I %I %I 1:0B0H0H0J0J %A %A1(+!!!QQ,?(@(@(@(@!-/8/A./QHH'/ !- !- !-'* %L(+:H.-K )L )L )L$,HH	!- %-H-,  # M #2:((NN%L !M !M !M .8-N-Ns-S-SN-4$(J$5t7M9O  O  O >G(6>8 >8 	!D 	!D$9C)9 .>nS>Q>Z>Z>\>\-]-]F5>Yv5d5dPX5d\c5d5d %< %<	+5iAW+X+X )<2;OOO:CN3$7$7	!D *:*:[:[\_:`:`:i:i:k:k)l)l1:61`1`H1`X_1`1` !8 !8I'1)=S'T'T %8.7 * A A#y Q Q Q Q !+ 9  Y+W
(<(EWWWY Y YY
 %2M SAMQRRRC..""%66??!*9m!O!Ow!O!O ( (I!)-CDD ('11&+#e 2    q ..""%66?? sD   AJ& &"KSBVU('V(#VVVVVc              +     K   |d         j         t          j        k    rt          j        d          |_||                                }	n1| j        | j                            |          }	n| j        | j        f}	 ||	|||          D ]}
|
V  d S |C | j	        |f|||dt          |d          D ]}	t          |	t                    r|	V  |	V  d S |                                }	|	                                 |                     |	|          }|j        t           j        j        t           j        j        fv rq|	j        }|	j        t           j        j        k    }| o|j         }t*          r"t+          d| rdpd	d
|rdpd	d|d           t-                      }d}	 t/          |          |k    rd }n~|r|j        }nt	 |r||         j        }n=||         j        s||         j        r|                    |          }n||         j        }n%# t:          $ r t          j        d|	          w xY w |||fddi|D ]+}t          |t                    r|V  |t<          j        u r n,|t<          j        u rn|sT|rR|r|                     |j!                  }n5||         j        s||         j        r|"                    |j!        |          }|	#                    ||ddd           |$                    |           |dz  }gt*          rt+          d|z             |r|j%        &                    |          s!t          j        d|	j'        j(        z            |j)        r|*                    di           }t*          r=t+          d           |+                                D ]\  }}t+          |d|           |s|*                    dd          rtY          |j-                  D ]\  }}|j.        s|j        r|	/                    |          j0        s0|	1                    |j.        j2                  }	 ||         }n# tf          $ r t*          rrt+          d|	j'        j(        d|j2        d|	j'        j(        d|j.        j2        d	           |j.        +                                D ]\  }}t+          |d|           	 |j.        |         }n+# tf          $ r t*          rt+          d|           Y Y w xY wY nw xY wt*          rt+          d|d|           |	/                    |          }|j        t           j4        j        t           j5        j        fv rtY          |          D ]w\  }}tm          ||         7                                          } ||fd |it          |d          D ]+}t          |t                    r|V  |t<          j        u r n,|||<   xtm          |	/                    |          7                                          } ||fd |it          |d          D ]A}t          |t                    r|V  |t<          j        u r n|	#                    ||           Bn|	j8        }|r"t          j        d!|	j'        j(         d"          n|j        }t*          rt+          d#|z             d}	  |||fddi|D ]+}t          |t                    r|V  |t<          j        u r n,|t<          j        u rn |	#                    ||ddd           |dz  }g|	V  d S )$Nr   r   r?   r   TrL   r   r   rH   r   r   r   r   r   rL   Fr   ra   r   r   r   r   r   r   r   r   r   r   r   r   r   r!   r   r   r   )9rV   r   r   r   r   rA   r5   r   r   r   dictrX   rY   r   r0   r   r   r   r   r   r   rs   r   r   r   r.   r   r   r   r   r   rM   r   r   r   r   r   r   r   rr   r2   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   rx   r   r  r  r  r  r  r  r  r  r  r  r   s                                r(   r,   z2ConstructedPayloadDecoderBase.indefLenValueDecoder  s	      !9#":::#$EFFF##%^^--

$0!066f6EE

 "68SS
%j)VWMM  F>d>C&,	!C C%)'D%A%A%AC C % %
 j*@AA %$$$$F^^%%
&&z7;;?t}3TX_EEE#1J")TX_<I"+mSJ4S0SO ''2F8b88):M:SQS:S:SHH    %%KC0z??c))#HH )6HH* B'1#'AHH'_7 B:c?;V B'1'G'G'L'LHH (2#'AH%   #//DNJP  
 "+9h!Y!Y!YQX!Y!Y  I!)-CDD (' CO33 4 //& ]: ]  ](::9;TUU#C3 ]z#7R ](<<Y=VX[\\11&+#e 2    $$$qa0d  ?/+=>>> ^]!4==kJJ F+%'1';'DEF F F * X] 'K < <I 5<===$-OO$5$5 5 5DAqaaa 34444  HVGKK0A5$I$I HV.7
8M.N.N FV FVNC#,#5 ) ((3 )J<]<]^a<b<b<j ) (-7-J-J ) 2 7. .N-+4^+D#+ - - -#& 	!A$'C/9/C/L/L/L/8~~~/9/C/L/L/L/8/A/F/F/F)H %I %I %I 1:0B0H0H0J0J %A %A1(+!!!QQ,?(@(@(@(@!-/8/A./QHH'/ !- !- !-'* %L(+:H.-K )L )L )L$,HH	!- %-H-,  # M #2:((NN%L !M !M !M .8-N-Ns-S-SN-4$(J$5t7M9O  O  O >G(6>8 >8 !D !D$9C)9 .>nS>Q>Z>Z>\>\-]-]F5>Yv 6_ 6_PX 6_AEgX\A]A]A]6_ 6_ %2 %2	+5iAW+X+X )<2;OOO+4+G+G,1E ,H ;DN3$7$7!D  *:*:[:[\_:`:`:i:i:k:k)l)l1:6 2[ 2[H 2[=A'TX=Y=Y=Y2[ 2[ !V !VI'1)=S'T'T %8.7'0CO'C'C(-$.$E$Ec9$U$U$U$U %/$=M$ ]#/[J,@,I[[[] ] ] %2M SAMQRRRC!*!="L "L;?"LCJ"L "L  I ")-CDD (' CO33 4 //11&+#e 2    q), sD   AH "H7QBTST#TTTTT)NNNr1   )
r2   r3   r4   r   r   r   r   r   r)   r,   r/   r*   r(   r   r     s        !" " "" " " 591 1 1 1h 6:26[ [ [ [| >B:>i i i i i ir*   r   c                   J    e Zd Z ej                    Z ej                    ZdS )"SequenceOrSequenceOfPayloadDecoderN)r2   r3   r4   r   r   r   r  r   r/   r*   r(   r  r    s.        (4=??,T_..r*   r  c                   ,    e Zd Z ej                    ZdS )SequencePayloadDecoderN)r2   r3   r4   r   r   r5   r/   r*   r(   r!  r!    s        "T]__NNNr*   r!  c                   ,    e Zd Z ej                    ZdS )SequenceOfPayloadDecoderN)r2   r3   r4   r   r  r5   r/   r*   r(   r#  r#            $T_&&NNNr*   r#  c                   J    e Zd Z ej                    Z ej                    ZdS )SetOrSetOfPayloadDecoderN)r2   r3   r4   r   r   r   r
  r   r/   r*   r(   r&  r&    s,        #48::'TZ\\r*   r&  c                   ,    e Zd Z ej                    ZdS )SetPayloadDecoderN)r2   r3   r4   r   r   r5   r/   r*   r(   r(  r(    s        TXZZNNNr*   r(  c                   ,    e Zd Z ej                    ZdS )SetOfPayloadDecoderN)r2   r3   r4   r   r
  r5   r/   r*   r(   r*  r*    s        TZ\\NNNr*   r*  c                   D    e Zd Z ej                    Z	 	 ddZ	 	 ddZdS )ChoicePayloadDecoderNc              +     K   || j                             |          }	n|                                }	|r ||	|||          D ]}
|
V  d S |                     |	|          }|	j        |k    rFt          rt	          d|d            |||	j        fi |D ]}t          |t                    r|V  nHt          rt	          d|d            |||	j        |||fi |D ]}t          |t                    r|V  |j        }t          rt	          d|d|           |		                    ||dddd           |	V  d S )	Nr?   r   z as explicitly tagged CHOICEz as untagged CHOICEdecoded component , effective tag set Fr   r   r   	innerFlag)
r5   rA   r0   r"   rs   componentTagMaprX   rY   r   setComponentByType)r   r    r!   r"   r#   r$   r%   r&   r'   r.   r;   rx   r   s                r(   r)   z!ChoicePayloadDecoder.valueDecoder  s      ,22&2AAJJ "))J 	%j)VWMM  F&&z7;;&& KIJJJ&Yz9F F=DF F $ $	i)?@@ $#OOO$  B@AAA&Yz966& &$& & $ $	 i)?@@ $#OOO#3 	]C			??[\\\%%Y#e	 	& 	
 	
 	
 r*   c           	   +     K   || j                             |          }	n|                                }	|r ||	|||          D ]}
|
V  d S |                     |	|          }|	j        |k    }t          rt	          d|d|rdpdd           	 |r$ |||	j        j        fi t          |d          }n& |||	j        j        |||fi t          |d          }|D ]m}t          |t                    r|V  |t          j        u r nC|j        }t          rt	          d	|d
|           |	                    ||dddd           |s nn|r|t          j        u rn|	V  d S )Nr?   r   z as zexplicitly unztagged CHOICETr  r.  r/  Fr0  )r5   rA   r0   r"   rs   r   r   r  rX   rY   r   rM   r   r3  )r   r    r!   r"   r#   r$   r%   r&   r'   r.   r;   isTaggediteratorrx   r   s                  r(   r,   z)ChoicePayloadDecoder.indefLenValueDecoder  s@      ,22&2AAJJ "))J 	%j)VWMM  F&&z7;;$. 	=C2]:d::< = = =%	 K$9z7D4 47T2224 4
 %9z7DFEK K-1'D-I-I-IK K &  	i)?@@ $#OOO//E"+"; =C )		??< = = = --#Y&+#e#	 .      E  yCO;;K%	N r*   r1   )r2   r3   r4   r   Choicer5   r)   r,   r/   r*   r(   r,  r,    s[         T[]]N 6:261 1 1 1h >B:>? ? ? ? ? ?r*   r,  c                   D    e Zd Z ej                    Z	 	 ddZ	 	 ddZdS )AnyPayloadDecoderNc              +   r  K   |d}	n(|j         t          j        u r
||j        v}	n||j        k    }	|	r|j        }
|                                }|                    |
t          j	                   |||
z
  z  }t          rPt          ||          D ]}t          |t                    r|V  t          dt          j        |          z             |r* | | j        ||t"          fi ||||          D ]}|V  d S t%          |||          D ]}t          |t                    r|V   | j        |||fi |V  d S )NTz&decoding as untagged ANY, substrate %s)rr   r   TagMaptagMapr"   markedPositionrt   seekosSEEK_SETrs   r   rX   rY   r   r   rE   rB   r
   )r   r    r!   r"   r#   r$   r%   r&   r'   
isUntaggedfullPositioncurrentPositionr;   s                r(   r)   zAnyPayloadDecoder.valueDecoder  s      JJ6=00x6JJ  8?2J 	1$3L'nn..ONN<555o44F 1+Iv>> $ $E!%)?@@ $#  =//0 1 1 1  	%)D)(FGOOwOOvw0 0   F#Ivw?? 	 	E%!788 #d#HfeGGwGGGGGGGr*   c              +   t  K   |d}	n(|j         t          j        u r
||j        v }	n||j        k    }	|	rd}
t
          rt          d           n|j        }|                                }|                    |t          j
                   t          |||z
  |          D ]}
t          |
t                    r|
V  t
          r$t          dt          j        |
          z             | j        }|rH|| j        ur? | j        ||t&          fi |} |||
|z   |t)          |
          z   |          D ]}
|
V  d S t
          rt          d           | j        }	  |||f|dd|D ]+}t          |t                    r|V  |t*          j        u r n,|t*          j        u rn|
|z  }
N|r|
V  d S  | j        |||
fi |V  d S )NFr*   zdecoding as tagged ANYz-decoding as untagged ANY, header substrate %srk   Trz   )rr   r   r<  r=  r"   rs   r>  rt   r?  r@  rA  r
   rX   rY   r   r   r5   r<   rE   rB   r   r   rM   )r   r    r!   r"   r#   r$   r%   r&   r'   r6  r;   rC  rD  r.   rx   s                  r(   r,   z&AnyPayloadDecoder.indefLenValueDecoderG  s      HH6=000HH 0H 	\E .,--- %3L'nn..ONN<555'	?\3QSZ[[    e%;<<  KKK \CemTYFZFZZ[[[ & 	L0GGG..&'6 6-46 6J &	 16CJJ3FQ Q  F 	86777 .	&Yx.6B!. .%,. .  	 i)?@@ $#OOO//E 0 CO++YE	"  	LKKKKK ($'&%KK7KKKKKKKr*   r1   rN   r/   r*   r(   r:  r:    sk        TXZZN 6:26'H 'H 'H 'HT >B:>IL IL IL IL IL ILr*   r:  c                   ,    e Zd Z ej                    ZdS )UTF8StringPayloadDecoderN)r2   r3   r4   r   
UTF8Stringr5   r/   r*   r(   rG  rG    r$  r*   rG  c                   ,    e Zd Z ej                    ZdS )NumericStringPayloadDecoderN)r2   r3   r4   r   NumericStringr5   r/   r*   r(   rJ  rJ            'T'))NNNr*   rJ  c                   ,    e Zd Z ej                    ZdS )PrintableStringPayloadDecoderN)r2   r3   r4   r   PrintableStringr5   r/   r*   r(   rN  rN            )T)++NNNr*   rN  c                   ,    e Zd Z ej                    ZdS )TeletexStringPayloadDecoderN)r2   r3   r4   r   TeletexStringr5   r/   r*   r(   rR  rR    rL  r*   rR  c                   ,    e Zd Z ej                    ZdS )VideotexStringPayloadDecoderN)r2   r3   r4   r   VideotexStringr5   r/   r*   r(   rU  rU    s        (T(**NNNr*   rU  c                   ,    e Zd Z ej                    ZdS )IA5StringPayloadDecoderN)r2   r3   r4   r   	IA5Stringr5   r/   r*   r(   rX  rX            #T^%%NNNr*   rX  c                   ,    e Zd Z ej                    ZdS )GraphicStringPayloadDecoderN)r2   r3   r4   r   GraphicStringr5   r/   r*   r(   r\  r\    rL  r*   r\  c                   ,    e Zd Z ej                    ZdS )VisibleStringPayloadDecoderN)r2   r3   r4   r   VisibleStringr5   r/   r*   r(   r_  r_    rL  r*   r_  c                   ,    e Zd Z ej                    ZdS )GeneralStringPayloadDecoderN)r2   r3   r4   r   GeneralStringr5   r/   r*   r(   rb  rb    rL  r*   rb  c                   ,    e Zd Z ej                    ZdS )UniversalStringPayloadDecoderN)r2   r3   r4   r   UniversalStringr5   r/   r*   r(   re  re    rP  r*   re  c                   ,    e Zd Z ej                    ZdS )BMPStringPayloadDecoderN)r2   r3   r4   r   	BMPStringr5   r/   r*   r(   rh  rh    rZ  r*   rh  c                   ,    e Zd Z ej                    ZdS )ObjectDescriptorPayloadDecoderN)r2   r3   r4   r   ObjectDescriptorr5   r/   r*   r(   rk  rk    s        ,V,..NNNr*   rk  c                   ,    e Zd Z ej                    ZdS )GeneralizedTimePayloadDecoderN)r2   r3   r4   r   GeneralizedTimer5   r/   r*   r(   rn  rn    s        +V+--NNNr*   rn  c                   ,    e Zd Z ej                    ZdS )UTCTimePayloadDecoderN)r2   r3   r4   r   UTCTimer5   r/   r*   r(   rq  rq    s        #V^%%NNNr*   rq  c                     g | ]}|S r/   r/   ).0xs     r(   
<listcomp>rv    s    !!!!A!!!r*   r   )r   r   c                   R    e Zd ZeZ e            ZdZeZe	Z	e
e
fdZdddeddfdZdS )SingleItemDecoderTc                 ~    |t           ur|n| j        | _        |t           ur|n| j        | _        i | _        i | _        d S r:   )r   TAG_MAP_tagMapTYPE_MAP_typeMap	_tagCache_tagSetCache)r   r=  typeMapignoreds       r(   __init__zSingleItemDecoder.__init__  sG    !'x!7!7vvT\#*(#:#: r*   Nc              +   8  K   |                     dd          }	|	t          k    rt          j        dt          z            |	dz   |d<   |                    dd          }
t
          r t          dt          j        |||fz             |
r| j        r~t          |d|          D ]}t          |t                    r|V  |t          k    r&t
          rt          d	           t          j        V  d S |                    d
t           j                   | j        }| j        }| j        }| j        }t,          }|                                |_        |t2          ur|t4          u rrd}t          |d|          D ]}t          |t                    r|V  t7          |          }	 ||         }n# t8          $ r |}|dz  }|dz  }|dz  }|dk    rrd}d}d}	 t          |d|          D ]}t          |t                    r|V  |st          j        d          t7          |          }|dz  }|dz  }||dz  z  }|dz  snkt;          j        |||          }|r|||<   Y nw xY w|L|r4	 ||         }nE# t8          $ r t;          j        d|          }|||<   Y nw xY wt;          j        d|          }n||z   }t@          }t
          rt          d|z             |t@          u rKt          |d|          D ]}t          |t                    r|V  t7          |          }|dk     r|}n|dk    r|dz  }|tB          k    rt          j        d|tB          fz            t          |||          D ]}t          |t                    r|V  tE          |          }tG          |          |k    r)t          j        |dtG          |          d|          d}|D ]}|dz  }||z  }|dz  }nd}|dk    r| j        st          j        d          tH          }t
          rt          d|z             |tH          u r|tJ          }ntL          }|tJ          u r	 ||         }n# t8          $ r d }Y nw xY w|rtN          }n5	 ||d d                  }n# t8          $ r d }Y nw xY w|rtN          }ntP          }t
          rbt          d|r|j)        j*        pdd|tN          u rd pd!           t          j        +                    |d u rd"p|j,        j)        j*                   |tL          u rf|j)        tZ          j.        u r	 ||         }n# t8          $ r d }Y nw xY wt
          rt          d#           |j/        0                                D ]$\  }} t          d$|d%| j)        j*                   %|j1        rMt          d&           |j1        0                                D ]$\  }} t          d$|d%| j)        j*                   %t          d'|d u rdp|2                                d(|           n<||j3        k    s	||j4        v r&|}t
          rt          d)|j)        j*        z             nd }|	 ||j5                 }t
          rt          d*|j5                   nn# t8          $ ra t;          j        |j3        j6        |j3        j6                  }!	 ||!         }t
          rt          d+|!           n# t8          $ r d }Y nw xY wY nw xY w|r
|}tN          }ntP          }n	d }tP          }t
          rdt          d|tN          u r|j)        j*        pdd,|tN          u rd pd!           t          j        +                    |d u rd"p|j)        j*                   |tN          u r]|                     d-d          s|sd. }|                                }"|dk    r6 |j7        ||||tH          | |fi |D ]}t          |t                    r|V  n |j8        ||||tH          | |fi |D ]}t          |t                    r|V  |                                |"z
  }#|s|#|k    rt          d/|#d0|d1          |r|#|k    rt          d/|#d2|d1          t
          r[t          d|j)        j*        d3|j)        j*        d4t          |tr          j:                  r|;                                p|d5           t2          }n|tP          u r|rE|d         j<        t:          j=        k    r*|d         j>        t:          j?        k    rt          }tN          }n	d }| jA        }t
          r.t          d|r|j)        j*        pdd6|tN          u rd pd7           |t          u r1| jC        }t
          rt          d8|j)        j*        z             tN          }|t          u rt          j        |d9|          |t2          ut
          r:t          j                                         t          d:t          j        z             |V  d S );N_nestingLevelr   z0ASN.1 structure nesting depth exceeds limit (%d)ra   rL   FzWdecoder called at scope %s with state %d, working with up to %s octets of substrate: %sr   zend-of-octets sentinel foundTr          z'Short octet stream on long tag decodingrf   r   r   )tagClassrV   tagIdr/   z$tag decoded into %s, decoding lengthz+BER length field size %d exceeds limit (%d)<z at r   r   z6Indefinite length encoding not supported by this codeczvalue length decoded into %dzcodec z<none>z% chosen by a built-in type, decoding rD   zas explicit tag?z!candidate ASN.1 spec is a map of:z  r   zbut neither of: znew candidate ASN.1 spec is z, chosen by zcandidate ASN.1 spec is %sz6value decoder chosen for an ambiguous type by type ID zvalue decoder chosen by base z  chosen by ASN.1 spec, decoding recursiveFlagc              3      K   | V  dS )ae  Legacy hack to keep the recursiveFlag=False option supported.

                        The decode(..., substrateFun=userCallback) option was introduced in 0.1.4 as a generalization
                        of the old recursiveFlag=False option. Users should pass their callback instead of using
                        recursiveFlag.
                        Nr/   )r.   
_substrate_length_optionss       r(   r&   z0SingleItemDecoder.__call__.<locals>.substrateFun7  s       )(((((r*   zRead z bytes instead of expected r   z bytes are more than expected z yields type z	, value:
z
...z chosen, decoding z
as failurezcodec %s chosen, decoding valuez not in asn1Spec: z%decoder left scope %s, call completed)Er@   MAX_NESTING_DEPTHr   r   poprs   r   scopesupportIndefLengthr
   rX   rY   EOO_SENTINELr   rM   r?  r@  SEEK_CURr{  r}  r~  r  rB   rt   r>  stStopstDecodeTagro   r	  r   Tagr   stDecodeLengthMAX_LENGTH_OCTETSlistr   stGetValueDecoderstGetValueDecoderByTagstGetValueDecoderByAsn1SpecstDecodeValuestTryAsExplicitTagrr   r2   pushr5   r   r<  presentTypesr  	skipTypesprettyPrintTyper"   r=  r   r   r,   r)   r   Asn1ItemprettyPrintrV   r   r  tagClassUniversalrawPayloadDecoderdefaultErrorStatestDumpRawValuedefaultRawDecoderstErrorCondition)$r   r    r!   r"   r#   r$   r%   r&   r'   r  rL   eoo_candidater=  r  tagCachetagSetCacherD   
isShortTag	firstByte
firstOctetlastTag
integerTagr  rV   r  lengthOctetIdxintegerBytesizeencodedLengthlengthOctetconcreteDecoder
chosenSpecr  
baseTagSetr   	bytesReads$                                       r(   __call__zSingleItemDecoder.__call__  s     
  OQ77,,,#BEVV   $11#4 ;;z511 	@ UFI>? @ @ @
  	0/ 	0!/	1g!F!F ( (m-CDD ('''',, 86777o%%% r2;///->'#,>>#3#3	 6!!##!
!/	1g!F!F ( (I!)-CDD (' ^^
&7&z2GG #7 #7 #7!+J)D0H *T 1I&-E}}%*
)* !&/=iG/T/T 6 6#-k;Q#R#R !6*5$5$5$5#. "&+&B$M'" '" !" *-[)9)9J*a/N!aKE!j4&78E#-#4 & %!&$ "g!)Ye  G " 7/6,G#7J >! 	9=%0%<FF' = = =%(ZG%<%<F6<K
333=
 "%B!8!8 %v-F& I>GHHH&&"0Aw"G"G ) )J!*.DEE )(((( __
##'FF#%%%,D///#/I $&7M9 9   *8	4)Q)Q 0 0%m5KLL 0"////$($7$7M=))T11#:-1TT3}3E3E3E3EvvN   F'4 . .1+-AIDD  FR<<(?<+,deee) A6?@@@)))#2EE 8E" ...+&,VnOO + + +&*OOO+ # 3)EE/*0*<# / / /*./ ' 3 - 2 {C_  NDapaz  bD  NP  HP  NP  NP  RW  [h  Rh  Rt  mt  RI  xI  RI  J  K  K  KK$$_%<%D%yHfHpHyzzz333%66*%-f%5

# * * *%)


*  
X?@@@-5-B-H-H-J-J S SMJC


AK<P<P QRRRR#- W 2333191C1I1I1K1K W W
A #JJJ@T@T$U V V V Vj\`N`Nmem  ONq{  rL  rL  rN  rN  ON  ON  PV  PV  W  X  X  Xx..&HO2K2K!)J X88;M;VVWWW "&J)3*1*2C*D sC^h^o^o qrrr# 3 3 3%(Z
0A0IJL]Le%f%f
3.4Z.@O" W #$U V V V' 3 3 3.2OOO33 ' 3#- - !3 '+O.E bCQ^H^  IFcrc|  dF  IR  JR  IR  IR  TY  ]j  Tj  Tv  ov  TK  zK  TK  L  M  M  MK$$Z4%7%?C%`:CWC`aaa%%{{?D99 ), )) ) ) %.NN$4$4!R<<!E!E%x"F,= ,"; "; 3:"; "; ( ( &e-CDD ("'KKK( ">!=%x"F,= ,"; "; 3:"; "; ( ( &e-CDD ("'KKK ) 0 03D DI' ^I,?,?)kGPyyRXRXRXY[ [ [% ^)f*<*<)kJS))U[U[U[\^ ^ ^  [3&09995?;S;S;S!%77OE<M<M<O<OXSXXXZ [ [ [ *** 	3q	+s/GGGq	*c.CCC&7O)EE '+O 2E sC/:poNgNp:|t|:|:|  D  HU  U  a  Za  q  eq  q  r  s  s  s&&"&"8 `9O<U<^^___%((('06A  ]	 6!!d	  	GKOO7%+EFFFs   F$ $B1II I) )$JJQ QQ-Q> >RR(T1 1U ?U +Z 3[/8![[/[)&[/([))[/.[/)r2   r3   r4   r  r  r:  r  r  rz  r|  r   r  r  r  r/   r*   r(   rx  rx    s}        ())++GH&     ,0Tdd d d d d dr*   rx  c                   $    e Zd ZdZeZddZd ZdS )r   a	  Create an iterator that turns BER/CER/DER byte stream into ASN.1 objects.

    On each iteration, consume whatever BER/CER/DER serialization is
    available in the `substrate` stream-like object and turns it into
    one or more, possibly nested, ASN.1 objects.

    Parameters
    ----------
    substrate: :py:class:`file`, :py:class:`io.BytesIO`
        BER/CER/DER serialization in form of a byte stream

    Keyword Args
    ------------
    asn1Spec: :py:class:`~pyasn1.type.base.PyAsn1Item`
        A pyasn1 type object to act as a template guiding the decoder.
        Depending on the ASN.1 structure being decoded, `asn1Spec` may
        or may not be required. One of the reasons why `asn1Spec` may
        me required is that ASN.1 structure is encoded in the *IMPLICIT*
        tagging mode.

    Yields
    ------
    : :py:class:`~pyasn1.type.base.PyAsn1Item`, :py:class:`~pyasn1.error.SubstrateUnderrunError`
        Decoded ASN.1 object (possibly, nested) or
        :py:class:`~pyasn1.error.SubstrateUnderrunError` object indicating
        insufficient BER/CER/DER serialization on input to fully recover ASN.1
        objects from it.

        In the latter case the caller is advised to ensure some more data in
        the input stream, then call the iterator again. The decoder will resume
        the decoding process using the newly arrived data.

        The `context` property of :py:class:`~pyasn1.error.SubstrateUnderrunError`
        object might hold a reference to the partially populated ASN.1 object
        being reconstructed.

    Raises
    ------
    ~pyasn1.error.PyAsn1Error, ~pyasn1.error.EndOfStreamError
        `PyAsn1Error` on deserialization error, `EndOfStreamError` on
         premature stream closure.

    Examples
    --------
    Decode BER serialisation without ASN.1 schema

    .. code-block:: pycon

        >>> stream = io.BytesIO(
        ...    b'0	')
        >>>
        >>> for asn1Object in StreamingDecoder(stream):
        ...     print(asn1Object)
        >>>
        SequenceOf:
         1 2 3

    Decode BER serialisation with ASN.1 schema

    .. code-block:: pycon

        >>> stream = io.BytesIO(
        ...    b'0	')
        >>>
        >>> schema = SequenceOf(componentType=Integer())
        >>>
        >>> decoder = StreamingDecoder(stream, asn1Spec=schema)
        >>> for asn1Object in decoder:
        ...     print(asn1Object)
        >>>
        SequenceOf:
         1 2 3
    Nc                 n     | j         di || _        t          |          | _        || _        || _        d S )Nr/   )SINGLE_ITEM_DECODER_singleItemDecoderr   r  	_asn1Specr  )r   r    r!   r'   s       r(   r  zStreamingDecoder.__init__  s>    ":$":"E"EW"E"E*955!r*   c              #      K   	  | j         | j        | j        fi | j        D ]}|V  t	          | j                  D ]}t          |t                    rd V   |rd S Zr:   )r  r  r  r  r   rX   rY   )r   r.   r;   s      r(   __iter__zStreamingDecoder.__iter__  s      	5d5OT^F F7;}F F ! !
     &t77  e%;<< EEE 	r*   r:   )r2   r3   r4   __doc__rx  r  r  r  r/   r*   r(   r   r     sL        H HT ,           r*   r   c                   D    e Zd ZdZeZedd            Zed             Z	dS )r   znCreate a BER decoder object.

    Parse BER/CER/DER octet-stream into one, possibly nested, ASN.1 object.
    Nc                 B   t          |          }d|v r|d         dfd	}||d<    | j        ||fi |}|D ]e}t          |t                    rt	          j        d          	 t          t          |                    }n# t          j        $ r d}Y nw xY w||fc S dS )a.  Turns BER/CER/DER octet stream into an ASN.1 object.

        Takes BER/CER/DER octet-stream in form of :py:class:`bytes`
        and decode it into an ASN.1 object
        (e.g. :py:class:`~pyasn1.type.base.PyAsn1Item` derivative) which
        may be a scalar or an arbitrary nested structure.

        Parameters
        ----------
        substrate: :py:class:`bytes`
            BER/CER/DER octet-stream to parse

        Keyword Args
        ------------
        asn1Spec: :py:class:`~pyasn1.type.base.PyAsn1Item`
            A pyasn1 type object (:py:class:`~pyasn1.type.base.PyAsn1Item`
            derivative) to act as a template guiding the decoder.
            Depending on the ASN.1 structure being decoded, `asn1Spec` may or
            may not be required. Most common reason for it to require is that
            ASN.1 structure is encoded in *IMPLICIT* tagging mode.

        substrateFun: :py:class:`Union[
                Callable[[pyasn1.type.base.PyAsn1Item, bytes, int],
                         Tuple[pyasn1.type.base.PyAsn1Item, bytes]],
                Callable[[pyasn1.type.base.PyAsn1Item, io.BytesIO, int, dict],
                         Generator[Union[pyasn1.type.base.PyAsn1Item,
                                         pyasn1.error.SubstrateUnderrunError],
                                   None, None]]
            ]`
            User callback meant to generalize special use cases like non-recursive or
            partial decoding. A 3-arg non-streaming variant is supported for backwards
            compatiblilty in addition to the newer 4-arg streaming variant.
            The callback will receive the uninitialized object recovered from substrate
            as 1st argument, the uninterpreted payload as 2nd argument, and the length
            of the uninterpreted payload as 3rd argument. The streaming variant will
            additionally receive the decode(..., **options) kwargs as 4th argument.
            The non-streaming variant shall return an object that will be propagated
            as decode() return value as 1st item, and the remainig payload for further
            decode passes as 2nd item.
            The streaming variant shall yield an object that will be propagated as
            decode() return value, and leave the remaining payload in the stream.

        Returns
        -------
        : :py:class:`tuple`
            A tuple of :py:class:`~pyasn1.type.base.PyAsn1Item` object
            recovered from BER/CER/DER substrate and the unprocessed trailing
            portion of the `substrate` (may be empty)

        Raises
        ------
        : :py:class:`~pyasn1.error.PyAsn1Error`
            :py:class:`~pyasn1.error.SubstrateUnderrunError` on insufficient
            input or :py:class:`~pyasn1.error.PyAsn1Error` on decoding error.

        Examples
        --------
        Decode BER/CER/DER serialisation without ASN.1 schema

        .. code-block:: pycon

           >>> s, unprocessed = decode(b'0	')
           >>> str(s)
           SequenceOf:
            1 2 3

        Decode BER/CER/DER serialisation with ASN.1 schema

        .. code-block:: pycon

           >>> seq = SequenceOf(componentType=Integer())
           >>> s, unprocessed = decode(
                b'0	', asn1Spec=seq)
           >>> str(s)
           SequenceOf:
            1 2 3

        r&   Nc              3      K   	  | |||          }n]# t           $ rP}|j        j        r t          |t          j                  sJ t                              | ||          }Y d}~nd}~ww xY w|D ]}|V  dS )ar  Support both 0.4 and 0.5 style APIs.

                substrateFun API has changed in 0.5 for use with streaming decoders. To stay backwards compatible,
                we first try if we received a streaming user callback. If that fails,we assume we've received a
                non-streaming v0.4 user callback and convert it for streaming on the fly
                N)	TypeError__traceback__tb_nextrX   ioBytesIOr   _callSubstrateFunV4asV5)r.   r    r#   r'   substrate_gen_valuerD   origSubstrateFuns          r(   substrateFunWrapperz-Decoder.__call__.<locals>.substrateFunWrapperE  s      u$4$4ZFT[$\$\MM  u u u+3 %i<<<<<$+$C$CDTV`bkms$t$tMMMMMMu +    EKKKK   s    
A.AA))A.zShort substrate on inputr*   r:   )r   STREAMING_DECODERrX   rY   r   nextr
   EndOfStreamError)	clsr    r!   r'   r  streamingDecoderr.   tailr  s	           @r(   r  zDecoder.__call__  s   ` %Y//	W$$&~6           & ':GN#030x, ,#*, , + 
	$ 
	$J*&<== O23MNNNN95566)    t####
	$ 
	$s   %BBBc              #     K   |                                 }|dk    rt          |          } | |||          \  }}|                    |          }|                                 |                    | t
          j                   |V  d S )Nr   )readr   writetruncater?  r@  r  )substrateFunV4r.   r    r#   substrate_bytesrD   nextSubstratenbytess           r(   r  zDecoder._callSubstrateFunV4asV5i  s      #..**R<<))F-~j/6RR}//w,,,r*   r:   )
r2   r3   r4   r  r   r  classmethodr  r6   r  r/   r*   r(   r   r     sd          )v$ v$ v$ [v$p   \  r*   r   attrc                     ddd                     |           x}r6t          j        |  d| dt          d           t	                      |         S t          |           )Nrz  r|  )r=  r  z is deprecated. Please use z	 instead.r   )
stacklevel)r@   warningswarnDeprecationWarningglobalsAttributeError)r  newAttrs     r(   __getattr__r    sl    &:>>BB4HHHw "LL'LLLN`mnooooyy!!


r*   )r  r@  sysr  pyasn1r   r   pyasn1.codec.berr   pyasn1.codec.streamingr   r   r   r
   pyasn1.compatr   pyasn1.errorr   pyasn1.typer   r   r   r   r   r   __all__registerLoggeer2   DEBUG_DECODERrs   rB   rY   r   r  r  objectr   r8   rG   r  rQ   r_   rd   r}   r   r   r   r   r   r   r  r!  r#  r&  r(  r*  r,  r:  rG  rJ  rN  rR  rU  rX  r\  r_  rb  re  rh  rk  rn  rq  r]   r"   rb   r{   r   r   r   r   
Enumeratedr   r   r   r8  rH  rK  rO  rS  rV  rY  r]  r`  rc  rf  ri  rl  ro  rr  rz  r   r
  r  rO   r|  valuestypeDecoderr5   rr   ranger  r  r  r  r  r  r  r  r  r  r\   r  rx  r   r   r   strr  r/   r*   r(   <module>r     sl   
			 				 



                          3 3 3 3 3 3 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 " " " " " " $ $ $ $ $ $                                    
3
3
3e85+>???
,5  #%        V   >) ) ) ) )#9 ) ) )"& & & & &4 & & &R &%'' H H H H H8 H H H0A A A A A1 A A A@L @L @L @L @L: @L @L @LFSI SI SI SI SI < SI SI SIl    5   .>F >F >F >F >F%A >F >F >FB4I 4I 4I 4I 4I < 4I 4I 4InkH kH kH kH kH5 kH kH kH\    (>   C C C C C$E C C CL/ / / / /)F / / /
% % % % %? % % %' ' ' ' 'A ' ' '* * * * *< * * *
         0      " " " " "2 " " "u u u u u8 u u upuL uL uL uL uL4 uL uL uLr' ' ' ' '8 ' ' '* * * * *"; * * *, , , , ,$= , , ,* * * * *"; * * *+ + + + +#< + + +& & & & &7 & & &* * * * *"; * * ** * * * *"; * * ** * * * *"; * * *, , , , ,$= , , ,& & & & &7 & & &
/ / / / /%> / / /. . . . .$= . . .& & & & &5 & & &L..00L..00 	N2244 	6688	
 	I((** 	 "@"@"B"B 	6688 	O1133 	I((** 	M<<>> 	HO--// 	K,,.. 	O4466 	::<<  	!>!>!@!@!" 	::<<#$ 	 < < > >%& 	N2244::<<::<<::<<!>!>!@!@N2244
"$B$B$D$D
!#@#@#B#B
N00229 B 	HO&&((J**,,M0022O4466K,,..HO&&(( >>## + +K!-+5<&"8"8*HV "!uuRyy!!!		 uV}}v v v v v v v vr` ` ` ` `v ` ` `FI I I I If I I ID 
c      r*   