package com.l7tech.external.assertions.gatewaymanagement.server;

import com.l7tech.common.mime.ContentTypeHeader;
import com.l7tech.external.assertions.gatewaymanagement.GatewayManagementAssertion;
import com.l7tech.gateway.api.impl.ValidationUtils;
import com.l7tech.gateway.common.audit.AssertionMessages;
import com.l7tech.gateway.common.audit.Audit;
import com.l7tech.identity.User;
import com.l7tech.message.HttpRequestKnob;
import com.l7tech.message.Message;
import com.l7tech.policy.assertion.Assertion;
import com.l7tech.policy.assertion.AssertionStatus;
import com.l7tech.policy.assertion.PolicyAssertionException;
import com.l7tech.policy.assertion.RoutingStatus;
import com.l7tech.server.message.PolicyEnforcementContext;
import com.l7tech.server.policy.assertion.AbstractServerAssertion;
import com.l7tech.util.ExceptionUtils;
import com.sun.ws.management.Management;
import com.sun.ws.management.identify.Identify;
import com.sun.ws.management.server.HandlerContextImpl;
import com.sun.ws.management.server.WSManAgent;
import com.sun.ws.management.server.reflective.WSManReflectiveAgent;
import com.sun.ws.management.soap.SOAP;
import com.sun.ws.management.transport.ContentType;
import jakarta.xml.bind.JAXBException;
import jakarta.xml.soap.MessageFactory;
import jakarta.xml.soap.SOAPException;
import jakarta.xml.soap.SOAPMessage;
import jakarta.xml.soap.SOAPPart;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.atomic.AtomicReference;
import java.util.logging.Logger;
import javax.xml.transform.dom.DOMSource;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import org.xmlsoap.schemas.ws._2004._08.addressing.EndpointReferenceType;

public class ServerGatewayManagementAssertion extends AbstractServerAssertion<GatewayManagementAssertion> {
   private static final AtomicReference<WSManReflectiveAgent> a;
   private final WSManAgent b;
   private final ApplicationContext c;
   private final boolean d;
   private static final String[] e;

   public ServerGatewayManagementAssertion(GatewayManagementAssertion var1, ApplicationContext var2) throws PolicyAssertionException {
      this(var1, var2, true);
   }

