g dZddlZddlZddlZddlmZddlmZddlmZddlmZddlm Z ddlm Z dd lm Z dd lm Z dd lm Z dd lmZdd lmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZejeZdZ GddeZ!GddeZ"Gdd e#Z$Gd!d"e Z%d#Z&d$Z'd%Z(d&Z)d'Z*d(Z+d)Z,d*Z-d+Z.d,Z/d-Z0d.Z1d/Z2d0Z3d1Z4d2Z5d3Z6d4Z7d5Z8d6Z9d7Z:d8Z;d9Zd<Z?d=Z@d>ZAd?ZBd@ZCdAZDdBZEdCZFdDZGdEZHdFZIdGZJdHZKdYdIZLdJZMdKZNdLZOdMZPdNZQdOZRdPZSdQZTdRZUdSZVdTZWdUZXdVZYdZdXZZdS)[z9Convert ASN.1 specifications to Python data structures. N)Literal)Keyword)Word) ZeroOrMore)Regex) printables) delimitedList)Group)Optional)Forward) StringEnd) OneOrMore)nums)Suppress)ParseException)ParseSyntaxException)NotAny)NoMatch) QuotedString)Combine) ParseResults)lineno)ErrorceZdZdS) ParseErrorN__name__ __module__ __qualname__`/home/jenkins/workspace/simtester-sanitize/venv/lib/python3.11/site-packages/asn1tools/parser.pyrr(Dr"rceZdZdS)InternalParserErrorNrr!r"r#r&r&,r$r"r&c8eZdZdZdZdZdZdZdZdZ dS) Tokensc"||_||_dSN)tagtokens)selfr+r,s r#__init__zTokens.__init__2s r"c|j|Sr*r,)r-indexs r# __getitem__zTokens.__getitem__6s{5!!r"c*t|jSr*lenr,r-s r#__len__zTokens.__len__9s4;r"c#&K|jD]}|VdSr*r0)r-tokens r#__iter__zTokens.__iter__<s,[  EKKKK  r"c2t|jdkSNrr4r6s r#__bool__zTokens.__bool__@s4;!##r"c||jkSr*)r+)r-others r#__eq__z Tokens.__eq__Cs  r"cBd|j|jS)NzTokens(tag='{}', tokens='{}'))formatr+r,r6s r#__repr__zTokens.__repr__Fs&.55dh6:kCC Cr"N) rrr r.r2r7r:r=r@rCr!r"r#r(r(0s"""   $$$!!!CCCCCr"r(c$eZdZfdZdZxZS)Tagcftt||||_dSr*)superrEr.r+)r-r+expr __class__s r#r.z Tag.__init__Ms, c4!!$'''r"cPt|j|Sr*)r(r+asList)r-instringloc tokenlists r# postParsez Tag.postParseQs dh 0 0 2 2333r")rrr r.rO __classcell__)rIs@r#rErEKsG4444444r"rEcd|DS)NcHi|]}|D]\}}|| Sr!)items).0dkvs r# zmerge_dicts..Vs3 6 6 6QAGGII 6 6DAqAq 6 6 6 6r"r!)dictss r# merge_dictsrZUs 6 6% 6 6 66r"c` t|dS#ttf$r|cYSwxYwr<)int IndexError ValueError_s_lr,s r#convert_integerrbYs@6!9~~  # s --cDd|dvrt|d}|S)N.r)r\r_s r#convert_real_numberre`s% &)VAY Mr"ct|tr|d} t|S#ttf$r|cYSwxYwr<) isinstancelistr\r^ TypeError)r9s r#convert_numberrjgsW%a5zz  " s.AAct|dkrdS|d}|ddkrzg}|dD][}d|vr+t|dt|df}nt|d}||\|St |dt rd|dvr|ddSdSdS)NrSIZEr..size)r5rKrjappendrgdict)r,values item_tokensvalues r# convert_sizeruqs 6{{at AYF ayF!!9++-- ! !K{""' A77' A779'{1~66 MM%  F1It $ $% VAY  !9V$ $%%  r"c$|d} t|dddtr|dddd}n|ddd}n#t$rYdSwxYw |d}n#t$r|cYSwxYw||gS)Nrr)rgrhr])r,defined_object_set component_idss r# convert_tablerzs AYF fQil1ot , , 1!'1a!3  !'1a  tt"q """!!!!"  ..s$AA!! A/.A/3A<< B  B c < d}g}g |\}}|}|} fd}|||D]y}t|tr$||d|df;| vr |dz }| v ||||f|dz }z|r|t|dd} || | D]}t|tr&|d}||d|fna| vr1t d|t|||f ||dz }|S)Nrc |D]j}t|ts|d}|vr1td|t |kdS)Nrn+Duplicated ENUMERATED number {} at line {}.)rgrhrrBrrp)rSitem item_numberlocationstring used_numberss r#add_used_numbersz-convert_enum_values..add_used_numberss - -DdD)) q'Kl** AHH#x0022333    , , , , - -r"rnrr})rKrgrhrpEXTENSION_MARKERrrBr) rrr,numberrrroot extensionrr9 additionalrs `` @r#convert_enum_valuesrs  F FLOD) ;;==D  ""I - - - - - - - T   eT " "  MM58U1X. / / / /L((! L((    ' ' ' MM5&/ * * * aKFF &'''qrr] $$$  E%&& ,q uQx01111\))$ELL""8V4466777  ufo...##F+++ aKFF Mr"c8t|dkrt|ddkrdt|ddi}n*t|dd|ddd}|dr|dr|ddnd|d<|SdS)Nrrr)rclasskind)r5r\rj)r,r+s r# convert_tagrs 6{{Q vay>>Q  #fQil++CC )1661C !9 >*0)=&)A,,CK r"c|}|d}t|tr|d}|d}t|tr|d}||fS)Nrr)rKrgrh)r`rar,minimummaximums r#convert_value_rangersb ]]__FQiG'4  !*QiG'4  !* W r"c|}g}|ddkr|dD]}|dkrt}nwt|dkrbt|dtr6|dd}t|tr|d}|d|f}n|d|df}n|}||d|iSiS)NrWITH COMPONENTSrn...rwith-components)rKrr5rgrhrp)r`rar, componentsrsrts r#convert_inner_type_constraintsrs ]]__FJ ay%%%!!9 % %Ke##([!!Q&&k!nd33='N1-E!%..) %a(^U3EE(^[^22E e F r"c|}g}|ddD]a}t|dtr)|ddD]}|||fF||dbd|iS)Nrrfrom)rKrgrhrp)r`rar,rrr9chars r#convert_permitted_alphabetr)s ]]__F F$$ eAh % % $a  , , tTl++++ , MM%( # # # # F r"c.|}dSr*rKr_s r#convert_constraintr7s ]]__FFFr"cg}|D][}|dgdfvr|t%|ddkr*|d|dddi[|ddkr)|t|dt|dkr|\}}|}ng}t |dg}|d|d <d |vrd |d <d |vr=t|ddkrg}nt |d|d}||d<t|d}|r||d<||]|S)Nrr COMPONENTS OFz components-ofrtype[[rnnameOPTIONALToptionalDEFAULTdefaultr+)rprconvert_membersr5rK convert_type convert_valuer)r,members member_tokens qualifiersmemberrtr+s r#rr<sG(( eWe, , , NN+ , , ,    . . NNq!1!!4V!<      t # # NN?=+;<< = = =  }   " "(5 %M:#**,,JJJmA.33&q)v  # #!%F:   " ":a=!!Q&&%jmVF^DD %F9 -*++  F5Mv Nr"c2dt|ddS)NSEQUENCErnrrrr_s r#convert_sequence_typerls#"6!9--  r"ct|dk}dt||rdndgd}|r |d|d<t|dd krc|dd d d |d <t|ddkr-|ddd kr|d dt||rdnd}|r ||d d <|S)N SEQUENCE OFrwrelement element_namerrrorrr+r5rrprr`rar,is_named_elementconverted_typer+s r#convert_sequence_of_typerss6{{a',<'Cqq! DbIIN 3)/~& 6!9~~!'1a!8v vay>>A  &)A,%"7"7 6 " ) )$ / / / f"29QQ: ; ;C /+.y!%( r"c2dt|ddS)NSETrnrrr_s r#convert_set_typers#"6!9--  r"ct|dk}dt||rdndgd}|r |d|d<t|dd krc|dd d d |d <t|ddkr-|ddd kr|d dt||rdnd}|r ||d d <|S)NrSET OFrrwrrrrrrorrr+rrs r#convert_set_of_typers6{{a',<'Cqq! DbIIN 3)/~& 6!9~~!'1a!8v vay>>A  &)A,%"7"7 6 " ) )$ / / / f"29QQ: ; ;C /+.y!%( r"c2dt|ddS)NCHOICErnrrr_s r#convert_choice_typers#"6!9--  r"cvd|di}t|dkr||d|S)Nrrrnr)r5updater`rar, converteds r#convert_defined_typersCq I  6{{a### r"cp|}ddi}|drd|dD|d<|S)NrINTEGERrc,i|]}|d|dS)rrnr!)rTr~s r#rXz(convert_integer_type..s/% % % !%DGT!W% % % r"z named-numbersr)r`rar,compileds r#convert_integer_typersS ]]__F "H ay % % )/% % % ! Or"c ddiS)NrREALr!r`ra_tokenss r#convert_real_typers F r"c6dt|||ddS)N ENUMERATEDrn)rrr)r)rrr,s r#convert_enumerated_typers'%fhq BB  r"cd|diS)Nrrr!r_s r#convert_keyword_typersq  r"c&td|dS)N convert_print)printr_s r#rrs /6"""""r"c ddiS)NrOBJECT IDENTIFIERr!rs r#convert_object_identifier_typers# r"cdddi}|d}|rd|D|d<|S)Nr BIT STRINGrc,g|]}t|Sr!)tuple)rT named_bits r# z+convert_bit_string_type..s-( ( ( !*E)  ( ( ( r"z named-bitsr)r`rar,rnamed_bit_lists r#convert_bit_string_typersU N]]__Q'N ( ( .<( ( ( |$ r"c ddiS)Nr OCTET STRINGr!rs r#convert_octet_string_typers r"c ddiS)Nr IA5Stringr!rs r#convert_ia5_string_typers  r"cd|didS)NANY DEFINED BYr)rrtchoicesr!r_s r#convert_any_defined_by_typers   r"c|d}g}|D]#}||dd$|rd|i}nd}|S)Nrzactual-parameters)rKrp)r`rar,r parameters r#convert_actual_parameter_listr sf ]]__Q FI** 1a))))()4  r"cX|}|dr d|di}nd}|S)Nr parametersrrs r#convert_parameter_listrs6 ]]__F ay!6!9-  r"c ddiS)NrNULLr!rs r#convert_null_typer#s r"c ddiS)NrBOOLEANr!rs r#convert_boolean_typer)s  r"c|\}}g}|D]7}t|tr|}|dkr<|r|td|vr|ddnt |dkrt|dt s)|t|dd|dvr||dd|dvr||dd|dvr||d9t|t r||d|vrg}|r||d<gd }|d |vrt|}|r||d<d |d vr,t|dd|d <|S) Nrrorrrr{z restricted-to)rrr BMPString VisibleString UTF8String NumericStringPrintableStringr&table) rgrrKrprr5rqrjrrurz)r,rr constraints restricted_toconstraint_tokenstypesros r#rr/s/"(NKM(<< ' 6 6 ; 1 8 8 : :   % % 7$$%5666''v&--d333 " # #q ( (/2D99 <$$^4Ea4H%I%IJJJJ,Q///%%&7&:;;;;,Q///%%&7&:;;;;"&7&:::%%&7&:;;;*d##*j))) m 8*7'   Ef&&K((  *%)N6 " nV$$$"/ 0C"D"Dw r"c@dtjdd|dzS)N0bz[\sB']r)resubr_s r#convert_bstringrhs "&Bq 22 22r"cddtjdd|dzS)N0xz[\sH']rr)rrlowerr_s r#convert_hstringrls+ "&Bq 2288:: ::r"cl|d}|dkr |dd}nt|tr|}nd}|S)NrIdentifierList)rgstr)r,rts r#convert_bit_string_valuerpsI 1IE    aaa E3   Lr"cL|dkrt|d}n|dkrtg}|D]n}t|dkr1||dt|dfF|t|don|dkr |ddk}ny|ddkrt |d}nWt |dt rt|d}n&t |dtr |d}nd}|S) NrrrrnrrTRUEBitStringValue)r\r5rprjrrgr)r,type_rt value_tokenss r#rr}s5 F1I % % %" > >L<  A%% l1os<?/C/CDEEEE ^LO<<====  > )  f$ & & &(33 F1Is # #vay)) F1Is # #q  Lr"cg} |dD]}t|ddkr|dd}nRi}|dD]G}|d}|dd}t|tr|d}t |||<H||n#t tf$rYnwxYw|d|d} d|d| fS)Nrwrr)rr#parameterized-object-set-assignment)rKr5rgr(rjrpr]KeyError) r`rar,rrrrsrrtrs r#+convert_parameterized_object_set_assignmentr's$G #AY--// # #M=#$$))&q)!,#0#399K&q>D'N1-E!%00) %a#1%#8#8F4LL NN6 " " " " #  !     N 2 1I  sB,B11CCc2|d}|dd}d|d|fS)Nrrrtparameterized-object-assignmentrr!r`rar,r"rs r#'convert_parameterized_object_assignmentr,s8 1IEN . 1I  r"cg}|dD]r}|ddr,|dd}t|tr|d}nddi}|d|d<||sd|i}d|d|fS) NrrrrOpenTyperr%parameterized-object-class-assignment)islowerrgr(rp)r`rar,rrconverted_memberrs r#-convert_parameterized_object_class_assignmentr2sG) ) ) !9Q<   ! ! 4%ay| *F33 7#3A#6 & 3 #)!9 '(((( 7N 4 1I  r"c|}t|d|d} t|d}n#t$rd}YnwxYw|r||d<d|d|fS)Nrwrrr+parameterized-type-assignmentr)rKrrr^)r`rar,rr+s r#%convert_parameterized_type_assignmentr5s ]]__F!&)VAY77N&)$$  $ #u + 1I  sA AAc|ddd}t|tr |d}nt|tr|d}|t|d|d}d|d|fS)Nrrrrnr)parameterized-value-assignment)rgr(rqrr+s r#&convert_parameterized_value_assignmentr8s 1IaLOE%  a E4 f vay%00N - 1I  r"c|}i}|rk|D]h}|d}td||d}||vr%tt |||z}t |||<id|iS)NrnzConverting imports from '%s'.rimports)rKLOGGERdebugrhsetsorted)r`rar,r: from_tokens from_nameimporteds r#convert_importsrBs ]]__FG 2! 2 2K#AI LL8) D D D"1~HG##GI$6$A B BCC!'!1!1GI   w r"c"i}i}i}i}|D]\}}} |dkr%||vrtd|| ||<1|dkr%||vrtd|| ||<\|dkr%||vrtd|| ||<|dkr%||vrtd|| ||<|d kr%||vrtd || ||<td |||||d S) Nr%z Object set '%s' already defined.r*zObject '%s' already defined.r/z"Object class '%s' already defined.r4zType '%s' already defined.r7zValue '%s' already defined.z Unrecognized assignment kind {}.)rrrzobject-classesz object-sets)r;warningr&rB) r`rar,rrrobject_classes object_setsrrrts r#convert_assignment_listrGs E FNK#AAdE 8 8 8{""A4HHH %K   6 6 6v~~=tDDD F4LL < < <~%%CTJJJ#(N4 4 4 4u}};TBBBE$KK 5 5 5v~~d>}=td?d?}>td@d@}?tdAdA}@tdBdB}AtdCdC}BtdDdD}CtdEdE}DtdFdF}EtdGdG}FttdHIdJ}Gt dKdL}Ht dMdM}It dN}Jt dO}Kt dP}Lt dQ}Mt dR}Nt dS}Ot dT}Pt dU}Qt dV}Rt dW}St dX}Tt dY}Ut dZ}Vt d[}Wt d\}Xt d]}Yt d^}Zt d_}[tt d`z}\t da}]t db}^t dc}_tdd}`tt de|Tz}at df}bt dg}ct dh}dt}et}ft}gt}ht}it}jt}kt}ltdi}mtdj}ntdk}ot}pt}qt}rt}st}tt}utdl}vt}wt}xt}yt}zt}{t}|t}}t}~t}t}t}t}t}t}t}t}t}t}tdm}tdn}t}t}t}t}t|b|mz}t|b|nz}tt|J|ztt|Kz}|a|vzdo}ttt|Ntt||z|z|zz t|Oz tt||zz}||Gz}|dt|H}|{}|}|f||z}||z}tt||Rz|z}ttt|Lt|zt|Mz}t|f|ez|oz||z|gz|hz}tt|Lt|zt|Mz}||z}|r|z}|||z}||z}||mz}||z}|||nzz}||z}|{t|L|Mzz}||fz||ezz||fz|z|ezz}t|T}|H}t|Z|t||zzz }|Ltt|rz|Mz|Lztt|z |Mz }|dp|h}||z}||Rz|e|oz|gz|hzz|fz||z}|2|Lz tt|z |Mz }|dq||z|z}|n}tdr}tds}tdt}t!|dt duz}|m}tdv}|r||zz}r|tdwz}|||z}||i}|i||z|z|z|zz}itdx}tdy}tdz}td{}td|}||fzt|#zt|||ez zz}|t|||fz zz}t||z|z|z|z|z|z}|"|sz }|!t|Lz tt|z t|Mz t|z }||z}|t|z|Iz|z}|G|Yz}||iz}|Nt|lz|Oz}|l||zz}l|s|Lt|lz|Mzz}s|f|ez|oz|gz|hztddz}t|i|z}t|Lt|Ȧzt|Mz}||z}|Lt#|ʦz|Mz}t||z}|g||z|tz|zz}g|t|z||zt|Iz|gz}|g|rz|uz|z}|qt|Y|Vzt|Y|zzzz|Vt|Y|zzzz}|h|Lt|Ϧz|Mzz}h|hdp|t|z||z|Iz |hz }||z}|f|Rz|ez}||z}t|||Tz|z}|Ԡd}|utd~z}u|ttdz}tt|[tdz}|1|ez}|j}|*|+z|z}t|צt|ئz}t|H|z}t|ڦ}|Lt|ۦz|Mz}|Lt|Vt|Yz|zz|Mz}|j}||z}|%|z }|&|z }||z}||jz }|f}|| t|jz z}|e|/z}|e|.z}t|c|z}|t|cz}t|\|Tzt|Uz|\t|Uzz|t|Uzz|z }t|0|fz}|e}||z|z|z|z|z|z|z}||W|3zz}|X|4z}t||z|J|kz|Kzz}t|||z}|-|z}|kt|,|z|zz}k|q|kz}q|z|kz}z|qtt|Y|Vz tt|Y|zz zz}|}||z}|d|jt|J|z t|Kz z}j|F}td}|a}|a}|a}|a}|L|z|Yz|z|Yz|z|Yz|z|Mz}|a}|a}|L|z|Yz|z|Mz}|`|z|z|vz}t|}|L|z|Mz}|`|z|z|z}|7|8z|9z|:z|;z|z|?z|@z|Az|Bz|Cz|Dz|Ez}||z}||z}t||z|vz}t|}t|L|zt|Mz}||Ht|Jz|z t|Kz z}||a|vzz}|H}t||vz|z|z} t| } t|L| zt|Mzt|L|vz| zt|Mzz} |t|Jt|Gd[z|Kzz} | dt} t|p}t|Pt|zt|z |Qz }||pz}t|}tt|Y|z}|}|tt|Y|xz|z|yzz}||Lz t|z|Mz }|d|H|Rz|ez}|ttt||jzz| zt|Hz|z |fz }|d||Lztt|w|x|yzzz|Mz }|dt}|ttt||jzz| zt|Hz|z |fz }|dt|}||Lt|z|Mzz}t|ptt|||ezzz|)|fz z}|t|at|Rzz}t|Pt|ztt|z|Qz}|x|Vt|զzz}x||z}t|}tt|Y|z} t|Y|Vz}!|ytt|Y|Vzz}yt|}"|"}#|w|#tt|Y|xz| z|!t|Yz|#z|yzzz|x| z|!t|Yz|#z|yzzzz}w||Lz tt|w|x|yzzz|Mz }$|$d|$}%|$}&|}'|'d| ttt|Ltt|Gt|Jz|Gzt|Kzzt|Mzz}(|(dt%d|^|_zt%dt|Lt|zt|Mzz||ez z})|5|6z}*|]|z}+|+|*z},| }-|-d |H}.||Hz}/t|/}0|0}1|0}2tt|1tttt|Y|Vz |ztt|Y|2z zz}3||Lz |3z|Mz }4|4d||Hz}5|ttd`|azz}|t|H|Jz||vzz|Kzz}t|}6| ttt|L|6zt|Mzz}7|7d |}8|| z}9||H|ezz}|tdz}||)|9z|z|z|z|z|.z|,z|5z|%z| z|z| zz}|et|Ӧz}e|pt|H|z |fz z}p|}}:|:d||7z|&z|-z|(z|'z|4z|z|$z|z|z|z| z|8z|z};|ft|;|z|:zdtt#|jzz}f|nt!|dt dzz}n|mt dKz}m|otdkz}o|n|z|Iz |z |fz }<|mt|zt|fz t|Iz |ez }=||~|Tz|mzz}||~|Tz|nzz}|}||z|z|nzz}}|v||z|mzz}v|~t!|dt ddzz}~tt| |v|Y|zzz}>|~|>z}?|{|n|mz|z|z|zz}{||{z}@tt|@}A|A|z|?ztt|'|(zz}Bt#t|B}Ctt||Cz t|Sz }Dt|A}Ett||,|Ezz |Sz}F||z|z||Qt@|HtB|DtD|РtF|͠tH|àtJ|<tL|=tN|$tP|tR|tT|tV|7tX|-tZ|8t\|(t^|'t`|&tb| td|4tf|th|}tj|tl|Ԡtl|tn|tp|tr|RS)z4Return the ASN.1 grammar as Pyparsing objects. rrr DEFINITIONSBEGINEND AUTOMATICTAGSrOFrlrrrrrIMPORTSEXPORTSFROM CONTAINING ENCODED_BYIMPLICITEXPLICITr UNIVERSAL APPLICATIONPRIVATErrzEXTENSIBILITY IMPLIEDrr FALSECLASSz WITH SYNTAXUNIQUErzWITH COMPONENTrzWITH SUCCESSORSzWITH DESCENDANTSrPRESENTABSENTALLEXCEPTMINMAXINCLUDESPATTERNzCONSTRAINED BYUNION INTERSECTIONz PLUS-INFINITYzMINUS-INFINITYr GeneralString GraphicStringr ISO646Stringr r  TeletexStringUTCTimeGeneralizedTime T61StringUniversalStringrVideotexStringrzCHARACTER STRINGz ,(){}[].:=;"|) excludeCharswordz[a-z][a-zA-Z0-9-]* identifierz::=()r}[]rz]]:;rdrmr|^,@!-z[+-]?\d+\.?\d*([eE][+-]?\d+)?z '[01\s]*'Bz'[0-9A-F\s]*'H"rr **22>BBLi  ((33Gi  ((33Gi  ((33G 6?? " "6 * *D&&..|<**22>BBLO,,44_EEM-..667GHHN $$,,[99IO,,44_EEMO,,44_EEM $$,,[99I>**22>BBLO,,44_EEM/00889JKKOO,,44_EEMi  ((33G/00889JKKO $$,,[99I/00889JKKO&&..|<??IJ#II ))K %iiII%%n55M"99%ii ' "))) I"9999Lyy%ii&yy!))YYNyyIIM))KYYNIIM"99))##L11K$YY../EFFYYNJ99LiiO#I$?@@"9~#=>>8$45566#$X&78899:J]*33MBBL ,// ),7+8,3+4"5"5$0"0111 $M22 3 !(X*=!>!>?? @AA B BC*D0 0111#J//O O$N,,H/N(>E#9::;;oMI8HZ$8$8&3I&>&>%?&.{&;&;%<==>>N U$%() 44 ' ' * *++ "(:"6"6$12B$C$C#D$,[$9$9#:;;+-BB 25J J"69N"N$7&;%< 4-./234-./-12(8J4L+M+MM'.(502(50:=EG cNNE"B<<'(9 9::;*2&)9)9(:*1 (1##/04566."5%-$.%-e0K/L&M&M$MNNN #Xe6Q.Q%R%RR TO J!7!77+EFJu+?-5n-E-E,F-A,B.4,4.8 ,8'*,<< 5=50 3"6!7%&:(+',(2'344##$:;;; 1 10!2!22799,,-QRRR ))  = > > ?@@N "E/!"V+h6$%566&':;;<Z*>>??$%566$u-='>'>>L'$X'/&7'7&8 9 99 + + (!36K!K#&<OOQRRH8J9J,J L L LF8#J(3#344v=>..$44.#HUOOh$>&.x1L0M'N'N%NOOO +)+,O5666H-..%&01123J *:&*1))*;*;<+>+>' E E C D ! !   I LI<'%/);kIFI%.>JZ((H'(2[@)0+@*A+4*5,2*2%)2*7)8*7)8+4)4+7 )7 +8 )8 +: ):+8)8+2)2+: ):+4 )4+: ):+5 )5+9 )9+8)8$"@ CD=AB$K&:%;&3%455#,,C"D"D":..78$[112 j ()9 : :; +,!)): ; ;<=Vm+,KI2 -. +,!**++''899 ( 4 4"8!9"*;"7"7!8#+:"6"6$1#2$:#;%-[$9$9#: ;0 ()9+8S+I+I+I*J+<*=!>!>>""#677799L **55,12G4<^4L4L3M49:O4P4P3Q5K3K-L-L)'L(2'3"+89W+X+X(&.x1U0V'W'W#!68 (%+B*C+J*K,E*E!F!FF  1223!!K!!!&.L8E/$:$:Z$GHHIIJj))*   K !!!!5$;&?%@"ABBCCC  H  U  )?)?*)L M MNNO#:../     ]+++)55 "#7889%&'N:"8H/6-@$A$ABBB,e3566Nx% 8999N$%:'/'?'?&@',]>-J-J'K'K&L(>&> ? ?H^,D,D!DE(+CC+,>??"8E??5L#LMM$UOOh6(8E??X+E"F"FF'7727!)(5//,C+D,?+@/C08/@0H/I0I.I+J"K"K K"9#6"7%9'/&7'?&@'@%@"A B C!"X&:)@+D*E'FGGHHH # #M *%%%JI %n---"x#J//*53;>???L###LE\MZ%'(K**+NOOO'&'/0&&, , ( (**$ $' '$ $1 1++$&%&'M& e,---E5 !"""J#O,---"#   & & ( ( & &''$$. ." " - -# #,,L e\*+&'(/Jz22334555E ~.. 56678N3444O '))##$@AAAI%3'5&6'-&.(+&+(- &-! '6(0(@(@'A(-e '5)1(8(8'9). '.""2$'#($3#45!1#&"'#1"23-*+45''(L/,-()*M &00!"788@@ARSSTU"8,C/</N-P$Q$QRR/2EE >$%+,&&* *+I &F f--..K&!"45&h2B0C'D'DEEE "%(;"<"<==x(()*!*--.//G!--x#&)9#9!;=G!HIIJJG5349:223 3J !,,OW$6K'1)12B)C)C(D)?(@*22C)D)D(E#v%"'(G*3)4*@)A#B#B)22M(N(N%!(8J+?+?-N,O-5k-B-B,C#D#DEE*01)h"6"AT!IJJKKKh'<==>>0!)+!6!6 7!, -"3 3"*&!1!1  2 "*%  122 !-- .$C==)/009;;>M ?+++  1112333 ?+++ ?+++2333!!"@AAA""#ABBB""#:;;;%%&@AAA01112333  !6777$$%>???""#:;;; ?+++'663555#22/111)885777!00-///"11.000  !6777##$<=== ,---2333 4555 ./// 4555""#:;;;$$%>??? .///))*HIII""#:;;;2333 4555(()=>>>**+?@@@&&'BCCC(()FGGG!!"8999 r"cdtjd|D}|d}d}d}d}g}|D]\}}|r/|dvr*d}|dkr|dz }|d||z z|}6|dkr@|d kr|d z }H|d kr-|d z}|dkr"|dz }|d||z z|}||dkr"d }|}|||||d kr!d }|}|||||rt ||d |dkrt ||d|||dd|S)zIgnore comments in given string by replacing them with spaces. This reduces the parsing time by roughly a factor of two. c`g|]+}||df,S)r)startrN)rTmos r#rz#ignore_comments..s?  RXXa[[!r"z(/\*|\*/|--|\n)Fr)-- rrn z/*rz*/Tz-Missing newline or -- for single line commentz!Missing */ for multi line commentNr)rfinditersortrprjoin) rcommentsin_single_line_commentmulti_line_comment_depth start_offsetnon_comment_offsetchunksoffsetrs r#ignore_commentsrs  +0&99H  MMOOO" L F CC  ! C|##).&4<<aKF cVl%:;<<<%+" % ) )t||(A-(((A-(+q00aKFMM#,)>"?@@@)/& T\\%) "!L MM&!3L!@A B B B B T\\'( $!L MM&!3L!@A B B B="   ;== =  !##"   /11 1  MM&+,,-... 776??r"c \t} t|}||}n_#tt f$rK}t d|j|j | |j d}~wwxYw|dS)a Parse given ASN.1 specification string and return a dictionary of its contents. The dictionary can later be compiled with :func:`~asn1tools.compile_dict()`. >>> with open('foo.asn') as fin: ... foo = asn1tools.parse_string(fin.read()) z5Invalid ASN.1 syntax at line {}, column {}: '{}': {}.Nr) rr parseStringrKrrrrBrcolumn markInputlinemsg)rgrammarr,es r# parse_stringr1sG (($$V,,3355 0 1PWW H H OO   E   !9s6AB#ABB#utf-8ct|tr|g}d}|D]}tjddkrEt |d5}||z }|dz }dddn #1swxYwY]t |d|d5}||z }|dz }dddn #1swxYwYt |S) aKParse given ASN.1 specification file(s) and return a dictionary of its/their contents. The dictionary can later be compiled with :func:`~asn1tools.compile_dict()`. `encoding` is the text encoding. This argument is passed to the built-in function `open()`. >>> foo = asn1tools.parse_files('foo.asn') rrrrrNreplace)encodingerrors)rgrsys version_infoopenreadr) filenamesrrfilenamefins r# parse_filesrLsY)S!! K F  A  " "h$$ #((**$$               hhyIII S#((**$$                  s$A..A2 5A2 B66B: =B: r*)r)[__doc__loggingrr pyparsingrrrrrrr r r r r rrrrrrrrrrrrr getLoggerrr;rrr&objectr(rErZrbrerjrurzrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr'r,r2r5r8rBrGrJrOrQrrrrr!r"r#rs   ######$$$$$$******""""""""""""  8 $ $             %   CCCCCVCCC644444%444777%%%0///&;;;|$   8$    ---`22       ###          666r333;;;   2B   2"$   ()))X"""ZZZz>>>B6      r"