package com.l7tech.server.policy.assertion;

import com.l7tech.message.Message;
import com.l7tech.policy.assertion.Assertion;
import com.l7tech.policy.assertion.AssertionStatus;
import com.l7tech.server.message.PolicyEnforcementContext;
import com.l7tech.util.CausedIOException;
import com.l7tech.util.NamespaceContextImpl;
import com.l7tech.util.ResourceUtils;
import com.l7tech.xml.ElementCursor;
import com.l7tech.xml.xpath.CursorXPathFactory;
import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import java.util.Map.Entry;
import java.util.logging.Level;
import javax.xml.namespace.NamespaceContext;
import javax.xml.xpath.XPathException;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
import org.xml.sax.SAXException;

public abstract class ServerXpathValidationAssertion<AT extends Assertion> extends AbstractServerAssertion<AT> {
   private static final String d;
   private static final String e;
   private static final String f;
   private NamespaceContext g = new NamespaceContextImpl(Collections.emptyMap());
   private Map<XPathExpression, String> h = Collections.emptyMap();
   private static final String[] j;

   @Override
   public AssertionStatus checkRequest(PolicyEnforcementContext param1) throws IOException {
      // $VF: Couldn't be decompiled
      // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
      // java.lang.RuntimeException: parsing failure!
      //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
      //
      // Bytecode:
      // 00: aload 1
      // 01: invokeinterface com/l7tech/server/message/PolicyEnforcementContext.getRoutingStatus ()Lcom/l7tech/policy/assertion/RoutingStatus; 1
      // 06: getstatic com/l7tech/policy/assertion/RoutingStatus.ROUTED Lcom/l7tech/policy/assertion/RoutingStatus;
      // 09: invokevirtual java/lang/Object.equals (Ljava/lang/Object;)Z
      // 0c: ifeq 1f
      // 0f: aload 1
      // 10: invokeinterface com/l7tech/server/message/PolicyEnforcementContext.getResponse ()Lcom/l7tech/message/Message; 1
      // 15: astore 3
      // 16: aload 0
      // 17: aload 3
      // 18: invokevirtual com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.b (Lcom/l7tech/message/Message;)Lcom/l7tech/policy/assertion/AssertionStatus;
      // 1b: astore 2
      // 1c: goto 61
      // 1f: aload 0
      // 20: invokevirtual com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.isCheckRequestMessages ()Z
      // 23: ifeq 36
      // 26: aload 1
      // 27: invokeinterface com/l7tech/server/message/PolicyEnforcementContext.getRequest ()Lcom/l7tech/message/Message; 1
      // 2c: astore 3
      // 2d: aload 0
      // 2e: aload 3
      // 2f: invokevirtual com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.a (Lcom/l7tech/message/Message;)Lcom/l7tech/policy/assertion/AssertionStatus;
      // 32: astore 2
      // 33: goto 3a
      // 36: getstatic com/l7tech/policy/assertion/AssertionStatus.NONE Lcom/l7tech/policy/assertion/AssertionStatus;
      // 39: astore 2
      // 3a: getstatic com/l7tech/policy/assertion/AssertionStatus.NONE Lcom/l7tech/policy/assertion/AssertionStatus;
      // 3d: aload 2
      // 3e: invokevirtual java/lang/Object.equals (Ljava/lang/Object;)Z
      // 41: ifeq 61
      // 44: aload 0
      // 45: invokevirtual com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.isCheckResponseMessages ()Z
      // 48: ifeq 61
      // 4b: goto 52
      // 4e: invokestatic com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 51: athrow
      // 52: aload 1
      // 53: aload 0
      // 54: aload 0
      // 55: invokeinterface com/l7tech/server/message/PolicyEnforcementContext.addDeferredAssertion (Lcom/l7tech/server/policy/assertion/ServerAssertion;Lcom/l7tech/server/policy/assertion/ServerAssertion;)V 3
      // 5a: goto 61
      // 5d: invokestatic com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 60: athrow
      // 61: aload 2
      // 62: areturn
      // try (26 -> 33): 34 java/io/IOException
      // try (30 -> 40): 41 java/io/IOException
   }

   protected ServerXpathValidationAssertion(AT var1) {
      super((AT)var1);
      this.b();
   }

   protected boolean isCheckRequestMessages() {
      return true;
   }

   protected boolean isCheckResponseMessages() {
      return true;
   }

   protected boolean isFailOnNonCompliantRequest() {
      return true;
   }

   protected boolean isFailOnNonCompliantResponse() {
      return false;
   }

   protected abstract InputStream getRulesResource();

   protected void onRequestNonSoap() {
   }

   protected void onResponseNonSoap() {
   }

   protected void onRequestNonCompliance(String var1, String var2) {
   }

   protected void onResponseNonCompliance(String var1, String var2) {
   }