   public AssertionStatus checkRequest(PolicyEnforcementContext param1) throws IOException, PolicyAssertionException {
      // $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.getRequest ()Lcom/l7tech/message/Message; 1
      // 06: astore 2
      // 07: aload 1
      // 08: invokeinterface com/l7tech/server/message/PolicyEnforcementContext.getResponse ()Lcom/l7tech/message/Message; 1
      // 0d: astore 3
      // 0e: aload 2
      // 0f: invokevirtual com/l7tech/message/Message.getMimeKnob ()Lcom/l7tech/message/MimeKnob;
      // 12: astore 4
      // 14: aload 4
      // 16: invokeinterface com/l7tech/message/MimeKnob.getOuterContentType ()Lcom/l7tech/common/mime/ContentTypeHeader; 1
      // 1b: astore 5
      // 1d: aload 5
      // 1f: invokevirtual com/l7tech/common/mime/ContentTypeHeader.getFullValue ()Ljava/lang/String;
      // 22: astore 6
      // 24: aload 6
      // 26: invokestatic com/sun/ws/management/transport/ContentType.createFromHttpContentType (Ljava/lang/String;)Lcom/sun/ws/management/transport/ContentType;
      // 29: astore 7
      // 2b: aload 7
      // 2d: ifnull 3f
      // 30: aload 7
      // 32: invokevirtual com/sun/ws/management/transport/ContentType.isAcceptable ()Z
      // 35: ifne 63
      // 38: goto 3f
      // 3b: invokestatic com/l7tech/external/assertions/gatewaymanagement/server/ServerGatewayManagementAssertion.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 3e: athrow
      // 3f: aload 0
      // 40: getstatic com/l7tech/gateway/common/audit/AssertionMessages.GATEWAYMANAGEMENT_ERROR Lcom/l7tech/gateway/common/audit/Messages$M;
      // 43: bipush 1
      // 44: anewarray 31
      // 47: dup
      // 48: bipush 0
      // 49: aload 6
      // 4b: getstatic com/l7tech/external/assertions/gatewaymanagement/server/ServerGatewayManagementAssertion.e [Ljava/lang/String;
      // 4e: bipush 12
      // 50: aaload
      // 51: swap
      // 52: 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" ]
      // 57: aastore
      // 58: invokevirtual com/l7tech/external/assertions/gatewaymanagement/server/ServerGatewayManagementAssertion.logAndAudit (Lcom/l7tech/gateway/common/audit/AuditDetailMessage;[Ljava/lang/String;)V
      // 5b: getstatic com/l7tech/policy/assertion/AssertionStatus.FALSIFIED Lcom/l7tech/policy/assertion/AssertionStatus;
      // 5e: areturn
      // 5f: invokestatic com/l7tech/external/assertions/gatewaymanagement/server/ServerGatewayManagementAssertion.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 62: athrow
      // 63: invokestatic java/lang/Thread.currentThread ()Ljava/lang/Thread;
      // 66: invokevirtual java/lang/Thread.getContextClassLoader ()Ljava/lang/ClassLoader;
      // 69: astore 8
      // 6b: aload 0
      // 6c: getfield com/l7tech/external/assertions/gatewaymanagement/server/ServerGatewayManagementAssertion.d Z
      // 6f: ifeq 8c
      // 72: invokestatic java/lang/Thread.currentThread ()Ljava/lang/Thread;
      // 75: aload 0
      // 76: getfield com/l7tech/external/assertions/gatewaymanagement/server/ServerGatewayManagementAssertion.assertion Lcom/l7tech/policy/assertion/Assertion;
      // 79: checkcast com/l7tech/external/assertions/gatewaymanagement/GatewayManagementAssertion
      // 7c: invokevirtual java/lang/Object.getClass ()Ljava/lang/Class;
      // 7f: invokevirtual java/lang/Class.getClassLoader ()Ljava/lang/ClassLoader;
      // 82: invokevirtual java/lang/Thread.setContextClassLoader (Ljava/lang/ClassLoader;)V
      // 85: goto 8c
      // 88: invokestatic com/l7tech/external/assertions/gatewaymanagement/server/ServerGatewayManagementAssertion.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 8b: athrow
      // 8c: aload 0
      // 8d: aload 1
      // 8e: aload 5
      // 90: aload 7
      // 92: aload 2
      // 93: aload 3
      // 94: invokevirtual com/l7tech/external/assertions/gatewaymanagement/server/ServerGatewayManagementAssertion.a (Lcom/l7tech/server/message/PolicyEnforcementContext;Lcom/l7tech/common/mime/ContentTypeHeader;Lcom/sun/ws/management/transport/ContentType;Lcom/l7tech/message/Message;Lcom/l7tech/message/Message;)Lcom/l7tech/policy/assertion/AssertionStatus;
      // 97: astore 9
      // 99: invokestatic java/lang/Thread.currentThread ()Ljava/lang/Thread;
      // 9c: aload 8
      // 9e: invokevirtual java/lang/Thread.setContextClassLoader (Ljava/lang/ClassLoader;)V
      // a1: aload 9
      // a3: areturn
      // a4: astore 10
      // a6: invokestatic java/lang/Thread.currentThread ()Ljava/lang/Thread;
      // a9: aload 8
      // ab: invokevirtual java/lang/Thread.setContextClassLoader (Ljava/lang/ClassLoader;)V
      // ae: aload 10
      // b0: athrow
      // try (47 -> 57): 58 java/io/IOException
      // try (20 -> 42): 42 java/io/IOException
      // try (18 -> 23): 24 java/io/IOException
      // try (47 -> 68): 73 null
      // try (73 -> 74): 73 null
   }

   protected ServerGatewayManagementAssertion(GatewayManagementAssertion var1, ApplicationContext var2, boolean var3) throws PolicyAssertionException {
      super(var1);
      this.b = a(this.getAudit(), this.logger, var1);
      this.c = GatewayManagementApplicationContext.getAssertionApplicationContext(var2);
      this.d = var3;
   }

