public class org.apache.catalina.servlets.CGIServlet$CGIEnvironment
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.catalina.servlets.CGIServlet$CGIEnvironment
  super_class: java.lang.Object
{
  private jakarta.servlet.ServletContext context;
    descriptor: Ljakarta/servlet/ServletContext;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.String contextPath;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.String servletPath;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.String pathInfo;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.String webAppRootDir;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private java.io.File tmpDir;
    descriptor: Ljava/io/File;
    flags: (0x0002) ACC_PRIVATE

  private java.util.Hashtable<java.lang.String, java.lang.String> env;
    descriptor: Ljava/util/Hashtable;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/Hashtable<Ljava/lang/String;Ljava/lang/String;>;

  private java.lang.String command;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private final java.io.File workingDirectory;
    descriptor: Ljava/io/File;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.ArrayList<java.lang.String> cmdLineParameters;
    descriptor: Ljava/util/ArrayList;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/ArrayList<Ljava/lang/String;>;

  private final boolean valid;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  final org.apache.catalina.servlets.CGIServlet this$0;
    descriptor: Lorg/apache/catalina/servlets/CGIServlet;
    flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC

  protected void <init>(org.apache.catalina.servlets.CGIServlet, jakarta.servlet.http.HttpServletRequest, jakarta.servlet.ServletContext);
    descriptor: (Lorg/apache/catalina/servlets/CGIServlet;Ljakarta/servlet/http/HttpServletRequest;Ljakarta/servlet/ServletContext;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=7, locals=5, args_size=4
        start local 0 // org.apache.catalina.servlets.CGIServlet$CGIEnvironment this
        start local 2 // jakarta.servlet.http.HttpServletRequest req
        start local 3 // jakarta.servlet.ServletContext context
         0: .line 728
            aload 0 /* this */
            aload 1
            putfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.this$0:Lorg/apache/catalina/servlets/CGIServlet;
         1: .line 727
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         2: .line 684
            aload 0 /* this */
            aconst_null
            putfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.context:Ljakarta/servlet/ServletContext;
         3: .line 687
            aload 0 /* this */
            aconst_null
            putfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.contextPath:Ljava/lang/String;
         4: .line 690
            aload 0 /* this */
            aconst_null
            putfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.servletPath:Ljava/lang/String;
         5: .line 693
            aload 0 /* this */
            aconst_null
            putfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.pathInfo:Ljava/lang/String;
         6: .line 696
            aload 0 /* this */
            aconst_null
            putfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.webAppRootDir:Ljava/lang/String;
         7: .line 699
            aload 0 /* this */
            aconst_null
            putfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.tmpDir:Ljava/io/File;
         8: .line 702
            aload 0 /* this */
            aconst_null
            putfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.env:Ljava/util/Hashtable;
         9: .line 705
            aload 0 /* this */
            aconst_null
            putfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.command:Ljava/lang/String;
        10: .line 711
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.cmdLineParameters:Ljava/util/ArrayList;
        11: .line 729
            aload 0 /* this */
            aload 3 /* context */
            invokevirtual org.apache.catalina.servlets.CGIServlet$CGIEnvironment.setupFromContext:(Ljakarta/servlet/ServletContext;)V
        12: .line 730
            aload 0 /* this */
            aload 2 /* req */
            invokevirtual org.apache.catalina.servlets.CGIServlet$CGIEnvironment.setupFromRequest:(Ljakarta/servlet/http/HttpServletRequest;)Z
            istore 4 /* valid */
        start local 4 // boolean valid
        13: .line 732
            iload 4 /* valid */
            ifeq 15
        14: .line 733
            aload 0 /* this */
            aload 2 /* req */
            invokevirtual org.apache.catalina.servlets.CGIServlet$CGIEnvironment.setCGIEnvironment:(Ljakarta/servlet/http/HttpServletRequest;)Z
            istore 4 /* valid */
        15: .line 736
      StackMap locals: org.apache.catalina.servlets.CGIServlet$CGIEnvironment org.apache.catalina.servlets.CGIServlet jakarta.servlet.http.HttpServletRequest jakarta.servlet.ServletContext int
      StackMap stack:
            iload 4 /* valid */
            ifeq 20
        16: .line 737
            aload 0 /* this */
            new java.io.File
            dup
            aload 0 /* this */
            getfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.command:Ljava/lang/String;
            iconst_0
        17: .line 738
            aload 0 /* this */
            getfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.command:Ljava/lang/String;
            getstatic java.io.File.separator:Ljava/lang/String;
            invokevirtual java.lang.String.lastIndexOf:(Ljava/lang/String;)I
        18: .line 737
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            putfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.workingDirectory:Ljava/io/File;
        19: .line 739
            goto 21
        20: .line 740
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.workingDirectory:Ljava/io/File;
        21: .line 743
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 4 /* valid */
            putfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.valid:Z
        22: .line 744
            return
        end local 4 // boolean valid
        end local 3 // jakarta.servlet.ServletContext context
        end local 2 // jakarta.servlet.http.HttpServletRequest req
        end local 0 // org.apache.catalina.servlets.CGIServlet$CGIEnvironment this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   23     0     this  Lorg/apache/catalina/servlets/CGIServlet$CGIEnvironment;
            0   23     2      req  Ljakarta/servlet/http/HttpServletRequest;
            0   23     3  context  Ljakarta/servlet/ServletContext;
           13   23     4    valid  Z
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      this$0   final
      req      
      context  

  protected void setupFromContext(jakarta.servlet.ServletContext);
    descriptor: (Ljakarta/servlet/ServletContext;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.apache.catalina.servlets.CGIServlet$CGIEnvironment this
        start local 1 // jakarta.servlet.ServletContext context
         0: .line 754
            aload 0 /* this */
            aload 1 /* context */
            putfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.context:Ljakarta/servlet/ServletContext;
         1: .line 755
            aload 0 /* this */
            aload 1 /* context */
            ldc "/"
            invokeinterface jakarta.servlet.ServletContext.getRealPath:(Ljava/lang/String;)Ljava/lang/String;
            putfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.webAppRootDir:Ljava/lang/String;
         2: .line 756
            aload 0 /* this */
            aload 1 /* context */
            ldc "jakarta.servlet.context.tempdir"
            invokeinterface jakarta.servlet.ServletContext.getAttribute:(Ljava/lang/String;)Ljava/lang/Object;
            checkcast java.io.File
            putfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.tmpDir:Ljava/io/File;
         3: .line 757
            return
        end local 1 // jakarta.servlet.ServletContext context
        end local 0 // org.apache.catalina.servlets.CGIServlet$CGIEnvironment this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Lorg/apache/catalina/servlets/CGIServlet$CGIEnvironment;
            0    4     1  context  Ljakarta/servlet/ServletContext;
    MethodParameters:
         Name  Flags
      context  

  protected boolean setupFromRequest(jakarta.servlet.http.HttpServletRequest);
    descriptor: (Ljakarta/servlet/http/HttpServletRequest;)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=7, locals=7, args_size=2
        start local 0 // org.apache.catalina.servlets.CGIServlet$CGIEnvironment this
        start local 1 // jakarta.servlet.http.HttpServletRequest req
         0: .line 774
            iconst_0
            istore 2 /* isIncluded */
        start local 2 // boolean isIncluded
         1: .line 777
            aload 1 /* req */
         2: .line 778
            ldc "jakarta.servlet.include.request_uri"
         3: .line 777
            invokeinterface jakarta.servlet.http.HttpServletRequest.getAttribute:(Ljava/lang/String;)Ljava/lang/Object;
            ifnull 5
         4: .line 779
            iconst_1
            istore 2 /* isIncluded */
         5: .line 781
      StackMap locals: int
      StackMap stack:
            iload 2 /* isIncluded */
            ifeq 16
         6: .line 782
            aload 0 /* this */
            aload 1 /* req */
         7: .line 783
            ldc "jakarta.servlet.include.context_path"
         8: .line 782
            invokeinterface jakarta.servlet.http.HttpServletRequest.getAttribute:(Ljava/lang/String;)Ljava/lang/Object;
            checkcast java.lang.String
            putfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.contextPath:Ljava/lang/String;
         9: .line 784
            aload 0 /* this */
            aload 1 /* req */
        10: .line 785
            ldc "jakarta.servlet.include.servlet_path"
        11: .line 784
            invokeinterface jakarta.servlet.http.HttpServletRequest.getAttribute:(Ljava/lang/String;)Ljava/lang/Object;
            checkcast java.lang.String
            putfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.servletPath:Ljava/lang/String;
        12: .line 786
            aload 0 /* this */
            aload 1 /* req */
        13: .line 787
            ldc "jakarta.servlet.include.path_info"
        14: .line 786
            invokeinterface jakarta.servlet.http.HttpServletRequest.getAttribute:(Ljava/lang/String;)Ljava/lang/Object;
            checkcast java.lang.String
            putfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.pathInfo:Ljava/lang/String;
        15: .line 788
            goto 19
        16: .line 789
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* req */
            invokeinterface jakarta.servlet.http.HttpServletRequest.getContextPath:()Ljava/lang/String;
            putfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.contextPath:Ljava/lang/String;
        17: .line 790
            aload 0 /* this */
            aload 1 /* req */
            invokeinterface jakarta.servlet.http.HttpServletRequest.getServletPath:()Ljava/lang/String;
            putfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.servletPath:Ljava/lang/String;
        18: .line 791
            aload 0 /* this */
            aload 1 /* req */
            invokeinterface jakarta.servlet.http.HttpServletRequest.getPathInfo:()Ljava/lang/String;
            putfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.pathInfo:Ljava/lang/String;
        19: .line 795
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.pathInfo:Ljava/lang/String;
            ifnonnull 21
        20: .line 796
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.servletPath:Ljava/lang/String;
            putfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.pathInfo:Ljava/lang/String;
        21: .line 803
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.this$0:Lorg/apache/catalina/servlets/CGIServlet;
            getfield org.apache.catalina.servlets.CGIServlet.enableCmdLineArguments:Z
            ifeq 49
            aload 1 /* req */
            invokeinterface jakarta.servlet.http.HttpServletRequest.getMethod:()Ljava/lang/String;
            ldc "GET"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 23
        22: .line 804
            aload 1 /* req */
            invokeinterface jakarta.servlet.http.HttpServletRequest.getMethod:()Ljava/lang/String;
            ldc "POST"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 23
            aload 1 /* req */
            invokeinterface jakarta.servlet.http.HttpServletRequest.getMethod:()Ljava/lang/String;
            ldc "HEAD"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 49
        23: .line 806
      StackMap locals:
      StackMap stack:
            iload 2 /* isIncluded */
            ifeq 28
        24: .line 807
            aload 1 /* req */
        25: .line 808
            ldc "jakarta.servlet.include.query_string"
        26: .line 807
            invokeinterface jakarta.servlet.http.HttpServletRequest.getAttribute:(Ljava/lang/String;)Ljava/lang/Object;
            checkcast java.lang.String
            astore 3 /* qs */
        start local 3 // java.lang.String qs
        27: .line 809
            goto 29
        end local 3 // java.lang.String qs
        28: .line 810
      StackMap locals:
      StackMap stack:
            aload 1 /* req */
            invokeinterface jakarta.servlet.http.HttpServletRequest.getQueryString:()Ljava/lang/String;
            astore 3 /* qs */
        start local 3 // java.lang.String qs
        29: .line 812
      StackMap locals: java.lang.String
      StackMap stack:
            aload 3 /* qs */
            ifnull 49
            aload 3 /* qs */
            bipush 61
            invokevirtual java.lang.String.indexOf:(I)I
            iconst_m1
            if_icmpne 49
        30: .line 813
            new java.util.StringTokenizer
            dup
            aload 3 /* qs */
            ldc "+"
            invokespecial java.util.StringTokenizer.<init>:(Ljava/lang/String;Ljava/lang/String;)V
            astore 4 /* qsTokens */
        start local 4 // java.util.StringTokenizer qsTokens
        31: .line 814
            goto 48
        32: .line 815
      StackMap locals: java.util.StringTokenizer
      StackMap stack:
            aload 4 /* qsTokens */
            invokevirtual java.util.StringTokenizer.nextToken:()Ljava/lang/String;
            astore 5 /* encodedArgument */
        start local 5 // java.lang.String encodedArgument
        33: .line 816
            aload 0 /* this */
            getfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.this$0:Lorg/apache/catalina/servlets/CGIServlet;
            getfield org.apache.catalina.servlets.CGIServlet.cmdLineArgumentsEncodedPattern:Ljava/util/regex/Pattern;
            aload 5 /* encodedArgument */
            invokevirtual java.util.regex.Pattern.matcher:(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
            invokevirtual java.util.regex.Matcher.matches:()Z
            ifne 39
        34: .line 817
            getstatic org.apache.catalina.servlets.CGIServlet.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 38
        35: .line 818
            getstatic org.apache.catalina.servlets.CGIServlet.log:Lorg/apache/juli/logging/Log;
            getstatic org.apache.catalina.servlets.CGIServlet.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "cgiServlet.invalidArgumentEncoded"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
        36: .line 819
            aload 5 /* encodedArgument */
            aastore
            dup
            iconst_1
            aload 0 /* this */
            getfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.this$0:Lorg/apache/catalina/servlets/CGIServlet;
            getfield org.apache.catalina.servlets.CGIServlet.cmdLineArgumentsEncodedPattern:Ljava/util/regex/Pattern;
            invokevirtual java.util.regex.Pattern.toString:()Ljava/lang/String;
            aastore
        37: .line 818
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
        38: .line 821
      StackMap locals: java.lang.String
      StackMap stack:
            iconst_0
            ireturn
        39: .line 824
      StackMap locals:
      StackMap stack:
            aload 5 /* encodedArgument */
            aload 0 /* this */
            getfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.this$0:Lorg/apache/catalina/servlets/CGIServlet;
            getfield org.apache.catalina.servlets.CGIServlet.parameterEncoding:Ljava/lang/String;
            invokestatic java.net.URLDecoder.decode:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            astore 6 /* decodedArgument */
        start local 6 // java.lang.String decodedArgument
        40: .line 825
            aload 0 /* this */
            getfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.this$0:Lorg/apache/catalina/servlets/CGIServlet;
            getfield org.apache.catalina.servlets.CGIServlet.cmdLineArgumentsDecodedPattern:Ljava/util/regex/Pattern;
            ifnull 47
        41: .line 826
            aload 0 /* this */
            getfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.this$0:Lorg/apache/catalina/servlets/CGIServlet;
            getfield org.apache.catalina.servlets.CGIServlet.cmdLineArgumentsDecodedPattern:Ljava/util/regex/Pattern;
            aload 6 /* decodedArgument */
            invokevirtual java.util.regex.Pattern.matcher:(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
            invokevirtual java.util.regex.Matcher.matches:()Z
            ifne 47
        42: .line 827
            getstatic org.apache.catalina.servlets.CGIServlet.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 46
        43: .line 828
            getstatic org.apache.catalina.servlets.CGIServlet.log:Lorg/apache/juli/logging/Log;
            getstatic org.apache.catalina.servlets.CGIServlet.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "cgiServlet.invalidArgumentDecoded"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
        44: .line 829
            aload 6 /* decodedArgument */
            aastore
            dup
            iconst_1
            aload 0 /* this */
            getfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.this$0:Lorg/apache/catalina/servlets/CGIServlet;
            getfield org.apache.catalina.servlets.CGIServlet.cmdLineArgumentsDecodedPattern:Ljava/util/regex/Pattern;
            invokevirtual java.util.regex.Pattern.toString:()Ljava/lang/String;
            aastore
        45: .line 828
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
        46: .line 831
      StackMap locals: java.lang.String
      StackMap stack:
            iconst_0
            ireturn
        47: .line 834
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.cmdLineParameters:Ljava/util/ArrayList;
            aload 6 /* decodedArgument */
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        end local 6 // java.lang.String decodedArgument
        end local 5 // java.lang.String encodedArgument
        48: .line 814
      StackMap locals:
      StackMap stack:
            aload 4 /* qsTokens */
            invokevirtual java.util.StringTokenizer.hasMoreTokens:()Z
            ifne 32
        end local 4 // java.util.StringTokenizer qsTokens
        end local 3 // java.lang.String qs
        49: .line 839
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 2 // boolean isIncluded
        end local 1 // jakarta.servlet.http.HttpServletRequest req
        end local 0 // org.apache.catalina.servlets.CGIServlet$CGIEnvironment this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   50     0             this  Lorg/apache/catalina/servlets/CGIServlet$CGIEnvironment;
            0   50     1              req  Ljakarta/servlet/http/HttpServletRequest;
            1   50     2       isIncluded  Z
           27   28     3               qs  Ljava/lang/String;
           29   49     3               qs  Ljava/lang/String;
           31   49     4         qsTokens  Ljava/util/StringTokenizer;
           33   48     5  encodedArgument  Ljava/lang/String;
           40   48     6  decodedArgument  Ljava/lang/String;
    Exceptions:
      throws java.io.UnsupportedEncodingException
    MethodParameters:
      Name  Flags
      req   

  protected java.lang.String[] findCGI(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=7, locals=13, args_size=6
        start local 0 // org.apache.catalina.servlets.CGIServlet$CGIEnvironment this
        start local 1 // java.lang.String pathInfo
        start local 2 // java.lang.String webAppRootDir
        start local 3 // java.lang.String contextPath
        start local 4 // java.lang.String servletPath
        start local 5 // java.lang.String cgiPathPrefix
         0: .line 909
            aconst_null
            astore 6 /* path */
        start local 6 // java.lang.String path
         1: .line 910
            aconst_null
            astore 7 /* name */
        start local 7 // java.lang.String name
         2: .line 911
            aconst_null
            astore 8 /* scriptname */
        start local 8 // java.lang.String scriptname
         3: .line 913
            aload 2 /* webAppRootDir */
            ifnull 6
         4: .line 914
            aload 2 /* webAppRootDir */
            getstatic java.io.File.separator:Ljava/lang/String;
            invokevirtual java.lang.String.lastIndexOf:(Ljava/lang/String;)I
            aload 2 /* webAppRootDir */
            invokevirtual java.lang.String.length:()I
            iconst_1
            isub
            if_icmpne 6
         5: .line 916
            aload 2 /* webAppRootDir */
            iconst_0
            aload 2 /* webAppRootDir */
            invokevirtual java.lang.String.length:()I
            iconst_1
            isub
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 2 /* webAppRootDir */
         6: .line 919
      StackMap locals: java.lang.String java.lang.String java.lang.String
      StackMap stack:
            aload 5 /* cgiPathPrefix */
            ifnull 8
         7: .line 920
            new java.lang.StringBuilder
            dup
            aload 2 /* webAppRootDir */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            getstatic java.io.File.separator:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 5 /* cgiPathPrefix */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 2 /* webAppRootDir */
         8: .line 923
      StackMap locals:
      StackMap stack:
            getstatic org.apache.catalina.servlets.CGIServlet.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 10
         9: .line 924
            getstatic org.apache.catalina.servlets.CGIServlet.log:Lorg/apache/juli/logging/Log;
            getstatic org.apache.catalina.servlets.CGIServlet.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "cgiServlet.find.path"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* pathInfo */
            aastore
            dup
            iconst_1
            aload 2 /* webAppRootDir */
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
        10: .line 927
      StackMap locals:
      StackMap stack:
            new java.io.File
            dup
            aload 2 /* webAppRootDir */
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            astore 9 /* currentLocation */
        start local 9 // java.io.File currentLocation
        11: .line 928
            new java.util.StringTokenizer
            dup
            aload 1 /* pathInfo */
            ldc "/"
            invokespecial java.util.StringTokenizer.<init>:(Ljava/lang/String;Ljava/lang/String;)V
            astore 10 /* dirWalker */
        start local 10 // java.util.StringTokenizer dirWalker
        12: .line 929
            getstatic org.apache.catalina.servlets.CGIServlet.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 16
        13: .line 930
            getstatic org.apache.catalina.servlets.CGIServlet.log:Lorg/apache/juli/logging/Log;
            getstatic org.apache.catalina.servlets.CGIServlet.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "cgiServlet.find.location"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
        14: .line 931
            aload 9 /* currentLocation */
            invokevirtual java.io.File.getAbsolutePath:()Ljava/lang/String;
            aastore
        15: .line 930
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
        16: .line 933
      StackMap locals: java.io.File java.util.StringTokenizer
      StackMap stack:
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 11 /* cginameBuilder */
        start local 11 // java.lang.StringBuilder cginameBuilder
        17: .line 934
            goto 25
        18: .line 935
      StackMap locals: java.lang.StringBuilder
      StackMap stack:
            aload 10 /* dirWalker */
            invokevirtual java.util.StringTokenizer.nextElement:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 12 /* nextElement */
        start local 12 // java.lang.String nextElement
        19: .line 936
            new java.io.File
            dup
            aload 9 /* currentLocation */
            aload 12 /* nextElement */
            invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
            astore 9 /* currentLocation */
        20: .line 937
            aload 11 /* cginameBuilder */
            bipush 47
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            aload 12 /* nextElement */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        21: .line 938
            getstatic org.apache.catalina.servlets.CGIServlet.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 25
        22: .line 939
            getstatic org.apache.catalina.servlets.CGIServlet.log:Lorg/apache/juli/logging/Log;
            getstatic org.apache.catalina.servlets.CGIServlet.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "cgiServlet.find.location"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
        23: .line 940
            aload 9 /* currentLocation */
            invokevirtual java.io.File.getAbsolutePath:()Ljava/lang/String;
            aastore
        24: .line 939
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
        end local 12 // java.lang.String nextElement
        25: .line 934
      StackMap locals:
      StackMap stack:
            aload 9 /* currentLocation */
            invokevirtual java.io.File.isFile:()Z
            ifne 26
            aload 10 /* dirWalker */
            invokevirtual java.util.StringTokenizer.hasMoreElements:()Z
            ifne 18
        26: .line 943
      StackMap locals:
      StackMap stack:
            aload 11 /* cginameBuilder */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 12 /* cginame */
        start local 12 // java.lang.String cginame
        27: .line 944
            aload 9 /* currentLocation */
            invokevirtual java.io.File.isFile:()Z
            ifne 29
        28: .line 945
            iconst_4
            anewarray java.lang.String
            areturn
        29: .line 948
      StackMap locals: java.lang.String
      StackMap stack:
            aload 9 /* currentLocation */
            invokevirtual java.io.File.getAbsolutePath:()Ljava/lang/String;
            astore 6 /* path */
        30: .line 949
            aload 9 /* currentLocation */
            invokevirtual java.io.File.getName:()Ljava/lang/String;
            astore 7 /* name */
        31: .line 951
            aload 4 /* servletPath */
            aload 12 /* cginame */
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 34
        32: .line 952
            new java.lang.StringBuilder
            dup
            aload 3 /* contextPath */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 12 /* cginame */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 8 /* scriptname */
        33: .line 953
            goto 35
        34: .line 954
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            aload 3 /* contextPath */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* servletPath */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 12 /* cginame */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 8 /* scriptname */
        35: .line 957
      StackMap locals:
      StackMap stack:
            getstatic org.apache.catalina.servlets.CGIServlet.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 37
        36: .line 958
            getstatic org.apache.catalina.servlets.CGIServlet.log:Lorg/apache/juli/logging/Log;
            getstatic org.apache.catalina.servlets.CGIServlet.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "cgiServlet.find.found"
            iconst_4
            anewarray java.lang.Object
            dup
            iconst_0
            aload 7 /* name */
            aastore
            dup
            iconst_1
            aload 6 /* path */
            aastore
            dup
            iconst_2
            aload 8 /* scriptname */
            aastore
            dup
            iconst_3
            aload 12 /* cginame */
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
        37: .line 960
      StackMap locals:
      StackMap stack:
            iconst_4
            anewarray java.lang.String
            dup
            iconst_0
            aload 6 /* path */
            aastore
            dup
            iconst_1
            aload 8 /* scriptname */
            aastore
            dup
            iconst_2
            aload 12 /* cginame */
            aastore
            dup
            iconst_3
            aload 7 /* name */
            aastore
            areturn
        end local 12 // java.lang.String cginame
        end local 11 // java.lang.StringBuilder cginameBuilder
        end local 10 // java.util.StringTokenizer dirWalker
        end local 9 // java.io.File currentLocation
        end local 8 // java.lang.String scriptname
        end local 7 // java.lang.String name
        end local 6 // java.lang.String path
        end local 5 // java.lang.String cgiPathPrefix
        end local 4 // java.lang.String servletPath
        end local 3 // java.lang.String contextPath
        end local 2 // java.lang.String webAppRootDir
        end local 1 // java.lang.String pathInfo
        end local 0 // org.apache.catalina.servlets.CGIServlet$CGIEnvironment this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   38     0             this  Lorg/apache/catalina/servlets/CGIServlet$CGIEnvironment;
            0   38     1         pathInfo  Ljava/lang/String;
            0   38     2    webAppRootDir  Ljava/lang/String;
            0   38     3      contextPath  Ljava/lang/String;
            0   38     4      servletPath  Ljava/lang/String;
            0   38     5    cgiPathPrefix  Ljava/lang/String;
            1   38     6             path  Ljava/lang/String;
            2   38     7             name  Ljava/lang/String;
            3   38     8       scriptname  Ljava/lang/String;
           11   38     9  currentLocation  Ljava/io/File;
           12   38    10        dirWalker  Ljava/util/StringTokenizer;
           17   38    11   cginameBuilder  Ljava/lang/StringBuilder;
           19   25    12      nextElement  Ljava/lang/String;
           27   38    12          cginame  Ljava/lang/String;
    MethodParameters:
               Name  Flags
      pathInfo       
      webAppRootDir  
      contextPath    
      servletPath    
      cgiPathPrefix  

  protected boolean setCGIEnvironment(jakarta.servlet.http.HttpServletRequest);
    descriptor: (Ljakarta/servlet/http/HttpServletRequest;)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=19, args_size=2
        start local 0 // org.apache.catalina.servlets.CGIServlet$CGIEnvironment this
        start local 1 // jakarta.servlet.http.HttpServletRequest req
         0: .line 983
            new java.util.Hashtable
            dup
            aload 0 /* this */
            getfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.this$0:Lorg/apache/catalina/servlets/CGIServlet;
            getfield org.apache.catalina.servlets.CGIServlet.shellEnv:Ljava/util/Hashtable;
            invokespecial java.util.Hashtable.<init>:(Ljava/util/Map;)V
            astore 2 /* envp */
        start local 2 // java.util.Hashtable envp
         1: .line 986
            aconst_null
            astore 3 /* sPathInfoOrig */
        start local 3 // java.lang.String sPathInfoOrig
         2: .line 987
            aconst_null
            astore 4 /* sPathInfoCGI */
        start local 4 // java.lang.String sPathInfoCGI
         3: .line 988
            aconst_null
            astore 5 /* sPathTranslatedCGI */
        start local 5 // java.lang.String sPathTranslatedCGI
         4: .line 989
            aconst_null
            astore 6 /* sCGIFullPath */
        start local 6 // java.lang.String sCGIFullPath
         5: .line 990
            aconst_null
            astore 7 /* sCGIScriptName */
        start local 7 // java.lang.String sCGIScriptName
         6: .line 991
            aconst_null
            astore 8 /* sCGIFullName */
        start local 8 // java.lang.String sCGIFullName
         7: .line 992
            aconst_null
            astore 9 /* sCGIName */
        start local 9 // java.lang.String sCGIName
         8: .line 996
            aload 0 /* this */
            getfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.pathInfo:Ljava/lang/String;
            astore 3 /* sPathInfoOrig */
         9: .line 997
            aload 3 /* sPathInfoOrig */
            ifnonnull 10
            ldc ""
            goto 11
      StackMap locals: org.apache.catalina.servlets.CGIServlet$CGIEnvironment jakarta.servlet.http.HttpServletRequest java.util.Hashtable java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String
      StackMap stack:
        10: aload 3 /* sPathInfoOrig */
      StackMap locals:
      StackMap stack: java.lang.String
        11: astore 3 /* sPathInfoOrig */
        12: .line 999
            aload 0 /* this */
            getfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.webAppRootDir:Ljava/lang/String;
            ifnonnull 15
        13: .line 1001
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.tmpDir:Ljava/io/File;
            invokevirtual java.io.File.toString:()Ljava/lang/String;
            putfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.webAppRootDir:Ljava/lang/String;
        14: .line 1002
            aload 0 /* this */
            invokevirtual org.apache.catalina.servlets.CGIServlet$CGIEnvironment.expandCGIScript:()V
        15: .line 1005
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 3 /* sPathInfoOrig */
        16: .line 1006
            aload 0 /* this */
            getfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.webAppRootDir:Ljava/lang/String;
        17: .line 1007
            aload 0 /* this */
            getfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.contextPath:Ljava/lang/String;
        18: .line 1008
            aload 0 /* this */
            getfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.servletPath:Ljava/lang/String;
        19: .line 1009
            aload 0 /* this */
            getfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.this$0:Lorg/apache/catalina/servlets/CGIServlet;
            getfield org.apache.catalina.servlets.CGIServlet.cgiPathPrefix:Ljava/lang/String;
        20: .line 1005
            invokevirtual org.apache.catalina.servlets.CGIServlet$CGIEnvironment.findCGI:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;
            astore 10 /* sCGINames */
        start local 10 // java.lang.String[] sCGINames
        21: .line 1011
            aload 10 /* sCGINames */
            iconst_0
            aaload
            astore 6 /* sCGIFullPath */
        22: .line 1012
            aload 10 /* sCGINames */
            iconst_1
            aaload
            astore 7 /* sCGIScriptName */
        23: .line 1013
            aload 10 /* sCGINames */
            iconst_2
            aaload
            astore 8 /* sCGIFullName */
        24: .line 1014
            aload 10 /* sCGINames */
            iconst_3
            aaload
            astore 9 /* sCGIName */
        25: .line 1016
            aload 6 /* sCGIFullPath */
            ifnull 29
        26: .line 1017
            aload 7 /* sCGIScriptName */
            ifnull 29
        27: .line 1018
            aload 8 /* sCGIFullName */
            ifnull 29
        28: .line 1019
            aload 9 /* sCGIName */
            ifnonnull 30
        29: .line 1020
      StackMap locals: java.lang.String[]
      StackMap stack:
            iconst_0
            ireturn
        30: .line 1023
      StackMap locals:
      StackMap stack:
            aload 2 /* envp */
            ldc "SERVER_SOFTWARE"
            ldc "TOMCAT"
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        31: .line 1025
            aload 2 /* envp */
            ldc "SERVER_NAME"
            aload 0 /* this */
            aload 1 /* req */
            invokeinterface jakarta.servlet.http.HttpServletRequest.getServerName:()Ljava/lang/String;
            invokevirtual org.apache.catalina.servlets.CGIServlet$CGIEnvironment.nullsToBlanks:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        32: .line 1027
            aload 2 /* envp */
            ldc "GATEWAY_INTERFACE"
            ldc "CGI/1.1"
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        33: .line 1029
            aload 2 /* envp */
            ldc "SERVER_PROTOCOL"
            aload 0 /* this */
            aload 1 /* req */
            invokeinterface jakarta.servlet.http.HttpServletRequest.getProtocol:()Ljava/lang/String;
            invokevirtual org.apache.catalina.servlets.CGIServlet$CGIEnvironment.nullsToBlanks:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        34: .line 1031
            aload 1 /* req */
            invokeinterface jakarta.servlet.http.HttpServletRequest.getServerPort:()I
            istore 11 /* port */
        start local 11 // int port
        35: .line 1033
            iload 11 /* port */
            ifne 36
            iconst_m1
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            goto 37
      StackMap locals: int
      StackMap stack:
        36: iload 11 /* port */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
        37: .line 1032
      StackMap locals:
      StackMap stack: java.lang.Integer
            astore 12 /* iPort */
        start local 12 // java.lang.Integer iPort
        38: .line 1034
            aload 2 /* envp */
            ldc "SERVER_PORT"
            aload 12 /* iPort */
            invokevirtual java.lang.Integer.toString:()Ljava/lang/String;
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        39: .line 1036
            aload 2 /* envp */
            ldc "REQUEST_METHOD"
            aload 0 /* this */
            aload 1 /* req */
            invokeinterface jakarta.servlet.http.HttpServletRequest.getMethod:()Ljava/lang/String;
            invokevirtual org.apache.catalina.servlets.CGIServlet$CGIEnvironment.nullsToBlanks:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        40: .line 1038
            aload 2 /* envp */
            ldc "REQUEST_URI"
            aload 0 /* this */
            aload 1 /* req */
            invokeinterface jakarta.servlet.http.HttpServletRequest.getRequestURI:()Ljava/lang/String;
            invokevirtual org.apache.catalina.servlets.CGIServlet$CGIEnvironment.nullsToBlanks:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        41: .line 1052
            aload 0 /* this */
            getfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.pathInfo:Ljava/lang/String;
            ifnull 43
        42: .line 1053
            aload 0 /* this */
            getfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.pathInfo:Ljava/lang/String;
            aload 8 /* sCGIFullName */
            invokevirtual java.lang.String.length:()I
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            ifgt 45
        43: .line 1054
      StackMap locals: java.lang.Integer
      StackMap stack:
            ldc ""
            astore 4 /* sPathInfoCGI */
        44: .line 1055
            goto 46
        45: .line 1056
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.pathInfo:Ljava/lang/String;
            aload 8 /* sCGIFullName */
            invokevirtual java.lang.String.length:()I
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 4 /* sPathInfoCGI */
        46: .line 1058
      StackMap locals:
      StackMap stack:
            aload 2 /* envp */
            ldc "PATH_INFO"
            aload 4 /* sPathInfoCGI */
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        47: .line 1080
            aload 4 /* sPathInfoCGI */
            invokevirtual java.lang.String.isEmpty:()Z
            ifne 49
        48: .line 1081
            aload 0 /* this */
            getfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.context:Ljakarta/servlet/ServletContext;
            aload 4 /* sPathInfoCGI */
            invokeinterface jakarta.servlet.ServletContext.getRealPath:(Ljava/lang/String;)Ljava/lang/String;
            astore 5 /* sPathTranslatedCGI */
        49: .line 1083
      StackMap locals:
      StackMap stack:
            aload 5 /* sPathTranslatedCGI */
            ifnull 51
            ldc ""
            aload 5 /* sPathTranslatedCGI */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 51
        50: .line 1086
            aload 2 /* envp */
            ldc "PATH_TRANSLATED"
            aload 0 /* this */
            aload 5 /* sPathTranslatedCGI */
            invokevirtual org.apache.catalina.servlets.CGIServlet$CGIEnvironment.nullsToBlanks:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        51: .line 1090
      StackMap locals:
      StackMap stack:
            aload 2 /* envp */
            ldc "SCRIPT_NAME"
            aload 0 /* this */
            aload 7 /* sCGIScriptName */
            invokevirtual org.apache.catalina.servlets.CGIServlet$CGIEnvironment.nullsToBlanks:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        52: .line 1092
            aload 2 /* envp */
            ldc "QUERY_STRING"
            aload 0 /* this */
            aload 1 /* req */
            invokeinterface jakarta.servlet.http.HttpServletRequest.getQueryString:()Ljava/lang/String;
            invokevirtual org.apache.catalina.servlets.CGIServlet$CGIEnvironment.nullsToBlanks:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        53: .line 1094
            aload 2 /* envp */
            ldc "REMOTE_HOST"
            aload 0 /* this */
            aload 1 /* req */
            invokeinterface jakarta.servlet.http.HttpServletRequest.getRemoteHost:()Ljava/lang/String;
            invokevirtual org.apache.catalina.servlets.CGIServlet$CGIEnvironment.nullsToBlanks:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        54: .line 1096
            aload 2 /* envp */
            ldc "REMOTE_ADDR"
            aload 0 /* this */
            aload 1 /* req */
            invokeinterface jakarta.servlet.http.HttpServletRequest.getRemoteAddr:()Ljava/lang/String;
            invokevirtual org.apache.catalina.servlets.CGIServlet$CGIEnvironment.nullsToBlanks:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        55: .line 1098
            aload 2 /* envp */
            ldc "AUTH_TYPE"
            aload 0 /* this */
            aload 1 /* req */
            invokeinterface jakarta.servlet.http.HttpServletRequest.getAuthType:()Ljava/lang/String;
            invokevirtual org.apache.catalina.servlets.CGIServlet$CGIEnvironment.nullsToBlanks:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        56: .line 1100
            aload 2 /* envp */
            ldc "REMOTE_USER"
            aload 0 /* this */
            aload 1 /* req */
            invokeinterface jakarta.servlet.http.HttpServletRequest.getRemoteUser:()Ljava/lang/String;
            invokevirtual org.apache.catalina.servlets.CGIServlet$CGIEnvironment.nullsToBlanks:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        57: .line 1102
            aload 2 /* envp */
            ldc "REMOTE_IDENT"
            ldc ""
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        58: .line 1104
            aload 2 /* envp */
            ldc "CONTENT_TYPE"
            aload 0 /* this */
            aload 1 /* req */
            invokeinterface jakarta.servlet.http.HttpServletRequest.getContentType:()Ljava/lang/String;
            invokevirtual org.apache.catalina.servlets.CGIServlet$CGIEnvironment.nullsToBlanks:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        59: .line 1111
            aload 1 /* req */
            invokeinterface jakarta.servlet.http.HttpServletRequest.getContentLengthLong:()J
            lstore 13 /* contentLength */
        start local 13 // long contentLength
        60: .line 1112
            lload 13 /* contentLength */
            lconst_0
            lcmp
            ifgt 61
            ldc ""
            goto 62
        61: .line 1113
      StackMap locals: long
      StackMap stack:
            lload 13 /* contentLength */
            invokestatic java.lang.Long.toString:(J)Ljava/lang/String;
        62: .line 1112
      StackMap locals:
      StackMap stack: java.lang.String
            astore 15 /* sContentLength */
        start local 15 // java.lang.String sContentLength
        63: .line 1114
            aload 2 /* envp */
            ldc "CONTENT_LENGTH"
            aload 15 /* sContentLength */
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        64: .line 1117
            aload 1 /* req */
            invokeinterface jakarta.servlet.http.HttpServletRequest.getHeaderNames:()Ljava/util/Enumeration;
            astore 16 /* headers */
        start local 16 // java.util.Enumeration headers
        65: .line 1118
            aconst_null
            astore 17 /* header */
        start local 17 // java.lang.String header
        66: .line 1119
            goto 71
        67: .line 1120
      StackMap locals: java.lang.String java.util.Enumeration java.lang.String
      StackMap stack:
            aconst_null
            astore 17 /* header */
        68: .line 1121
            aload 16 /* headers */
            invokeinterface java.util.Enumeration.nextElement:()Ljava/lang/Object;
            checkcast java.lang.String
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toUpperCase:(Ljava/util/Locale;)Ljava/lang/String;
            astore 17 /* header */
        69: .line 1125
            aload 0 /* this */
            getfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.this$0:Lorg/apache/catalina/servlets/CGIServlet;
            getfield org.apache.catalina.servlets.CGIServlet.envHttpHeadersPattern:Ljava/util/regex/Pattern;
            aload 17 /* header */
            invokevirtual java.util.regex.Pattern.matcher:(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
            invokevirtual java.util.regex.Matcher.matches:()Z
            ifeq 71
        70: .line 1126
            aload 2 /* envp */
            new java.lang.StringBuilder
            dup
            ldc "HTTP_"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 17 /* header */
            bipush 45
            bipush 95
            invokevirtual java.lang.String.replace:(CC)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 1 /* req */
            aload 17 /* header */
            invokeinterface jakarta.servlet.http.HttpServletRequest.getHeader:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        71: .line 1119
      StackMap locals:
      StackMap stack:
            aload 16 /* headers */
            invokeinterface java.util.Enumeration.hasMoreElements:()Z
            ifne 67
        72: .line 1130
            new java.io.File
            dup
            aload 6 /* sCGIFullPath */
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            astore 18 /* fCGIFullPath */
        start local 18 // java.io.File fCGIFullPath
        73: .line 1131
            aload 0 /* this */
            aload 18 /* fCGIFullPath */
            invokevirtual java.io.File.getCanonicalPath:()Ljava/lang/String;
            putfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.command:Ljava/lang/String;
        74: .line 1133
            aload 2 /* envp */
            ldc "X_TOMCAT_SCRIPT_PATH"
            aload 0 /* this */
            getfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.command:Ljava/lang/String;
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        75: .line 1135
            aload 2 /* envp */
            ldc "SCRIPT_FILENAME"
            aload 0 /* this */
            getfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.command:Ljava/lang/String;
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        76: .line 1137
            aload 0 /* this */
            aload 2 /* envp */
            putfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.env:Ljava/util/Hashtable;
        77: .line 1139
            iconst_1
            ireturn
        end local 18 // java.io.File fCGIFullPath
        end local 17 // java.lang.String header
        end local 16 // java.util.Enumeration headers
        end local 15 // java.lang.String sContentLength
        end local 13 // long contentLength
        end local 12 // java.lang.Integer iPort
        end local 11 // int port
        end local 10 // java.lang.String[] sCGINames
        end local 9 // java.lang.String sCGIName
        end local 8 // java.lang.String sCGIFullName
        end local 7 // java.lang.String sCGIScriptName
        end local 6 // java.lang.String sCGIFullPath
        end local 5 // java.lang.String sPathTranslatedCGI
        end local 4 // java.lang.String sPathInfoCGI
        end local 3 // java.lang.String sPathInfoOrig
        end local 2 // java.util.Hashtable envp
        end local 1 // jakarta.servlet.http.HttpServletRequest req
        end local 0 // org.apache.catalina.servlets.CGIServlet$CGIEnvironment this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   78     0                this  Lorg/apache/catalina/servlets/CGIServlet$CGIEnvironment;
            0   78     1                 req  Ljakarta/servlet/http/HttpServletRequest;
            1   78     2                envp  Ljava/util/Hashtable<Ljava/lang/String;Ljava/lang/String;>;
            2   78     3       sPathInfoOrig  Ljava/lang/String;
            3   78     4        sPathInfoCGI  Ljava/lang/String;
            4   78     5  sPathTranslatedCGI  Ljava/lang/String;
            5   78     6        sCGIFullPath  Ljava/lang/String;
            6   78     7      sCGIScriptName  Ljava/lang/String;
            7   78     8        sCGIFullName  Ljava/lang/String;
            8   78     9            sCGIName  Ljava/lang/String;
           21   78    10           sCGINames  [Ljava/lang/String;
           35   78    11                port  I
           38   78    12               iPort  Ljava/lang/Integer;
           60   78    13       contentLength  J
           63   78    15      sContentLength  Ljava/lang/String;
           65   78    16             headers  Ljava/util/Enumeration<Ljava/lang/String;>;
           66   78    17              header  Ljava/lang/String;
           73   78    18        fCGIFullPath  Ljava/io/File;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      req   

  protected void expandCGIScript();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=7, locals=9, args_size=1
        start local 0 // org.apache.catalina.servlets.CGIServlet$CGIEnvironment this
         0: .line 1147
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 1 /* srcPath */
        start local 1 // java.lang.StringBuilder srcPath
         1: .line 1148
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 2 /* destPath */
        start local 2 // java.lang.StringBuilder destPath
         2: .line 1149
            aconst_null
            astore 3 /* is */
        start local 3 // java.io.InputStream is
         3: .line 1152
            aload 0 /* this */
            getfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.this$0:Lorg/apache/catalina/servlets/CGIServlet;
            getfield org.apache.catalina.servlets.CGIServlet.cgiPathPrefix:Ljava/lang/String;
            ifnonnull 9
         4: .line 1153
            aload 1 /* srcPath */
            aload 0 /* this */
            getfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.pathInfo:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         5: .line 1154
            aload 0 /* this */
            getfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.context:Ljakarta/servlet/ServletContext;
            aload 1 /* srcPath */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface jakarta.servlet.ServletContext.getResourceAsStream:(Ljava/lang/String;)Ljava/io/InputStream;
            astore 3 /* is */
         6: .line 1155
            aload 2 /* destPath */
            aload 0 /* this */
            getfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.tmpDir:Ljava/io/File;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            pop
         7: .line 1156
            aload 2 /* destPath */
            aload 0 /* this */
            getfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.pathInfo:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         8: .line 1157
            goto 20
         9: .line 1159
      StackMap locals: java.lang.StringBuilder java.lang.StringBuilder java.io.InputStream
      StackMap stack:
            aload 1 /* srcPath */
            aload 0 /* this */
            getfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.this$0:Lorg/apache/catalina/servlets/CGIServlet;
            getfield org.apache.catalina.servlets.CGIServlet.cgiPathPrefix:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        10: .line 1161
            new java.util.StringTokenizer
            dup
            aload 0 /* this */
            getfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.pathInfo:Ljava/lang/String;
            ldc "/"
            invokespecial java.util.StringTokenizer.<init>:(Ljava/lang/String;Ljava/lang/String;)V
        11: .line 1160
            astore 4 /* pathWalker */
        start local 4 // java.util.StringTokenizer pathWalker
        12: .line 1163
            goto 16
        13: .line 1164
      StackMap locals: java.util.StringTokenizer
      StackMap stack:
            aload 1 /* srcPath */
            bipush 47
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        14: .line 1165
            aload 1 /* srcPath */
            aload 4 /* pathWalker */
            invokevirtual java.util.StringTokenizer.nextElement:()Ljava/lang/Object;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            pop
        15: .line 1166
            aload 0 /* this */
            getfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.context:Ljakarta/servlet/ServletContext;
            aload 1 /* srcPath */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface jakarta.servlet.ServletContext.getResourceAsStream:(Ljava/lang/String;)Ljava/io/InputStream;
            astore 3 /* is */
        16: .line 1163
      StackMap locals:
      StackMap stack:
            aload 4 /* pathWalker */
            invokevirtual java.util.StringTokenizer.hasMoreElements:()Z
            ifeq 17
            aload 3 /* is */
            ifnull 13
        17: .line 1168
      StackMap locals:
      StackMap stack:
            aload 2 /* destPath */
            aload 0 /* this */
            getfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.tmpDir:Ljava/io/File;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            pop
        18: .line 1169
            aload 2 /* destPath */
            bipush 47
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        19: .line 1170
            aload 2 /* destPath */
            aload 1 /* srcPath */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/CharSequence;)Ljava/lang/StringBuilder;
            pop
        end local 4 // java.util.StringTokenizer pathWalker
        20: .line 1173
      StackMap locals:
      StackMap stack:
            aload 3 /* is */
            ifnonnull 23
        21: .line 1175
            getstatic org.apache.catalina.servlets.CGIServlet.log:Lorg/apache/juli/logging/Log;
            getstatic org.apache.catalina.servlets.CGIServlet.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "cgiServlet.expandNotFound"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* srcPath */
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface org.apache.juli.logging.Log.warn:(Ljava/lang/Object;)V
        22: .line 1176
            return
        23: .line 1180
      StackMap locals:
      StackMap stack:
            new java.io.File
            dup
            aload 2 /* destPath */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            astore 4 /* f */
        start local 4 // java.io.File f
        24: .line 1181
            aload 4 /* f */
            invokevirtual java.io.File.exists:()Z
            ifeq 30
        25: .line 1222
            aload 3 /* is */
            invokevirtual java.io.InputStream.close:()V
        26: .line 1223
            goto 29
      StackMap locals: org.apache.catalina.servlets.CGIServlet$CGIEnvironment java.lang.StringBuilder java.lang.StringBuilder java.io.InputStream java.io.File
      StackMap stack: java.io.IOException
        27: astore 8 /* e */
        start local 8 // java.io.IOException e
        28: .line 1224
            getstatic org.apache.catalina.servlets.CGIServlet.log:Lorg/apache/juli/logging/Log;
            getstatic org.apache.catalina.servlets.CGIServlet.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "cgiServlet.expandCloseFail"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* srcPath */
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            aload 8 /* e */
            invokeinterface org.apache.juli.logging.Log.warn:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        end local 8 // java.io.IOException e
        29: .line 1183
      StackMap locals:
      StackMap stack:
            return
        30: .line 1187
      StackMap locals:
      StackMap stack:
            aload 4 /* f */
            invokevirtual java.io.File.getParentFile:()Ljava/io/File;
            astore 5 /* dir */
        start local 5 // java.io.File dir
        31: .line 1188
            aload 5 /* dir */
            invokevirtual java.io.File.mkdirs:()Z
            ifne 38
            aload 5 /* dir */
            invokevirtual java.io.File.isDirectory:()Z
            ifne 38
        32: .line 1189
            getstatic org.apache.catalina.servlets.CGIServlet.log:Lorg/apache/juli/logging/Log;
            getstatic org.apache.catalina.servlets.CGIServlet.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "cgiServlet.expandCreateDirFail"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 5 /* dir */
            invokevirtual java.io.File.getAbsolutePath:()Ljava/lang/String;
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface org.apache.juli.logging.Log.warn:(Ljava/lang/Object;)V
        33: .line 1222
            aload 3 /* is */
            invokevirtual java.io.InputStream.close:()V
        34: .line 1223
            goto 37
      StackMap locals: org.apache.catalina.servlets.CGIServlet$CGIEnvironment java.lang.StringBuilder java.lang.StringBuilder java.io.InputStream java.io.File java.io.File
      StackMap stack: java.io.IOException
        35: astore 8 /* e */
        start local 8 // java.io.IOException e
        36: .line 1224
            getstatic org.apache.catalina.servlets.CGIServlet.log:Lorg/apache/juli/logging/Log;
            getstatic org.apache.catalina.servlets.CGIServlet.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "cgiServlet.expandCloseFail"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* srcPath */
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            aload 8 /* e */
            invokeinterface org.apache.juli.logging.Log.warn:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        end local 8 // java.io.IOException e
        37: .line 1190
      StackMap locals:
      StackMap stack:
            return
        38: .line 1194
      StackMap locals:
      StackMap stack:
            getstatic org.apache.catalina.servlets.CGIServlet.expandFileLock:Ljava/lang/Object;
            dup
            astore 6
            monitorenter
        39: .line 1196
            aload 4 /* f */
            invokevirtual java.io.File.exists:()Z
            ifeq 46
        40: .line 1197
            aload 6
            monitorexit
        41: .line 1222
            aload 3 /* is */
            invokevirtual java.io.InputStream.close:()V
        42: .line 1223
            goto 45
      StackMap locals: org.apache.catalina.servlets.CGIServlet$CGIEnvironment java.lang.StringBuilder java.lang.StringBuilder java.io.InputStream java.io.File java.io.File java.lang.Object
      StackMap stack: java.io.IOException
        43: astore 8 /* e */
        start local 8 // java.io.IOException e
        44: .line 1224
            getstatic org.apache.catalina.servlets.CGIServlet.log:Lorg/apache/juli/logging/Log;
            getstatic org.apache.catalina.servlets.CGIServlet.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "cgiServlet.expandCloseFail"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* srcPath */
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            aload 8 /* e */
            invokeinterface org.apache.juli.logging.Log.warn:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        end local 8 // java.io.IOException e
      StackMap locals:
      StackMap stack:
        45: return
        46: .line 1201
      StackMap locals:
      StackMap stack:
            aload 4 /* f */
            invokevirtual java.io.File.createNewFile:()Z
            ifne 53
        47: .line 1202
            aload 6
            monitorexit
        48: .line 1222
            aload 3 /* is */
            invokevirtual java.io.InputStream.close:()V
        49: .line 1223
            goto 52
      StackMap locals:
      StackMap stack: java.io.IOException
        50: astore 8 /* e */
        start local 8 // java.io.IOException e
        51: .line 1224
            getstatic org.apache.catalina.servlets.CGIServlet.log:Lorg/apache/juli/logging/Log;
            getstatic org.apache.catalina.servlets.CGIServlet.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "cgiServlet.expandCloseFail"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* srcPath */
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            aload 8 /* e */
            invokeinterface org.apache.juli.logging.Log.warn:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        end local 8 // java.io.IOException e
      StackMap locals:
      StackMap stack:
        52: return
        53: .line 1205
      StackMap locals:
      StackMap stack:
            aload 3 /* is */
            aload 4 /* f */
            invokevirtual java.io.File.toPath:()Ljava/nio/file/Path;
            iconst_0
            anewarray java.nio.file.CopyOption
            invokestatic java.nio.file.Files.copy:(Ljava/io/InputStream;Ljava/nio/file/Path;[Ljava/nio/file/CopyOption;)J
            pop2
        54: .line 1207
            getstatic org.apache.catalina.servlets.CGIServlet.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 56
        55: .line 1208
            getstatic org.apache.catalina.servlets.CGIServlet.log:Lorg/apache/juli/logging/Log;
            getstatic org.apache.catalina.servlets.CGIServlet.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "cgiServlet.expandOk"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* srcPath */
            aastore
            dup
            iconst_1
            aload 2 /* destPath */
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
        56: .line 1194
      StackMap locals:
      StackMap stack:
            aload 6
            monitorexit
        57: goto 72
      StackMap locals:
      StackMap stack: java.lang.Throwable
        58: aload 6
            monitorexit
        59: athrow
        60: .line 1211
      StackMap locals: org.apache.catalina.servlets.CGIServlet$CGIEnvironment java.lang.StringBuilder java.lang.StringBuilder java.io.InputStream java.io.File java.io.File
      StackMap stack: java.io.IOException
            astore 6 /* ioe */
        start local 6 // java.io.IOException ioe
        61: .line 1212
            getstatic org.apache.catalina.servlets.CGIServlet.log:Lorg/apache/juli/logging/Log;
            getstatic org.apache.catalina.servlets.CGIServlet.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "cgiServlet.expandFail"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* srcPath */
            aastore
            dup
            iconst_1
            aload 2 /* destPath */
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            aload 6 /* ioe */
            invokeinterface org.apache.juli.logging.Log.warn:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        62: .line 1214
            aload 4 /* f */
            invokevirtual java.io.File.exists:()Z
            ifeq 72
        63: .line 1215
            aload 4 /* f */
            invokevirtual java.io.File.delete:()Z
            ifne 72
        64: .line 1216
            getstatic org.apache.catalina.servlets.CGIServlet.log:Lorg/apache/juli/logging/Log;
            getstatic org.apache.catalina.servlets.CGIServlet.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "cgiServlet.expandDeleteFail"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 4 /* f */
            invokevirtual java.io.File.getAbsolutePath:()Ljava/lang/String;
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface org.apache.juli.logging.Log.warn:(Ljava/lang/Object;)V
        end local 6 // java.io.IOException ioe
        end local 5 // java.io.File dir
        end local 4 // java.io.File f
        65: .line 1220
            goto 72
      StackMap locals: org.apache.catalina.servlets.CGIServlet$CGIEnvironment java.lang.StringBuilder java.lang.StringBuilder java.io.InputStream
      StackMap stack: java.lang.Throwable
        66: astore 7
        67: .line 1222
            aload 3 /* is */
            invokevirtual java.io.InputStream.close:()V
        68: .line 1223
            goto 71
      StackMap locals: org.apache.catalina.servlets.CGIServlet$CGIEnvironment java.lang.StringBuilder java.lang.StringBuilder java.io.InputStream top top top java.lang.Throwable
      StackMap stack: java.io.IOException
        69: astore 8 /* e */
        start local 8 // java.io.IOException e
        70: .line 1224
            getstatic org.apache.catalina.servlets.CGIServlet.log:Lorg/apache/juli/logging/Log;
            getstatic org.apache.catalina.servlets.CGIServlet.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "cgiServlet.expandCloseFail"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* srcPath */
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            aload 8 /* e */
            invokeinterface org.apache.juli.logging.Log.warn:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        end local 8 // java.io.IOException e
        71: .line 1226
      StackMap locals:
      StackMap stack:
            aload 7
            athrow
        72: .line 1222
      StackMap locals: org.apache.catalina.servlets.CGIServlet$CGIEnvironment java.lang.StringBuilder java.lang.StringBuilder java.io.InputStream
      StackMap stack:
            aload 3 /* is */
            invokevirtual java.io.InputStream.close:()V
        73: .line 1223
            goto 76
      StackMap locals:
      StackMap stack: java.io.IOException
        74: astore 8 /* e */
        start local 8 // java.io.IOException e
        75: .line 1224
            getstatic org.apache.catalina.servlets.CGIServlet.log:Lorg/apache/juli/logging/Log;
            getstatic org.apache.catalina.servlets.CGIServlet.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "cgiServlet.expandCloseFail"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* srcPath */
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            aload 8 /* e */
            invokeinterface org.apache.juli.logging.Log.warn:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        end local 8 // java.io.IOException e
        76: .line 1227
      StackMap locals:
      StackMap stack:
            return
        end local 3 // java.io.InputStream is
        end local 2 // java.lang.StringBuilder destPath
        end local 1 // java.lang.StringBuilder srcPath
        end local 0 // org.apache.catalina.servlets.CGIServlet$CGIEnvironment this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   77     0        this  Lorg/apache/catalina/servlets/CGIServlet$CGIEnvironment;
            1   77     1     srcPath  Ljava/lang/StringBuilder;
            2   77     2    destPath  Ljava/lang/StringBuilder;
            3   77     3          is  Ljava/io/InputStream;
           12   20     4  pathWalker  Ljava/util/StringTokenizer;
           24   65     4           f  Ljava/io/File;
           31   65     5         dir  Ljava/io/File;
           61   65     6         ioe  Ljava/io/IOException;
           28   29     8           e  Ljava/io/IOException;
           36   37     8           e  Ljava/io/IOException;
           44   45     8           e  Ljava/io/IOException;
           51   52     8           e  Ljava/io/IOException;
           70   71     8           e  Ljava/io/IOException;
           75   76     8           e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
          25    26      27  Class java.io.IOException
          33    34      35  Class java.io.IOException
          41    42      43  Class java.io.IOException
          48    49      50  Class java.io.IOException
          39    41      58  any
          46    48      58  any
          53    57      58  any
          58    59      58  any
          38    41      60  Class java.io.IOException
          46    48      60  Class java.io.IOException
          53    60      60  Class java.io.IOException
          23    25      66  any
          30    33      66  any
          38    41      66  any
          46    48      66  any
          53    66      66  any
          67    68      69  Class java.io.IOException
          72    73      74  Class java.io.IOException

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=1
        start local 0 // org.apache.catalina.servlets.CGIServlet$CGIEnvironment this
         0: .line 1239
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 1 /* sb */
        start local 1 // java.lang.StringBuilder sb
         1: .line 1241
            aload 1 /* sb */
            ldc "CGIEnvironment Info:"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         2: .line 1242
            aload 1 /* sb */
            invokestatic java.lang.System.lineSeparator:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         3: .line 1244
            aload 0 /* this */
            invokevirtual org.apache.catalina.servlets.CGIServlet$CGIEnvironment.isValid:()Z
            ifeq 36
         4: .line 1245
            aload 1 /* sb */
            ldc "Validity: [true]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         5: .line 1246
            aload 1 /* sb */
            invokestatic java.lang.System.lineSeparator:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         6: .line 1248
            aload 1 /* sb */
            ldc "Environment values:"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         7: .line 1249
            aload 1 /* sb */
            invokestatic java.lang.System.lineSeparator:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         8: .line 1250
            aload 0 /* this */
            getfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.env:Ljava/util/Hashtable;
            invokevirtual java.util.Hashtable.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 3
            goto 16
      StackMap locals: org.apache.catalina.servlets.CGIServlet$CGIEnvironment java.lang.StringBuilder top java.util.Iterator
      StackMap stack:
         9: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 2 /* entry */
        start local 2 // java.util.Map$Entry entry
        10: .line 1251
            aload 1 /* sb */
            ldc "  "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        11: .line 1252
            aload 1 /* sb */
            aload 2 /* entry */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        12: .line 1253
            aload 1 /* sb */
            ldc ": ["
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        13: .line 1254
            aload 1 /* sb */
            aload 0 /* this */
            aload 2 /* entry */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast java.lang.String
            ldc "will be set to blank"
            invokevirtual org.apache.catalina.servlets.CGIServlet$CGIEnvironment.blanksToString:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        14: .line 1255
            aload 1 /* sb */
            bipush 93
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        15: .line 1256
            aload 1 /* sb */
            invokestatic java.lang.System.lineSeparator:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 2 // java.util.Map$Entry entry
        16: .line 1250
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 9
        17: .line 1259
            aload 1 /* sb */
            ldc "Derived Command :["
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        18: .line 1260
            aload 1 /* sb */
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.command:Ljava/lang/String;
            invokevirtual org.apache.catalina.servlets.CGIServlet$CGIEnvironment.nullsToBlanks:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        19: .line 1261
            aload 1 /* sb */
            bipush 93
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        20: .line 1262
            aload 1 /* sb */
            invokestatic java.lang.System.lineSeparator:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        21: .line 1265
            aload 1 /* sb */
            ldc "Working Directory: ["
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        22: .line 1266
            aload 0 /* this */
            getfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.workingDirectory:Ljava/io/File;
            ifnull 24
        23: .line 1267
            aload 1 /* sb */
            aload 0 /* this */
            getfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.workingDirectory:Ljava/io/File;
            invokevirtual java.io.File.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        24: .line 1269
      StackMap locals: org.apache.catalina.servlets.CGIServlet$CGIEnvironment java.lang.StringBuilder
      StackMap stack:
            aload 1 /* sb */
            bipush 93
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        25: .line 1270
            aload 1 /* sb */
            invokestatic java.lang.System.lineSeparator:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        26: .line 1272
            aload 1 /* sb */
            ldc "Command Line Params:"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        27: .line 1273
            aload 1 /* sb */
            invokestatic java.lang.System.lineSeparator:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        28: .line 1274
            aload 0 /* this */
            getfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.cmdLineParameters:Ljava/util/ArrayList;
            invokevirtual java.util.ArrayList.iterator:()Ljava/util/Iterator;
            astore 3
            goto 34
      StackMap locals: org.apache.catalina.servlets.CGIServlet$CGIEnvironment java.lang.StringBuilder top java.util.Iterator
      StackMap stack:
        29: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 2 /* param */
        start local 2 // java.lang.String param
        30: .line 1275
            aload 1 /* sb */
            ldc "  ["
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        31: .line 1276
            aload 1 /* sb */
            aload 2 /* param */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        32: .line 1277
            aload 1 /* sb */
            bipush 93
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        33: .line 1278
            aload 1 /* sb */
            invokestatic java.lang.System.lineSeparator:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 2 // java.lang.String param
        34: .line 1274
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 29
        35: .line 1280
            goto 46
        36: .line 1281
      StackMap locals: org.apache.catalina.servlets.CGIServlet$CGIEnvironment java.lang.StringBuilder
      StackMap stack:
            aload 1 /* sb */
            ldc "Validity: [false]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        37: .line 1282
            aload 1 /* sb */
            invokestatic java.lang.System.lineSeparator:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        38: .line 1283
            aload 1 /* sb */
            ldc "CGI script not found or not specified."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        39: .line 1284
            aload 1 /* sb */
            invokestatic java.lang.System.lineSeparator:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        40: .line 1285
            aload 1 /* sb */
            ldc "Check the HttpServletRequest pathInfo property to see if it is what "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        41: .line 1286
            aload 1 /* sb */
            invokestatic java.lang.System.lineSeparator:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        42: .line 1287
            aload 1 /* sb */
            ldc "you meant it to be. You must specify an existent and executable file "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        43: .line 1288
            aload 1 /* sb */
            invokestatic java.lang.System.lineSeparator:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        44: .line 1289
            aload 1 /* sb */
            ldc "as part of the path-info."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        45: .line 1290
            aload 1 /* sb */
            invokestatic java.lang.System.lineSeparator:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        46: .line 1293
      StackMap locals:
      StackMap stack:
            aload 1 /* sb */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 1 // java.lang.StringBuilder sb
        end local 0 // org.apache.catalina.servlets.CGIServlet$CGIEnvironment this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   47     0   this  Lorg/apache/catalina/servlets/CGIServlet$CGIEnvironment;
            1   47     1     sb  Ljava/lang/StringBuilder;
           10   16     2  entry  Ljava/util/Map$Entry<Ljava/lang/String;Ljava/lang/String;>;
           30   34     2  param  Ljava/lang/String;

  protected java.lang.String getCommand();
    descriptor: ()Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.catalina.servlets.CGIServlet$CGIEnvironment this
         0: .line 1304
            aload 0 /* this */
            getfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.command:Ljava/lang/String;
            areturn
        end local 0 // org.apache.catalina.servlets.CGIServlet$CGIEnvironment this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/catalina/servlets/CGIServlet$CGIEnvironment;

  protected java.io.File getWorkingDirectory();
    descriptor: ()Ljava/io/File;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.catalina.servlets.CGIServlet$CGIEnvironment this
         0: .line 1315
            aload 0 /* this */
            getfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.workingDirectory:Ljava/io/File;
            areturn
        end local 0 // org.apache.catalina.servlets.CGIServlet$CGIEnvironment this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/catalina/servlets/CGIServlet$CGIEnvironment;

  protected java.util.Hashtable<java.lang.String, java.lang.String> getEnvironment();
    descriptor: ()Ljava/util/Hashtable;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.catalina.servlets.CGIServlet$CGIEnvironment this
         0: .line 1326
            aload 0 /* this */
            getfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.env:Ljava/util/Hashtable;
            areturn
        end local 0 // org.apache.catalina.servlets.CGIServlet$CGIEnvironment this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/catalina/servlets/CGIServlet$CGIEnvironment;
    Signature: ()Ljava/util/Hashtable<Ljava/lang/String;Ljava/lang/String;>;

  protected java.util.ArrayList<java.lang.String> getParameters();
    descriptor: ()Ljava/util/ArrayList;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.catalina.servlets.CGIServlet$CGIEnvironment this
         0: .line 1337
            aload 0 /* this */
            getfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.cmdLineParameters:Ljava/util/ArrayList;
            areturn
        end local 0 // org.apache.catalina.servlets.CGIServlet$CGIEnvironment this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/catalina/servlets/CGIServlet$CGIEnvironment;
    Signature: ()Ljava/util/ArrayList<Ljava/lang/String;>;

  protected boolean isValid();
    descriptor: ()Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.catalina.servlets.CGIServlet$CGIEnvironment this
         0: .line 1349
            aload 0 /* this */
            getfield org.apache.catalina.servlets.CGIServlet$CGIEnvironment.valid:Z
            ireturn
        end local 0 // org.apache.catalina.servlets.CGIServlet$CGIEnvironment this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/catalina/servlets/CGIServlet$CGIEnvironment;

  protected java.lang.String nullsToBlanks(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.apache.catalina.servlets.CGIServlet$CGIEnvironment this
        start local 1 // java.lang.String s
         0: .line 1361
            aload 0 /* this */
            aload 1 /* s */
            ldc ""
            invokevirtual org.apache.catalina.servlets.CGIServlet$CGIEnvironment.nullsToString:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            areturn
        end local 1 // java.lang.String s
        end local 0 // org.apache.catalina.servlets.CGIServlet$CGIEnvironment this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/catalina/servlets/CGIServlet$CGIEnvironment;
            0    1     1     s  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      s     

  protected java.lang.String nullsToString(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=3, args_size=3
        start local 0 // org.apache.catalina.servlets.CGIServlet$CGIEnvironment this
        start local 1 // java.lang.String couldBeNull
        start local 2 // java.lang.String subForNulls
         0: .line 1375
            aload 1 /* couldBeNull */
            ifnonnull 1
            aload 2 /* subForNulls */
            goto 2
      StackMap locals:
      StackMap stack:
         1: aload 1 /* couldBeNull */
      StackMap locals:
      StackMap stack: java.lang.String
         2: areturn
        end local 2 // java.lang.String subForNulls
        end local 1 // java.lang.String couldBeNull
        end local 0 // org.apache.catalina.servlets.CGIServlet$CGIEnvironment this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    3     0         this  Lorg/apache/catalina/servlets/CGIServlet$CGIEnvironment;
            0    3     1  couldBeNull  Ljava/lang/String;
            0    3     2  subForNulls  Ljava/lang/String;
    MethodParameters:
             Name  Flags
      couldBeNull  
      subForNulls  

  protected java.lang.String blanksToString(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=3, args_size=3
        start local 0 // org.apache.catalina.servlets.CGIServlet$CGIEnvironment this
        start local 1 // java.lang.String couldBeBlank
        start local 2 // java.lang.String subForBlanks
         0: .line 1389
            aload 1 /* couldBeBlank */
            ifnull 1
            aload 1 /* couldBeBlank */
            invokevirtual java.lang.String.isEmpty:()Z
            ifeq 2
         1: .line 1390
      StackMap locals:
      StackMap stack:
            aload 2 /* subForBlanks */
            goto 3
         2: .line 1391
      StackMap locals:
      StackMap stack:
            aload 1 /* couldBeBlank */
         3: .line 1389
      StackMap locals:
      StackMap stack: java.lang.String
            areturn
        end local 2 // java.lang.String subForBlanks
        end local 1 // java.lang.String couldBeBlank
        end local 0 // org.apache.catalina.servlets.CGIServlet$CGIEnvironment this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    4     0          this  Lorg/apache/catalina/servlets/CGIServlet$CGIEnvironment;
            0    4     1  couldBeBlank  Ljava/lang/String;
            0    4     2  subForBlanks  Ljava/lang/String;
    MethodParameters:
              Name  Flags
      couldBeBlank  
      subForBlanks  
}
SourceFile: "CGIServlet.java"
NestHost: org.apache.catalina.servlets.CGIServlet
InnerClasses:
  public abstract Entry = java.util.Map$Entry of java.util.Map
  protected CGIEnvironment = org.apache.catalina.servlets.CGIServlet$CGIEnvironment of org.apache.catalina.servlets.CGIServlet