   protected void onRequestFailure() {
   }

   protected void onResponseFailure() {
   }

   protected void onXPathError(XPathException var1) {
      this.logger.log(Level.WARNING, j[1], var1);
   }

   Map a() {
      return this.h;
   }

   private AssertionStatus a(Message param1) throws IOException {
      // $VF: Couldn't be decompiled
      // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
      // java.lang.RuntimeException: parsing failure!
      //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
      //
      // Bytecode:
      // 000: aload 0
      // 001: getfield com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.logger Ljava/util/logging/Logger;
      // 004: getstatic java/util/logging/Level.FINE Ljava/util/logging/Level;
      // 007: invokevirtual java/util/logging/Logger.isLoggable (Ljava/util/logging/Level;)Z
      // 00a: ifeq 021
      // 00d: aload 0
      // 00e: getfield com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.logger Ljava/util/logging/Logger;
      // 011: getstatic com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.j [Ljava/lang/String;
      // 014: bipush 22
      // 016: aaload
      // 017: invokevirtual java/util/logging/Logger.fine (Ljava/lang/String;)V
      // 01a: goto 021
      // 01d: invokestatic com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 020: athrow
      // 021: aload 0
      // 022: aload 1
      // 023: invokevirtual com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.c (Lcom/l7tech/message/Message;)Z
      // 026: ifne 034
      // 029: aload 0
      // 02a: invokevirtual com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.onRequestNonSoap ()V
      // 02d: getstatic com/l7tech/policy/assertion/AssertionStatus.BAD_REQUEST Lcom/l7tech/policy/assertion/AssertionStatus;
      // 030: astore 2
      // 031: goto 17b
      // 034: aload 0
      // 035: aload 1
      // 036: invokevirtual com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.d (Lcom/l7tech/message/Message;)Ljava/lang/Object;
      // 039: astore 3
      // 03a: aload 3
      // 03b: ifnonnull 045
      // 03e: getstatic com/l7tech/policy/assertion/AssertionStatus.BAD_REQUEST Lcom/l7tech/policy/assertion/AssertionStatus;
      // 041: astore 2
      // 042: goto 17b
      // 045: bipush 1
      // 046: istore 4
      // 048: aload 0
      // 049: aload 3
      // 04a: invokevirtual com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.a (Ljava/lang/Object;)Ljava/util/Set;
      // 04d: astore 5
      // 04f: aload 0
      // 050: getfield com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.h Ljava/util/Map;
      // 053: invokeinterface java/util/Map.keySet ()Ljava/util/Set; 1
      // 058: invokeinterface java/util/Set.iterator ()Ljava/util/Iterator; 1
      // 05d: astore 6
      // 05f: aload 6
      // 061: invokeinterface java/util/Iterator.hasNext ()Z 1
      // 066: ifeq 136
      // 069: aload 6
      // 06b: invokeinterface java/util/Iterator.next ()Ljava/lang/Object; 1
      // 070: checkcast javax/xml/xpath/XPathExpression
      // 073: astore 7
      // 075: aload 0
      // 076: aload 7
      // 078: invokevirtual com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.b (Ljavax/xml/xpath/XPathExpression;)Z
      // 07b: ifeq 085
      // 07e: goto 05f
      // 081: invokestatic com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 084: athrow
      // 085: aload 0
      // 086: aload 7
      // 088: invokevirtual com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.a (Ljavax/xml/xpath/XPathExpression;)[Ljava/lang/String;
      // 08b: astore 8
      // 08d: aload 5
      // 08f: aload 8
      // 091: bipush 0
      // 092: aaload
      // 093: invokeinterface java/util/Set.contains (Ljava/lang/Object;)Z 2
      // 098: ifeq 0a2
      // 09b: goto 05f
      // 09e: invokestatic com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0a1: athrow
      // 0a2: aload 0
      // 0a3: getfield com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.logger Ljava/util/logging/Logger;
      // 0a6: getstatic java/util/logging/Level.FINEST Ljava/util/logging/Level;
      // 0a9: invokevirtual java/util/logging/Logger.isLoggable (Ljava/util/logging/Level;)Z
      // 0ac: ifeq 0d6
      // 0af: aload 0
      // 0b0: getfield com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.logger Ljava/util/logging/Logger;
      // 0b3: aload 7
      // 0b5: invokeinterface javax/xml/xpath/XPathExpression.toString ()Ljava/lang/String; 1
      // 0ba: getstatic com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.j [Ljava/lang/String;
      // 0bd: bipush 20
      // 0bf: aaload
      // 0c0: swap
      // 0c1: getstatic com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.j [Ljava/lang/String;
      // 0c4: bipush 21
      // 0c6: aaload
      // 0c7: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001\u0001" ]
      // 0cc: invokevirtual java/util/logging/Logger.finest (Ljava/lang/String;)V
      // 0cf: goto 0d6
      // 0d2: invokestatic com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0d5: athrow
      // 0d6: getstatic com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.j [Ljava/lang/String;
      // 0d9: bipush 15
      // 0db: aaload
      // 0dc: aload 7
      // 0de: aload 3
      // 0df: invokeinterface javax/xml/xpath/XPathExpression.evaluate (Ljava/lang/Object;)Ljava/lang/String; 2
      // 0e4: invokevirtual java/lang/String.equals (Ljava/lang/Object;)Z
      // 0e7: ifne 133
      // 0ea: aload 0
      // 0eb: getfield com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.logger Ljava/util/logging/Logger;
      // 0ee: getstatic java/util/logging/Level.FINEST Ljava/util/logging/Level;
      // 0f1: invokevirtual java/util/logging/Logger.isLoggable (Ljava/util/logging/Level;)Z
      // 0f4: ifeq 112
      // 0f7: goto 0fe
      // 0fa: invokestatic com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0fd: athrow
      // 0fe: aload 0
      // 0ff: getfield com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.logger Ljava/util/logging/Logger;
      // 102: getstatic com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.j [Ljava/lang/String;
      // 105: bipush 24
      // 107: aaload
      // 108: invokevirtual java/util/logging/Logger.finest (Ljava/lang/String;)V
      // 10b: goto 112
      // 10e: invokestatic com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 111: athrow
      // 112: aload 0
      // 113: aload 0
      // 114: aload 8
      // 116: bipush 0
      // 117: aaload
      // 118: invokevirtual com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.a (Ljava/lang/String;)Ljava/lang/String;
      // 11b: aload 8
      // 11d: bipush 1
      // 11e: aaload
      // 11f: invokevirtual com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.onRequestNonCompliance (Ljava/lang/String;Ljava/lang/String;)V
      // 122: bipush 0
      // 123: istore 4
      // 125: aload 0
      // 126: invokevirtual com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.isFailOnNonCompliantRequest ()Z
      // 129: ifeq 133
      // 12c: goto 136
      // 12f: invokestatic com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 132: athrow
      // 133: goto 05f
      // 136: iload 4
      // 138: ifne 149
      // 13b: aload 0
      // 13c: invokevirtual com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.isFailOnNonCompliantRequest ()Z
      // 13f: ifne 153
      // 142: goto 149
      // 145: invokestatic com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 148: athrow
      // 149: getstatic com/l7tech/policy/assertion/AssertionStatus.NONE Lcom/l7tech/policy/assertion/AssertionStatus;
      // 14c: goto 156
      // 14f: invokestatic com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 152: athrow
      // 153: getstatic com/l7tech/policy/assertion/AssertionStatus.FALSIFIED Lcom/l7tech/policy/assertion/AssertionStatus;
      // 156: astore 2
      // 157: getstatic com/l7tech/policy/assertion/AssertionStatus.FALSIFIED Lcom/l7tech/policy/assertion/AssertionStatus;
      // 15a: aload 2
      // 15b: invokevirtual java/lang/Object.equals (Ljava/lang/Object;)Z
      // 15e: ifeq 16c
      // 161: aload 0
      // 162: invokevirtual com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.onRequestFailure ()V
      // 165: goto 16c
      // 168: invokestatic com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 16b: athrow
      // 16c: goto 17b
      // 16f: astore 4
      // 171: aload 0
      // 172: aload 4
      // 174: invokevirtual com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.onXPathError (Ljavax/xml/xpath/XPathException;)V
      // 177: getstatic com/l7tech/policy/assertion/AssertionStatus.FAILED Lcom/l7tech/policy/assertion/AssertionStatus;
      // 17a: astore 2
      // 17b: aload 2
      // 17c: areturn
      // try (149 -> 155): 156 javax/xml/xpath/XPathExpressionException
      // try (137 -> 145): 145 javax/xml/xpath/XPathExpressionException
      // try (135 -> 140): 141 javax/xml/xpath/XPathExpressionException
      // try (128 -> 132): 132 javax/xml/xpath/XPathExpressionException
      // try (99 -> 113): 114 javax/xml/xpath/XPathExpressionException
      // try (91 -> 104): 105 javax/xml/xpath/XPathExpressionException
      // try (70 -> 88): 89 javax/xml/xpath/XPathExpressionException
      // try (61 -> 68): 68 javax/xml/xpath/XPathExpressionException
      // try (50 -> 55): 55 javax/xml/xpath/XPathExpressionException
      // try (0 -> 11): 12 javax/xml/xpath/XPathExpressionException
      // try (32 -> 158): 159 javax/xml/xpath/XPathExpressionException
   }