   protected ServerGatewayManagementAssertion(GatewayManagementAssertion var1, ApplicationContext var2, String var3, boolean var4) throws PolicyAssertionException {
      super(var1);
      this.b = a(this.getAudit(), this.logger, var1);
      this.c = new ClassPathXmlApplicationContext(new String[]{var3}, ServerGatewayManagementAssertion.class, var2);
      this.d = var4;
   }

   private static WSManReflectiveAgent a(Audit var0, Logger var1, Assertion var2) throws PolicyAssertionException {
      WSManReflectiveAgent var3 = a.get();
      if (var3 == null) {
         var3 = b(var0, var1, var2);
         a.compareAndSet(null, var3);
      }

      return var3;
   }

   private static WSManReflectiveAgent b(Audit var0, Logger var1, Assertion var2) throws PolicyAssertionException {
      try {
         return new b(null, ValidationUtils.getSchemaSources(), null, var0, var1);
      } catch (SAXException var4) {
         throw new PolicyAssertionException(var2, e[6] + ExceptionUtils.getMessage(var4) + "'", var4);
      }
   }

   private AssertionStatus a(PolicyEnforcementContext var1, ContentTypeHeader var2, ContentType var3, Message var4, Message var5) throws IOException {
      AssertionStatus var6 = AssertionStatus.NONE;
      boolean var7 = false;

      try {
         String[] var20 = e;
         MessageFactory var26 = MessageFactory.newInstance(var20[7]);
         SOAPMessage var9 = var26.createMessage();
         SOAPPart var10 = var9.getSOAPPart();
         var10.setContent(new DOMSource(var4.getXmlKnob().getDocumentReadOnly()));
         Management var11 = new Management(var9);
         var11.setXmlBinding(this.b.getXmlBinding());
         var11.setContentType(var3);
         String var12 = var2.getFullValue();
         User var13 = var1.getDefaultAuthenticationContext().getLastAuthenticatedUser();
         Charset var14 = var2.getEncoding();
         HttpRequestKnob var15 = var4.getHttpRequestKnob();
         String var16 = var15.getRequestUrl();
         HashMap var17 = new HashMap();
         var17.put(var20[14], var20[3]);
         var17.put(var20[18], this.c);
         var17.put(var20[9], var15.getRemoteAddress());
         HandlerContextImpl var18 = new HandlerContextImpl(var13, var12, var14.name(), var16, var17);
         SOAP var19 = (SOAP)this.b.handleRequest(var11, var18);
         this.a(var1, var18.getRequestProperties());
         var7 = true;
         a(var19, var5, var18.getRequestProperties());
         var1.setRoutingStatus(RoutingStatus.ROUTED);
         return var6;
      } catch (IOException var22) {
         IOException var8 = var22;

         try {
            if (!var7) {
               throw var8;
            }
         } catch (IOException var21) {
            throw a(var21);
         }

         this.logAndAudit(AssertionMessages.GATEWAYMANAGEMENT_ERROR, new String[]{ExceptionUtils.getMessage(var22)}, ExceptionUtils.getDebugException(var22));
         return AssertionStatus.FAILED;
      } catch (SAXException var23) {
         this.logAndAudit(AssertionMessages.GATEWAYMANAGEMENT_ERROR, new String[]{ExceptionUtils.getMessage(var23)}, ExceptionUtils.getDebugException(var23));
         return AssertionStatus.FAILED;
      } catch (SOAPException var24) {
         this.logAndAudit(AssertionMessages.GATEWAYMANAGEMENT_ERROR, new String[]{ExceptionUtils.getMessage(var24)}, var24);
         return AssertionStatus.FAILED;
      } catch (JAXBException var25) {
         this.logAndAudit(AssertionMessages.GATEWAYMANAGEMENT_ERROR, new String[]{ExceptionUtils.getMessage(var25)}, var25);
         return AssertionStatus.FAILED;
      }
   }

