linux/scripts/asn1_compiler.c
<<
>>
Prefs
   1/* Simplified ASN.1 notation parser
   2 *
   3 * Copyright (C) 2012 Red Hat, Inc. All Rights Reserved.
   4 * Written by David Howells (dhowells@redhat.com)
   5 *
   6 * This program is free software; you can redistribute it and/or
   7 * modify it under the terms of the GNU General Public Licence
   8 * as published by the Free Software Foundation; either version
   9 * 2 of the Licence, or (at your option) any later version.
  10 */
  11
  12#include <stdarg.h>
  13#include <stdio.h>
  14#include <stdlib.h>
  15#include <stdint.h>
  16#include <string.h>
  17#include <ctype.h>
  18#include <unistd.h>
  19#include <fcntl.h>
  20#include <sys/stat.h>
  21#include <linux/asn1_ber_bytecode.h>
  22
  23enum token_type {
  24        DIRECTIVE_ABSENT,
  25        DIRECTIVE_ALL,
  26        DIRECTIVE_ANY,
  27        DIRECTIVE_APPLICATION,
  28        DIRECTIVE_AUTOMATIC,
  29        DIRECTIVE_BEGIN,
  30        DIRECTIVE_BIT,
  31        DIRECTIVE_BMPString,
  32        DIRECTIVE_BOOLEAN,
  33        DIRECTIVE_BY,
  34        DIRECTIVE_CHARACTER,
  35        DIRECTIVE_CHOICE,
  36        DIRECTIVE_CLASS,
  37        DIRECTIVE_COMPONENT,
  38        DIRECTIVE_COMPONENTS,
  39        DIRECTIVE_CONSTRAINED,
  40        DIRECTIVE_CONTAINING,
  41        DIRECTIVE_DEFAULT,
  42        DIRECTIVE_DEFINED,
  43        DIRECTIVE_DEFINITIONS,
  44        DIRECTIVE_EMBEDDED,
  45        DIRECTIVE_ENCODED,
  46        DIRECTIVE_ENCODING_CONTROL,
  47        DIRECTIVE_END,
  48        DIRECTIVE_ENUMERATED,
  49        DIRECTIVE_EXCEPT,
  50        DIRECTIVE_EXPLICIT,
  51        DIRECTIVE_EXPORTS,
  52        DIRECTIVE_EXTENSIBILITY,
  53        DIRECTIVE_EXTERNAL,
  54        DIRECTIVE_FALSE,
  55        DIRECTIVE_FROM,
  56        DIRECTIVE_GeneralString,
  57        DIRECTIVE_GeneralizedTime,
  58        DIRECTIVE_GraphicString,
  59        DIRECTIVE_IA5String,
  60        DIRECTIVE_IDENTIFIER,
  61        DIRECTIVE_IMPLICIT,
  62        DIRECTIVE_IMPLIED,
  63        DIRECTIVE_IMPORTS,
  64        DIRECTIVE_INCLUDES,
  65        DIRECTIVE_INSTANCE,
  66        DIRECTIVE_INSTRUCTIONS,
  67        DIRECTIVE_INTEGER,
  68        DIRECTIVE_INTERSECTION,
  69        DIRECTIVE_ISO646String,
  70        DIRECTIVE_MAX,
  71        DIRECTIVE_MIN,
  72        DIRECTIVE_MINUS_INFINITY,
  73        DIRECTIVE_NULL,
  74        DIRECTIVE_NumericString,
  75        DIRECTIVE_OBJECT,
  76        DIRECTIVE_OCTET,
  77        DIRECTIVE_OF,
  78        DIRECTIVE_OPTIONAL,
  79        DIRECTIVE_ObjectDescriptor,
  80        DIRECTIVE_PATTERN,
  81        DIRECTIVE_PDV,
  82        DIRECTIVE_PLUS_INFINITY,
  83        DIRECTIVE_PRESENT,
  84        DIRECTIVE_PRIVATE,
  85        DIRECTIVE_PrintableString,
  86        DIRECTIVE_REAL,
  87        DIRECTIVE_RELATIVE_OID,
  88        DIRECTIVE_SEQUENCE,
  89        DIRECTIVE_SET,
  90        DIRECTIVE_SIZE,
  91        DIRECTIVE_STRING,
  92        DIRECTIVE_SYNTAX,
  93        DIRECTIVE_T61String,
  94        DIRECTIVE_TAGS,
  95        DIRECTIVE_TRUE,
  96        DIRECTIVE_TeletexString,
  97        DIRECTIVE_UNION,
  98        DIRECTIVE_UNIQUE,
  99        DIRECTIVE_UNIVERSAL,
 100        DIRECTIVE_UTCTime,
 101        DIRECTIVE_UTF8String,
 102        DIRECTIVE_UniversalString,
 103        DIRECTIVE_VideotexString,
 104        DIRECTIVE_VisibleString,
 105        DIRECTIVE_WITH,
 106        NR__DIRECTIVES,
 107        TOKEN_ASSIGNMENT = NR__DIRECTIVES,
 108        TOKEN_OPEN_CURLY,
 109        TOKEN_CLOSE_CURLY,
 110        TOKEN_OPEN_SQUARE,
 111        TOKEN_CLOSE_SQUARE,
 112        TOKEN_OPEN_ACTION,
 113        TOKEN_CLOSE_ACTION,
 114        TOKEN_COMMA,
 115        TOKEN_NUMBER,
 116        TOKEN_TYPE_NAME,
 117        TOKEN_ELEMENT_NAME,
 118        NR__TOKENS
 119};
 120
 121static const unsigned char token_to_tag[NR__TOKENS] = {
 122        /* EOC goes first */
 123        [DIRECTIVE_BOOLEAN]             = ASN1_BOOL,
 124        [DIRECTIVE_INTEGER]             = ASN1_INT,
 125        [DIRECTIVE_BIT]                 = ASN1_BTS,
 126        [DIRECTIVE_OCTET]               = ASN1_OTS,
 127        [DIRECTIVE_NULL]                = ASN1_NULL,
 128        [DIRECTIVE_OBJECT]              = ASN1_OID,
 129        [DIRECTIVE_ObjectDescriptor]    = ASN1_ODE,
 130        [DIRECTIVE_EXTERNAL]            = ASN1_EXT,
 131        [DIRECTIVE_REAL]                = ASN1_REAL,
 132        [DIRECTIVE_ENUMERATED]          = ASN1_ENUM,
 133        [DIRECTIVE_EMBEDDED]            = 0,
 134        [DIRECTIVE_UTF8String]          = ASN1_UTF8STR,
 135        [DIRECTIVE_RELATIVE_OID]        = ASN1_RELOID,
 136        /* 14 */
 137        /* 15 */
 138        [DIRECTIVE_SEQUENCE]            = ASN1_SEQ,
 139        [DIRECTIVE_SET]                 = ASN1_SET,
 140        [DIRECTIVE_NumericString]       = ASN1_NUMSTR,
 141        [DIRECTIVE_PrintableString]     = ASN1_PRNSTR,
 142        [DIRECTIVE_T61String]           = ASN1_TEXSTR,
 143        [DIRECTIVE_TeletexString]       = ASN1_TEXSTR,
 144        [DIRECTIVE_VideotexString]      = ASN1_VIDSTR,
 145        [DIRECTIVE_IA5String]           = ASN1_IA5STR,
 146        [DIRECTIVE_UTCTime]             = ASN1_UNITIM,
 147        [DIRECTIVE_GeneralizedTime]     = ASN1_GENTIM,
 148        [DIRECTIVE_GraphicString]       = ASN1_GRASTR,
 149        [DIRECTIVE_VisibleString]       = ASN1_VISSTR,
 150        [DIRECTIVE_GeneralString]       = ASN1_GENSTR,
 151        [DIRECTIVE_UniversalString]     = ASN1_UNITIM,
 152        [DIRECTIVE_CHARACTER]           = ASN1_CHRSTR,
 153        [DIRECTIVE_BMPString]           = ASN1_BMPSTR,
 154};
 155
 156static const char asn1_classes[4][5] = {
 157        [ASN1_UNIV]     = "UNIV",
 158        [ASN1_APPL]     = "APPL",
 159        [ASN1_CONT]     = "CONT",
 160        [ASN1_PRIV]     = "PRIV"
 161};
 162
 163static const char asn1_methods[2][5] = {
 164        [ASN1_UNIV]     = "PRIM",
 165        [ASN1_APPL]     = "CONS"
 166};
 167
 168static const char *const asn1_universal_tags[32] = {
 169        "EOC",
 170        "BOOL",
 171        "INT",
 172        "BTS",
 173        "OTS",
 174        "NULL",
 175        "OID",
 176        "ODE",
 177        "EXT",
 178        "REAL",
 179        "ENUM",
 180        "EPDV",
 181        "UTF8STR",
 182        "RELOID",
 183        NULL,           /* 14 */
 184        NULL,           /* 15 */
 185        "SEQ",
 186        "SET",
 187        "NUMSTR",
 188        "PRNSTR",
 189        "TEXSTR",
 190        "VIDSTR",
 191        "IA5STR",
 192        "UNITIM",
 193        "GENTIM",
 194        "GRASTR",
 195        "VISSTR",
 196        "GENSTR",
 197        "UNISTR",
 198        "CHRSTR",
 199        "BMPSTR",
 200        NULL            /* 31 */
 201};
 202
 203static const char *filename;
 204static const char *grammar_name;
 205static const char *outputname;
 206static const char *headername;
 207
 208static const char *const directives[NR__DIRECTIVES] = {
 209#define _(X) [DIRECTIVE_##X] = #X
 210        _(ABSENT),
 211        _(ALL),
 212        _(ANY),
 213        _(APPLICATION),
 214        _(AUTOMATIC),
 215        _(BEGIN),
 216        _(BIT),
 217        _(BMPString),
 218        _(BOOLEAN),
 219        _(BY),
 220        _(CHARACTER),
 221        _(CHOICE),
 222        _(CLASS),
 223        _(COMPONENT),
 224        _(COMPONENTS),
 225        _(CONSTRAINED),
 226        _(CONTAINING),
 227        _(DEFAULT),
 228        _(DEFINED),
 229        _(DEFINITIONS),
 230        _(EMBEDDED),
 231        _(ENCODED),
 232        [DIRECTIVE_ENCODING_CONTROL] = "ENCODING-CONTROL",
 233        _(END),
 234        _(ENUMERATED),
 235        _(EXCEPT),
 236        _(EXPLICIT),
 237        _(EXPORTS),
 238        _(EXTENSIBILITY),
 239        _(EXTERNAL),
 240        _(FALSE),
 241        _(FROM),
 242        _(GeneralString),
 243        _(GeneralizedTime),
 244        _(GraphicString),
 245        _(IA5String),
 246        _(IDENTIFIER),
 247        _(IMPLICIT),
 248        _(IMPLIED),
 249        _(IMPORTS),
 250        _(INCLUDES),
 251        _(INSTANCE),
 252        _(INSTRUCTIONS),
 253        _(INTEGER),
 254        _(INTERSECTION),
 255        _(ISO646String),
 256        _(MAX),
 257        _(MIN),
 258        [DIRECTIVE_MINUS_INFINITY] = "MINUS-INFINITY",
 259        [DIRECTIVE_NULL] = "NULL",
 260        _(NumericString),
 261        _(OBJECT),
 262        _(OCTET),
 263        _(OF),
 264        _(OPTIONAL),
 265        _(ObjectDescriptor),
 266        _(PATTERN),
 267        _(PDV),
 268        [DIRECTIVE_PLUS_INFINITY] = "PLUS-INFINITY",
 269        _(PRESENT),
 270        _(PRIVATE),
 271        _(PrintableString),
 272        _(REAL),
 273        [DIRECTIVE_RELATIVE_OID] = "RELATIVE-OID",
 274        _(SEQUENCE),
 275        _(SET),
 276        _(SIZE),
 277        _(STRING),
 278        _(SYNTAX),
 279        _(T61String),
 280        _(TAGS),
 281        _(TRUE),
 282        _(TeletexString),
 283        _(UNION),
 284        _(UNIQUE),
 285        _(UNIVERSAL),
 286        _(UTCTime),
 287        _(UTF8String),
 288        _(UniversalString),
 289        _(VideotexString),
 290        _(VisibleString),
 291        _(WITH)
 292};
 293
 294struct action {
 295        struct action   *next;
 296        unsigned char   index;
 297        char            name[];
 298};
 299
 300static struct action *action_list;
 301static unsigned nr_actions;
 302
 303struct token {
 304        unsigned short  line;
 305        enum token_type token_type : 8;
 306        unsigned char   size;
 307        struct action   *action;
 308        const char      *value;
 309        struct type     *type;
 310};
 311
 312static struct token *token_list;
 313static unsigned nr_tokens;
 314
 315static int directive_compare(const void *_key, const void *_pdir)
 316{
 317        const struct token *token = _key;
 318        const char *const *pdir = _pdir, *dir = *pdir;
 319        size_t dlen, clen;
 320        int val;
 321
 322        dlen = strlen(dir);
 323        clen = (dlen < token->size) ? dlen : token->size;
 324
 325        //printf("cmp(%*.*s,%s) = ",
 326        //       (int)token->size, (int)token->size, token->value,
 327        //       dir);
 328
 329        val = memcmp(token->value, dir, clen);
 330        if (val != 0) {
 331                //printf("%d [cmp]\n", val);
 332                return val;
 333        }
 334
 335        if (dlen == token->size) {
 336                //printf("0\n");
 337                return 0;
 338        }
 339        //printf("%d\n", (int)dlen - (int)token->size);
 340        return dlen - token->size; /* shorter -> negative */
 341}
 342
 343/*
 344 * Tokenise an ASN.1 grammar
 345 */
 346static void tokenise(char *buffer, char *end)
 347{
 348        struct token *tokens;
 349        char *line, *nl, *p, *q;
 350        unsigned tix, lineno;
 351
 352        /* Assume we're going to have half as many tokens as we have
 353         * characters
 354         */
 355        token_list = tokens = calloc((end - buffer) / 2, sizeof(struct token));
 356        if (!tokens) {
 357                perror(NULL);
 358                exit(1);
 359        }
 360        tix = 0;
 361
 362        lineno = 0;
 363        while (buffer < end) {
 364                /* First of all, break out a line */
 365        4ref="+code=end" class="srme="L365"> 365 363 345 */
ef">eo="sref">pdir;
 365        4t"> */
ef">e         ref="+code=DIRECTIVE_PLU3_INFI36ref">exit(1);
) {
 364        }
PRESENT hrea hrea hrea hrea hrea hrea e=end" class="sref">end) {
ef">     _(PRIVATEd="L360"  else" class="line" name="L364"> 364        _(end) {
ef">     val;
<<<<<<<<<"+code=p" class="sref">p, *,
ef">     whileref="+code=DIRECTIVE_REL3TIVE_3ID" class="sred="L360"  id="L346" 77
ef">          href="+code=SEQUENCE" cl3ss="s37335" class="line" name="L335"> 335        _(37365
 365        _( 3ref">q;
 305        _(p, *
 305             href="+code=SYNTAX" clas3="sre37ref">exit(1);
 <65"> 365    ref">q;
 365    ref">q;
p, *q;
 364        _(PRESENT hrea hrea hrea q;
 364        _(PRIVATEd="L360"ef="scripts/asn1_line */
 365        _(,
q;
 305        _(val;
<<<<<<<<<(1);
 <65"> 365    exStrin3" cla38ass="sref">val;
<<<<531"> 331                PRESENT hrea hrea hr
;
<<<<531"> 331p, *q<.c#L283" 3d="L283" class="line" na3e="L238scrsref">ef">     whi4        _(;
<<<<531"> 331hrea hrea hrea q;
 364           5        _(PRIVAT/asn is/s-excTokes/a="L360"e href="Found#L3n>
 335        _(<5        _(val;
<<<<<<<+=350" id="L350"q
 365        _(<5        _(    exStrin3ref"
val;
<<<<531"> 331   /a> hrea hrea hr
;
<<<<531"> 331p0" id="L350"qef">eo="srefffffffffffffffffffffffffffffffffgoto      _(q
d="L288" class="line" na3e="L238"> 305                                   leref="+code=DIRECTIVE_REL3TIVE_3ID" .c#L289" 3d="L289" class="line" na3e="L238"> 364        _( 331ipts/asn1_compilere=calloc" uTIFIER7 na.c#L290" 3d="L290" class="line" na3e="L239"> 364        _( 365        _(, *l;
<<<<<<<<<"+code=p" class="sref">p, *,
 305        _(end) {
>, *,
ef">     whi4        _(, *,
 364           5   a3href="+code=PRIVATE" cla3s="sr3f">PRIVATE<.c#L295" 3d="L295" class="line" na3e="L239"> 335        _(<5        _() {
ipts/asn1_compilere=calloc" uTIFIER7 na.n>
 365        _(<5   leref="+code=DIRECTIVE_REL3TIVE_3ID" .c#L305" id="L297" class="line" na3e="L239scrsref">ef">eo="srefleref="+code=DIRECTIVE_REL3TIVE_3ID" .a ext_n>
d="L298" class="line" na3e="L239"> 328
 364        _( 3ref">q;
 364        _(<     while ( < exit(1);
) {
 364        _(PRIVASkip<   te S" ca line */
 305        _( < exit &&har   , *)d)
ef">     whi4        _(<*hile ( = 0;
 364           5   +code=T61String" c3ass="37">PRESENT  ter ea hrea hrea hrea hrea e=end" class="sred)
 335        _(<5        _(, *,
 30, *,
ef">eo="srefffffffffif (!token     [ti].="scriptts/asn1_compiler.c#L345" id="L345" class="line" namecode=lineno" class="sref">lineno;
 305                   if (!token     [ti].="scriptts/asn1code=value" class="sref">valuf">end) {
>, *,
 299
 364        _(PRIVAHand  w"+code many toline */
 364        _(, *)d/a>(1);
) {
 305        _(, *di>, *,
 293
 364           5        _(<+S" class=3sref"38">PRIVAC clbe a ref">dire, ref"line" or3hre
 345
 315ef">eo="srefffffffffffffffffUE" class=3sref"38f("%d [cmp]\ea hrea >,
) {
 305                                while ( < exit &&hde=T61String" c3isalnum_PLU3_INFI36refcsalnum
, * 331p ||, *a hrea hrea q;
 ||, *a hrea hrea q;
)
 364        _( 331ipts/asn1_compilere=calloc" uTIFIER7 n4.c#L320" 4d="L320" class="line" na4e="L342"> 364        _(token     [ti].="scriptts/asn1code=size" class="sref">sizp]\ea hrea >,
as-aets/asn1_compilere=calloc" uTIFIER7 n4.c#L311" 4d="L321" class="line" na4e="L342"> 365        _(q;
 342
ef">     whi4        _(<+S" class=3sref"38">PRIVAIf itlbegi towithk ouowercase let shos/anne */
 354                            * it1_line *n3hre
 345 365        _(<5        _(<+code=T61String" c3isuower_PLU3_INFI36refcsuower
token     [ti].="scriptts/asn1code=value" class="sref">valu[0])d/a>(1);
) {
ef">eo="srefffffffffffffffffffffffffref="token     [ti++].="scriptts/asn1code=token_type" class="sref">token_typeL345" class="lineTOKEN_ELEMENT_NAME_type" class="sTOKEN_ELEMENT_NAMEef">q;
 305                                      tinueq;
 364        _( 33eref="+code=DIRECTIVE_REL3TIVE_3ID"4.c#L311" 4d="L331" class="line" na4e="L341"> 331           ffffffffffffffffrS" class=3sref"38">PRIVAOs/aswTokewalieedgoinsearchts/alref">direne */
 334                            * >Prinne */
 353                            *ine */
 364           5        _(<+>, *di class="line" name=searche=dir" class="s=search
token     [ti]e, diretokens" class="scod">diret span>
 335        _(<5        _(, diretokens" class="scod">diretr, diretokens" class="scod">diret[1]g),
 336           5        _(, diretokens" class="scod">diret[1]g),
 337                                         /a>, directive_compare" class="sref">directive_comparp0" id="L350"q4.c#L338" 4d="L338" class="line" na4e="L343"> 305                                if (dir/a>(1);
) {
 364        _(token     [ti++].="scriptts/asn1code=token_type" class="sref">token_typeL345" class="linecode=dir" class="sref">di s-aediretokens" class="scod">diret0" id="L350"q4.c#L340" 4d="L340" class="line" na4e="L344"> 364        _(;
 331           ffffffffffffffffleref="+code=DIRECTIVE_REL3TIVE_3ID"4.c#L342" 4d="L342" class="line" na4e="L342"> 342
ef">     whi4        _(<+n3" cla38ass="code=tokens" class="sref">token     [ti++].="scriptts/asn1code=token_type" class="sref">token_typeL345" class="lineTOKEN_TYPE_NAME_type" class="sTOKEN_TYPE_NAME0" id="L350"q4.c#L334" 4d="L344" class="line" na4e="L344"> 364           5        _(<   tinueq;
 335        _(<5   leref="+code=DIRECTIVE_REL3TIVE_3ID"4.c#L336" 4d="L346" class="line" na4e="L344"> 30, *,
ef">eo="srefffffffffiS" class=3sref"38">PRIVAHand  wnumbertoline */
 305                   +code=T61String" c3isdigde=exit" class="sisdigde
, *)d/a>(1);
) {
 364        _(ndes/a=endeopts/aliumberoline */
 364        _(,
) {
 331           ffffffffffffffff     while ( < exit &&hde=T61String" c3isdigde=exit" class="sisdigde
, * 331p) {
 305        _(ef">     whi4        _(<+n3" cla38ass="code=tokens" class="sref">token     [ti].="scriptts/asn1code=size" class="sref">sizp]\ea hrea >,
as-aets/asn1_compilere=calloc" uTIFIER7 n4.c#L354" 4d="L354" class="line" na4e="L345"> 364           5        _(<+>, *q;
 335        _(<5        _() {
token     [ti++].="scriptts/asn1code=token_type" class="sref">token_typeL345" class="lineTOKEN_NUMBER_type" class="sTOKEN_NUMBERef">q;
 336           5        _(<   tinueq;
 357                   leref="+code=DIRECTIVE_REL3TIVE_3ID"4.c#L358" 4d="L358" class="line" na4e="L345"> 328
 364        _(,
 ter ea3d/a>(1);
) {
 364        _(memcmp( 3="scr::=E-OID" != 0) {
 331           ffffffffffffffffffffffffea hrea >,
;
 305        _(token     [ti].="scriptts/asn1code=size" class="sref">sizp]\3q;
ef">     whi4        _() {
token     [ti++].="scriptts/asn1code=token_type" class="sref">token_typeL345" class="lineTOKEN_ASSIGNMENT_type" class="sTOKEN_ASSIGNMENTef">q;
 364                                      tinueq;
 365        4reeeeeeeeeeeeeeeeeleref="+code=DIRECTIVE_REL3TIVE_3ID"4me="L 363ef">e               +code=T61String" c3>,
 ter ea2 != 0) {
 364        }
memcmp( 3="scr({E-OID" != 0) {
ef">     _(<<<<<<<<<<<<<<<<<<<<<<<<,
q4/a>d="L364"  else" class="line" na4e="L344"> 364        _(,
token     [ti].="scriptts/asn1code=size" class="sref">sizp]\50" id="L350"q4/c#L362" 4ef">     token     [ti++].="scriptts/asn1code=token_type" class="sref">token_typeL345" class="lineTOKEN_OPEN_ACTION_type" class="sTOKEN_OPEN_ACTIONef">q;
ef">     whiiiiiiiiiiiiiiiiiiiiiiiii   tinueq;
 364                           leref="+code=DIRECTIVE_REL3TIVE_3ID"4CE" cl3ss4"s37335" class="line" na4e="L345"> 335        _(<<<<<<<<<<<<<<<<<+code=T61String" c3code=memcmp" class="sref">memcmp( 3="scr})E-OID" != 0) {
 365        _(<<<<<<<<<<<<<<<<<<<<<<<<,
q4/c#L357" 4d="L305" class="line" na4e="L347scrsref">ef">eo="srefffffffffffffffffffffffffref="token     [ti].="scriptts/asn1code=size" class="sref">sizp]\50" id="L350"q4/c#L358" 4 305           ffffffffffffffffffffffffref="token     [ti++].="scriptts/asn1code=token_type" class="sref">token_typeL345" class="lineTOKEN_CLOSE_ACTION_type" class="sTOKEN_CLOSE_ACTIONef">q;
 364        _(;
 364        _( 365        _( 342
ef">     whi4   +code=T61String" c3>,
 ter ea1 != 0) {
 364           5        _(token     [ti].="scriptts/asn1code=size" class="sref">sizp]\end) {
 335        _(<5        _(, *)!= 0) {
 365        _(<5        _(q;
de=p" class="ext_n>
p, 4/c#L305" 4d="L287" class="line" na4e="L248scrsref">ef">eo="srefffffffffffffffffffffffffea hrea >,
) {
 305                                   ref="token     [ti++].="scriptts/asn1code=token_type" class="sref">token_typeL345" class="lineTOKEN_OPEN_CURLY_type" class="sTOKEN_OPEN_CURLYef">q;
 364        _(;
 364        _(q;
de=p" class="ext_n>
p, 4.c#L291" 4d="L291" class="line" na4e="L249"> 365        _() {
 305        _(token     [ti++].="scriptts/asn1code=token_type" class="sref">token_typeL345" class="lineTOKEN_CLOSE_CURLY_type" class="sTOKEN_CLOSE_CURLYef">q;
ef">     whi4        _(<+code=TAc  tinueq;
 364           5   +code=TAcase ea hrea q;
de=p" class="ext_n>
p, 4.E" cl3ss4d="L295" class="line" na4e="L249"> 335        _(<5        _(<        ref=") {
 365        _(<5        _(<        ref="token     [ti++].="scriptts/asn1code=token_type" class="sref">token_typeL345" class="lineTOKEN_OPEN_SQUARE_type" class="sTOKEN_OPEN_SQUAREef">q;
ef">eo="sref        5   +code=TAc  tinueq;
 305                           case ea hrea q;
de=p" class="ext_n>
p, 4.c#L289" 4d="L299" class="line" na4e="L249"> 364        _(<5        _(<        ref=") {
 364        _(<5        _(<        ref="token     [ti++].="scriptts/asn1code=token_type" class="sref">token_typeL345" class="lineTOKEN_CLOSE_SQUARE_type" class="sTOKEN_CLOSE_SQUAREef">q;
 364        _(;
 305        _(q;
de=p" class="ext_n>
p, 5.c#L303" 5d="L303" class="line" na5e="L350scrsref">ef">     whi4        _(<        ref=") {
 364           5        _(<        ref="token     [ti++].="scriptts/asn1code=token_type" class="sref">token_typeL345" class="lineTOKEN_COMMA_type" class="sTOKEN_COMMAef">q;
 335        _(<5        _(<        c  tinueq;
 365        _(<5        _(p, 5.7#L303" 5d="L297" class="line" na5e="L350scrsref">ef">eo="srefffffffffffffffffffffffffall, >, *,
 305                           leref="+code=DIRECTIVE_REL3TIVE_3ID"5.c#L309" 5d="L309" class="line" na5e="L350"> 364        _(<5   leref="+code=DIRECTIVE_REL3TIVE_3ID"5.c#L310" 5d="L310" class="line" na5e="L351"> 33eref="+code=DIRECTIVE_REL3TIVE_3ID"5.c#L311" 5d="L311" class="line" na5e="L351"> 364        _(//p_type" class="sft">//pemcmp( 3="scrquot;s:quot;u: Unknown    * char inASN.1 gr: ref">quot;c>       -OID" 305        _(linenl, *p0" id="L350"q5.c#L313" 5d="L313" class="line" na5e="L351scrsref">ef">     whi4   a>, *exit(1);
 364           leref="+code=DIRECTIVE_REL3TIVE_3ID"5.5#L303" 5d="L315" class="line" na5e="L351"> 335   leref="+code=DIRECTIVE_REL3TIVE_3ID"5.6#L303" 5d="L316" class="line" na5e="L351"> 30, *,
 305        _(tia>(1);
 305   a>, *//p_type" class="st">//pemcmp<"line" name="L365"> 3="scrExt* chad quot;u many t   -OID"(1);
 299
 36#if 09
 365   = 0) {
 305        _(<>//      _(tia>(1);
ef">     whiforode=T61String" c3>okens" class="s"">tio      _(tip <       _(ti++/d) {
 364           5   a>, *//p_type" class="st">//pemcmp<"line" name="L365"> 3="scrTode= quot;3u: ref">quot;*.*s>       -OID" 335        _(<5        _(     _(tiseref="+code=DIRECTIVE_REL3TIVE_3ID"5.6#L303" 5d="L326" class="line" na5e="L352"> 365        _(<5        _((>//)="scriptts/asn1code=token_list" class="sref">token_lis     [ti].="scriptts/asn1code=size" class="sref">siz,((>//)="scriptts/asn1code=token_list" class="sref">token_lis     [ti].="scriptts/asn1code=size" class="sref">siz,eref="+code=DIRECTIVE_REL3TIVE_3ID"5.7#L306" 5d="L327" class="line" na5e="L352scrsref">ef">eo="sreffffffffffffffff="scriptts/asn1code=token_list" class="sref">token_lis     [ti].="scriptts/asn1code=value" class="sref">valu/a>(1);
 305   leref="+code=DIRECTIVE_REL3TIVE_3ID"5.c#L319" 5d="L329" class="line" na5e="L352"> 36#endiferef="+code=DIRECTIVE_REL3TIVE_3ID"5.c#L330" 5d="L330" class="line" na5e="L350"> 33leref="+code=DIRECTIVE_REL3TIVE_3ID"5.c#L311" 5d="L331" class="line" na5e="L353"> 361
 33static void"+code=PrintableStildtokentoken_list" class="sStildtokentokenemcmpvoid/a>(1);
 35static void"+code=Printablepars=value" class="spars=emcmpvoid/a>(1);
 36static void"+code=Printablerender_PLU3_INFI36refrenderemcmp((1);
 33>(1);
 315 333 303 36>//      _(//      _( 36= 0) {
 331   "L3uc/      _(tia>(1);
 305        _(tia>(1);
ef">((1);
 364   onst c+code=PrintableStr3ng" c37f("%d [cmp]l, *a>(1);
 335   >//      _( 30, *,
ef">+code=T61String" c3argcokens" class="sargc cla != 4)!= 0) {
 305           45" class="lineft">//p_type" class="sft">//pemcmp( 3="scrFormat: quot;spSN.1 gr-fIVEter pc-fIVEter phdr-fIVEter    -OID" 364        _(, * 364        _(, *exit2) grammar 331   leref="+code=DIRECTIVE_REL3TIVE_3ID"5.c#L342" 5d="L352" class="line" na5e="L355"> 342
ef">( 364   a>, * 335   a>, * 30, *,
 305        _((ef">+code=T61String" c3f6" 77
 > != 0) {
 364        _(, *(1);
 364        _(, *exit(1);
 331   leref="+code=DIRECTIVE_REL3TIVE_3ID"5.c#L362" 5d="L362" class="line" na5e="L356"> 342
ef">+code=T61String" c3fstate=dir" class="sfstan clade=T61String" c3f6" 77
ti)e > != 0) {
 364           a>, *(1);
 365        4rea>, *exit(1);
 363ef">+cod!p(ti.="scriptts/asn1ct_code=size" class="srt_codecmp]e+ 1))d/a>(1);
) {
 364        }
, *ef">     _(, *exit(1);
 331   leref="+code=DIRECTIVE_REL3TIVE_3ID"5/c#L362" 5 342
ef">+codp(tieL345" class="linereadokens" class="sread clade=T61String" c3f6" 77
(ti.="scriptts/asn1ct_code=size" class="srt_codecmp]))e > != 0) {
 364           a>, *(1);
 335        _(, *exit(1);
 363ef">+code=T61String" c3clos=value" class="sclos= clade=T61String" c3f6" 77
 > != 0) {
 364        _(, *(1);
 364        _(, *exit(1);
 331   leref="+code=DIRECTIVE_REL3TIVE_3ID"5ec#L362" 5ef="<+ 2 class="line" na5e="L358"> 342
ef">+code=T61String" c3readle"okens" class="sreadle"">tie!L345" class="lineste=dir" class="sst">ti.="scriptts/asn1ct_code=size" class="srt_codecmp])!= 0) {
 364           45" class="lineft">//p_type" class="sft">//pemcmp( 3="scrquot;s: Short read   -OID"(1);
 335        _(, *exit(1);
 363 305   a>, *eL345" class="line"L3rchde=dir" class="sst3rchdemcmp( 3    /ref">q;
(1);
 364   a>, *eL345" class="linecode=p" class="sref">e?\ea hrea >,
 364   45" class="lineSN.1 gr_ine"_type" class="sSN.1 gr_ine"ef">eL345" class="line"L3durecode=p" class="L3duremcmp(p0" id="L350"q5.c#L291" 5d="L291" class="line" na5e="L259"> 365   +cod!(p!= 0) {
 305        _(, *ef">     whia>, *exit(1);
 364   leref="+code=DIRECTIVE_REL3TIVE_3ID"5.E" cl3ss5d="L295" class="line" na5e="L259"> 335   a>, *eL345" class="line"L3chde=dir" class="sst3chdemcmp(ss="line" name="L365"> 3    .ref">q;
(1);
 365   +code=T61String" c3code=p" class="sref">p>(1);
ef">eo="sref/a>, * hrea hrea q;
a>(1);
 328
 364   a>, *ti]o8
 364   45" class="lineref">is=value" class="sref">is=emcmp((ti(1);
 364   ( 305        _( 364   a>, *eL345" class="linefope"okens" class="sfope"emcmp( 3="scrw -OID"(1);
 335   +cod!(p!= 0) {
 365        _(, *(1);
ef">eo="srefa>, *exit(1);
 305   leref="+code=DIRECTIVE_REL3TIVE_3ID"6.c#L309" 6d="L309" class="line" na6e="L360"> 299
 364   45" class="linehdr_PLU3_INFI36refhdrvalueL345" class="linefope"okens" class="sfope"emcmp( 3="scrw -OID"(1);
 365   +cod!(p!= 0) {
 305        _(, *(1);
ef">     whia>, *exit(1);
 364   leref="+code=DIRECTIVE_REL3TIVE_3ID"6.5#L303" 6d="L315" class="line" na6e="L361"> 33>(1);
ef">+code=T61String" c3fclos=value" class="sfclos= clade=T61String" c3oun_type" class="sounef">p! > != 0) {
 364        _(, *(1);
 364        _(, *exit(1);
 331   leref="+code=DIRECTIVE_REL3TIVE_3ID"6.c#L322" 6d="L322" class="line" na6e="L362"> 342
ef">+code=T61String" c3fclos=value" class="sfclos= clade=T61String" c3hdr_PLU3_INFI36refhdrvalu/! > != 0) {
 364           a>, *(1);
 335        _(, *exit(1);
 363 305   return/a>8
 36leref="+code=DIRECTIVE_REL3TIVE_3ID"6.c#L330" 6d="L330" class="line" na6e="L363"> 33eref="+code=DIRECTIVE_REL3TIVE_3ID"6.c#L311" 6d="L331" class="line" na6e="L363"> 36enum, * 305= 0) {
 305        _(ef">( 364   a>, * 335   a>, * 305        _( 305   a>, * 364   a>, * 364   45" class="lineTAG_OVERRIDE_type" class="sTAG_OVERRIDE> 33eref="+code=DIRECTIVE_REL3TIVE_3ID"6.c#L341" 6d="L341" class="line" na6e="L364"> 33}>8
 342
 35st3uc/      _( 305= 0) {
 364   st3uc/      _( 335   st3uc/      _(value" class="sref">> 335, *8
value" class="sref">> 335, *ef">st3uc/      _(value" class="sactio>crsref"/a>, * 305   st3uc/      _( 305"/a>, *value" class="schildr">crsr>8
 364   st3uc/      _( 305"/a>, * 364   st3uc/      _( 305"/a>, * 331   "L3uc/      _( 305"/a>, * 305        _(ef">enum, * 305  a>, * 305: 8>8
 364   enum, * 364a>, * 364: 8>8
 335   enum, * 364a>, * 364: 8>8
 305   unsigned    a>, *8
ef">unsigned    a>, * 36#depss= a>, *ef">0x00018
 36#depss= a>, *ef">0x00028
 33#depss= a>, * 34#depss= a>, *ef">0x00088
ef"0x00109
 36#depss= a>, *e0x00209
 36}>8
 30, *,
 305   st3uc/      _(value" class="sref">> 335, *8
 364   st3uc/      _(value" class="sref">> 335, * 364   st3uc/      _( 305"/a>, * 30>8
 331   unsigned    a>, *ef">unsigned    a>, *, *ef">0x00018
 36#depss= a>, * 36}>8
 30, *,
 36static unsigned, *8
 33eref="+code=DIRECTIVE_REL3TIVE_3ID"6erminator6d="L365" class="line" na6e="L368"> 33static >//      _(, *, * 34= 0) {
ef">const st3uc/      _( 368
 335   +codp/a>, *, *, *size!L3p/a>, *, *siz 365        _(, *, *, *size-3p/a>, *, *siz>8
 305   else8
 305           return/a>, *, *, *valu,3p/a>, *, *valu,8
 364        _(<5        _p/a>, *, *, *siz/a>(1);
 33leref="+code=DIRECTIVE_REL3TIVE_3ID"6.c#L291" 6d="L291" class="line" na6e="L269"> 361
 33static >//      _(exitconst void"/a>, *, * 364   const st3uc/      _(value" class="sref">> 335/a>, *value" class="sref">> 335L345" class="line_key_type" class="s_key claa>(1);
 335   const st3uc/      _( 365   const st3uc/      _(ef">+code=T61String" c3oef">value" class="sref">> 33-ter a>, *size!L3     _(, *siz 364        _(, *value" class="sref">> 33-ter a>, *size-3     _(, *siza>(1);
 364   else8
 364        _(, *value" class="sref">> 33-ter a>, *valu,3     _(, *valu,8
 305        _(<<<<<<<<<<<<<<, *value" class="sref">> 33-ter a>, *siz/a>(1);
 368
 335 315 333 29= 0) {
 364   st3uc/      _( 331   unsigned, *tia>(1);
 342
ef">(8
 364   forode=T61String" c3>okens" class="s"">tio      _(tip <       _(ti++/d) {
 335        _(<+code=T61String" c3oef">token_list" class="sref">token_lis     [ti + 0].="scriptts/asn1ref">token_type" class="sref">token">tiotip) {
 365        _(<<<<, *token_list" class="sref">token_lis     [ti + 1].="scriptts/asn1ref">token_type" class="sref">token">tioef">eo="srefffffffff() {
 328
 364   +code=T61String" c3irokens" class="s"rvaluo<= > != 0) {
 364        _(, *//p_type" class="sft">//pemcmp( 3="scrquot;s: No depss=d ckent   -OID"(1);
 364        _(<     _(exit(1);
 305   leref="+code=DIRECTIVE_REL3TIVE_3ID"7.c#L323" 7d="L323" class="line" na7e="L372scrsr>(1);
 364   < (1);
 335        _( 365   +cod!(ef">eo="srefa>, * 305           45" class="linecode=exit" class="sref">exit(1);
 364   45" class="linerkentindede=tix" class="sokentindedemcm5L345" class="linecallocokens" class="scallocemcmp( 365   +cod!( 305        _(, *ef">     whia>, *exit(1);
 364   leref="+code=DIRECTIVE_REL3TIVE_3ID"7.5#L303" 7d="L335" class="line" na7e="L373"> 33>(1);
 305        _( 305   forode=T61String" c3>okens" class="s"">tio      _(tip <       _(ti++/!= 0) {
 364        _(<+code=T61String" c3oef">token_list" class="sref">token_lis     [ti + 0].="scriptts/asn1ref">token_type" class="sref">token">tiotip) {
 364        _(<>        _(token_list" class="sref">token_lis     [ti + 1].="scriptts/asn1ref">token_type" class="sref">token">tio 364        _(<5        _(token_list" class="sref">token_lis     [ti] grammar 305        _(<<<<<<<<ef">     whi4   45" class="lineookens" class="scvalu++;d) {
 364           leref="+code=DIRECTIVE_REL3TIVE_3ID"7.5#L304" 7d="L345" class="line" na7e="L374"> 335   leref="+code=DIRECTIVE_REL3TIVE_3ID"7.6#L303" 7d="L346" class="line" na7e="L3746> 364   45" class="lineokentokens" class="sckentemcm     [token_list" class="sref">token_lis     [ti + 1];d) {
 305        _( 328
 364   a>, * 33eref="+code=DIRECTIVE_REL3TIVE_3ID"7.c#L341" 7d="L351" class="line" na7e="L375"> 364   (//p_type" class="st">//pemcmp<"line" name="L365"> 3="scrExtrachad quot;u ckent   -OID"(1);
 30#+co09
ef">forode=T61String" c3>okens" class="s"">tio      _(tip <       _(ti++/!= 0) {
 364           st3uc/      _(ti] grammar 335        _(<(//p_type" class="st">//pemcmp<"line" name="L365"> 3="scr- quot;*.*t   -OID" 365        _(<<<<<<<<(>//)     _(, *sizsgrammaref">eo="sreffffffff(>//)     _(, *sizsgrammar 305                   _(, *valu/a>(1);
 36#endiferef="+code=DIRECTIVE_REL3TIVE_3ID"7.c#L341" 7d="L361" class="line" na7e="L376"> 33leref="+code=DIRECTIVE_REL3TIVE_3ID"7.c#L342" 7d="L362" class="line" na7e="L376"> 342
 35static st3uc/      _( 305/     _(value" class="sref">> 335//a>, *value" class="sref">> 335/a>, * 364                             rt3uc/      _(value" class="sref">> 335/a>, *(1);
 33>(1);
 315 333 rt3eamne */
 303 36static void"+code=Printablepars=value" class="spars=emcmpvoid/span>
 36= 0) {
 331   "L3uc/      _(value" class="sref">> 335/a>, *ef">st3uc/      _((1);
 364   &
 335        _( 365   do!= 0) {
ef">eo="srefa>, *8
 328
 364        _(<+code=T61String" c3cursode=dir" class="scursodvalu[0].="scriptts/asn1ref">token_type" class="sref">token">tio!L3     _(tip||8
 364        _(<>        _(token_type" class="sref">token">tio!L3     _( 364        _(<5        _( 305        _(, * 364           a>, * 305L3     _( 335        _(<( 30-ter a>, * 30, *,
ef">eo="sref+code=T61String" c3cursode=dir" class="scursodvalue!L3     _( 305                _(<(//p_type" class="sft">//pemcmp( 3="scrquot;s:quot;d: Pars= erdod ao tef"> quo9;quot;*.*tquo9;   -OID" 364        _(<5        _(<( 364        _(<>               (>//)     _(sizs (>//)     _(sizs      _(valu/a>(1);
 364        _(<5        _(exit(1);
 305        _( 364   } wh_coode=T61String" c3oken_type" class="srken_typ++, !de=T61String" c3oken_type" class="srken_typ-ter a>, * 33>(1);
//p_type" class="st">//pemcmp<"line" name="L365"> 3="scrExtrachad quot;u actio>t   -OID"tokens" class="s"r_actio>tvalu/a>(1);
 328
 36static st3uc/      _( 305/     _((1);
 33eref="+code=DIRECTIVE_REL3TIVE_3ID"8.c#L301" 8d="L301" class="line" na8e="L3801> 36static st3uc/      _( 305/     _(value" class="sref">> 335/e=T61String" c3oken_type" class="srken_typ 34= 0) {
ef">st3uc/      _( 305/     _( 364   +cod!( 335        _(<( 365        _(<     _(exit(1);
ef">leref="+code=DIRECTIVE_REL3TIVE_3ID"8.c#L308" 8d="L308" class="line" na8e="L380"> 305   a>, *(1);
 364   a>, * 364   return/a>, * 33leref="+code=DIRECTIVE_REL3TIVE_3ID"8.c#L302" 8d="L312" class="line" na8e="L381"> 342
 35static st3uc/      _( 305/     _(value" class="sref">> 335//a>, *value" class="sref">> 335/a>, * 364                             >   +//      _( 33>(1);
 315 333
 303 36static st3uc/      _( 305/     _(value" class="sref">> 335//a>, *value" class="sref">> 335/a>, * 364        _(<<<<<<<<<<<<<<<<<<value" class="sref">> 335/a>, * 36= 0) {
ef">st3uc/      _( 305/     _(sizs"/a>, * 30>8
ef">st3uc/      _(okens" class="sactio>> 305/     _(okens" class="sactio>> 30,5//a>, * 364   "L3uc/      _(value" class="sref">> 335/a>, * 335   st3uc/      _( 365   char5/     _(ef">+//      _( 328
 364   a>, *size= e=T61String" c3rle="comexit" class="srle="co> 305L3     _( 364   45" class="lineele="comexit" class="srle="co> 30-ter a>, * 305L3     _( 364   ( 30-ter a>, * 305L3     _( 305   ( 30-ter a>, * 305L3     _(too_tagecode=p" class=Lef">too_tag_typ[     _(token_type" class="sref">token">ti] grammaref">( 30-ter a>, *, * 368
 335     +coone givene*ine */
 365   +cod     _(token_type" class="sref">token">tioef">eo="srefa>, * 305           +code=T61String" c3cursode=dir" class="scursodvalueter = e=T61String" c3rn6" 77
 364        _(<<<<<<<< 364        _(token_type" class="sref">token">ti)!= 0) {
 364        _(, * 305        _(<<<<<<<< 30-ter a>, * 305L3     _(ef">     whi4   45" class="linecursode=dir" class="scursodvalu++;d) {
 364                   break;d) {
 335        _(, * 365        _(<<<<<<<< 30-ter a>, * 305L3     _(ef">eo="srefffffffff( 305                _() {
 364        _(, * 364        _(<<<<<<<< 30-ter a>, * 305L3     _( 364        _(<5   break;d) {
 305        _(, *ef">     whi4   45" class="lineele="comexit" class="srle="co> 30-ter a>, * 305L3     _( 364           4   45" class="linecursode=dir" class="scursodvalu++;d) {
 335        _(<5   break;d) {
 365        _(ef">eo="sreffffffff<(//p_type" class="sft">//pemcmp( 3="scrquot;s:quot;d: Unrecognis=d cag " nam tef"> quo9;quot;*.*tquo9;   -OID" 305              ffffffff<( 364        _(<5        _(<(>//)     _(sizs (>//)     _(sizs      _(valu/a>(1);
 364        _(<<<<<<<<exit(1);
 364        _( 342
ef">     whi+code=T61String" c3cursode=dir" class="scursodvalueter = e=T61String" c3rn6" 77
 364                   goto e=T61String" c3overrun_erdode=dir" class="soverrun_erdod cla grammar 335        _(<+code=T61String" c3cursode=dir" class="scursodvalu-ter a>, *token_type" class="sref">token">tio!L3     _( 365        _(<<<<<<<<//p_type" class="sft">//pemcmp( 3="scrquot;s:quot;d: Miss65" cag number quo9;quot;*.*tquo9;   -OID"ef">eo="sreffffffff<<<<<<<< 305              ffffffff<(>//)     _(sizs (>//)     _(sizs      _(valu/a>(1);
 364        _(<5   e=T61String" c3eode=exit" class="sref">exit(1);
 364        _( 33eref="+code=DIRECTIVE_REL3TIVE_3ID"8ec#L342" 8 305        _(<( 30-ter a>, * 305&= ~0x1fa>(1);
ef">     whia>, * 30-ter a>, * 305|L3     _(valu,/&ref=" 364           +code=T61String" c3pokens" class="sp_typ -      _(valuo!L3     _(siz/grammar 335        _(<5   a>, * 365        _(<     _( 305           +code=T61String" c3cursode=dir" class="scursodvalueter = e=T61String" c3rn6" 77
 364        _(<<<<<<<< 364        _(<+code=T61String" c3cursode=dir" class="scursodvalu-ter a>, *token_type" class="sref">token">tio!L3     _( 364        _(<5        _(//p_type" class="sft">//pemcmp( 3="scrquot;s:quot;d: Miss65" clos65" square bracket quo9;quot;*.*tquo9;   -OID" 305        _(<     _(<5        _(ef">     whi4           (>//)     _(sizs (>//)     _(sizs      _(valu/a>(1);
 364           5        _(exit(1);
 335        _( 365        _(<     _(ef">eo="sref+code=T61String" c3cursode=dir" class="scursodvalueter = e=T61String" c3rn6" 77
 305                _( 364        _(, * 364   leref="+code=DIRECTIVE_REL3TIVE_3ID"8.c#L291" 8d="L291" class="line" na8e="L289"> 33eref="+code=DIRECTIVE_REL3TIVE_3ID"8.c#L292" 8d="L292" class="line" na8e="L289"> 305    ef">+cod     _(token_type" class="sref">token">tio 364           a>, * 30-ter a>, * 335        _(<( 365        _(<     _(ef">eo="sref+code=T61String" c3cursode=dir" class="scursodvalueter = e=T61String" c3rn6" 77
 305                _(token_type" class="sref">token">tio 364        _(, * 30-ter a>, * 364        _(<     _( 305        _(<+code=T61String" c3cursode=dir" class="scursodvalueter = e=T61String" c3rn6" 77
ef">     whi4   goto e=T61String" c3overrun_erdode=dir" class="soverrun_erdod cla grammar 364   leref="+code=DIRECTIVE_REL3TIVE_3ID"9.5#L301" 9d="L295" class="line" na9e="L390"> 33>(1);
 365   +cod     _(ef">eo="sref+cod!( 305                _(<( 30-ter a>, * 305|L3     _( 364        _(, * 30-ter a>, * 364        _(, * 30-ter a>, *value" class="schildr">emcm5L3     _( 364        _(<     _( 305L3     _( 30-ter a>, *value" class="schildr">emcma>(1);
 305        _(<( 30-ter a>, * 305L3     _(ef">     whia>, * 30-ter a>, * 305L3     _( 364           a>, * 30-ter a>, * 305L3     _(too_tagecode=p" class=Lef">too_tag_typ[     _(token_type" class="sref">token">ti] grammar 335        _(<( 30-ter a>, *, * 365   leref="+code=DIRECTIVE_REL3TIVE_3ID"9.7#L306" 9d="L317" class="line" na9e="L391scrsrd) {
 305   a
 364   a>, * 30-ter a>, * 364   switchod     _(token_type" class="sref">token">ti)!= 0) {
 364   cas= a>, * 305        _(<( 30-ter a>, *ef">     whia>, * 364           break;d) {
 33>(1);
 365   cas= a>, *ef">cas= a>, *ef">cas= a>, * 364   cas= a>, * 364        _(, * 30-ter a>, * 364        _(<     _( 305        _() {
ef">cas= a>, * 335        _(<( 30-ter a>, * 305L3     _( 30, *,
ef">cas= a>, *type" class="sDIRECTIVE_BMPSL365"> 36: 0) {
ef">cas= a>, *type" class="sDIRECTIVE_GeneralSL365"> 36: 0) {
 364   cas= a>, *type" class="sDIRECTIVE_GraphicSL365"> 36: 0) {
 364   cas= a>, *type" class="sDIRECTIVE_IA5SL365"> 36: 0) {
 364   cas= a>, *type" class="sDIRECTIVE_ISO646SL365"> 36: 0) {
 305   cas= a>, *type" class="sDIRECTIVE_NumericSL365"> 36: 0) {
ef">cas= a>, *//ableSL365">type" class="sDIRECTIVE_P">//ableSL365"> 36: 0) {
ef">cas= a>, *type" class="sDIRECTIVE_T61SL365"> 36: 0) {
 335   cas= a>, *type" class="sDIRECTIVE_TrletexSL365"> 36: 0) {
 365   cas= a>, *type" class="sDIRECTIVE_UniversalSL365"> 36: 0) {
ef">cas= a>, *type" class="sDIRECTIVE_UTF8SL365"> 36: 0) {
ef">cas= a>, *type" class="sDIRECTIVE_VideotexSL365"> 36: 0) {
 364   cas= a>, *type" class="sDIRECTIVE_VisibleSL365"> 36: 0) {
 364   cas= a>, * 36: 0) {
 364   cas= a>, * 36: 0) {
 305   cas= a>, * 36: 0) {
ef">     whia>, * 30-ter a>, * 364                _( 335        _() {
 30, *,
ef">cas= a>, *ef">cas= a>, * 364        _(, * 30-ter a>, * 364        _(<     _( 364        _(<+code=T61String" c3cursode=dir" class="scursodvalueter = e=T61String" c3rn6" 77
 305        _(<     _(ef">     whi+code=T61String" c3cursode=dir" class="scursodvalu-ter a>, *token_type" class="sref">token">tio!L3     _( 364                   goto e=T61String" c3pars=terdode=dir" class="scars=terdod cla grammar 335        _(<     _( 365        _() {
) {
ef">cas= a>, * 364        _(, * 30-ter a>, * 364        _(<     _( 364        _(<+code=T61String" c3cursode=dir" class="scursodvalueter = e=T61String" c3rn6" 77
 305        _(<        goto e=T61String" c3overrun_erdode=dir" class="soverrun_erdod cla grammaref">     whi+code=T61String" c3cursode=dir" class="scursodvalu-ter a>, *token_type" class="sref">token">tio!L3     _( 364                   goto e=T61String" c3pars=terdode=dir" class="scars=terdod cla grammar 335        _(<     _( 365        _() {
ef">cas= a>, * 364        _(, * 30-ter a>, * 364        _(<     _( 364        _(<5      _(<     _( 305        _(<+cod!(ef">     whi4   (//p_type" class="sft">//pemcmp( 3="scrquot;s:quot;d: Tken quo9;quot;*.*tquo9; un6epssed   -OID" 364           5   4   ( 335        _(<<<<<<<<<<<<<<<<<(>//)     _(sizs (>//)     _(sizs      _(valu/a>(1);
 365        _(<4   (exit(1);
ef">eo="srefleref="+code=DIRECTIVE_REL3TIVE_3ID"9 305           e=T61String" c3cursode=dir" class="scursodvalu-ter a>, * 364        _(<(*( 364        _(<     _( 364        _() {
 342
ef">cas= a>, * 364           a>, * 30-ter a>, * 335        _(<( 365        _(<     _( 30-ter a>, *value" class="schildr">emcm5L3     _(exit&ref="(1);
ef">eo="srefbreak;d) {
 30d) {
 364   cas= a>, *10.c> 364           a>, * 30-ter a>, *0) {
 364        _(<     _( 30-ter a>, * 305L3     _( 305        _(<(ef">     whi+code=T61String" c3cursode=dir" class="scursodvalueter = e=T61String" c3rn6" 77
 364                   goto e=T61String" c3overrun_erdode=dir" class="soverrun_erdod cla grammar 335        _(<+code=T61String" c3cursode=dir" class="scursodvalu-ter a>, *token_type" class="sref">token">tio 365        _(<<<<<<<< 30-ter a>, *ef">eo="srefffffffff( 305                _(<+code=T61String" c3cursode=dir" class="scursodvalueter = e=T61String" c3rn6" 77
 364        _(<5        _( 30-ter a>, *value" class="schildr">emcm5L3     _( 364        _(= 0) {
 305        _(<             _( 30-ter a>, *value" class="schildr">emcm5L3     _(exit&ref="(1);
ef">     whileref="+code=DIRECTIVE_REL3TIVE_3ID"10d4#L300" 10d="L314" class="line" na10d=">10d"> 364           break;d) {
 33>(1);
 365   cas= a>, *ef">eo="srefe=T61String" c3ele="comexit" class="srle="co> 30-ter a>, * 305           e=T61String" c3rle="comexit" class="srle="co> 30-ter a>, * 305L3     _( 364        _(, *ef">     whi+code=T61String" c3cursode=dir" class="scursodvalueter = e=T61String" c3rn6" 77
 364        _(<5   goto e=T61String" c3overrun_erdode=dir" class="soverrun_erdod cla grammar 305        _(<+code=T61String" c3cursode=dir" class="scursodvalu-ter a>, *token_type" class="sref">token">tioef">     whi4   ( 30-ter a>, * 364           5        _( 335        _(<<<<<<<<<+code=T61String" c3cursode=dir" class="scursodvalueter = e=T61String" c3rn6" 77
 365        _(<<<<<<<<<5   goto e=T61String" c3pars=terdode=dir" class="scars=terdod cla grammaref">eo="srefffffffff( 30-ter a>, *value" class="schildr">emcm5L3     _( 305           l else>= 0) {
 364        _(<5   e=T61String" c3ele="comexit" class="srle="co> 30-ter a>, *value" class="schildr">emcm5L3     _(exit&ref="(1);
ef">     whileref="+code=DIRECTIVE_REL3TIVE_3ID"1031#L300" 10d="L331" class="line" na10d=">10d"> 364        _() {
 342
ef">default: 0) {
 364           a>, *//p_type" class="sft">//pemcmp( 3="scrquot;s:quot;d: Tef"> quo9;quot;*.*tquo9; does not >//roduce a tken   -OID" 335        _(<5   a>, * 365        _(<<<<<<<<<(>//)     _(sizs (>//)     _(sizs      _(valu/a>(1);
ef">eo="srefe=T61String" c3eode=exit" class="sref">exit(1);
 305   leref="+code=DIRECTIVE_REL3TIVE_3ID"1039#L300" 10d="L339" class="line" na10d=">10d9> 342
 364   +code=T61String" c3cursode=dir" class="scursodvaluetlt;      _(token_type" class="sref">token">tiotio||span>
 305        _(<     _(<5e=T61String" c3cursode=dir" class="scursodvalu-ter a>, *token_type" class="sref">token">tioef">    )!= 0) {
 364                _( 335        _(<( 365   leref="+code=DIRECTIVE_REL3TIVE_3ID"10d7#L300" 10d="L347" class="line" na10d=">10dscrsrd) {
token_type" class="sref">token">tio 364        _(, *ef">     whi+code=T61String" c3cursode=dir" class="scursodvalueter = e=T61String" c3rn6" 77
 364        _(<5   goto e=T61String" c3overrun_erdode=dir" class="soverrun_erdod cla grammar 305        _(<+code=T61String" c3cursode=dir" class="scursodvalu-ter a>, *token_type" class="sref">token">tio!L3     _(ef">     whi4   (//p_type" class="sft">//pemcmp( 3="scrquot;s:quot;d: Tef"> quo9;quot;*.*tquo9; is not ineaction function ine"   -OID" 364           5   4   ( 335        _(<<<<<<<<<<<<<<<<<(>//)     _(sizs (>//)     _(sizs      _(valu/a>(1);
 365        _(<4   (exit(1);
ef">eo="srefleref="+code=DIRECTIVE_REL3TIVE_3ID"10d8#L300" 10d="L358" class="line" na10d=">10d"> 30d) {
 364        _(, *exitref"ofd"L3uct, *siz + (1);
 364        _(<5        _( 305        _(<             _(exit(1);
ef">     whileref="+code=DIRECTIVE_REL3TIVE_3ID"1064#L300" 10d="L364" class="line" na10d=">10d"> 364                _( 335        _(<((valu,3     _(siz/a>(1);
 365        _(<     _(siz]5L30a>(1);
10dscrsrd) {
10d"> 305           forode=T61String" c3ppaction=exit" class="sppactionvalu5L3&ref="10d"> 364        _(<5*(10 i> 364        _(<5e=T61String" c3ppaction=exit" class="sppactionvalu5L3&(*(10 "> 364        _(<5) = 0) {
10 "> 305        _(<        >//3     _((((1);
ef">     whi4   +code=T61String" c3cmp_type" class="scmpemcm5LL30) = 0) {
 364           5   4   ((10 "> 335        _(<<<<<<<<<<<<<<<<, * 365        _(<<<<<<<<<5   goto e=T61String" c3foun6" 77
exi grammaref">eo="srefffffffffleref="+code=DIRECTIVE_REL3TIVE_3ID"1078#L300" 1010 "> 305                _(<+code=T61String" c3cmp_type" class="scmpemcm5tlt; 0) = 0) {
10 "> 364        _(<5        _(<(10"L> 364        _(<5        _(<*( 364        _(<5      _(<(<(10""> 305        _(<     _(<5   goto e=T61String" c3foun6" 77
exi grammaref">     whi4   leref="+code=DIRECTIVE_REL3TIVE_3ID"1084#L300" 10d="L284" class="line" na10d=">10""> 364           leref="+code=DIRECTIVE_REL3TIVE_3ID"1085#L300" 10d="L285" class="line" na10d=">10""> 335        _(<( 365        _(<*(ef">eo="srefe=T61String" c3nr_action value" class="snrtaction valu++;d) {
 305   e=T61String" c3foun6" 77
exi: 0) {
 342
ef">eo="srefe=T61String" c3ele="comexit" class="srle="co> 30-ter a>, * 364        _(<     _( 305        _(<(ef">     whi+code=T61String" c3cursode=dir" class="scursodvalueter = e=T61String" c3rn6" 77
 364                   goto e=T61String" c3overrun_erdode=dir" class="soverrun_erdod cla grammar 335        _(<+code=T61String" c3cursode=dir" class="scursodvalu-ter a>, *token_type" class="sref">token">tio!L3     _( 365        _(<4   (//p_type" class="sft">//pemcmp( 3="scrquot;s:quot;d: Miss65"e" oseeaction, got quo9;quot;*.*tquo9;   -OID"ef">eo="srefffffffff4   ( 305                _(<<<<<<<<<(>//)     _(sizs (>//)     _(sizs      _(valu/a>(1);
 364        _(<5   e=T61String" c3eode=exit" class="sref">exit(1);
11.c> 364           leref="+code=DIRECTIVE_REL3TIVE_3ID"11.1#L300" 11.="L291" class="line" na11.=">11."> 364        _(<     _( 305   leref="+code=DIRECTIVE_REL3TIVE_3ID"11.3#L300" 11.="L293" class="line" na11.=">11.scrsreref="+code=DIRECTIVE_REL3TIVE_3ID"11.4#L300" 11.="L294" class="line" na11.=">11."> 364   *( 335   return<( 30, *,
 305   e=T61String" c3ft">//p_type" class="sft">//pemcmp( 3="scrquot;s:quot;d: Unexpected tef"> quo9;quot;*.*tquo9;   -OID" 364        _(<(sizs (>//)     _(sizs      _(valu/a>(1);
 364   e=T61String" c3eode=exit" class="sref">exit(1);
 342
 364   e=T61String" c3ft">//p_type" class="sft">//pemcmp( 3="scrquot;s: Unexpectedly hit EOF   -OID"((1);
exit(1);
 36leref="+code=DIRECTIVE_REL3TIVE_3ID"11d7#L300" 11d="L317" class="line" na11d=">111scrsrd) {
 30  36 
 36static "L3uct, * 30<*(exit"L3uct, *_type" class="sref">> 30<**(, *_type" class="sref">> 30<*e=T61String" c3rn6" 77
 305        _(<<<<<<<<<<<<<<<<<<<<<<<>//3     _( 364   "L3uct, * 30<*(value" class="schildr">emcm,<**(value" class="schildr">emcm,<*a>, * 30a>(1);
 335   "L3uct, *_type" class="sref">> 30<*e=T61String" c3cursode=dir" class="scursodvalueL3*((1);
 30, *,
ef">+code=T61String" c3cursode=dir" class="scursodvalu-ter a>, *token_type" class="sref">token">tio!L3     _( 305           e=T61String" c3ft">//p_type" class="sft">//pemcmp( 3="scrquot;s:quot;d: Expected csn1oun6 to "Lart with brace not quo9;quot;*.*tquo9;   -OID" 364        _(<5   e=T61String" c3fIVEine"_type" class="sfIVEine" cla,3     _(ef">     whiiiiiiiii(>//)     _(sizs (>//)     _(sizs      _(valu/a>(1);
 364        _(exit(1);
 305   leref="+code=DIRECTIVE_REL3TIVE_3ID"11d3#L300" 11d="L333" class="line" na11d=">11dscrsref">ef">     _( 364   +code=T61String" c3cursode=dir" class="scursodvalueter = e=T61String" c3rn6" 77
 335        _( 30, *,
ef">+code=T61String" c3cursode=dir" class="scursodvalu-ter a>, *token_type" class="sref">token">tio 305           e=T61String" c3ft">//p_type" class="sft">//pemcmp( 3="scrquot;s:quot;d: Empty csn1oun6   -OID" 364        _(<5   e=T61String" c3fIVEine"_type" class="sfIVEine" cla,3     _(ef">eo="srefe=T61String" c3eode=exit" class="sref">exit(1);
 364   leref="+code=DIRECTIVE_REL3TIVE_3ID"11d2#L300" 11d="L342" class="line" na11d=">114"> 342
ef">forod;;) = 0) {
 364                _(( 335        _(<+code=T61String" c3cursode=dir" class="scursodvalu-ter a>, *token_type" class="sref">token">tio 365        _(<4   ((ef">eo="srefffffffff( 305                _(<+code=T61String" c3cursode=dir" class="scursodvalueter = e=T61String" c3rn6" 77
 364        _(<<<<<<<<<<<<<<<<ef">     whileref="+code=DIRECTIVE_REL3TIVE_3ID"1151#L300" 11d="L351" class="line" na11d=">11d"> 36eref="+code=DIRECTIVE_REL3TIVE_3ID"1152#L300" 11d="L352" class="line" na11d=">11d"> 305        _(, * 30(1);
ef">     whi+code=T61String" c3alternatn value" class="salternatn emcm/grammar 364           5   a>, * 30-ter a>, * 33>(1);
 365        _(<*( 30a>(1);
ef">eo="sref( 30-ter a>, * 30d) {
 364        _(<+code=T61String" c3cursode=dir" class="scursodvalueter = e=T61String" c3rn6" 77
 364        _(<+code=T61String" c3cursode=dir" class="scursodvalu-ter a>, *token_type" class="sref">token">tio!L3     _( 305        _(<        break;d) {
ef">     whi( 364           +code=T61String" c3cursode=dir" class="scursodvalueter = e=T61String" c3rn6" 77
 335        _(<<<<<<<< 365   leref="+code=DIRECTIVE_REL3TIVE_3ID"1167#L300" 11r.c#L346" id="L346" 77
<11r.c>11dscrsrd) {
116"> 305   e=T61String" c3childr">value" class="schildr">emcm-ter a>, *1169> 342
11 i> 364   +code=T61String" c3cursode=dir" class="scursodvalu-ter a>, *token_type" class="sref">token">tio!L3     _(11 "> 364        _(//p_type" class="sft">//pemcmp( 3="scrquot;s:quot;d: Expected csn1oun6 " osure, got quo9;quot;*.*tquo9;   -OID"11 "> 305        _(<        e=T61String" c3fIVEine"_type" class="sfIVEine" cla,3     _(ef">     whi4   (>//)     _(sizs (>//)     _(sizs      _(valu/a>(1);
 364           e=T61String" c3eode=exit" class="sref">exit(1);
11 "> 335   leref="+code=DIRECTIVE_REL3TIVE_3ID"1176#L300" 11d="L365" class="line" na11d=">11 "> 365   (11 "> 305   *(11 "> 364   return<(value" class="schildr">emcm;d) {
11"L> 36d) {
 36e=T61String" c3overrun_erdode=dir" class="soverrun_erdod cla: 0) {
11""> 305   e=T61String" c3ft">//p_type" class="sft">//pemcmp( 3="scrquot;s: Unexpectedly hit EOF   -OID"((1);
ef">     _(exit(1);
 36leref="+code=DIRECTIVE_REL3TIVE_3ID"1185#L300" 11d="L285" class="line" na11d=">118"> 33>(1);
 36static void>     _(der_ele="comexit" class="sr">der_ele="coemcmp(, * 30<*(, * 30<*(     _(der_ouo_of_ass=_lise=exit" class="sr">der_ouo_of_ass=_liseemcmp( 30d) {
 34static >//3     _(der_depth=exit" class="sr">der_depthvalueL31;d) {
 36static "L3uct, * 30<*(der_lise=exit" class="sr">der_liseemcm,<**(der_lise_p_type" class="sr">der_lise_pvalueL3&ref="der_lise=exit" class="sr">der_liseemcm;d) {
 342
//p_type" class="st">//pemcm, 2, 3))/grammar 36static void>     _(der_ophref=exit" class="sr">der_ophrefemcmp( 33= 0) {
 365   ( 364        _(//p_type" class="sft">//pemcmp( 3="scr\t[quot;4d] =quot;*s -OID"(der_depth=exit" class="sr">der_depthvaluss="line" name="L365"> 3="scrq-OID"(1);
12.c> 364           (( 364        _(<     _(//p_type" class="svft">//pemcmp( 305        _(, *(ef">leref="+code=DIRECTIVE_REL3TIVE_3ID"12.4#L300" 12.="L294" class="line" na12.=">12."> 364   ( 33leref="+code=DIRECTIVE_REL3TIVE_3ID"12.6#L300" 12.="L296" class="line" na12.=">120"> 30, *,
//p_type" class="st">//pemcm, 2, 3))/grammar 30static void>     _(der_morf=exit" class="sr">der_morfemcmp( 36= 0) {
 36eref="+code=DIRECTIVE_REL3TIVE_3ID"1212#L300" 12d="L312" class="line" na12d=">121"> 305   +code=T61String" c3ouomexit" class="souo cla/!= 0) {
ef">     whi(( 364        _(<     _(//p_type" class="svft">//pemcmp( 335        _(, *( 365   leref="+code=DIRECTIVE_REL3TIVE_3ID"12d7#L300" 12d="L317" class="line" na12d=">121scrsrleref="+code=DIRECTIVE_REL3TIVE_3ID"12d8#L300" 12d="L318" class="line" na12d=">121"> 30d) {
 36 der the grammare>//o a "Late machss= definition.ne */
 36  30static void>     _(der=exit" class="sr">deremcmp( 364   "L3uct, * 30<*( 335   "L3uct, *, *tio*(ef">+//3     _( 30d) {
 364   e=T61String" c3ft">//p_type" class="sft">//pemcmp( 3="scr/*   -OID"(1);
//p_type" class="sft">//pemcmp( 3="scr * Automatically generated by ipts/asn1_comp  Do not edit   -OID"(1);
 364   e=T61String" c3ft">//p_type" class="sft">//pemcmp( 3="scr *   -OID"(1);
 305   e=T61String" c3ft">//p_type" class="sft">//pemcmp( 3="scr * ASN.1 cars=r>foroquot;s   -OID"((1);
ef">     _(//p_type" class="sft">//pemcmp( 3="scr */   -OID"(1);
 364   (//p_type" class="sft">//pemcmp( 3="scr#include5tlt;assuxripts/deef="r.hter    -OID"(1);
 335   (//p_type" class="sft">//pemcmp( 3="scr   -OID"(1);
 365   (//p_type" class="sft">//pemcmp( 3="screxternsconst "L3uct((1);
ef">+code=T61String" c3ferdode=dir" class="sferdod clap( 305           e=T61String" c3perdode=dir" class="scerdod clap((1);
 364        _(<(exit(1);
ef">leref="+code=DIRECTIVE_REL3TIVE_3ID"12d1#L300" 12d="L341" class="line" na12d=">124"> 36eref="+code=DIRECTIVE_REL3TIVE_3ID"12d2#L300" 12d="L342" class="line" na12d=">124"> 305   e=T61String" c3ft">//p_type" class="sft">//pemcmp( 3="scr/*   -OID"(1);
ef">     _(//p_type" class="sft">//pemcmp( 3="scr * Automatically generated by ipts/asn1_comp  Do not edit   -OID"(1);
 364   (//p_type" class="sft">//pemcmp( 3="scr *   -OID"(1);
 335   (//p_type" class="sft">//pemcmp( 3="scr * ASN.1 cars=r>foroquot;s   -OID"((1);
 365   (//p_type" class="sft">//pemcmp( 3="scr */   -OID"(1);
ef">(//p_type" class="sft">//pemcmp( 3="scr#include5tlt;assuxripts/ber_byteef=".hter    -OID"(1);
 305   e=T61String" c3ft">//p_type" class="sft">//pemcmp( 3="scr#include5\3="scrquot;s-ipts.h\3="scr   -OID"((1);
 364   e=T61String" c3ft">//p_type" class="sft">//pemcmp( 3="scr\  -OID"(1);
 364        _(<     _((1);
 305        _(, *exit(1);
ef">leref="+code=DIRECTIVE_REL3TIVE_3ID"1254#L300" 12d="L354" class="line" na12d=">12d"> 36eref="+code=DIRECTIVE_REL3TIVE_3ID"1255#L300" 12d="L355" class="line" na12d=">125"> 335   < 365   (//p_type" class="sft">//pemcmp( 3="scr\  -OID"(1);
ef">( 305   foroda>, * 364        _(<     _(//p_type" class="sft">//pemcmp( 364        _(<5   < 3="screxterns+//3quot;s(void>*, ref"_t, unsigned char, -OID") {
 305        _(<        ="line" name="L365"> 3="scr const void>*, ref"_t);   -OID"ef">     whi     _(<     _((1);
 364   leref="+code=DIRECTIVE_REL3TIVE_3ID"1265#L300" 12d="L365" class="line" na12d=">126"> 335   (//p_type" class="sft">//pemcmp( 3="scr   -OID"(1);
 30, *,
126scrsref">ef">(//p_type" class="sft">//pemcmp( 3="screnumoquot;s/action  {   -OID"((1);
126"> 305   foroda>, *126"> 364        _(//p_type" class="sft">//pemcmp( 3="scr\tACT_quot;seL3&uot;u,   -OID"127=> 305        _(<<<<<<<<<     _((127"> 364   e=T61String" c3ft">//p_type" class="sft">//pemcmp( 3="scr\tNR__quot;s/action  L3&uot;u   -OID"((127"> 305   e=T61String" c3ft">//p_type" class="sft">//pemcmp( 3="scr}r   -OID"(1);
 364   (//p_type" class="sft">//pemcmp( 3="scr   -OID"(1);
127"> 335   (//p_type" class="sft">//pemcmp( 3="scrstatic const ipts/action_toquot;s/action_table[NR__quot;s/action ] L3{   -OID"(1);
 365   5   (((1);
ef">foroda>, *127"> 305           e=T61String" c3ft">//p_type" class="sft">//pemcmp( 3="scr\t[quot;4u] L3&uot;s,   -OID"((1);
127"> 364   e=T61String" c3ft">//p_type" class="sft">//pemcmp( 3="scr}r   -OID"(1);
12"L> 36d) {
 364   +code=T61String" c3ferdode=dir" class="sferdod clap(128"> 305        _(, *(1);
ef">     whi(exit(1);
 364   leref="+code=DIRECTIVE_REL3TIVE_3ID"1285#L300" 12d="L285" class="line" na12d=">128"> 33>(1);
 365   <ef">(//p_type" class="st">//pemcm(="line" name="L365"> 3="scrPnam 1   -OID"(1);
 305   e=T61String" c3nr_enL36n value" class="snr_enL36n emcm = 0a>(1);
 364   e=T61String" c3rooe=exit" class="srooeemcmeL3&ref="der_ele="comexit" class="sr">der_ele="coemcmp( 30s<( 364   e=T61String" c3r">der_ophref=exit" class="sr">der_ophrefemcmp( 3="scrASN1_OP_COMPLETE,   -OID"(1);
 305   e=T61String" c3r">der_ouo_of_ass=_lise=exit" class="sr">der_ouo_of_ass=_liseemcmp( 364   foroda>, *, * 335        _(, * 30, *,
ef"><der *ine */
 305   e=T61String" c3t">//p_type" class="st">//pemcm(="line" name="L365"> 3="scrPnam 2   -OID"(1);
 364   e=T61String" c3ft">//p_type" class="sft">//pemcmp( 3="scr   -OID"(1);
130=> 365   (//p_type" class="sft">//pemcmp( 3="scrstatic const unsigned charoquot;s/machss=[] L3{   -OID"(1);
 364        _(<     _((1);
 342
ef">     _( 364   ( 335   (der_ele="comexit" class="sr">der_ele="coemcmp( 30s<( 365   (der_ophref=exit" class="sr">der_ophrefemcmp( 3="scrASN1_OP_COMPLETE,   -OID"(1);
ef">(der_ouo_of_ass=_lise=exit" class="sr">der_ouo_of_ass=_liseemcmp( 30d) {
 364   e=T61String" c3ft">//p_type" class="sft">//pemcmp( 3="scr}r   -OID"(1);
 364   e=T61String" c3ft">//p_type" class="sft">//pemcmp( 3="scr\  -OID"(1);
 305   e=T61String" c3ft">//p_type" class="sft">//pemcmp( 3="scrconst "L3uct(1);
ef">     _(//p_type" class="sft">//pemcmp( 3="scr\t.machss= =oquot;s/machss=,   -OID"((1);
 364   (//p_type" class="sft">//pemcmp( 3="scr\t.machlen = ref"of(quot;s/machss=),   -OID"((1);
 335   (//p_type" class="sft">//pemcmp( 3="scr\t.action  L3&uot;s/action_table,   -OID"((1);
 365   (//p_type" class="sft">//pemcmp( 3="scr}r   -OID"(1);
 30d) {
 36 der the ouo-of-ass= rle="cosne */
 36  30static void>     _(der_ouo_of_ass=_lise=exit" class="sr">der_ouo_of_ass=_liseemcmp( 364   "L3uct, * 30<*( 335   const chare*( 305   whhre pp(der_lise=exit" class="sr">der_liseemcm//!= 0) {
 364        _(der_lise=exit" class="sr">der_liseemcmeL3a>, *der_iexe=exit" class="sr">der_iexe claa>(1);
der_lise=exit" class="sr">der_liseemcm/>(1);
 364        _(<5   <>, *der_lise_p_type" class="sr">der_lise_pvalueL3&ref="der_lise=exit" class="sr">der_liseemcm;d) {
 342
ef">     whi(der_morf=exit" class="sr">der_morfemcmp( 3="scr\  -OID"(1);
 364        whi( 335        _(, *der_depth=exit" class="sr">der_depthvalu++;d) {
 365   5   foroda>, *value" class="schildr">emcm;3a>, *ef">5        _(, *der_ele="comexit" class="sr">der_ele="coemcmp( 305           e=T61String" c3r">der_depth=exit" class="sr">der_depthvalu--a>(1);
 36>(1);
 3="scr_ACT -OID" 3="scrq-OID"(1);
 364        _(, * 36/!= 0) {
 305        _(, *ef">     whi     _(<     _(der_ophref=exit" class="sr">der_ophrefemcmp( 3="scrASN1_OP_END_SEQ&uot;s,   -OID"( 364        whiiiiiiiiibreaka>(1);
 335        _(, * 365   5        _(<     _(der_ophref=exit" class="sr">der_ophrefemcmp( 3="scrASN1_OP_END_SEQ_OF&uot;s,   -OID"(ef">5        _(, *der_ophref=exit" class="sr">der_ophrefemcmp( 3="scr_jump_target(quot;u),   -OID"( 305           iiiiiiiibreaka>(1);
 364        _(, *der_ophref=exit" class="sr">der_ophrefemcmp( 3="scrASN1_OP_END_SET&uot;s,   -OID"( 364        _((1);
 305        _(, *ef">     whi     _(<     _(der_ophref=exit" class="sr">der_ophrefemcmp( 3="scrASN1_OP_END_SET_OF&uot;s,   -OID"( 364        whiiiiiiiii     _(der_ophref=exit" class="sr">der_ophrefemcmp( 3="scr_jump_target(quot;u),   -OID"( 335        _((1);
 365   5   leref="+code=DIRECTIVE_REL3TIVE_3ID"1357#L300" 13d="L357" class="line" na13d=">135scrsref">ef">5   +code=T61String" c3e_type" class="se cla-ter a>, * 305           iiiiiiii     _(der_ophref=exit" class="sr">der_ophrefemcmp( 3="scr_action(ACT_quot;s),   -OID"(1);
 364        _(           iiiiiiii     _((1);
der_ophref=exit" class="sr">der_ophrefemcmp( 3="scrASN1_OP_RETURN,   -OID"(1);
 364   leref="+code=DIRECTIVE_REL3TIVE_3ID"1362#L300" 13d="L362" class="line" na13d=">13d"> 30leref="+code=DIRECTIVE_REL3TIVE_3ID"1363#L300" 13d="L363" class="line" na13d=">136scrsr>(1);
 36  33 der a>
 30 136scrsrstatic void>     _(der_ele="comexit" class="sr">der_ele="coemcmp(, * 30<*(, * 30<*(136"> 30= 0) {
136"> 364   "L3uct, * 30<*(137=> 305   const chare*( 36,<*(137"> 364   +//3     _(137"> 342
ef">+code=T61String" c3e_type" class="se cla-ter a>, * 364       de=T61String" c3tagmexit" class="stagemcm &&<(137"> 335        _(<( 30, *,
ef">+codde=T61String" c3e_type" class="se cla-ter a>, *frefhref28c#L300" 12"L274"4" class="liR2P"stagemcm &>13d"> 364   leref<13137"> 342
(1);
 30    foroda>, *12"L> 36d) 3
 ref">ef">+codde=T61String" c3e_type" class="se cla-ter a>, *( 36/!= 0) {
128"> 305<">ef">     whi(der_morf=exit" class="sr">der_morfemcmp(d8f">d5lass="line"whi     _lasspts"+NULLe=t" classs="sr" na13d=""+ouomexit" class="souo clast//4#L300" 13"srooeemc2" class=r2L364" class=" class="souo class="line"whi     _(<     _(d8f">d5lass="line"whi     _lasspts"+NULLe=t" classs="sr/4#L300" 13d="L360"  id="L346" 77"<+ 2T_SKIPPABL>exit(1);
d8f">d5lass="line"whi     _valu    _(, *128"> 363   leref="+code=DIREC3IVE_R38n1_compile137_3ID"1362#L300" 13d="L362" class="linee" na12d="3128"> 33>(1);
="L363" class="line13ef=>136"> 30 (1);
137=> 305 >ef">+code=T61String" c3e_type" class="se cla-ter a>, * 364       de=T61String" c3tagmexit" class="stagemcm &&<(( 3="scr_ACT -OID" 3"srken_lis3emcm[0]a>(1);
 3="scr_ACT -OID" 3 class="sN3LL> 36/a>(1);
 364        _(, *(1);
, *der_ophref=exit" class="sr">der_ophrefemcmp( 3="6" 77
<13 id>137=> 305   "L365"> 3="scrASN1_OP_END_SET_OF&uot;s,   -OID"( ref">ef">+coddef="+action=exit" class="sac-OID"( 363execrsr/>(1);
128"> 305<">ef">     whi(der_morf=exit" class="sr">der_morfemcmp((1);
d8f">d5lass="line"whi     _lasspts"+NULLe=t" classs="sr" na13d=""+ouomexit" class="souo clast//4#L300" 13"srooeemc2" (<     _(d8f">d5lass="line"whi     _lasspts"+NULLe=t" classs="sr/4#L300" 13d="L360"  id="L346" 77"<+ e" na12d="3129"> 30, *,3d8f">d5lass="line"whi     _valu    _(, *der 3ine */
ef">     whi(der_morf=exit" class="sr">der_morfemcmp( 3="s 2   -OID&3uot;(1);
ef">" c3tagmexit" clasdont_f">ef">" ca hrehreacsn6> 36,<*(, *(1);
133scrsref">ef">5        _(, *der_ele="comexit" class="sr">der_ele="coemcmp< na13d=">134"> 364        _(, * 364 3="4e" na13.="4130"> 342
 3="4e4 na13.="4129scrsr>(1);
(1);
 305        _(, * 335        _(, *(1);
 364        _(, * 305        _(, * 30d) {
der_ophref=exit" class="sr">der_ophrefemcmp(, *(1);
137=> 305   _(, * 36d) {
(1);
 30  cla-ter a>, * 3="scr_ACT  _(, *(1);
137"> 335         cla-ter a>, * 3="scr_ACTss="souo class="line" name="L365"> 3="4sgrammar_i4e"emcm/a>(1);
 335     4sgrammar_i4e"emcm/a>(1);
(1);
134"> 305, *(1);
ef">" c3tagmexit" clasdont_f">ef">" ca hrehreacsn6> 36,<*(13d"> 305TYPE_REa      _(, * 30d) {
 ref">ef">+coddss="l7
<13 id>137=> 313 i> 305<        _(<, *, * <(
ef">" c3tagmexit" clasdont_f">ef">" ca hrehreacsn6> 36,<*(
der_ophref=exit" class="sr">der_ophrefemcmp(, *137=> 305   "L365"> 3="scrASN1_OP_END_SET_OF&uot;s,   _(, *137"> 335         cla-ter a>, * 3="scr_ACTss="souo class="line" name="L365"> 3="4pe" class=4sce claa>(1);
 335     4t" class="4act claa>(1);
(1);
 ref">ef">+coddef="+action=exit" class="sac-OID"(der_lis4emcm//!= 0) {
128"> 305<">ef">     whi(der_morf=exit" class="sr">der_morfemcmp(der_4exe claa>(1);
d8f">d5lass="line"whi     _lasspts"+NULLe=t" classs="sr  na13d=""+ouomexit" class="souo clast//4#L300" 13"srooeemc2" (<     _(d8f">d5lass="line"whi     _lasspts"+NULLe=t" classs="sr/4#L300" 13d="L360"  id="L346" 77"<+4=s= rle="c4iseemcm/>(1);
d8f">d5lass="line"whi     _valu    _(, *der_4iseemcm;d) {
ef">     whi(der_morf=exit" class="sr">der_morfemcmp( 3="4e" na13d="4133"> 342
="L363" class="line13ef=>136"> 30  30<*(der_dep4hvalu++;d) {
 < *137=> 313 i> 305<        _(<, *"srle="co> 30<*( != 14a-ter a>, *"srle="co> 30<*(der_lis4hvalu--a>(1);
 != 15a-ter a>, *"srle="co> 30<*( 36>(1);
 != 31="srle="co> 30<*((1);
der_ophref=exit" class="sr">der_ophrefemcmp(" csouo cl, ouo cl, ouo cl"souo class="line" name="L365"> 3="scr_action(ACT_quot4hreacsn1ou46> 36/!= 0) {
137=> 313 i> 30]" name="L365"> 3="scr_action(ACT_quot4h" na13d="4NCE> 30: 0) {
 3="scr_action(ACT_quot4hr\  -OID&4ct cla/a>(1);
" cenL3y_type" clascr_acuniversal>" ce1_co[   de=T61String" c3tagmexit" class="stagemcm &&<" c3tagmexit" class="stag]ss="souo class="line" name="L365"> 3="4  whiiiiii4iibreaka>(1);
 3="4 ">der_dep4_OF> 30: 0) {
der_ophref=exit" class="sr">der_ophrefemcmp(" cnsouo cl, ouo cl, ouo c2"souo class="line" ="souo class="line" name="L365"> 3="4 class="se4ct cla/a>(1);
137=> 313 i> 30]" name="L365"> 3="scr_action(ACT_quot4h" na13d="43y cla/a>(1);
 3="scr_action(ACT_quot4h">der_lis4iibreaka>(1);
 3="4e" class="4SET> 30: 0) {
 < * 3="4e"scrq-OID4ct cla/a>(1);
ef">" c3tagmexit" clasdont_f">ef">" ca hr  _(, *(1);
 30: 0) {
 30  364        _(, *13d"> 305TYPE_REa      _(, *(1);
133scrsref">ef">5        _(, *der_ele="comexit" class="sr">der_ele="coemcmp< na13d=">134"> 364        _( 3="4eclass="se4   leref="+code=DIREC4IVE_R4L3TIVE_3ID"1357#L300" 13d="L357" class="line" na13d=">135scrsref">ef">5   +code=T61String" c3e_type" class="se cla-ter a>, * 305           iiiiiiii     _(der_ophref=exit" class="sr">der_ophrefemcmp( 3="scrASN1_OP_RETU4s),   -OID4quot;(1);
 335     4 class="si4e"emcm/a>(1);
 305        _(, *13d"> 364   leref="+code=DIREC4IVE_R46n1_compile13d2#L300" 13d="L357" class="l/s>(1);
 30 , * 30leref="+code=DIREC4IVE_R46n1_compile1353#L300" 13d="L353#L300" 12d="L297" class=" classne" na13d=">13d=multiple ud="orL363" class="line13ef=>136"> 30  30 135"> 364        whiiiiiiiii     _(der_ophref=exit" class="sr">der_ophrefemcmp( 3="sne" na13d=">135scrsref">ef">5   +cod( 3="scrASN1_OP_RETU4 a>
 ref">ef">+codde=T61String" c3e_type" class="se cla-ter a>, * ref">ef">+codde=T61String" c3e_type" class="se cl128"> ref">ef">+coddef="+action=exit" class="sac-OID"(
128"> 305<">ef">     whi(der_morf=exit" class="sr">der_morfemcmp(omexit" cls="souo clast//4#L300" 13d="L360"  id="L346" 77"<+4t" class="4tagemcm/>(1);
d8f">d5lass="line"whi     _lasspts"+NULLe=t" classs="sr/4#L300" 13d="L360"  id="L346" 77"<+477
<13cla>436"> 30= 0) {
d8f">d5lass="line"whi     _lasspts"+NULLe=t" classs="sr/4#L300" 13d="L360"  id="L346" 77"<+4it" class=4srcemcm;d) {
d8f">d5lass="line"whi     _valu    _(, *133scrsref">ef">     whi(der_morf=exit" class="sr">der_morfemcmp( 3="4souoofass=4claeL30a>(1);
ef">+code=T61String" c3e_type" class="se cla-ter a>, *, * 342
 3="4s" na13d="4Ecrsr ||2
133"> 364        _(<5   <>, *(1);
 364        _(<5   <>, *der_lise_class="souo clast//4#L300" 13"srooeemc2" a>, *der_iexe=exit" clas4sskippable4claeL31a>(1);
 30, *,4 3="4" class="l4R2P"stagemcm &>13d"> 464137"L34_4else-ter a>, *4ass="srooeemcm-ter ae=exi4" cla4s="srooeemcm-ter ae=ex13d="L331#L300" 12d="L297" class=" classin3d=">13d=sa>(le ud="="L363" class="line13ef=>136"> 30 133"> 335        _(, *der_depth=exit" class="4e" na12"L2412"L> 36d) 3
   5   foroda>, *, *   5   forodaef="+ele="comexit" cla class="sce claeL3     _( 36/!= 0) {
ef">5        _(, *der_ele="comexit" class="sr">der_ele="coemcmp< ef="+ele="comexit" cla class="souo class(133"> 335        _(T61String" c3r">der_depth=exit" class="42T_SKIPPAB4>exit(1);
135"> 364        whiiiiiiiii     _(der_ophref=exit" class="sr">der_ophrefemcmp( 3="scrASN1_OP_END_SEQ&uot;s,   -OID"(128"> 364   leref="+code=DIREC4IVE_R48n1_compile1375#L300" _3ID"1362#L300" 13d="L362" class="lin4e" na12d="4128"> 33>(1);
 335     4e offsets 4ine */
 335        _(, *(1);
 305        _(, *(1);
 30 , * 30 (1);
 30 135"> 364        whiiiiiiiii     _(der_ophref=exit" class="sr">der_ophrefemcmp( 3="sne" na13d=">135scrsref">ef">5   +cod( 3="scrASN1_OP_RETU4e" na12d="4129scrsr>(1);
 ref">ef">+codde=T61String" c3e_type" class="se cla-ter a>, * ref">ef">+codde=T61String" c3e_type" class="se cl128"> ref">ef">+coddef="+action=exit" class="sac-OID"( 364execrsr/>(1);
128"> 305<">ef">     whi(der_morf=exit" class="sr">der_morfemcmp(omexit" cls="souo clast//4#L300" 13d="L360"  id="L346" 77"<+4EMENT_REND4RED claa>(1);
d8f">d5lass="line"whi     _lasspts"+NULLe=t" classs="sr/4#L300" 13d="L360"  id="L346" 77"<+4e" na12d="4129"> 30, *,4d8f">d5lass="line"whi     _lasspts"+NULLe=t" classs="sr/4#L300" 13d="L360"  id="L346" 77"<+4e1   -OID&4ine */
d8f">d5lass="line"whi     _valu    _(, *(1);
133scrsref">ef">     whi(der_morf=exit" class="sr">der_morfemcmp( 3="5cr   -OID&5uot;(1);
ef">+code=T61String" c3e_type" class="se cla-ter a>, *, *(1);
 3="5sgrammar_i5e"emcm/a>(1);
133"> 364        _(<5   <>, * 342
 364        _(<5   <>, *der_lise_class="souo clast//4#L300" 13"srooeemc2" a>, *der_iexe=exit" clas5e4 na13.="5129scrsr>(1);
(1);
 3="5 class="sN5LL> 36/a>(1);
, *(1);
13d=sa>(le ud="="L363" class="line13ef=>136"> 30 137"> 36*137i+eter a>, *der_iexe=exit" clas5e9class="s5uot;(1);
133"> 335        _(, *der_depth=exit" class="5}r   -OID&5uot;(1);
ef">5        _(, *der_ele="comexit" class="sr">der_ele="coemcmp< >, *( 36d) {
133"> 335        _(T61String" c3r">der_depth=exit" class="5}grammar_i5uot;(1);
 ref">ef">+codds>, * 335        _(((1);
 364        whiiiiiiiii     _(der_ophref=exit" class="sr">der_ophrefemcmp( 3="scrASN1_OP_END_SEQ&uot;s,   -OID"((1);
 3="5sgrammar_i5e"emcm/a>(1);
135"> 364        whiiiiiiiii     _(der_ophref=exit" class="sr">der_ophrefemcmp( 3="scrASN1_OP_END_SEQ&uot;s,   -OID"((1);
135"> 364        whiiiiiiiii     _(der_ophref=exit" class="sr">der_ophrefemcmp( 3="sclass="line" na13"  >137"> 36  -OID"( 335     5s" na13.="5131"> 30d) {
 335     5lass="comm5*ne */
 364        _(, *
(L363" class="line13ef=>136"> 30  is repeated.L363" class="line13ef=>136"> 30 
 30 s are leftsne" wlasst not preva>( opclasalL363" class="line13ef=>136"> 30 (1);
s from bea>( leftsne".L363" class="line13ef=>136"> 30  30 t2L364" class=" cep/a>t2     _(desthiirpts"+NULLe=t" clthiir"sr">der_ophrefemcmp( 3="5e" na13d="5132scrsrd) {
 3="5e" na13.="5emcm//!= 0) {
 335     5="sr">der_5exe claa>(1);
134"> 305, *   5   foroda>, *, *   5   forodaef="+ele="comexit" cla class="sce claeL3     _(der_5iseemcm;d) {
ef">5        _(, *der_ele="comexit" class="sr">der_ele="coemcmp< ef="+ele="comexit" cla class="souo class( 342
137"> 335       ="sce cla-ter a>, *135"> 364        whiiiiiiiii     _(der_ophref=exit" class="sr">der_ophrefemcmp( 3="scrASN1_OP_RETU5s="snr_enL56n emcm;d) {
ef">5   +code=T61String" c3e_type" class="se cla-ter a>, *der_dep5hvalu++;d) {
135"> 364        whiiiiiiiii     _(der_ophref=exit" class="sr">der_ophrefemcmp( 3="scrASN1_OP_RETU5rclass="se5execrsr/>(1);
 335     5r" na13d="5LL> 36/a>(1);
 335     5r" na13.="5hvalu--a>(1);
 36>(1);
 335     5="scrq-OID5quot;(1);
ef">5   +code=T61String" c3e_type" class="se cla-ter a>, *(1);
135"> 364        whiiiiiiiii     _(der_ophref=exit" class="sr">der_ophrefemcmp(        _(<( ref">ef">+coddef="+action=exit" class="sacass="line" na13d=">135"> 335     5=="snr_enL5iibreaka>(1);
der_dep5_OF> 30: 0) {

The origisal LXR software bys="liID"1362#Lhttp://source13dge.net/projec13dlxr">LXR 0" 1unity"sr">dthis experi(al verslas bysID"1362#Lmailto:lxr@ {
ux.no">lxr@ {
ux.no"sr".
30: 0)subfooter"> lxr. { ux.no kindly hosted bysID"1362#Lhttp://www.redclal13d=pro.no">Redclal Ld=pro "+"sr">dprovilassnf Ld=ux 0"nsulting and operaclass services=sa>ce 1995.