   private AssertionStatus b(Message param1) throws IOException {
      // $VF: Couldn't be decompiled
      // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
      // java.lang.RuntimeException: parsing failure!
      //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
      //
      // Bytecode:
      // 000: aload 0
      // 001: getfield com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.logger Ljava/util/logging/Logger;
      // 004: getstatic java/util/logging/Level.FINE Ljava/util/logging/Level;
      // 007: invokevirtual java/util/logging/Logger.isLoggable (Ljava/util/logging/Level;)Z
      // 00a: ifeq 021
      // 00d: aload 0
      // 00e: getfield com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.logger Ljava/util/logging/Logger;
      // 011: getstatic com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.j [Ljava/lang/String;
      // 014: bipush 7
      // 016: aaload
      // 017: invokevirtual java/util/logging/Logger.fine (Ljava/lang/String;)V
      // 01a: goto 021
      // 01d: invokestatic com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 020: athrow
      // 021: aload 0
      // 022: aload 1
      // 023: invokevirtual com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.c (Lcom/l7tech/message/Message;)Z
      // 026: ifne 034
      // 029: aload 0
      // 02a: invokevirtual com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.onResponseNonSoap ()V
      // 02d: getstatic com/l7tech/policy/assertion/AssertionStatus.BAD_REQUEST Lcom/l7tech/policy/assertion/AssertionStatus;
      // 030: astore 2
      // 031: goto 179
      // 034: aload 0
      // 035: aload 1
      // 036: invokevirtual com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.d (Lcom/l7tech/message/Message;)Ljava/lang/Object;
      // 039: astore 3
      // 03a: aload 3
      // 03b: ifnonnull 045
      // 03e: getstatic com/l7tech/policy/assertion/AssertionStatus.FALSIFIED Lcom/l7tech/policy/assertion/AssertionStatus;
      // 041: astore 2
      // 042: goto 179
      // 045: bipush 1
      // 046: istore 4
      // 048: aload 0
      // 049: aload 3
      // 04a: invokevirtual com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.a (Ljava/lang/Object;)Ljava/util/Set;
      // 04d: astore 5
      // 04f: aload 0
      // 050: getfield com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.h Ljava/util/Map;
      // 053: invokeinterface java/util/Map.keySet ()Ljava/util/Set; 1
      // 058: invokeinterface java/util/Set.iterator ()Ljava/util/Iterator; 1
      // 05d: astore 6
      // 05f: aload 6
      // 061: invokeinterface java/util/Iterator.hasNext ()Z 1
      // 066: ifeq 134
      // 069: aload 6
      // 06b: invokeinterface java/util/Iterator.next ()Ljava/lang/Object; 1
      // 070: checkcast javax/xml/xpath/XPathExpression
      // 073: astore 7
      // 075: aload 0
      // 076: aload 7
      // 078: invokevirtual com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.b (Ljavax/xml/xpath/XPathExpression;)Z
      // 07b: ifeq 085
      // 07e: goto 05f
      // 081: invokestatic com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 084: athrow
      // 085: aload 0
      // 086: aload 7
      // 088: invokevirtual com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.a (Ljavax/xml/xpath/XPathExpression;)[Ljava/lang/String;
      // 08b: astore 8
      // 08d: aload 5
      // 08f: aload 8
      // 091: bipush 0
      // 092: aaload
      // 093: invokeinterface java/util/Set.contains (Ljava/lang/Object;)Z 2
      // 098: ifeq 0a2
      // 09b: goto 05f
      // 09e: invokestatic com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0a1: athrow
      // 0a2: aload 0
      // 0a3: getfield com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.logger Ljava/util/logging/Logger;
      // 0a6: getstatic java/util/logging/Level.FINEST Ljava/util/logging/Level;
      // 0a9: invokevirtual java/util/logging/Logger.isLoggable (Ljava/util/logging/Level;)Z
      // 0ac: ifeq 0d6
      // 0af: aload 0
      // 0b0: getfield com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.logger Ljava/util/logging/Logger;
      // 0b3: aload 7
      // 0b5: invokeinterface javax/xml/xpath/XPathExpression.toString ()Ljava/lang/String; 1
      // 0ba: getstatic com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.j [Ljava/lang/String;
      // 0bd: bipush 13
      // 0bf: aaload
      // 0c0: swap
      // 0c1: getstatic com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.j [Ljava/lang/String;
      // 0c4: bipush 12
      // 0c6: aaload
      // 0c7: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001\u0001" ]
      // 0cc: invokevirtual java/util/logging/Logger.finest (Ljava/lang/String;)V
      // 0cf: goto 0d6
      // 0d2: invokestatic com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0d5: athrow
      // 0d6: getstatic com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.j [Ljava/lang/String;
      // 0d9: bipush 4
      // 0da: aaload
      // 0db: aload 7
      // 0dd: aload 3
      // 0de: invokeinterface javax/xml/xpath/XPathExpression.evaluate (Ljava/lang/Object;)Ljava/lang/String; 2
      // 0e3: invokevirtual java/lang/String.equals (Ljava/lang/Object;)Z
      // 0e6: ifne 131
      // 0e9: aload 0
      // 0ea: getfield com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.logger Ljava/util/logging/Logger;
      // 0ed: getstatic java/util/logging/Level.FINEST Ljava/util/logging/Level;
      // 0f0: invokevirtual java/util/logging/Logger.isLoggable (Ljava/util/logging/Level;)Z
      // 0f3: ifeq 110
      // 0f6: goto 0fd
      // 0f9: invokestatic com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0fc: athrow
      // 0fd: aload 0
      // 0fe: getfield com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.logger Ljava/util/logging/Logger;
      // 101: getstatic com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.j [Ljava/lang/String;
      // 104: bipush 0
      // 105: aaload
      // 106: invokevirtual java/util/logging/Logger.finest (Ljava/lang/String;)V
      // 109: goto 110
      // 10c: invokestatic com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 10f: athrow
      // 110: aload 0
      // 111: aload 0
      // 112: aload 8
      // 114: bipush 0
      // 115: aaload
      // 116: invokevirtual com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.a (Ljava/lang/String;)Ljava/lang/String;
      // 119: aload 8
      // 11b: bipush 1
      // 11c: aaload
      // 11d: invokevirtual com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.onResponseNonCompliance (Ljava/lang/String;Ljava/lang/String;)V
      // 120: bipush 0
      // 121: istore 4
      // 123: aload 0
      // 124: invokevirtual com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.isFailOnNonCompliantResponse ()Z
      // 127: ifeq 131
      // 12a: goto 134
      // 12d: invokestatic com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 130: athrow
      // 131: goto 05f
      // 134: iload 4
      // 136: ifne 147
      // 139: aload 0
      // 13a: invokevirtual com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.isFailOnNonCompliantResponse ()Z
      // 13d: ifne 151
      // 140: goto 147
      // 143: invokestatic com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 146: athrow
      // 147: getstatic com/l7tech/policy/assertion/AssertionStatus.NONE Lcom/l7tech/policy/assertion/AssertionStatus;
      // 14a: goto 154
      // 14d: invokestatic com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 150: athrow
      // 151: getstatic com/l7tech/policy/assertion/AssertionStatus.FALSIFIED Lcom/l7tech/policy/assertion/AssertionStatus;
      // 154: astore 2
      // 155: getstatic com/l7tech/policy/assertion/AssertionStatus.FALSIFIED Lcom/l7tech/policy/assertion/AssertionStatus;
      // 158: aload 2
      // 159: invokevirtual java/lang/Object.equals (Ljava/lang/Object;)Z
      // 15c: ifeq 16a
      // 15f: aload 0
      // 160: invokevirtual com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.onResponseFailure ()V
      // 163: goto 16a
      // 166: invokestatic com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 169: athrow
      // 16a: goto 179
      // 16d: astore 4
      // 16f: aload 0
      // 170: aload 4
      // 172: invokevirtual com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.onXPathError (Ljavax/xml/xpath/XPathException;)V
      // 175: getstatic com/l7tech/policy/assertion/AssertionStatus.FAILED Lcom/l7tech/policy/assertion/AssertionStatus;
      // 178: astore 2
      // 179: aload 2
      // 17a: areturn
      // try (149 -> 155): 156 javax/xml/xpath/XPathExpressionException
      // try (137 -> 145): 145 javax/xml/xpath/XPathExpressionException
      // try (135 -> 140): 141 javax/xml/xpath/XPathExpressionException
      // try (128 -> 132): 132 javax/xml/xpath/XPathExpressionException
      // try (99 -> 113): 114 javax/xml/xpath/XPathExpressionException
      // try (91 -> 104): 105 javax/xml/xpath/XPathExpressionException
      // try (70 -> 88): 89 javax/xml/xpath/XPathExpressionException
      // try (61 -> 68): 68 javax/xml/xpath/XPathExpressionException
      // try (50 -> 55): 55 javax/xml/xpath/XPathExpressionException
      // try (0 -> 11): 12 javax/xml/xpath/XPathExpressionException
      // try (32 -> 158): 159 javax/xml/xpath/XPathExpressionException
   }