   private static void a(Management var0) throws SOAPException, JAXBException, ServerGatewayManagementAssertion.SchemaValidationException {
      try {
         var0.getTimeout();
         var0.getResourceURI();
         var0.getOptions();
         var0.getSelectors();
         var0.getMaxEnvelopeSize();
         var0.getLocale();
      } catch (JAXBException var3) {
         JAXBException var1 = var3;

         try {
            if (ExceptionUtils.causedBy(var1, SAXParseException.class)) {
               throw new ServerGatewayManagementAssertion.SchemaValidationException(ExceptionUtils.getMessage(var1), var1);
            }
         } catch (JAXBException var2) {
            throw a(var2);
         }

         throw var3;
      }
   }

   private static void a(Audit var0, Management var1) throws SOAPException, JAXBException {
      try {
         a(var0, var1.getReplyTo());
         if (var1.getReplyTo() == null) {
            a(var0, var1.getFrom());
         }
      } catch (SOAPException var2) {
         throw a(var2);
      }

      a(var0, var1.getFaultTo());
   }

   private static void a(Audit param0, EndpointReferenceType param1) {
      // $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: ifnull 5f
      // 04: aload 1
      // 05: invokevirtual org/xmlsoap/schemas/ws/_2004/_08/addressing/EndpointReferenceType.getAddress ()Lorg/xmlsoap/schemas/ws/_2004/_08/addressing/AttributedURI;
      // 08: ifnull 5f
      // 0b: goto 12
      // 0e: invokestatic com/l7tech/external/assertions/gatewaymanagement/server/ServerGatewayManagementAssertion.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 11: athrow
      // 12: getstatic com/l7tech/external/assertions/gatewaymanagement/server/ServerGatewayManagementAssertion.e [Ljava/lang/String;
      // 15: bipush 15
      // 17: aaload
      // 18: aload 1
      // 19: invokevirtual org/xmlsoap/schemas/ws/_2004/_08/addressing/EndpointReferenceType.getAddress ()Lorg/xmlsoap/schemas/ws/_2004/_08/addressing/AttributedURI;
      // 1c: invokevirtual org/xmlsoap/schemas/ws/_2004/_08/addressing/AttributedURI.getValue ()Ljava/lang/String;
      // 1f: invokevirtual java/lang/String.equals (Ljava/lang/Object;)Z
      // 22: ifne 5f
      // 25: goto 2c
      // 28: invokestatic com/l7tech/external/assertions/gatewaymanagement/server/ServerGatewayManagementAssertion.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 2b: athrow
      // 2c: aload 0
      // 2d: getstatic com/l7tech/gateway/common/audit/AssertionMessages.GATEWAYMANAGEMENT_ERROR Lcom/l7tech/gateway/common/audit/Messages$M;
      // 30: bipush 1
      // 31: anewarray 31
      // 34: dup
      // 35: bipush 0
      // 36: aload 1
      // 37: invokevirtual org/xmlsoap/schemas/ws/_2004/_08/addressing/EndpointReferenceType.getAddress ()Lorg/xmlsoap/schemas/ws/_2004/_08/addressing/AttributedURI;
      // 3a: invokevirtual org/xmlsoap/schemas/ws/_2004/_08/addressing/AttributedURI.getValue ()Ljava/lang/String;
      // 3d: getstatic com/l7tech/external/assertions/gatewaymanagement/server/ServerGatewayManagementAssertion.e [Ljava/lang/String;
      // 40: bipush 5
      // 41: aaload
      // 42: swap
      // 43: ldc "'"
      // 45: 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" ]
      // 4a: aastore
      // 4b: invokeinterface com/l7tech/gateway/common/audit/Audit.logAndAudit (Lcom/l7tech/gateway/common/audit/AuditDetailMessage;[Ljava/lang/String;)V 3
      // 50: new com/l7tech/server/policy/assertion/AssertionStatusException
      // 53: dup
      // 54: getstatic com/l7tech/policy/assertion/AssertionStatus.FALSIFIED Lcom/l7tech/policy/assertion/AssertionStatus;
      // 57: invokespecial com/l7tech/server/policy/assertion/AssertionStatusException.<init> (Lcom/l7tech/policy/assertion/AssertionStatus;)V
      // 5a: athrow
      // 5b: invokestatic com/l7tech/external/assertions/gatewaymanagement/server/ServerGatewayManagementAssertion.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 5e: athrow
      // 5f: return
      // try (0 -> 5): 6 com/l7tech/server/policy/assertion/AssertionStatusException
      // try (2 -> 16): 17 com/l7tech/server/policy/assertion/AssertionStatusException
      // try (8 -> 41): 41 com/l7tech/server/policy/assertion/AssertionStatusException
   }

