public class org.apache.catalina.valves.RemoteIpValve extends org.apache.catalina.valves.ValveBase
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.catalina.valves.RemoteIpValve
  super_class: org.apache.catalina.valves.ValveBase
{
  private static final java.util.regex.Pattern commaSeparatedValuesPattern;
    descriptor: Ljava/util/regex/Pattern;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final org.apache.juli.logging.Log log;
    descriptor: Lorg/apache/juli/logging/Log;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

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

  private boolean changeLocalName;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private int httpServerPort;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private int httpsServerPort;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

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

  private boolean changeLocalPort;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private java.util.regex.Pattern internalProxies;
    descriptor: Ljava/util/regex/Pattern;
    flags: (0x0002) ACC_PRIVATE

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

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

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

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

  private boolean requestAttributesEnabled;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private java.util.regex.Pattern trustedProxies;
    descriptor: Ljava/util/regex/Pattern;
    flags: (0x0002) ACC_PRIVATE

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 361
            ldc "\\s*,\\s*"
            invokestatic java.util.regex.Pattern.compile:(Ljava/lang/String;)Ljava/util/regex/Pattern;
            putstatic org.apache.catalina.valves.RemoteIpValve.commaSeparatedValuesPattern:Ljava/util/regex/Pattern;
         1: .line 366
            ldc Lorg/apache/catalina/valves/RemoteIpValve;
            invokestatic org.apache.juli.logging.LogFactory.getLog:(Ljava/lang/Class;)Lorg/apache/juli/logging/Log;
            putstatic org.apache.catalina.valves.RemoteIpValve.log:Lorg/apache/juli/logging/Log;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  protected static java.lang.String[] commaDelimitedListToStringArray(java.lang.String);
    descriptor: (Ljava/lang/String;)[Ljava/lang/String;
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.String commaDelimitedStrings
         0: .line 374
            aload 0 /* commaDelimitedStrings */
            ifnull 1
            aload 0 /* commaDelimitedStrings */
            invokevirtual java.lang.String.length:()I
            ifne 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
            anewarray java.lang.String
            goto 4
      StackMap locals:
      StackMap stack:
         2: getstatic org.apache.catalina.valves.RemoteIpValve.commaSeparatedValuesPattern:Ljava/util/regex/Pattern;
         3: .line 375
            aload 0 /* commaDelimitedStrings */
            invokevirtual java.util.regex.Pattern.split:(Ljava/lang/CharSequence;)[Ljava/lang/String;
         4: .line 374
      StackMap locals:
      StackMap stack: java.lang.String[]
            areturn
        end local 0 // java.lang.String commaDelimitedStrings
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0    5     0  commaDelimitedStrings  Ljava/lang/String;
    MethodParameters:
                       Name  Flags
      commaDelimitedStrings  

  protected static java.lang.String listToCommaDelimitedString(java.util.List<java.lang.String>);
    descriptor: (Ljava/util/List;)Ljava/lang/String;
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=2, locals=4, args_size=1
        start local 0 // java.util.List stringList
         0: .line 384
            aload 0 /* stringList */
            ifnonnull 2
         1: .line 385
            ldc ""
            areturn
         2: .line 387
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 1 /* result */
        start local 1 // java.lang.StringBuilder result
         3: .line 388
            aload 0 /* stringList */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 2 /* it */
        start local 2 // java.util.Iterator it
         4: goto 10
         5: .line 389
      StackMap locals: java.lang.StringBuilder java.util.Iterator
      StackMap stack:
            aload 2 /* it */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            astore 3 /* element */
        start local 3 // java.lang.Object element
         6: .line 390
            aload 3 /* element */
            ifnull 10
         7: .line 391
            aload 1 /* result */
            aload 3 /* element */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            pop
         8: .line 392
            aload 2 /* it */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifeq 10
         9: .line 393
            aload 1 /* result */
            ldc ", "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 3 // java.lang.Object element
        10: .line 388
      StackMap locals:
      StackMap stack:
            aload 2 /* it */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 5
        end local 2 // java.util.Iterator it
        11: .line 397
            aload 1 /* result */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 1 // java.lang.StringBuilder result
        end local 0 // java.util.List stringList
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   12     0  stringList  Ljava/util/List<Ljava/lang/String;>;
            3   12     1      result  Ljava/lang/StringBuilder;
            4   11     2          it  Ljava/util/Iterator<Ljava/lang/String;>;
            6   10     3     element  Ljava/lang/Object;
    Signature: (Ljava/util/List<Ljava/lang/String;>;)Ljava/lang/String;
    MethodParameters:
            Name  Flags
      stringList  

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.apache.catalina.valves.RemoteIpValve this
         0: .line 468
            aload 0 /* this */
            iconst_1
            invokespecial org.apache.catalina.valves.ValveBase.<init>:(Z)V
         1: .line 400
            aload 0 /* this */
            aconst_null
            putfield org.apache.catalina.valves.RemoteIpValve.hostHeader:Ljava/lang/String;
         2: .line 402
            aload 0 /* this */
            iconst_0
            putfield org.apache.catalina.valves.RemoteIpValve.changeLocalName:Z
         3: .line 407
            aload 0 /* this */
            bipush 80
            putfield org.apache.catalina.valves.RemoteIpValve.httpServerPort:I
         4: .line 412
            aload 0 /* this */
            sipush 443
            putfield org.apache.catalina.valves.RemoteIpValve.httpsServerPort:I
         5: .line 414
            aload 0 /* this */
            aconst_null
            putfield org.apache.catalina.valves.RemoteIpValve.portHeader:Ljava/lang/String;
         6: .line 416
            aload 0 /* this */
            iconst_0
            putfield org.apache.catalina.valves.RemoteIpValve.changeLocalPort:Z
         7: .line 421
            aload 0 /* this */
         8: .line 422
            ldc "10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}|192\\.168\\.\\d{1,3}\\.\\d{1,3}|169\\.254\\.\\d{1,3}\\.\\d{1,3}|127\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}|172\\.1[6-9]{1}\\.\\d{1,3}\\.\\d{1,3}|172\\.2[0-9]{1}\\.\\d{1,3}\\.\\d{1,3}|172\\.3[0-1]{1}\\.\\d{1,3}\\.\\d{1,3}|0:0:0:0:0:0:0:1|::1"
         9: .line 421
            invokestatic java.util.regex.Pattern.compile:(Ljava/lang/String;)Ljava/util/regex/Pattern;
            putfield org.apache.catalina.valves.RemoteIpValve.internalProxies:Ljava/util/regex/Pattern;
        10: .line 434
            aload 0 /* this */
            ldc "X-Forwarded-Proto"
            putfield org.apache.catalina.valves.RemoteIpValve.protocolHeader:Ljava/lang/String;
        11: .line 439
            aload 0 /* this */
            ldc "https"
            putfield org.apache.catalina.valves.RemoteIpValve.protocolHeaderHttpsValue:Ljava/lang/String;
        12: .line 444
            aload 0 /* this */
            ldc "X-Forwarded-By"
            putfield org.apache.catalina.valves.RemoteIpValve.proxiesHeader:Ljava/lang/String;
        13: .line 449
            aload 0 /* this */
            ldc "X-Forwarded-For"
            putfield org.apache.catalina.valves.RemoteIpValve.remoteIpHeader:Ljava/lang/String;
        14: .line 454
            aload 0 /* this */
            iconst_1
            putfield org.apache.catalina.valves.RemoteIpValve.requestAttributesEnabled:Z
        15: .line 459
            aload 0 /* this */
            aconst_null
            putfield org.apache.catalina.valves.RemoteIpValve.trustedProxies:Ljava/util/regex/Pattern;
        16: .line 469
            return
        end local 0 // org.apache.catalina.valves.RemoteIpValve this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   17     0  this  Lorg/apache/catalina/valves/RemoteIpValve;

  public java.lang.String getHostHeader();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.catalina.valves.RemoteIpValve this
         0: .line 479
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.hostHeader:Ljava/lang/String;
            areturn
        end local 0 // org.apache.catalina.valves.RemoteIpValve this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/catalina/valves/RemoteIpValve;

  public void setHostHeader(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.catalina.valves.RemoteIpValve this
        start local 1 // java.lang.String hostHeader
         0: .line 490
            aload 0 /* this */
            aload 1 /* hostHeader */
            putfield org.apache.catalina.valves.RemoteIpValve.hostHeader:Ljava/lang/String;
         1: .line 491
            return
        end local 1 // java.lang.String hostHeader
        end local 0 // org.apache.catalina.valves.RemoteIpValve this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0        this  Lorg/apache/catalina/valves/RemoteIpValve;
            0    2     1  hostHeader  Ljava/lang/String;
    MethodParameters:
            Name  Flags
      hostHeader  

  public boolean isChangeLocalName();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.catalina.valves.RemoteIpValve this
         0: .line 494
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.changeLocalName:Z
            ireturn
        end local 0 // org.apache.catalina.valves.RemoteIpValve this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/catalina/valves/RemoteIpValve;

  public void setChangeLocalName(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.catalina.valves.RemoteIpValve this
        start local 1 // boolean changeLocalName
         0: .line 498
            aload 0 /* this */
            iload 1 /* changeLocalName */
            putfield org.apache.catalina.valves.RemoteIpValve.changeLocalName:Z
         1: .line 499
            return
        end local 1 // boolean changeLocalName
        end local 0 // org.apache.catalina.valves.RemoteIpValve this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    2     0             this  Lorg/apache/catalina/valves/RemoteIpValve;
            0    2     1  changeLocalName  Z
    MethodParameters:
                 Name  Flags
      changeLocalName  

  public int getHttpServerPort();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.catalina.valves.RemoteIpValve this
         0: .line 502
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.httpServerPort:I
            ireturn
        end local 0 // org.apache.catalina.valves.RemoteIpValve this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/catalina/valves/RemoteIpValve;

  public int getHttpsServerPort();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.catalina.valves.RemoteIpValve this
         0: .line 506
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.httpsServerPort:I
            ireturn
        end local 0 // org.apache.catalina.valves.RemoteIpValve this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/catalina/valves/RemoteIpValve;

  public java.lang.String getPortHeader();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.catalina.valves.RemoteIpValve this
         0: .line 517
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.portHeader:Ljava/lang/String;
            areturn
        end local 0 // org.apache.catalina.valves.RemoteIpValve this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/catalina/valves/RemoteIpValve;

  public void setPortHeader(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.catalina.valves.RemoteIpValve this
        start local 1 // java.lang.String portHeader
         0: .line 528
            aload 0 /* this */
            aload 1 /* portHeader */
            putfield org.apache.catalina.valves.RemoteIpValve.portHeader:Ljava/lang/String;
         1: .line 529
            return
        end local 1 // java.lang.String portHeader
        end local 0 // org.apache.catalina.valves.RemoteIpValve this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0        this  Lorg/apache/catalina/valves/RemoteIpValve;
            0    2     1  portHeader  Ljava/lang/String;
    MethodParameters:
            Name  Flags
      portHeader  

  public boolean isChangeLocalPort();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.catalina.valves.RemoteIpValve this
         0: .line 532
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.changeLocalPort:Z
            ireturn
        end local 0 // org.apache.catalina.valves.RemoteIpValve this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/catalina/valves/RemoteIpValve;

  public void setChangeLocalPort(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.catalina.valves.RemoteIpValve this
        start local 1 // boolean changeLocalPort
         0: .line 536
            aload 0 /* this */
            iload 1 /* changeLocalPort */
            putfield org.apache.catalina.valves.RemoteIpValve.changeLocalPort:Z
         1: .line 537
            return
        end local 1 // boolean changeLocalPort
        end local 0 // org.apache.catalina.valves.RemoteIpValve this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    2     0             this  Lorg/apache/catalina/valves/RemoteIpValve;
            0    2     1  changeLocalPort  Z
    MethodParameters:
                 Name  Flags
      changeLocalPort  

  public java.lang.String getInternalProxies();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.catalina.valves.RemoteIpValve this
         0: .line 544
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.internalProxies:Ljava/util/regex/Pattern;
            ifnonnull 2
         1: .line 545
            aconst_null
            areturn
         2: .line 547
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.internalProxies:Ljava/util/regex/Pattern;
            invokevirtual java.util.regex.Pattern.toString:()Ljava/lang/String;
            areturn
        end local 0 // org.apache.catalina.valves.RemoteIpValve this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/apache/catalina/valves/RemoteIpValve;

  public java.lang.String getProtocolHeader();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.catalina.valves.RemoteIpValve this
         0: .line 555
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.protocolHeader:Ljava/lang/String;
            areturn
        end local 0 // org.apache.catalina.valves.RemoteIpValve this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/catalina/valves/RemoteIpValve;

  public java.lang.String getProtocolHeaderHttpsValue();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.catalina.valves.RemoteIpValve this
         0: .line 563
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.protocolHeaderHttpsValue:Ljava/lang/String;
            areturn
        end local 0 // org.apache.catalina.valves.RemoteIpValve this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/catalina/valves/RemoteIpValve;

  public java.lang.String getProxiesHeader();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.catalina.valves.RemoteIpValve this
         0: .line 571
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.proxiesHeader:Ljava/lang/String;
            areturn
        end local 0 // org.apache.catalina.valves.RemoteIpValve this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/catalina/valves/RemoteIpValve;

  public java.lang.String getRemoteIpHeader();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.catalina.valves.RemoteIpValve this
         0: .line 579
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.remoteIpHeader:Ljava/lang/String;
            areturn
        end local 0 // org.apache.catalina.valves.RemoteIpValve this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/catalina/valves/RemoteIpValve;

  public boolean getRequestAttributesEnabled();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.catalina.valves.RemoteIpValve this
         0: .line 588
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.requestAttributesEnabled:Z
            ireturn
        end local 0 // org.apache.catalina.valves.RemoteIpValve this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/catalina/valves/RemoteIpValve;

  public java.lang.String getTrustedProxies();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.catalina.valves.RemoteIpValve this
         0: .line 596
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.trustedProxies:Ljava/util/regex/Pattern;
            ifnonnull 2
         1: .line 597
            aconst_null
            areturn
         2: .line 599
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.trustedProxies:Ljava/util/regex/Pattern;
            invokevirtual java.util.regex.Pattern.toString:()Ljava/lang/String;
            areturn
        end local 0 // org.apache.catalina.valves.RemoteIpValve this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/apache/catalina/valves/RemoteIpValve;

  public void invoke(org.apache.catalina.connector.Request, org.apache.catalina.connector.Response);
    descriptor: (Lorg/apache/catalina/connector/Request;Lorg/apache/catalina/connector/Response;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=22, args_size=3
        start local 0 // org.apache.catalina.valves.RemoteIpValve this
        start local 1 // org.apache.catalina.connector.Request request
        start local 2 // org.apache.catalina.connector.Response response
         0: .line 607
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getRemoteAddr:()Ljava/lang/String;
            astore 3 /* originalRemoteAddr */
        start local 3 // java.lang.String originalRemoteAddr
         1: .line 608
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getRemoteHost:()Ljava/lang/String;
            astore 4 /* originalRemoteHost */
        start local 4 // java.lang.String originalRemoteHost
         2: .line 609
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getScheme:()Ljava/lang/String;
            astore 5 /* originalScheme */
        start local 5 // java.lang.String originalScheme
         3: .line 610
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.isSecure:()Z
            istore 6 /* originalSecure */
        start local 6 // boolean originalSecure
         4: .line 611
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getServerName:()Ljava/lang/String;
            astore 7 /* originalServerName */
        start local 7 // java.lang.String originalServerName
         5: .line 612
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getLocalName:()Ljava/lang/String;
            astore 8 /* originalLocalName */
        start local 8 // java.lang.String originalLocalName
         6: .line 613
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getServerPort:()I
            istore 9 /* originalServerPort */
        start local 9 // int originalServerPort
         7: .line 614
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getLocalPort:()I
            istore 10 /* originalLocalPort */
        start local 10 // int originalLocalPort
         8: .line 615
            aload 1 /* request */
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.proxiesHeader:Ljava/lang/String;
            invokevirtual org.apache.catalina.connector.Request.getHeader:(Ljava/lang/String;)Ljava/lang/String;
            astore 11 /* originalProxiesHeader */
        start local 11 // java.lang.String originalProxiesHeader
         9: .line 616
            aload 1 /* request */
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.remoteIpHeader:Ljava/lang/String;
            invokevirtual org.apache.catalina.connector.Request.getHeader:(Ljava/lang/String;)Ljava/lang/String;
            astore 12 /* originalRemoteIpHeader */
        start local 12 // java.lang.String originalRemoteIpHeader
        10: .line 617
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.internalProxies:Ljava/util/regex/Pattern;
            ifnull 13
        11: .line 618
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.internalProxies:Ljava/util/regex/Pattern;
            aload 3 /* originalRemoteAddr */
            invokevirtual java.util.regex.Pattern.matcher:(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
            invokevirtual java.util.regex.Matcher.matches:()Z
            ifeq 13
        12: .line 617
            iconst_1
            goto 14
      StackMap locals: org.apache.catalina.valves.RemoteIpValve org.apache.catalina.connector.Request org.apache.catalina.connector.Response java.lang.String java.lang.String java.lang.String int java.lang.String java.lang.String int int java.lang.String java.lang.String
      StackMap stack:
        13: iconst_0
      StackMap locals:
      StackMap stack: int
        14: istore 13 /* isInternal */
        start local 13 // boolean isInternal
        15: .line 620
            iload 13 /* isInternal */
            ifne 17
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.trustedProxies:Ljava/util/regex/Pattern;
            ifnull 105
        16: .line 621
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.trustedProxies:Ljava/util/regex/Pattern;
            aload 3 /* originalRemoteAddr */
            invokevirtual java.util.regex.Pattern.matcher:(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
            invokevirtual java.util.regex.Matcher.matches:()Z
            ifeq 105
        17: .line 622
      StackMap locals: int
      StackMap stack:
            aconst_null
            astore 14 /* remoteIp */
        start local 14 // java.lang.String remoteIp
        18: .line 624
            new java.util.LinkedList
            dup
            invokespecial java.util.LinkedList.<init>:()V
            astore 15 /* proxiesHeaderValue */
        start local 15 // java.util.LinkedList proxiesHeaderValue
        19: .line 625
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 16 /* concatRemoteIpHeaderValue */
        start local 16 // java.lang.StringBuilder concatRemoteIpHeaderValue
        20: .line 627
            aload 1 /* request */
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.remoteIpHeader:Ljava/lang/String;
            invokevirtual org.apache.catalina.connector.Request.getHeaders:(Ljava/lang/String;)Ljava/util/Enumeration;
            astore 17 /* e */
        start local 17 // java.util.Enumeration e
        21: goto 25
        22: .line 628
      StackMap locals: org.apache.catalina.valves.RemoteIpValve org.apache.catalina.connector.Request org.apache.catalina.connector.Response java.lang.String java.lang.String java.lang.String int java.lang.String java.lang.String int int java.lang.String java.lang.String int java.lang.String java.util.LinkedList java.lang.StringBuilder java.util.Enumeration
      StackMap stack:
            aload 16 /* concatRemoteIpHeaderValue */
            invokevirtual java.lang.StringBuilder.length:()I
            ifle 24
        23: .line 629
            aload 16 /* concatRemoteIpHeaderValue */
            ldc ", "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        24: .line 632
      StackMap locals:
      StackMap stack:
            aload 16 /* concatRemoteIpHeaderValue */
            aload 17 /* e */
            invokeinterface java.util.Enumeration.nextElement:()Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        25: .line 627
      StackMap locals:
      StackMap stack:
            aload 17 /* e */
            invokeinterface java.util.Enumeration.hasMoreElements:()Z
            ifne 22
        end local 17 // java.util.Enumeration e
        26: .line 635
            aload 16 /* concatRemoteIpHeaderValue */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.apache.catalina.valves.RemoteIpValve.commaDelimitedListToStringArray:(Ljava/lang/String;)[Ljava/lang/String;
            astore 17 /* remoteIpHeaderValue */
        start local 17 // java.lang.String[] remoteIpHeaderValue
        27: .line 637
            iload 13 /* isInternal */
            ifne 29
        28: .line 638
            aload 15 /* proxiesHeaderValue */
            aload 3 /* originalRemoteAddr */
            invokevirtual java.util.LinkedList.addFirst:(Ljava/lang/Object;)V
        29: .line 641
      StackMap locals: org.apache.catalina.valves.RemoteIpValve org.apache.catalina.connector.Request org.apache.catalina.connector.Response java.lang.String java.lang.String java.lang.String int java.lang.String java.lang.String int int java.lang.String java.lang.String int java.lang.String java.util.LinkedList java.lang.StringBuilder java.lang.String[]
      StackMap stack:
            aload 17 /* remoteIpHeaderValue */
            arraylength
            iconst_1
            isub
            istore 18 /* idx */
        start local 18 // int idx
        30: goto 41
        31: .line 642
      StackMap locals: int
      StackMap stack:
            aload 17 /* remoteIpHeaderValue */
            iload 18 /* idx */
            aaload
            astore 19 /* currentRemoteIp */
        start local 19 // java.lang.String currentRemoteIp
        32: .line 643
            aload 19 /* currentRemoteIp */
            astore 14 /* remoteIp */
        33: .line 644
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.internalProxies:Ljava/util/regex/Pattern;
            ifnull 34
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.internalProxies:Ljava/util/regex/Pattern;
            aload 19 /* currentRemoteIp */
            invokevirtual java.util.regex.Pattern.matcher:(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
            invokevirtual java.util.regex.Matcher.matches:()Z
            ifne 40
        34: .line 646
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.trustedProxies:Ljava/util/regex/Pattern;
            ifnull 38
        35: .line 647
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.trustedProxies:Ljava/util/regex/Pattern;
            aload 19 /* currentRemoteIp */
            invokevirtual java.util.regex.Pattern.matcher:(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
            invokevirtual java.util.regex.Matcher.matches:()Z
            ifeq 38
        36: .line 648
            aload 15 /* proxiesHeaderValue */
            aload 19 /* currentRemoteIp */
            invokevirtual java.util.LinkedList.addFirst:(Ljava/lang/Object;)V
        37: .line 649
            goto 40
        38: .line 650
      StackMap locals:
      StackMap stack:
            iinc 18 /* idx */ -1
        39: .line 651
            goto 42
        end local 19 // java.lang.String currentRemoteIp
        40: .line 641
      StackMap locals:
      StackMap stack:
            iinc 18 /* idx */ -1
      StackMap locals:
      StackMap stack:
        41: iload 18 /* idx */
            ifge 31
        42: .line 655
      StackMap locals:
      StackMap stack:
            new java.util.LinkedList
            dup
            invokespecial java.util.LinkedList.<init>:()V
            astore 19 /* newRemoteIpHeaderValue */
        start local 19 // java.util.LinkedList newRemoteIpHeaderValue
        43: .line 656
            goto 47
        44: .line 657
      StackMap locals: java.util.LinkedList
      StackMap stack:
            aload 17 /* remoteIpHeaderValue */
            iload 18 /* idx */
            aaload
            astore 20 /* currentRemoteIp */
        start local 20 // java.lang.String currentRemoteIp
        45: .line 658
            aload 19 /* newRemoteIpHeaderValue */
            aload 20 /* currentRemoteIp */
            invokevirtual java.util.LinkedList.addFirst:(Ljava/lang/Object;)V
        end local 20 // java.lang.String currentRemoteIp
        46: .line 656
            iinc 18 /* idx */ -1
      StackMap locals:
      StackMap stack:
        47: iload 18 /* idx */
            ifge 44
        48: .line 660
            aload 14 /* remoteIp */
            ifnull 69
        49: .line 662
            aload 1 /* request */
            aload 14 /* remoteIp */
            invokevirtual org.apache.catalina.connector.Request.setRemoteAddr:(Ljava/lang/String;)V
        50: .line 663
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getConnector:()Lorg/apache/catalina/connector/Connector;
            invokevirtual org.apache.catalina.connector.Connector.getEnableLookups:()Z
            ifeq 58
        51: .line 669
            aload 14 /* remoteIp */
            invokestatic java.net.InetAddress.getByName:(Ljava/lang/String;)Ljava/net/InetAddress;
            astore 20 /* inetAddress */
        start local 20 // java.net.InetAddress inetAddress
        52: .line 671
            aload 1 /* request */
            aload 20 /* inetAddress */
            invokevirtual java.net.InetAddress.getCanonicalHostName:()Ljava/lang/String;
            invokevirtual org.apache.catalina.connector.Request.setRemoteHost:(Ljava/lang/String;)V
        end local 20 // java.net.InetAddress inetAddress
        53: .line 672
            goto 59
      StackMap locals:
      StackMap stack: java.net.UnknownHostException
        54: astore 20 /* e */
        start local 20 // java.net.UnknownHostException e
        55: .line 673
            getstatic org.apache.catalina.valves.RemoteIpValve.log:Lorg/apache/juli/logging/Log;
            getstatic org.apache.catalina.valves.RemoteIpValve.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "remoteIpValve.invalidRemoteAddress"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 14 /* remoteIp */
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            aload 20 /* e */
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        56: .line 674
            aload 1 /* request */
            aload 14 /* remoteIp */
            invokevirtual org.apache.catalina.connector.Request.setRemoteHost:(Ljava/lang/String;)V
        end local 20 // java.net.UnknownHostException e
        57: .line 676
            goto 59
        58: .line 677
      StackMap locals:
      StackMap stack:
            aload 1 /* request */
            aload 14 /* remoteIp */
            invokevirtual org.apache.catalina.connector.Request.setRemoteHost:(Ljava/lang/String;)V
        59: .line 680
      StackMap locals:
      StackMap stack:
            aload 15 /* proxiesHeaderValue */
            invokevirtual java.util.LinkedList.size:()I
            ifne 62
        60: .line 681
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getCoyoteRequest:()Lorg/apache/coyote/Request;
            invokevirtual org.apache.coyote.Request.getMimeHeaders:()Lorg/apache/tomcat/util/http/MimeHeaders;
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.proxiesHeader:Ljava/lang/String;
            invokevirtual org.apache.tomcat.util.http.MimeHeaders.removeHeader:(Ljava/lang/String;)V
        61: .line 682
            goto 64
        62: .line 683
      StackMap locals:
      StackMap stack:
            aload 15 /* proxiesHeaderValue */
            invokestatic org.apache.catalina.valves.RemoteIpValve.listToCommaDelimitedString:(Ljava/util/List;)Ljava/lang/String;
            astore 20 /* commaDelimitedListOfProxies */
        start local 20 // java.lang.String commaDelimitedListOfProxies
        63: .line 684
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getCoyoteRequest:()Lorg/apache/coyote/Request;
            invokevirtual org.apache.coyote.Request.getMimeHeaders:()Lorg/apache/tomcat/util/http/MimeHeaders;
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.proxiesHeader:Ljava/lang/String;
            invokevirtual org.apache.tomcat.util.http.MimeHeaders.setValue:(Ljava/lang/String;)Lorg/apache/tomcat/util/buf/MessageBytes;
            aload 20 /* commaDelimitedListOfProxies */
            invokevirtual org.apache.tomcat.util.buf.MessageBytes.setString:(Ljava/lang/String;)V
        end local 20 // java.lang.String commaDelimitedListOfProxies
        64: .line 686
      StackMap locals:
      StackMap stack:
            aload 19 /* newRemoteIpHeaderValue */
            invokevirtual java.util.LinkedList.size:()I
            ifne 67
        65: .line 687
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getCoyoteRequest:()Lorg/apache/coyote/Request;
            invokevirtual org.apache.coyote.Request.getMimeHeaders:()Lorg/apache/tomcat/util/http/MimeHeaders;
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.remoteIpHeader:Ljava/lang/String;
            invokevirtual org.apache.tomcat.util.http.MimeHeaders.removeHeader:(Ljava/lang/String;)V
        66: .line 688
            goto 69
        67: .line 689
      StackMap locals:
      StackMap stack:
            aload 19 /* newRemoteIpHeaderValue */
            invokestatic org.apache.catalina.valves.RemoteIpValve.listToCommaDelimitedString:(Ljava/util/List;)Ljava/lang/String;
            astore 20 /* commaDelimitedRemoteIpHeaderValue */
        start local 20 // java.lang.String commaDelimitedRemoteIpHeaderValue
        68: .line 690
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getCoyoteRequest:()Lorg/apache/coyote/Request;
            invokevirtual org.apache.coyote.Request.getMimeHeaders:()Lorg/apache/tomcat/util/http/MimeHeaders;
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.remoteIpHeader:Ljava/lang/String;
            invokevirtual org.apache.tomcat.util.http.MimeHeaders.setValue:(Ljava/lang/String;)Lorg/apache/tomcat/util/buf/MessageBytes;
            aload 20 /* commaDelimitedRemoteIpHeaderValue */
            invokevirtual org.apache.tomcat.util.buf.MessageBytes.setString:(Ljava/lang/String;)V
        end local 20 // java.lang.String commaDelimitedRemoteIpHeaderValue
        69: .line 694
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.protocolHeader:Ljava/lang/String;
            ifnull 80
        70: .line 695
            aload 1 /* request */
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.protocolHeader:Ljava/lang/String;
            invokevirtual org.apache.catalina.connector.Request.getHeader:(Ljava/lang/String;)Ljava/lang/String;
            astore 20 /* protocolHeaderValue */
        start local 20 // java.lang.String protocolHeaderValue
        71: .line 696
            aload 20 /* protocolHeaderValue */
            ifnull 80
        72: .line 699
            aload 0 /* this */
            aload 20 /* protocolHeaderValue */
            invokevirtual org.apache.catalina.valves.RemoteIpValve.isForwardedProtoHeaderValueSecure:(Ljava/lang/String;)Z
            ifeq 77
        73: .line 700
            aload 1 /* request */
            iconst_1
            invokevirtual org.apache.catalina.connector.Request.setSecure:(Z)V
        74: .line 701
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getCoyoteRequest:()Lorg/apache/coyote/Request;
            invokevirtual org.apache.coyote.Request.scheme:()Lorg/apache/tomcat/util/buf/MessageBytes;
            ldc "https"
            invokevirtual org.apache.tomcat.util.buf.MessageBytes.setString:(Ljava/lang/String;)V
        75: .line 702
            aload 0 /* this */
            aload 1 /* request */
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.httpsServerPort:I
            invokevirtual org.apache.catalina.valves.RemoteIpValve.setPorts:(Lorg/apache/catalina/connector/Request;I)V
        76: .line 703
            goto 80
        77: .line 704
      StackMap locals: java.lang.String
      StackMap stack:
            aload 1 /* request */
            iconst_0
            invokevirtual org.apache.catalina.connector.Request.setSecure:(Z)V
        78: .line 705
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getCoyoteRequest:()Lorg/apache/coyote/Request;
            invokevirtual org.apache.coyote.Request.scheme:()Lorg/apache/tomcat/util/buf/MessageBytes;
            ldc "http"
            invokevirtual org.apache.tomcat.util.buf.MessageBytes.setString:(Ljava/lang/String;)V
        79: .line 706
            aload 0 /* this */
            aload 1 /* request */
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.httpServerPort:I
            invokevirtual org.apache.catalina.valves.RemoteIpValve.setPorts:(Lorg/apache/catalina/connector/Request;I)V
        end local 20 // java.lang.String protocolHeaderValue
        80: .line 710
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.hostHeader:Ljava/lang/String;
            ifnull 93
        81: .line 711
            aload 1 /* request */
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.hostHeader:Ljava/lang/String;
            invokevirtual org.apache.catalina.connector.Request.getHeader:(Ljava/lang/String;)Ljava/lang/String;
            astore 20 /* hostHeaderValue */
        start local 20 // java.lang.String hostHeaderValue
        82: .line 712
            aload 20 /* hostHeaderValue */
            ifnull 93
        83: .line 714
            aload 20 /* hostHeaderValue */
            invokestatic org.apache.tomcat.util.http.parser.Host.parse:(Ljava/lang/String;)I
            istore 21 /* portIndex */
        start local 21 // int portIndex
        84: .line 715
            iload 21 /* portIndex */
            iconst_m1
            if_icmple 87
        85: .line 716
            getstatic org.apache.catalina.valves.RemoteIpValve.log:Lorg/apache/juli/logging/Log;
            getstatic org.apache.catalina.valves.RemoteIpValve.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "remoteIpValve.invalidHostWithPort"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 20 /* hostHeaderValue */
            aastore
            dup
            iconst_1
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.hostHeader: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.debug:(Ljava/lang/Object;)V
        86: .line 717
            aload 20 /* hostHeaderValue */
            iconst_0
            iload 21 /* portIndex */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 20 /* hostHeaderValue */
        87: .line 720
      StackMap locals: java.lang.String int
      StackMap stack:
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getCoyoteRequest:()Lorg/apache/coyote/Request;
            invokevirtual org.apache.coyote.Request.serverName:()Lorg/apache/tomcat/util/buf/MessageBytes;
            aload 20 /* hostHeaderValue */
            invokevirtual org.apache.tomcat.util.buf.MessageBytes.setString:(Ljava/lang/String;)V
        88: .line 721
            aload 0 /* this */
            invokevirtual org.apache.catalina.valves.RemoteIpValve.isChangeLocalName:()Z
            ifeq 93
        89: .line 722
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getCoyoteRequest:()Lorg/apache/coyote/Request;
            invokevirtual org.apache.coyote.Request.localName:()Lorg/apache/tomcat/util/buf/MessageBytes;
            aload 20 /* hostHeaderValue */
            invokevirtual org.apache.tomcat.util.buf.MessageBytes.setString:(Ljava/lang/String;)V
        end local 21 // int portIndex
        90: .line 725
            goto 93
      StackMap locals: org.apache.catalina.valves.RemoteIpValve org.apache.catalina.connector.Request org.apache.catalina.connector.Response java.lang.String java.lang.String java.lang.String int java.lang.String java.lang.String int int java.lang.String java.lang.String int java.lang.String java.util.LinkedList java.lang.StringBuilder java.lang.String[] int java.util.LinkedList java.lang.String
      StackMap stack: java.lang.IllegalArgumentException
        91: pop
        92: .line 726
            getstatic org.apache.catalina.valves.RemoteIpValve.log:Lorg/apache/juli/logging/Log;
            getstatic org.apache.catalina.valves.RemoteIpValve.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "remoteIpValve.invalidHostHeader"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 20 /* hostHeaderValue */
            aastore
            dup
            iconst_1
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.hostHeader: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.debug:(Ljava/lang/Object;)V
        end local 20 // java.lang.String hostHeaderValue
        93: .line 731
      StackMap locals:
      StackMap stack:
            aload 1 /* request */
            ldc "org.apache.tomcat.request.forwarded"
            getstatic java.lang.Boolean.TRUE:Ljava/lang/Boolean;
            invokevirtual org.apache.catalina.connector.Request.setAttribute:(Ljava/lang/String;Ljava/lang/Object;)V
        94: .line 733
            getstatic org.apache.catalina.valves.RemoteIpValve.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 109
        95: .line 734
            getstatic org.apache.catalina.valves.RemoteIpValve.log:Lorg/apache/juli/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Incoming request "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getRequestURI:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " with originalRemoteAddr ["
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 3 /* originalRemoteAddr */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        96: .line 735
            ldc "], originalRemoteHost=["
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 4 /* originalRemoteHost */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "], originalSecure=["
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            iload 6 /* originalSecure */
            invokevirtual java.lang.StringBuilder.append:(Z)Ljava/lang/StringBuilder;
        97: .line 736
            ldc "], originalScheme=["
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 5 /* originalScheme */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "], originalServerName=["
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 7 /* originalServerName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        98: .line 737
            ldc "], originalServerPort=["
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            iload 9 /* originalServerPort */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
        99: .line 738
            ldc "] will be seen as newRemoteAddr=["
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getRemoteAddr:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
       100: .line 739
            ldc "], newRemoteHost=["
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getRemoteHost:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "], newSecure=["
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.isSecure:()Z
            invokevirtual java.lang.StringBuilder.append:(Z)Ljava/lang/StringBuilder;
       101: .line 740
            ldc "], newScheme=["
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getScheme:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "], newServerName=["
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getServerName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
       102: .line 741
            ldc "], newServerPort=["
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getServerPort:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc "]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
       103: .line 734
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
        end local 19 // java.util.LinkedList newRemoteIpHeaderValue
        end local 18 // int idx
        end local 17 // java.lang.String[] remoteIpHeaderValue
        end local 16 // java.lang.StringBuilder concatRemoteIpHeaderValue
        end local 15 // java.util.LinkedList proxiesHeaderValue
        end local 14 // java.lang.String remoteIp
       104: .line 743
            goto 109
       105: .line 744
      StackMap locals: org.apache.catalina.valves.RemoteIpValve org.apache.catalina.connector.Request org.apache.catalina.connector.Response java.lang.String java.lang.String java.lang.String int java.lang.String java.lang.String int int java.lang.String java.lang.String int
      StackMap stack:
            getstatic org.apache.catalina.valves.RemoteIpValve.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 109
       106: .line 745
            getstatic org.apache.catalina.valves.RemoteIpValve.log:Lorg/apache/juli/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Skip RemoteIpValve for request "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getRequestURI:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " with originalRemoteAddr '"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
       107: .line 746
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getRemoteAddr:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "'"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
       108: .line 745
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
       109: .line 749
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.requestAttributesEnabled:Z
            ifeq 128
       110: .line 750
            aload 1 /* request */
            ldc "org.apache.catalina.AccessLog.RemoteAddr"
       111: .line 751
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getRemoteAddr:()Ljava/lang/String;
       112: .line 750
            invokevirtual org.apache.catalina.connector.Request.setAttribute:(Ljava/lang/String;Ljava/lang/Object;)V
       113: .line 752
            aload 1 /* request */
            ldc "org.apache.tomcat.remoteAddr"
       114: .line 753
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getRemoteAddr:()Ljava/lang/String;
       115: .line 752
            invokevirtual org.apache.catalina.connector.Request.setAttribute:(Ljava/lang/String;Ljava/lang/Object;)V
       116: .line 754
            aload 1 /* request */
            ldc "org.apache.catalina.AccessLog.RemoteHost"
       117: .line 755
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getRemoteHost:()Ljava/lang/String;
       118: .line 754
            invokevirtual org.apache.catalina.connector.Request.setAttribute:(Ljava/lang/String;Ljava/lang/Object;)V
       119: .line 756
            aload 1 /* request */
            ldc "org.apache.catalina.AccessLog.Protocol"
       120: .line 757
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getProtocol:()Ljava/lang/String;
       121: .line 756
            invokevirtual org.apache.catalina.connector.Request.setAttribute:(Ljava/lang/String;Ljava/lang/Object;)V
       122: .line 758
            aload 1 /* request */
            ldc "org.apache.catalina.AccessLog.ServerName"
       123: .line 759
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getServerName:()Ljava/lang/String;
       124: .line 758
            invokevirtual org.apache.catalina.connector.Request.setAttribute:(Ljava/lang/String;Ljava/lang/Object;)V
       125: .line 760
            aload 1 /* request */
            ldc "org.apache.catalina.AccessLog.ServerPort"
       126: .line 761
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getServerPort:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
       127: .line 760
            invokevirtual org.apache.catalina.connector.Request.setAttribute:(Ljava/lang/String;Ljava/lang/Object;)V
       128: .line 764
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.apache.catalina.valves.RemoteIpValve.getNext:()Lorg/apache/catalina/Valve;
            aload 1 /* request */
            aload 2 /* response */
            invokeinterface org.apache.catalina.Valve.invoke:(Lorg/apache/catalina/connector/Request;Lorg/apache/catalina/connector/Response;)V
       129: .line 765
            goto 149
      StackMap locals:
      StackMap stack: java.lang.Throwable
       130: astore 14
       131: .line 766
            aload 1 /* request */
            aload 3 /* originalRemoteAddr */
            invokevirtual org.apache.catalina.connector.Request.setRemoteAddr:(Ljava/lang/String;)V
       132: .line 767
            aload 1 /* request */
            aload 4 /* originalRemoteHost */
            invokevirtual org.apache.catalina.connector.Request.setRemoteHost:(Ljava/lang/String;)V
       133: .line 768
            aload 1 /* request */
            iload 6 /* originalSecure */
            invokevirtual org.apache.catalina.connector.Request.setSecure:(Z)V
       134: .line 769
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getCoyoteRequest:()Lorg/apache/coyote/Request;
            invokevirtual org.apache.coyote.Request.scheme:()Lorg/apache/tomcat/util/buf/MessageBytes;
            aload 5 /* originalScheme */
            invokevirtual org.apache.tomcat.util.buf.MessageBytes.setString:(Ljava/lang/String;)V
       135: .line 770
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getCoyoteRequest:()Lorg/apache/coyote/Request;
            invokevirtual org.apache.coyote.Request.serverName:()Lorg/apache/tomcat/util/buf/MessageBytes;
            aload 7 /* originalServerName */
            invokevirtual org.apache.tomcat.util.buf.MessageBytes.setString:(Ljava/lang/String;)V
       136: .line 771
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getCoyoteRequest:()Lorg/apache/coyote/Request;
            invokevirtual org.apache.coyote.Request.localName:()Lorg/apache/tomcat/util/buf/MessageBytes;
            aload 8 /* originalLocalName */
            invokevirtual org.apache.tomcat.util.buf.MessageBytes.setString:(Ljava/lang/String;)V
       137: .line 772
            aload 1 /* request */
            iload 9 /* originalServerPort */
            invokevirtual org.apache.catalina.connector.Request.setServerPort:(I)V
       138: .line 773
            aload 1 /* request */
            iload 10 /* originalLocalPort */
            invokevirtual org.apache.catalina.connector.Request.setLocalPort:(I)V
       139: .line 775
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getCoyoteRequest:()Lorg/apache/coyote/Request;
            invokevirtual org.apache.coyote.Request.getMimeHeaders:()Lorg/apache/tomcat/util/http/MimeHeaders;
            astore 15 /* headers */
        start local 15 // org.apache.tomcat.util.http.MimeHeaders headers
       140: .line 776
            aload 11 /* originalProxiesHeader */
            ifnull 141
            aload 11 /* originalProxiesHeader */
            invokevirtual java.lang.String.length:()I
            ifne 143
       141: .line 777
      StackMap locals: java.lang.Throwable org.apache.tomcat.util.http.MimeHeaders
      StackMap stack:
            aload 15 /* headers */
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.proxiesHeader:Ljava/lang/String;
            invokevirtual org.apache.tomcat.util.http.MimeHeaders.removeHeader:(Ljava/lang/String;)V
       142: .line 778
            goto 144
       143: .line 779
      StackMap locals:
      StackMap stack:
            aload 15 /* headers */
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.proxiesHeader:Ljava/lang/String;
            invokevirtual org.apache.tomcat.util.http.MimeHeaders.setValue:(Ljava/lang/String;)Lorg/apache/tomcat/util/buf/MessageBytes;
            aload 11 /* originalProxiesHeader */
            invokevirtual org.apache.tomcat.util.buf.MessageBytes.setString:(Ljava/lang/String;)V
       144: .line 782
      StackMap locals:
      StackMap stack:
            aload 12 /* originalRemoteIpHeader */
            ifnull 145
            aload 12 /* originalRemoteIpHeader */
            invokevirtual java.lang.String.length:()I
            ifne 147
       145: .line 783
      StackMap locals:
      StackMap stack:
            aload 15 /* headers */
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.remoteIpHeader:Ljava/lang/String;
            invokevirtual org.apache.tomcat.util.http.MimeHeaders.removeHeader:(Ljava/lang/String;)V
       146: .line 784
            goto 148
       147: .line 785
      StackMap locals:
      StackMap stack:
            aload 15 /* headers */
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.remoteIpHeader:Ljava/lang/String;
            invokevirtual org.apache.tomcat.util.http.MimeHeaders.setValue:(Ljava/lang/String;)Lorg/apache/tomcat/util/buf/MessageBytes;
            aload 12 /* originalRemoteIpHeader */
            invokevirtual org.apache.tomcat.util.buf.MessageBytes.setString:(Ljava/lang/String;)V
        end local 15 // org.apache.tomcat.util.http.MimeHeaders headers
       148: .line 787
      StackMap locals:
      StackMap stack:
            aload 14
            athrow
       149: .line 766
      StackMap locals:
      StackMap stack:
            aload 1 /* request */
            aload 3 /* originalRemoteAddr */
            invokevirtual org.apache.catalina.connector.Request.setRemoteAddr:(Ljava/lang/String;)V
       150: .line 767
            aload 1 /* request */
            aload 4 /* originalRemoteHost */
            invokevirtual org.apache.catalina.connector.Request.setRemoteHost:(Ljava/lang/String;)V
       151: .line 768
            aload 1 /* request */
            iload 6 /* originalSecure */
            invokevirtual org.apache.catalina.connector.Request.setSecure:(Z)V
       152: .line 769
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getCoyoteRequest:()Lorg/apache/coyote/Request;
            invokevirtual org.apache.coyote.Request.scheme:()Lorg/apache/tomcat/util/buf/MessageBytes;
            aload 5 /* originalScheme */
            invokevirtual org.apache.tomcat.util.buf.MessageBytes.setString:(Ljava/lang/String;)V
       153: .line 770
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getCoyoteRequest:()Lorg/apache/coyote/Request;
            invokevirtual org.apache.coyote.Request.serverName:()Lorg/apache/tomcat/util/buf/MessageBytes;
            aload 7 /* originalServerName */
            invokevirtual org.apache.tomcat.util.buf.MessageBytes.setString:(Ljava/lang/String;)V
       154: .line 771
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getCoyoteRequest:()Lorg/apache/coyote/Request;
            invokevirtual org.apache.coyote.Request.localName:()Lorg/apache/tomcat/util/buf/MessageBytes;
            aload 8 /* originalLocalName */
            invokevirtual org.apache.tomcat.util.buf.MessageBytes.setString:(Ljava/lang/String;)V
       155: .line 772
            aload 1 /* request */
            iload 9 /* originalServerPort */
            invokevirtual org.apache.catalina.connector.Request.setServerPort:(I)V
       156: .line 773
            aload 1 /* request */
            iload 10 /* originalLocalPort */
            invokevirtual org.apache.catalina.connector.Request.setLocalPort:(I)V
       157: .line 775
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getCoyoteRequest:()Lorg/apache/coyote/Request;
            invokevirtual org.apache.coyote.Request.getMimeHeaders:()Lorg/apache/tomcat/util/http/MimeHeaders;
            astore 15 /* headers */
        start local 15 // org.apache.tomcat.util.http.MimeHeaders headers
       158: .line 776
            aload 11 /* originalProxiesHeader */
            ifnull 159
            aload 11 /* originalProxiesHeader */
            invokevirtual java.lang.String.length:()I
            ifne 161
       159: .line 777
      StackMap locals: org.apache.catalina.valves.RemoteIpValve org.apache.catalina.connector.Request org.apache.catalina.connector.Response java.lang.String java.lang.String java.lang.String int java.lang.String java.lang.String int int java.lang.String java.lang.String int top org.apache.tomcat.util.http.MimeHeaders
      StackMap stack:
            aload 15 /* headers */
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.proxiesHeader:Ljava/lang/String;
            invokevirtual org.apache.tomcat.util.http.MimeHeaders.removeHeader:(Ljava/lang/String;)V
       160: .line 778
            goto 162
       161: .line 779
      StackMap locals:
      StackMap stack:
            aload 15 /* headers */
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.proxiesHeader:Ljava/lang/String;
            invokevirtual org.apache.tomcat.util.http.MimeHeaders.setValue:(Ljava/lang/String;)Lorg/apache/tomcat/util/buf/MessageBytes;
            aload 11 /* originalProxiesHeader */
            invokevirtual org.apache.tomcat.util.buf.MessageBytes.setString:(Ljava/lang/String;)V
       162: .line 782
      StackMap locals:
      StackMap stack:
            aload 12 /* originalRemoteIpHeader */
            ifnull 163
            aload 12 /* originalRemoteIpHeader */
            invokevirtual java.lang.String.length:()I
            ifne 165
       163: .line 783
      StackMap locals:
      StackMap stack:
            aload 15 /* headers */
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.remoteIpHeader:Ljava/lang/String;
            invokevirtual org.apache.tomcat.util.http.MimeHeaders.removeHeader:(Ljava/lang/String;)V
       164: .line 784
            goto 166
       165: .line 785
      StackMap locals:
      StackMap stack:
            aload 15 /* headers */
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.remoteIpHeader:Ljava/lang/String;
            invokevirtual org.apache.tomcat.util.http.MimeHeaders.setValue:(Ljava/lang/String;)Lorg/apache/tomcat/util/buf/MessageBytes;
            aload 12 /* originalRemoteIpHeader */
            invokevirtual org.apache.tomcat.util.buf.MessageBytes.setString:(Ljava/lang/String;)V
        end local 15 // org.apache.tomcat.util.http.MimeHeaders headers
       166: .line 788
      StackMap locals: org.apache.catalina.valves.RemoteIpValve org.apache.catalina.connector.Request org.apache.catalina.connector.Response java.lang.String java.lang.String java.lang.String int java.lang.String java.lang.String int int java.lang.String java.lang.String int
      StackMap stack:
            return
        end local 13 // boolean isInternal
        end local 12 // java.lang.String originalRemoteIpHeader
        end local 11 // java.lang.String originalProxiesHeader
        end local 10 // int originalLocalPort
        end local 9 // int originalServerPort
        end local 8 // java.lang.String originalLocalName
        end local 7 // java.lang.String originalServerName
        end local 6 // boolean originalSecure
        end local 5 // java.lang.String originalScheme
        end local 4 // java.lang.String originalRemoteHost
        end local 3 // java.lang.String originalRemoteAddr
        end local 2 // org.apache.catalina.connector.Response response
        end local 1 // org.apache.catalina.connector.Request request
        end local 0 // org.apache.catalina.valves.RemoteIpValve this
      LocalVariableTable:
        Start  End  Slot                               Name  Signature
            0  167     0                               this  Lorg/apache/catalina/valves/RemoteIpValve;
            0  167     1                            request  Lorg/apache/catalina/connector/Request;
            0  167     2                           response  Lorg/apache/catalina/connector/Response;
            1  167     3                 originalRemoteAddr  Ljava/lang/String;
            2  167     4                 originalRemoteHost  Ljava/lang/String;
            3  167     5                     originalScheme  Ljava/lang/String;
            4  167     6                     originalSecure  Z
            5  167     7                 originalServerName  Ljava/lang/String;
            6  167     8                  originalLocalName  Ljava/lang/String;
            7  167     9                 originalServerPort  I
            8  167    10                  originalLocalPort  I
            9  167    11              originalProxiesHeader  Ljava/lang/String;
           10  167    12             originalRemoteIpHeader  Ljava/lang/String;
           15  167    13                         isInternal  Z
           18  104    14                           remoteIp  Ljava/lang/String;
           19  104    15                 proxiesHeaderValue  Ljava/util/LinkedList<Ljava/lang/String;>;
           20  104    16          concatRemoteIpHeaderValue  Ljava/lang/StringBuilder;
           21   26    17                                  e  Ljava/util/Enumeration<Ljava/lang/String;>;
           27  104    17                remoteIpHeaderValue  [Ljava/lang/String;
           30  104    18                                idx  I
           32   40    19                    currentRemoteIp  Ljava/lang/String;
           43  104    19             newRemoteIpHeaderValue  Ljava/util/LinkedList<Ljava/lang/String;>;
           45   46    20                    currentRemoteIp  Ljava/lang/String;
           52   53    20                        inetAddress  Ljava/net/InetAddress;
           55   57    20                                  e  Ljava/net/UnknownHostException;
           63   64    20        commaDelimitedListOfProxies  Ljava/lang/String;
           68   69    20  commaDelimitedRemoteIpHeaderValue  Ljava/lang/String;
           71   80    20                protocolHeaderValue  Ljava/lang/String;
           82   93    20                    hostHeaderValue  Ljava/lang/String;
           84   90    21                          portIndex  I
          140  148    15                            headers  Lorg/apache/tomcat/util/http/MimeHeaders;
          158  166    15                            headers  Lorg/apache/tomcat/util/http/MimeHeaders;
      Exception table:
        from    to  target  type
          51    53      54  Class java.net.UnknownHostException
          83    90      91  Class java.lang.IllegalArgumentException
         128   130     130  any
    Exceptions:
      throws java.io.IOException, jakarta.servlet.ServletException
    MethodParameters:
          Name  Flags
      request   
      response  

  private boolean isForwardedProtoHeaderValueSecure(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=7, args_size=2
        start local 0 // org.apache.catalina.valves.RemoteIpValve this
        start local 1 // java.lang.String protocolHeaderValue
         0: .line 795
            aload 1 /* protocolHeaderValue */
            ldc ","
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifne 2
         1: .line 796
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.protocolHeaderHttpsValue:Ljava/lang/String;
            aload 1 /* protocolHeaderValue */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ireturn
         2: .line 798
      StackMap locals:
      StackMap stack:
            aload 1 /* protocolHeaderValue */
            invokestatic org.apache.catalina.valves.RemoteIpValve.commaDelimitedListToStringArray:(Ljava/lang/String;)[Ljava/lang/String;
            astore 2 /* forwardedProtocols */
        start local 2 // java.lang.String[] forwardedProtocols
         3: .line 799
            aload 2 /* forwardedProtocols */
            arraylength
            ifne 5
         4: .line 800
            iconst_0
            ireturn
         5: .line 802
      StackMap locals: java.lang.String[]
      StackMap stack:
            aload 2 /* forwardedProtocols */
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 10
      StackMap locals: org.apache.catalina.valves.RemoteIpValve java.lang.String java.lang.String[] top int int java.lang.String[]
      StackMap stack:
         6: aload 6
            iload 4
            aaload
            astore 3 /* forwardedProtocol */
        start local 3 // java.lang.String forwardedProtocol
         7: .line 803
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.protocolHeaderHttpsValue:Ljava/lang/String;
            aload 3 /* forwardedProtocol */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifne 9
         8: .line 804
            iconst_0
            ireturn
        end local 3 // java.lang.String forwardedProtocol
         9: .line 802
      StackMap locals:
      StackMap stack:
            iinc 4 1
      StackMap locals:
      StackMap stack:
        10: iload 4
            iload 5
            if_icmplt 6
        11: .line 807
            iconst_1
            ireturn
        end local 2 // java.lang.String[] forwardedProtocols
        end local 1 // java.lang.String protocolHeaderValue
        end local 0 // org.apache.catalina.valves.RemoteIpValve this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   12     0                 this  Lorg/apache/catalina/valves/RemoteIpValve;
            0   12     1  protocolHeaderValue  Ljava/lang/String;
            3   12     2   forwardedProtocols  [Ljava/lang/String;
            7    9     3    forwardedProtocol  Ljava/lang/String;
    MethodParameters:
                     Name  Flags
      protocolHeaderValue  

  private void setPorts(org.apache.catalina.connector.Request, int);
    descriptor: (Lorg/apache/catalina/connector/Request;I)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=6, args_size=3
        start local 0 // org.apache.catalina.valves.RemoteIpValve this
        start local 1 // org.apache.catalina.connector.Request request
        start local 2 // int defaultPort
         0: .line 811
            iload 2 /* defaultPort */
            istore 3 /* port */
        start local 3 // int port
         1: .line 812
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.portHeader:Ljava/lang/String;
            ifnull 14
         2: .line 813
            aload 1 /* request */
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.portHeader:Ljava/lang/String;
            invokevirtual org.apache.catalina.connector.Request.getHeader:(Ljava/lang/String;)Ljava/lang/String;
            astore 4 /* portHeaderValue */
        start local 4 // java.lang.String portHeaderValue
         3: .line 814
            aload 4 /* portHeaderValue */
            ifnull 14
         4: .line 816
            aload 4 /* portHeaderValue */
            invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;)I
            istore 3 /* port */
         5: .line 817
            goto 14
      StackMap locals: org.apache.catalina.valves.RemoteIpValve org.apache.catalina.connector.Request int int java.lang.String
      StackMap stack: java.lang.NumberFormatException
         6: astore 5 /* nfe */
        start local 5 // java.lang.NumberFormatException nfe
         7: .line 818
            getstatic org.apache.catalina.valves.RemoteIpValve.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 14
         8: .line 819
            getstatic org.apache.catalina.valves.RemoteIpValve.log:Lorg/apache/juli/logging/Log;
            getstatic org.apache.catalina.valves.RemoteIpValve.sm:Lorg/apache/tomcat/util/res/StringManager;
         9: .line 820
            ldc "remoteIpValve.invalidPortHeader"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
        10: .line 821
            aload 4 /* portHeaderValue */
            aastore
            dup
            iconst_1
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.portHeader:Ljava/lang/String;
            aastore
        11: .line 819
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
        12: .line 821
            aload 5 /* nfe */
        13: .line 819
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        end local 5 // java.lang.NumberFormatException nfe
        end local 4 // java.lang.String portHeaderValue
        14: .line 826
      StackMap locals:
      StackMap stack:
            aload 1 /* request */
            iload 3 /* port */
            invokevirtual org.apache.catalina.connector.Request.setServerPort:(I)V
        15: .line 827
            aload 0 /* this */
            getfield org.apache.catalina.valves.RemoteIpValve.changeLocalPort:Z
            ifeq 17
        16: .line 828
            aload 1 /* request */
            iload 3 /* port */
            invokevirtual org.apache.catalina.connector.Request.setLocalPort:(I)V
        17: .line 830
      StackMap locals:
      StackMap stack:
            return
        end local 3 // int port
        end local 2 // int defaultPort
        end local 1 // org.apache.catalina.connector.Request request
        end local 0 // org.apache.catalina.valves.RemoteIpValve this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   18     0             this  Lorg/apache/catalina/valves/RemoteIpValve;
            0   18     1          request  Lorg/apache/catalina/connector/Request;
            0   18     2      defaultPort  I
            1   18     3             port  I
            3   14     4  portHeaderValue  Ljava/lang/String;
            7   14     5              nfe  Ljava/lang/NumberFormatException;
      Exception table:
        from    to  target  type
           4     5       6  Class java.lang.NumberFormatException
    MethodParameters:
             Name  Flags
      request      
      defaultPort  

  public void setHttpServerPort(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.catalina.valves.RemoteIpValve this
        start local 1 // int httpServerPort
         0: .line 842
            aload 0 /* this */
            iload 1 /* httpServerPort */
            putfield org.apache.catalina.valves.RemoteIpValve.httpServerPort:I
         1: .line 843
            return
        end local 1 // int httpServerPort
        end local 0 // org.apache.catalina.valves.RemoteIpValve this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    2     0            this  Lorg/apache/catalina/valves/RemoteIpValve;
            0    2     1  httpServerPort  I
    MethodParameters:
                Name  Flags
      httpServerPort  

  public void setHttpsServerPort(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.catalina.valves.RemoteIpValve this
        start local 1 // int httpsServerPort
         0: .line 855
            aload 0 /* this */
            iload 1 /* httpsServerPort */
            putfield org.apache.catalina.valves.RemoteIpValve.httpsServerPort:I
         1: .line 856
            return
        end local 1 // int httpsServerPort
        end local 0 // org.apache.catalina.valves.RemoteIpValve this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    2     0             this  Lorg/apache/catalina/valves/RemoteIpValve;
            0    2     1  httpsServerPort  I
    MethodParameters:
                 Name  Flags
      httpsServerPort  

  public void setInternalProxies(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.catalina.valves.RemoteIpValve this
        start local 1 // java.lang.String internalProxies
         0: .line 868
            aload 1 /* internalProxies */
            ifnull 1
            aload 1 /* internalProxies */
            invokevirtual java.lang.String.length:()I
            ifne 3
         1: .line 869
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield org.apache.catalina.valves.RemoteIpValve.internalProxies:Ljava/util/regex/Pattern;
         2: .line 870
            goto 4
         3: .line 871
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* internalProxies */
            invokestatic java.util.regex.Pattern.compile:(Ljava/lang/String;)Ljava/util/regex/Pattern;
            putfield org.apache.catalina.valves.RemoteIpValve.internalProxies:Ljava/util/regex/Pattern;
         4: .line 873
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.String internalProxies
        end local 0 // org.apache.catalina.valves.RemoteIpValve this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    5     0             this  Lorg/apache/catalina/valves/RemoteIpValve;
            0    5     1  internalProxies  Ljava/lang/String;
    MethodParameters:
                 Name  Flags
      internalProxies  

  public void setProtocolHeader(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.catalina.valves.RemoteIpValve this
        start local 1 // java.lang.String protocolHeader
         0: .line 886
            aload 0 /* this */
            aload 1 /* protocolHeader */
            putfield org.apache.catalina.valves.RemoteIpValve.protocolHeader:Ljava/lang/String;
         1: .line 887
            return
        end local 1 // java.lang.String protocolHeader
        end local 0 // org.apache.catalina.valves.RemoteIpValve this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    2     0            this  Lorg/apache/catalina/valves/RemoteIpValve;
            0    2     1  protocolHeader  Ljava/lang/String;
    MethodParameters:
                Name  Flags
      protocolHeader  

  public void setProtocolHeaderHttpsValue(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.catalina.valves.RemoteIpValve this
        start local 1 // java.lang.String protocolHeaderHttpsValue
         0: .line 899
            aload 0 /* this */
            aload 1 /* protocolHeaderHttpsValue */
            putfield org.apache.catalina.valves.RemoteIpValve.protocolHeaderHttpsValue:Ljava/lang/String;
         1: .line 900
            return
        end local 1 // java.lang.String protocolHeaderHttpsValue
        end local 0 // org.apache.catalina.valves.RemoteIpValve this
      LocalVariableTable:
        Start  End  Slot                      Name  Signature
            0    2     0                      this  Lorg/apache/catalina/valves/RemoteIpValve;
            0    2     1  protocolHeaderHttpsValue  Ljava/lang/String;
    MethodParameters:
                          Name  Flags
      protocolHeaderHttpsValue  

  public void setProxiesHeader(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.catalina.valves.RemoteIpValve this
        start local 1 // java.lang.String proxiesHeader
         0: .line 920
            aload 0 /* this */
            aload 1 /* proxiesHeader */
            putfield org.apache.catalina.valves.RemoteIpValve.proxiesHeader:Ljava/lang/String;
         1: .line 921
            return
        end local 1 // java.lang.String proxiesHeader
        end local 0 // org.apache.catalina.valves.RemoteIpValve this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    2     0           this  Lorg/apache/catalina/valves/RemoteIpValve;
            0    2     1  proxiesHeader  Ljava/lang/String;
    MethodParameters:
               Name  Flags
      proxiesHeader  

  public void setRemoteIpHeader(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.catalina.valves.RemoteIpValve this
        start local 1 // java.lang.String remoteIpHeader
         0: .line 937
            aload 0 /* this */
            aload 1 /* remoteIpHeader */
            putfield org.apache.catalina.valves.RemoteIpValve.remoteIpHeader:Ljava/lang/String;
         1: .line 938
            return
        end local 1 // java.lang.String remoteIpHeader
        end local 0 // org.apache.catalina.valves.RemoteIpValve this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    2     0            this  Lorg/apache/catalina/valves/RemoteIpValve;
            0    2     1  remoteIpHeader  Ljava/lang/String;
    MethodParameters:
                Name  Flags
      remoteIpHeader  

  public void setRequestAttributesEnabled(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.catalina.valves.RemoteIpValve this
        start local 1 // boolean requestAttributesEnabled
         0: .line 960
            aload 0 /* this */
            iload 1 /* requestAttributesEnabled */
            putfield org.apache.catalina.valves.RemoteIpValve.requestAttributesEnabled:Z
         1: .line 961
            return
        end local 1 // boolean requestAttributesEnabled
        end local 0 // org.apache.catalina.valves.RemoteIpValve this
      LocalVariableTable:
        Start  End  Slot                      Name  Signature
            0    2     0                      this  Lorg/apache/catalina/valves/RemoteIpValve;
            0    2     1  requestAttributesEnabled  Z
    MethodParameters:
                          Name  Flags
      requestAttributesEnabled  

  public void setTrustedProxies(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.catalina.valves.RemoteIpValve this
        start local 1 // java.lang.String trustedProxies
         0: .line 974
            aload 1 /* trustedProxies */
            ifnull 1
            aload 1 /* trustedProxies */
            invokevirtual java.lang.String.length:()I
            ifne 3
         1: .line 975
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield org.apache.catalina.valves.RemoteIpValve.trustedProxies:Ljava/util/regex/Pattern;
         2: .line 976
            goto 4
         3: .line 977
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* trustedProxies */
            invokestatic java.util.regex.Pattern.compile:(Ljava/lang/String;)Ljava/util/regex/Pattern;
            putfield org.apache.catalina.valves.RemoteIpValve.trustedProxies:Ljava/util/regex/Pattern;
         4: .line 979
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.String trustedProxies
        end local 0 // org.apache.catalina.valves.RemoteIpValve this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    5     0            this  Lorg/apache/catalina/valves/RemoteIpValve;
            0    5     1  trustedProxies  Ljava/lang/String;
    MethodParameters:
                Name  Flags
      trustedProxies  
}
SourceFile: "RemoteIpValve.java"