   private String[] a(XPathExpression var1) {
      String var2 = this.h.get(var1);
      if (var2 == null) {
         var2 = "";
      }

      return var2.split(j[19], 2);
   }

   private boolean b(XPathExpression var1) {
      return this.a(var1)[0].startsWith("B");
   }

   private Set<String> c(XPathExpression var1) {
      String var3 = this.a(var1)[1];
      int var4 = var3.indexOf(58);
      Set var2;
      if (this.b(var1) && var4 >= 0) {
         var2 = new HashSet<>(Arrays.asList(var3.substring(var4 + 1).split(" ")));
      } else {
         var2 = Collections.emptySet();
      }

      return var2;
   }

   private Set<String> a(Object var1) throws XPathExpressionException {
      HashSet var2 = new HashSet();

      for (XPathExpression var4 : this.h.keySet()) {
         try {
            if (!this.b(var4)) {
               continue;
            }
         } catch (XPathExpressionException var6) {
            throw a(var6);
         }

         try {
            if (this.logger.isLoggable(Level.FINEST)) {
               this.logger.finest(j[5] + var4.toString() + j[12]);
            }
         } catch (XPathExpressionException var7) {
            throw a(var7);
         }

         try {
            if (!j[4].equals(var4.evaluate(var1))) {
               var2.addAll(this.c(var4));
            }
         } catch (XPathExpressionException var5) {
            throw a(var5);
         }
      }

      return var2;
   }