   private void a(PolicyEnforcementContext param1, Map<String, ?> param2) {
      // $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 0
      // 01: getfield com/l7tech/external/assertions/gatewaymanagement/server/ServerGatewayManagementAssertion.assertion Lcom/l7tech/policy/assertion/Assertion;
      // 04: checkcast com/l7tech/external/assertions/gatewaymanagement/GatewayManagementAssertion
      // 07: invokevirtual com/l7tech/external/assertions/gatewaymanagement/GatewayManagementAssertion.getVariablePrefix ()Ljava/lang/String;
      // 0a: astore 3
      // 0b: aload 3
      // 0c: ifnull 9a
      // 0f: aload 3
      // 10: invokevirtual java/lang/String.length ()I
      // 13: ifle 9a
      // 16: goto 1d
      // 19: invokestatic com/l7tech/external/assertions/gatewaymanagement/server/ServerGatewayManagementAssertion.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 1c: athrow
      // 1d: aload 1
      // 1e: aload 3
      // 1f: getstatic com/l7tech/external/assertions/gatewaymanagement/server/ServerGatewayManagementAssertion.e [Ljava/lang/String;
      // 22: bipush 1
      // 23: aaload
      // 24: 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" ]
      // 29: aload 2
      // 2a: getstatic com/l7tech/external/assertions/gatewaymanagement/server/ServerGatewayManagementAssertion.e [Ljava/lang/String;
      // 2d: bipush 13
      // 2f: aaload
      // 30: invokeinterface java/util/Map.get (Ljava/lang/Object;)Ljava/lang/Object; 2
      // 35: invokeinterface com/l7tech/server/message/PolicyEnforcementContext.setVariable (Ljava/lang/String;Ljava/lang/Object;)V 3
      // 3a: aload 1
      // 3b: aload 3
      // 3c: getstatic com/l7tech/external/assertions/gatewaymanagement/server/ServerGatewayManagementAssertion.e [Ljava/lang/String;
      // 3f: bipush 11
      // 41: aaload
      // 42: 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" ]
      // 47: aload 2
      // 48: getstatic com/l7tech/external/assertions/gatewaymanagement/server/ServerGatewayManagementAssertion.e [Ljava/lang/String;
      // 4b: bipush 10
      // 4d: aaload
      // 4e: invokeinterface java/util/Map.get (Ljava/lang/Object;)Ljava/lang/Object; 2
      // 53: invokeinterface com/l7tech/server/message/PolicyEnforcementContext.setVariable (Ljava/lang/String;Ljava/lang/Object;)V 3
      // 58: aload 1
      // 59: aload 3
      // 5a: getstatic com/l7tech/external/assertions/gatewaymanagement/server/ServerGatewayManagementAssertion.e [Ljava/lang/String;
      // 5d: bipush 16
      // 5f: aaload
      // 60: 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" ]
      // 65: aload 2
      // 66: getstatic com/l7tech/external/assertions/gatewaymanagement/server/ServerGatewayManagementAssertion.e [Ljava/lang/String;
      // 69: bipush 4
      // 6a: aaload
      // 6b: invokeinterface java/util/Map.get (Ljava/lang/Object;)Ljava/lang/Object; 2
      // 70: invokeinterface com/l7tech/server/message/PolicyEnforcementContext.setVariable (Ljava/lang/String;Ljava/lang/Object;)V 3
      // 75: aload 1
      // 76: aload 3
      // 77: getstatic com/l7tech/external/assertions/gatewaymanagement/server/ServerGatewayManagementAssertion.e [Ljava/lang/String;
      // 7a: bipush 8
      // 7c: aaload
      // 7d: 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" ]
      // 82: aload 2
      // 83: getstatic com/l7tech/external/assertions/gatewaymanagement/server/ServerGatewayManagementAssertion.e [Ljava/lang/String;
      // 86: bipush 17
      // 88: aaload
      // 89: invokeinterface java/util/Map.get (Ljava/lang/Object;)Ljava/lang/Object; 2
      // 8e: invokeinterface com/l7tech/server/message/PolicyEnforcementContext.setVariable (Ljava/lang/String;Ljava/lang/Object;)V 3
      // 93: goto 9a
      // 96: invokestatic com/l7tech/external/assertions/gatewaymanagement/server/ServerGatewayManagementAssertion.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 99: athrow
      // 9a: return
      // try (5 -> 10): 11 com/l7tech/server/policy/assertion/AssertionStatusException
      // try (7 -> 61): 62 com/l7tech/server/policy/assertion/AssertionStatusException
   }