   private boolean c(Message var1) throws IOException {
      boolean var2 = false;

      try {
         if (var1.isSoap()) {
            var2 = true;
         }

         return var2;
      } catch (SAXException var4) {
         throw new CausedIOException(var4);
      }
   }

   private Object d(Message var1) throws IOException {
      try {
         ElementCursor var3 = var1.getXmlKnob().getElementCursor();
         var3.moveToRoot();
         return var3;
      } catch (SAXException var4) {
         throw new CausedIOException(var4);
      }
   }

   private void b() {
      InputStream var1 = null;

      try {
         var1 = this.getRulesResource();
         if (var1 != null) {
            Properties var2 = new Properties();
            var2.load(var1);
            HashMap var3 = new HashMap(var2.size());
            CursorXPathFactory var4 = new CursorXPathFactory();
            this.g = this.a(var2);
            this.a(var4, var2, var3);
            this.h = Collections.unmodifiableMap(var3);
         } else {
            String[] var6 = j;
            this.logger.warning(var6[8]);
         }
      } catch (IOException var9) {
         this.logger.log(Level.WARNING, j[6], var9);
      } finally {
         ResourceUtils.closeQuietly(var1);
      }
   }

   private NamespaceContext a(Map var1) {
      HashMap var2 = new HashMap();

      for (Object var4 : var1.entrySet()) {
         Entry var5 = (Entry)var4;
         String var6 = (String)var5.getKey();
         String var7 = (String)var5.getValue();
         String[] var9 = j;
         if (var6.startsWith(var9[18])) {
            String var8 = var6.substring(var9[25].length());
            if (var8.length() != 0 && var7.length() != 0) {
               var2.put(var8, var7);
            }
         }
      }

      return new NamespaceContextImpl(var2);
   }

   private String a(String var1) {
      String var2;
      if (var1.indexOf(".") > 0) {
         var2 = var1.substring(0, var1.lastIndexOf("."));
      } else {
         var2 = var1;
      }

      return var2;
   }

   private void a(XPathFactory param1, Properties param2, Map<XPathExpression, String> param3) {
      // $VF: Couldn't be decompiled
      // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
      // java.lang.RuntimeException: parsing failure!
      //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
      //
      // Bytecode:
      // 000: aload 2
      // 001: invokevirtual java/util/Properties.entrySet ()Ljava/util/Set;
      // 004: invokeinterface java/util/Set.iterator ()Ljava/util/Iterator; 1
      // 009: astore 4
      // 00b: aload 4
      // 00d: invokeinterface java/util/Iterator.hasNext ()Z 1
      // 012: ifeq 113
      // 015: aload 4
      // 017: invokeinterface java/util/Iterator.next ()Ljava/lang/Object; 1
      // 01c: astore 5
      // 01e: aload 5
      // 020: checkcast java/util/Map$Entry
      // 023: astore 6
      // 025: aload 6
      // 027: invokeinterface java/util/Map$Entry.getKey ()Ljava/lang/Object; 1
      // 02c: checkcast java/lang/String
      // 02f: astore 7
      // 031: aload 6
      // 033: invokeinterface java/util/Map$Entry.getValue ()Ljava/lang/Object; 1
      // 038: checkcast java/lang/String
      // 03b: astore 8
      // 03d: aload 7
      // 03f: ifnull 110
      // 042: aload 8
      // 044: ifnull 110
      // 047: goto 04e
      // 04a: invokestatic com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 04d: athrow
      // 04e: aload 7
      // 050: getstatic com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.j [Ljava/lang/String;
      // 053: bipush 9
      // 055: aaload
      // 056: invokevirtual java/lang/String.endsWith (Ljava/lang/String;)Z
      // 059: ifeq 110
      // 05c: goto 063
      // 05f: invokestatic com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 062: athrow
      // 063: aload 7
      // 065: bipush 0
      // 066: aload 7
      // 068: invokevirtual java/lang/String.length ()I
      // 06b: getstatic com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.j [Ljava/lang/String;
      // 06e: astore 14
      // 070: aload 14
      // 072: bipush 3
      // 073: aaload
      // 074: invokevirtual java/lang/String.length ()I
      // 077: isub
      // 078: invokevirtual java/lang/String.substring (II)Ljava/lang/String;
      // 07b: astore 9
      // 07d: aload 0
      // 07e: aload 9
      // 080: invokevirtual com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.a (Ljava/lang/String;)Ljava/lang/String;
      // 083: astore 10
      // 085: aload 2
      // 086: aload 10
      // 088: aload 14
      // 08a: bipush 14
      // 08c: aaload
      // 08d: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001" ]
      // 092: invokevirtual java/util/Properties.getProperty (Ljava/lang/String;)Ljava/lang/String;
      // 095: astore 11
      // 097: aload 11
      // 099: ifnonnull 0a2
      // 09c: aload 14
      // 09e: bipush 2
      // 09f: aaload
      // 0a0: astore 11
      // 0a2: aload 9
      // 0a4: aload 11
      // 0a6: getstatic com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.j [Ljava/lang/String;
      // 0a9: astore 14
      // 0ab: aload 14
      // 0ad: bipush 11
      // 0af: aaload
      // 0b0: swap
      // 0b1: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001\u0001" ]
      // 0b6: astore 11
      // 0b8: aload 1
      // 0b9: invokevirtual javax/xml/xpath/XPathFactory.newXPath ()Ljavax/xml/xpath/XPath;
      // 0bc: astore 12
      // 0be: aload 12
      // 0c0: aload 0
      // 0c1: getfield com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.g Ljavax/xml/namespace/NamespaceContext;
      // 0c4: invokeinterface javax/xml/xpath/XPath.setNamespaceContext (Ljavax/xml/namespace/NamespaceContext;)V 2
      // 0c9: aload 12
      // 0cb: aload 8
      // 0cd: invokeinterface javax/xml/xpath/XPath.compile (Ljava/lang/String;)Ljavax/xml/xpath/XPathExpression; 2
      // 0d2: astore 13
      // 0d4: aload 3
      // 0d5: aload 13
      // 0d7: aload 11
      // 0d9: invokeinterface java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; 3
      // 0de: pop
      // 0df: goto 110
      // 0e2: astore 13
      // 0e4: aload 0
      // 0e5: getfield com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.logger Ljava/util/logging/Logger;
      // 0e8: getstatic java/util/logging/Level.WARNING Ljava/util/logging/Level;
      // 0eb: aload 10
      // 0ed: aload 8
      // 0ef: getstatic com/l7tech/server/policy/assertion/ServerXpathValidationAssertion.j [Ljava/lang/String;
      // 0f2: astore 14
      // 0f4: aload 14
      // 0f6: bipush 16
      // 0f8: aaload
      // 0f9: dup_x2
      // 0fa: pop
      // 0fb: aload 14
      // 0fd: bipush 10
      // 0ff: aaload
      // 100: swap
      // 101: aload 14
      // 103: bipush 23
      // 105: aaload
      // 106: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001\u0001\u0001\u0001" ]
      // 10b: aload 13
      // 10d: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V
      // 110: goto 00b
      // 113: return
      // try (23 -> 34): 35 javax/xml/xpath/XPathExpressionException
      // try (21 -> 25): 26 javax/xml/xpath/XPathExpressionException
      // try (85 -> 94): 95 javax/xml/xpath/XPathExpressionException
   }