   private static void a(SOAP var0, Message var1, Map<String, ?> var2) throws SOAPException, JAXBException, IOException {
      if (var0 instanceof Identify) {
         ByteArrayOutputStream var3 = new ByteArrayOutputStream();
         var0.writeTo(var3);
         var1.initialize(ContentTypeHeader.SOAP_1_2_DEFAULT, var3.toByteArray());
      } else {
         a((Management)var0, var1, var2);
      }
   }

   private static void a(Management param0, Message param1, Map<String, ?> param2) throws SOAPException, JAXBException, 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: invokevirtual com/l7tech/message/Message.getHttpResponseKnob ()Lcom/l7tech/message/HttpResponseKnob;
      // 04: astore 3
      // 05: aload 0
      // 06: invokevirtual com/sun/ws/management/Management.getBody ()Ljakarta/xml/soap/SOAPBody;
      // 09: invokeinterface jakarta/xml/soap/SOAPBody.hasFault ()Z 1
      // 0e: ifeq 71
      // 11: getstatic com/sun/ws/management/soap/SOAP.SENDER Ljavax/xml/namespace/QName;
      // 14: aload 0
      // 15: invokevirtual com/sun/ws/management/Management.getBody ()Ljakarta/xml/soap/SOAPBody;
      // 18: invokeinterface jakarta/xml/soap/SOAPBody.getFault ()Ljakarta/xml/soap/SOAPFault; 1
      // 1d: invokeinterface jakarta/xml/soap/SOAPFault.getFaultCodeAsQName ()Ljavax/xml/namespace/QName; 1
      // 22: invokevirtual javax/xml/namespace/QName.equals (Ljava/lang/Object;)Z
      // 25: ifeq 3f
      // 28: goto 2f
      // 2b: invokestatic com/l7tech/external/assertions/gatewaymanagement/server/ServerGatewayManagementAssertion.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 2e: athrow
      // 2f: aload 3
      // 30: sipush 400
      // 33: invokeinterface com/l7tech/message/HttpResponseKnob.setStatus (I)V 2
      // 38: goto 71
      // 3b: invokestatic com/l7tech/external/assertions/gatewaymanagement/server/ServerGatewayManagementAssertion.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 3e: athrow
      // 3f: aload 2
      // 40: getstatic com/l7tech/external/assertions/gatewaymanagement/server/ServerGatewayManagementAssertion.e [Ljava/lang/String;
      // 43: astore 6
      // 45: aload 6
      // 47: bipush 2
      // 48: aaload
      // 49: invokeinterface java/util/Map.get (Ljava/lang/Object;)Ljava/lang/Object; 2
      // 4e: astore 4
      // 50: aload 4
      // 52: instanceof com/sun/ws/management/enumeration/InvalidEnumerationContextFault
      // 55: ifeq 68
      // 58: aload 3
      // 59: sipush 400
      // 5c: invokeinterface com/l7tech/message/HttpResponseKnob.setStatus (I)V 2
      // 61: goto 71
      // 64: invokestatic com/l7tech/external/assertions/gatewaymanagement/server/ServerGatewayManagementAssertion.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 67: athrow
      // 68: aload 3
      // 69: sipush 500
      // 6c: invokeinterface com/l7tech/message/HttpResponseKnob.setStatus (I)V 2
      // 71: new java/io/ByteArrayOutputStream
      // 74: dup
      // 75: invokespecial java/io/ByteArrayOutputStream.<init> ()V
      // 78: astore 4
      // 7a: aload 0
      // 7b: aload 4
      // 7d: invokevirtual com/sun/ws/management/Management.writeTo (Ljava/io/OutputStream;)V
      // 80: aload 4
      // 82: invokevirtual java/io/ByteArrayOutputStream.toByteArray ()[B
      // 85: astore 5
      // 87: aload 0
      // 88: invokevirtual com/sun/ws/management/Management.getHeader ()Ljakarta/xml/soap/SOAPHeader;
      // 8b: ifnull c3
      // 8e: aload 0
      // 8f: invokevirtual com/sun/ws/management/Management.getAction ()Ljava/lang/String;
      // 92: ifnull c3
      // 95: goto 9c
      // 98: invokestatic com/l7tech/external/assertions/gatewaymanagement/server/ServerGatewayManagementAssertion.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 9b: athrow
      // 9c: aload 1
      // 9d: getstatic com/l7tech/common/mime/ContentTypeHeader.SOAP_1_2_DEFAULT Lcom/l7tech/common/mime/ContentTypeHeader;
      // a0: invokevirtual com/l7tech/common/mime/ContentTypeHeader.getFullValue ()Ljava/lang/String;
      // a3: aload 0
      // a4: invokevirtual com/sun/ws/management/Management.getAction ()Ljava/lang/String;
      // a7: getstatic com/l7tech/external/assertions/gatewaymanagement/server/ServerGatewayManagementAssertion.e [Ljava/lang/String;
      // aa: bipush 0
      // ab: aaload
      // ac: swap
      // ad: ldc "\""
      // af: invokedynamic makeConcatWithConstants (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" ]
      // b4: invokestatic com/l7tech/common/mime/ContentTypeHeader.parseValue (Ljava/lang/String;)Lcom/l7tech/common/mime/ContentTypeHeader;
      // b7: aload 5
      // b9: invokevirtual com/l7tech/message/Message.initialize (Lcom/l7tech/common/mime/ContentTypeHeader;[B)V
      // bc: goto cc
      // bf: invokestatic com/l7tech/external/assertions/gatewaymanagement/server/ServerGatewayManagementAssertion.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // c2: athrow
      // c3: aload 1
      // c4: getstatic com/l7tech/common/mime/ContentTypeHeader.SOAP_1_2_DEFAULT Lcom/l7tech/common/mime/ContentTypeHeader;
      // c7: aload 5
      // c9: invokevirtual com/l7tech/message/Message.initialize (Lcom/l7tech/common/mime/ContentTypeHeader;[B)V
      // cc: return
      // try (3 -> 14): 15 jakarta/xml/soap/SOAPException
      // try (7 -> 21): 21 jakarta/xml/soap/SOAPException
      // try (31 -> 38): 38 jakarta/xml/soap/SOAPException
      // try (53 -> 59): 60 jakarta/xml/soap/SOAPException
      // try (56 -> 77): 77 jakarta/xml/soap/SOAPException
   }

   static {
      String[] var5 = new String[19];
      int var3 = 0;
      String var2 = "!{j\u001af\u0007rtf)\u00074:h\r{\u0001s\u001by4fW~Yi\u007f8cWa\u001a|n.xWw\u0016~\u007f+\u007f\u0010}\u0000:y4fW~Yi\u007f8cWw\u0016i\u007f)e\u0018~@|i(n\u000bf\u0007rt(%\u000ea\u0003|t:l\u0014w\u0000i42e\u000fs\u0002t~3j\u0017v\u0002xh(\u001cy4fW~Yi\u007f8cWa\u001a|n.xWw\u0000is/r-k\u001ex'O5x\fb\u001erh/n\u001d2\u001cxi+d\u0017a\u000b=\u007f5o\t}\u0007sn{j\u001dv\u001cxi(+^$_)y\u0016`N~h>j\r{\u0000z:\fXT_\u000fs{<n\u0014w\u0000i::l\u001c|\u001a==\u0011I\u0014J)2_3({[\u000b}\u001ary4g\b46n\na\u000fz\u007f\u0015y4fW~Yi\u007f8cW`\u000bpu/n8v\no\u001ay4fW~Yi\u007f8cWa\u001a|n.xWw\u0000is/r0v\t4>e\r{\u001adS?\u001dY4e\rw\u0000i7\u000fr\twNsu/+\ng\u001emu)\u007f\u001cvN':\u0018y4fW~Yi\u007f8cWa\u001a|n.xWs\ris4e$y4fWa\u001bs4,xW\u007f\u000fs{<n\u0014w\u0000i4(n\u000bd\u000bo43j\u0017v\u0002xh?r/\u007f\t(A2i8c\u001c\u007f\u000fn4#f\u0015a\u0001|jud\u000buAjit9I\"Z2*c$\u0018v\no\u007f(x\u0010|\t2h4g\u001c=\u000fsu5r\u0014}\u001bn\u000b4>e\r{\u001adN\"{\u001c";
      int var4 = "!{j\u001af\u0007rtf)\u00074:h\r{\u0001s\u001by4fW~Yi\u007f8cWa\u001a|n.xWw\u0016~\u007f+\u007f\u0010}\u0000:y4fW~Yi\u007f8cWw\u0016i\u007f)e\u0018~@|i(n\u000bf\u0007rt(%\u000ea\u0003|t:l\u0014w\u0000i42e\u000fs\u0002t~3j\u0017v\u0002xh(\u001cy4fW~Yi\u007f8cWa\u001a|n.xWw\u0000is/r-k\u001ex'O5x\fb\u001erh/n\u001d2\u001cxi+d\u0017a\u000b=\u007f5o\t}\u0007sn{j\u001dv\u001cxi(+^$_)y\u0016`N~h>j\r{\u0000z:\fXT_\u000fs{<n\u0014w\u0000i::l\u001c|\u001a==\u0011I\u0014J)2_3({[\u000b}\u001ary4g\b46n\na\u000fz\u007f\u0015y4fW~Yi\u007f8cW`\u000bpu/n8v\no\u001ay4fW~Yi\u007f8cWa\u001a|n.xWw\u0000is/r0v\t4>e\r{\u001adS?\u001dY4e\rw\u0000i7\u000fr\twNsu/+\ng\u001emu)\u007f\u001cvN':\u0018y4fW~Yi\u007f8cWa\u001a|n.xWs\ris4e$y4fWa\u001bs4,xW\u007f\u000fs{<n\u0014w\u0000i4(n\u000bd\u000bo43j\u0017v\u0002xh?r/\u007f\t(A2i8c\u001c\u007f\u000fn4#f\u0015a\u0001|jud\u000buAjit9I\"Z2*c$\u0018v\no\u007f(x\u0010|\t2h4g\u001c=\u000fsu5r\u0014}\u001bn\u000b4>e\r{\u001adN\"{\u001c"
         .length();
      char var1 = '\n';
      int var7 = -1;

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

         while (true) {
            String var8 = b(var10000, a(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var8;
                  if ((var7 += var1) >= var4) {
                     e = var5;
                     a = new AtomicReference<>();
                     return;
                  }

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

                  var2 = "\u0001L\u001e/\u0006!\u0011\u0007@\u001b/\u0019b\u0004\u0016V\u0000/\u0007s\u0016\u0011B\u0014d\u0012\u0001L\u001e/\u0006!\u0011\u0007@\u001b/\ty\u000b\u0016F\u000bu";
                  var4 = "\u0001L\u001e/\u0006!\u0011\u0007@\u001b/\u0019b\u0004\u0016V\u0000/\u0007s\u0016\u0011B\u0014d\u0012\u0001L\u001e/\u0006!\u0011\u0007@\u001b/\ty\u000b\u0016F\u000bu"
                     .length();
                  var1 = 25;
                  var7 = -1;
            }

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

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

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

      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 -> 90;
            case 1 -> 27;
            case 2 -> 75;
            case 3 -> 57;
            case 4 -> 82;
            case 5 -> 46;
            default -> 93;
         });
      }

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

   private static class SchemaValidationException extends Exception {
      static final long serialVersionUID = -1540820387673806760L;

      private SchemaValidationException(String var1, Throwable var2) {
         super(var1, var2);
      }
   }
}