   private static Exception a(Exception var0) {
      return var0;
   }

   static {
      String[] var5 = new String[26];
      int var3 = 0;
      String var2 = "%a\u001d2{uh\u000bP\u00103r!h\u0019\u0011\b)33l\u0011B\u0019h\u00168C\u000e)au}\u000f^\u001f#`&d\u0013V\\\u001eC4y\u0015\u00183^\\\"v&n\u000fX\f2z:c]W\u001343'x\u0011TR\u0005SA\u001d2{\u0004\tC\t#\u00198G\u001d*f4y\u0014_\u001bfq'l\u0013R\u0014fK\u0005l\tY\\a\u001f8C\u000e)aua\u0012P\u0018/}2-\u001e^\u00116\u007f<l\u0013R\u0019fa a\u0018BR\u001c-C\u0013%v&~\u0014_\u001bfa0~\r^\u00125vu`\u0018B\u000f't0#<(_\u001d$\u007f0-\t^\\*|4i]C\t*v&!]\u007f3\u00123%h\u000fW\u00134~<c\u001a\u0011\u001d(ju\u007f\b_\b/~0-\u000bP\u0010/w4y\u0014^\u0012h\u0005SA\u001d2{\rZ\u001d\\>c4y\u0015\u0011\u001553r\u0002G\u0011\u0002Z\u001f\u00128G\u001d*f4y\u0014_\u001bfK\u0005l\tY\\a\u0005SC\t*v\u0004\tC\t#\u001e8C\u000e)au}\u001cC\u000f/}2-%a\u001d2{uk\u0012C\\4f9h]\u0016\u0005SC\t*v\n3P\u0011#`%l\u001eTR\u0002G\u0011\u00128G\u001d*f4y\u0014_\u001bfK\u0005l\tY\\a\u0002Z\u001f\u001b-C\u0013%v&~\u0014_\u001bfa0|\bT\u000f238h\u000eB\u001d!v{\u0002Z\u001d";
      int var4 = "%a\u001d2{uh\u000bP\u00103r!h\u0019\u0011\b)33l\u0011B\u0019h\u00168C\u000e)au}\u000f^\u001f#`&d\u0013V\\\u001eC4y\u0015\u00183^\\\"v&n\u000fX\f2z:c]W\u001343'x\u0011TR\u0005SA\u001d2{\u0004\tC\t#\u00198G\u001d*f4y\u0014_\u001bfq'l\u0013R\u0014fK\u0005l\tY\\a\u001f8C\u000e)aua\u0012P\u0018/}2-\u001e^\u00116\u007f<l\u0013R\u0019fa a\u0018BR\u001c-C\u0013%v&~\u0014_\u001bfa0~\r^\u00125vu`\u0018B\u000f't0#<(_\u001d$\u007f0-\t^\\*|4i]C\t*v&!]\u007f3\u00123%h\u000fW\u00134~<c\u001a\u0011\u001d(ju\u007f\b_\b/~0-\u000bP\u0010/w4y\u0014^\u0012h\u0005SA\u001d2{\rZ\u001d\\>c4y\u0015\u0011\u001553r\u0002G\u0011\u0002Z\u001f\u00128G\u001d*f4y\u0014_\u001bfK\u0005l\tY\\a\u0005SC\t*v\u0004\tC\t#\u001e8C\u000e)au}\u001cC\u000f/}2-%a\u001d2{uk\u0012C\\4f9h]\u0016\u0005SC\t*v\n3P\u0011#`%l\u001eTR\u0002G\u0011\u00128G\u001d*f4y\u0014_\u001bfK\u0005l\tY\\a\u0002Z\u001f\u001b-C\u0013%v&~\u0014_\u001bfa0|\bT\u000f238h\u000eB\u001d!v{\u0002Z\u001d"
         .length();
      char var1 = 25;
      int var7 = -1;

      label24:
      while (true) {
         byte var10000 = 36;
         String var10001 = var2.substring(++var7, var7 + var1);
         byte var10002 = -1;

         while (true) {
            String var8 = b(var10000, b(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var8;
                  if ((var7 += var1) >= var4) {
                     j = var5;
                     String[] var9 = j;
                     e = j[3];
                     f = var9[25];
                     d = var9[17];
                     return;
                  }

                  var1 = var2.charAt(var7);
                  break;
               default:
                  var5[var3++] = var8;
                  if ((var7 += var1) < var4) {
                     var1 = var2.charAt(var7);
                     continue label24;
                  }

                  var2 = "g#_p97*I\u0012Rq0c*[SJkqq.S\u0000[*\nq\u0012Sa\"g.\\\u0016\u0010";
                  var4 = "g#_p97*I\u0012Rq0c*[SJkqq.S\u0000[*\nq\u0012Sa\"g.\\\u0016\u0010".length();
                  var1 = 25;
                  var7 = -1;
            }

            var10000 = 102;
            var10001 = var2.substring(++var7, var7 + var1);
            var10002 = 0;
         }
      }
   }

   private static char[] b(String var0) {
      char[] var10000 = var0.toCharArray();
      if (var10000.length < 2) {
         var10000[0] = (char)(var10000[0] ^ 41);
      }

      return var10000;
   }

   private static String b(int var0, char[] var1) {
      int var10003 = var1.length;
      int var10002 = var0;
      char[] var10001 = var1;
      int var10000 = var10003;

      for (int var2 = 0; var10000 > var2; var2++) {
         var10001[var2] = (char)(var10001[var2] ^ var10002 ^ switch (var2 % 7) {
            case 0 -> 89;
            case 1 -> 21;
            case 2 -> 88;
            case 3 -> 98;
            case 4 -> 55;
            case 5 -> 113;
            default -> 41;
         });
      }

      return new String(var10001).intern();
   }
}
