package com.l7tech.server;

import com.l7tech.common.http.HttpConstants;
import com.l7tech.common.password.PasswordHasher;
import com.l7tech.gateway.common.LicenseException;
import com.l7tech.gateway.common.LicenseManager;
import com.l7tech.gateway.common.service.PublishedService;
import com.l7tech.gateway.common.transport.SsgConnector;
import com.l7tech.gateway.common.transport.SsgConnector.Endpoint;
import com.l7tech.identity.AuthenticationException;
import com.l7tech.identity.BadCredentialsException;
import com.l7tech.identity.IdentityProvider;
import com.l7tech.identity.IssuedCertNotPresentedException;
import com.l7tech.identity.MissingCredentialsException;
import com.l7tech.identity.User;
import com.l7tech.identity.UserBean;
import com.l7tech.identity.cert.ClientCertManager;
import com.l7tech.objectmodel.EntityType;
import com.l7tech.objectmodel.FindException;
import com.l7tech.objectmodel.Goid;
import com.l7tech.policy.IncludeAssertionDereferenceTranslator;
import com.l7tech.policy.Policy;
import com.l7tech.policy.assertion.Assertion;
import com.l7tech.policy.assertion.CustomAssertionHolder;
import com.l7tech.policy.assertion.Include;
import com.l7tech.policy.assertion.PolicyAssertionException;
import com.l7tech.policy.assertion.credential.LoginCredentials;
import com.l7tech.policy.wsp.WspReader;
import com.l7tech.policy.wsp.WspWriter;
import com.l7tech.server.admin.AdminSessionManager;
import com.l7tech.server.identity.AuthenticationResult;
import com.l7tech.server.identity.IdentityProviderFactory;
import com.l7tech.server.policy.PolicyManager;
import com.l7tech.server.service.ServiceCache;
import com.l7tech.server.transport.ListenerException;
import com.l7tech.server.transport.http.HttpTransportModule;
import com.l7tech.util.CausedIOException;
import com.l7tech.util.Charsets;
import com.l7tech.util.Config;
import com.l7tech.util.ConfigFactory;
import com.l7tech.util.Functions;
import com.l7tech.util.GoidUpgradeMapper;
import com.l7tech.util.Functions.Unary;
import jakarta.servlet.ServletConfig;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.springframework.context.ApplicationContext;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

public abstract class AuthenticatableHttpServlet extends HttpServlet {
   protected final Logger logger = Logger.getLogger(this.getClass().getName());
   private static final boolean checkCertificatePresent;
   private WebApplicationContext applicationContext;
   protected Config config;
   protected PolicyManager policyManager;
   protected ServiceCache serviceCache;
   protected ClientCertManager clientCertManager;
   protected WspReader wspReader;
   protected IdentityProviderFactory identityProviderFactory;
   protected LicenseManager licenseManager;
   protected PasswordHasher passwordHasher;
   protected AdminSessionManager adminSessionManager;
   static final long serialVersionUID = -7855579329841584822L;
   private static final String[] a;

   public void init(ServletConfig var1) throws ServletException {
      try {
         super.init(var1);
         this.applicationContext = WebApplicationContextUtils.getWebApplicationContext(this.getServletContext());
         if (this.applicationContext == null) {
            throw new ServletException(a[48]);
         }
      } catch (ServletException var3) {
         throw c(var3);
      }

      String[] var2 = a;
      this.config = this.getBean(var2[6], Config.class);
      this.clientCertManager = this.getBean(var2[9], ClientCertManager.class);
      this.identityProviderFactory = this.getBean(var2[52], IdentityProviderFactory.class);
      this.licenseManager = this.getBean(var2[47], LicenseManager.class);
      this.serviceCache = this.getBean(var2[27], ServiceCache.class);
      this.policyManager = this.getBean(var2[19], PolicyManager.class);
      this.wspReader = this.getBean(var2[21], WspReader.class);
      this.passwordHasher = this.getBean(var2[18], PasswordHasher.class);
      this.adminSessionManager = this.getBean(var2[5], AdminSessionManager.class);
   }

   protected Object getBean(String var1) throws ServletException {
      return this.getBean(var1, null);
   }

   protected <T> T getBean(String param1, Class<T> param2) throws ServletException {
      // $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/server/AuthenticatableHttpServlet.applicationContext Lorg/springframework/web/context/WebApplicationContext;
      // 04: aload 1
      // 05: aload 2
      // 06: invokeinterface org/springframework/web/context/WebApplicationContext.getBean (Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object; 3
      // 0b: astore 3
      // 0c: aload 3
      // 0d: ifnonnull 29
      // 10: new jakarta/servlet/ServletException
      // 13: dup
      // 14: aload 1
      // 15: getstatic com/l7tech/server/AuthenticatableHttpServlet.a [Ljava/lang/String;
      // 18: bipush 38
      // 1a: aaload
      // 1b: swap
      // 1c: 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" ]
      // 21: invokespecial jakarta/servlet/ServletException.<init> (Ljava/lang/String;)V
      // 24: athrow
      // 25: invokestatic com/l7tech/server/AuthenticatableHttpServlet.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 28: athrow
      // 29: aload 2
      // 2a: ifnull 67
      // 2d: aload 2
      // 2e: aload 3
      // 2f: invokevirtual java/lang/Object.getClass ()Ljava/lang/Class;
      // 32: invokevirtual java/lang/Class.isAssignableFrom (Ljava/lang/Class;)Z
      // 35: ifne 67
      // 38: goto 3f
      // 3b: invokestatic com/l7tech/server/AuthenticatableHttpServlet.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 3e: athrow
      // 3f: new jakarta/servlet/ServletException
      // 42: dup
      // 43: aload 1
      // 44: aload 3
      // 45: invokevirtual java/lang/Object.getClass ()Ljava/lang/Class;
      // 48: invokestatic java/lang/String.valueOf (Ljava/lang/Object;)Ljava/lang/String;
      // 4b: getstatic com/l7tech/server/AuthenticatableHttpServlet.a [Ljava/lang/String;
      // 4e: bipush 30
      // 50: aaload
      // 51: dup_x2
      // 52: pop
      // 53: getstatic com/l7tech/server/AuthenticatableHttpServlet.a [Ljava/lang/String;
      // 56: bipush 49
      // 58: aaload
      // 59: swap
      // 5a: 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" ]
      // 5f: invokespecial jakarta/servlet/ServletException.<init> (Ljava/lang/String;)V
      // 62: athrow
      // 63: invokestatic com/l7tech/server/AuthenticatableHttpServlet.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 66: athrow
      // 67: aload 3
      // 68: areturn
      // try (6 -> 18): 18 jakarta/servlet/ServletException
      // try (20 -> 27): 28 jakarta/servlet/ServletException
      // try (22 -> 48): 48 jakarta/servlet/ServletException
   }

   protected abstract String getFeature();

   protected abstract Endpoint getRequiredEndpoint();

   protected void service(HttpServletRequest var1, HttpServletResponse var2) throws ServletException, IOException {
      try {
         SsgConnector var3 = HttpTransportModule.getConnector(var1);
         HttpTransportModule.addHstsResponseHeaderIfRequired(var1, var2, var3, this.config);
         Endpoint var4 = this.getRequiredEndpoint();

         try {
            if (var4 != null) {
               HttpTransportModule.requireEndpoint(var3, var4);
            }
         } catch (ListenerException var5) {
            throw c(var5);
         }
      } catch (ListenerException var6) {
         var2.sendError(502, a[12]);
         return;
      }

      super.service(var1, var2);
   }

   protected AuthenticationResult[] authenticateRequestBasic(HttpServletRequest var1) throws BadCredentialsException, MissingCredentialsException, IssuedCertNotPresentedException, LicenseException, ListenerException {
      return this.authenticateRequestBasic(var1, false);
   }

   protected AuthenticationResult[] authenticateRequestBasic(HttpServletRequest var1, boolean var2) throws BadCredentialsException, MissingCredentialsException, IssuedCertNotPresentedException, LicenseException, ListenerException {
      this.licenseManager.requireFeature(this.getFeature());

      try {
         AuthenticatableHttpServlet.AhsAuthResult var3 = this.authenticateRequestAgainstAllIdProviders(var1, var2);
         AuthenticationResult[] var4 = var3.getAuthResults();

         try {
            if (var4 != null && var4.length >= 1) {
               return var4;
            }
         } catch (FindException var8) {
            throw c(var8);
         }

         String[] var6 = a;
         String var5 = var6[32];

         try {
            this.logger.warning(var5);
            if (var3.isSawCredentials()) {
               throw new BadCredentialsException(var5);
            }
         } catch (FindException var7) {
            throw c(var7);
         }

         throw new MissingCredentialsException();
      } catch (FindException var9) {
         this.logger.log(Level.SEVERE, a[24], var9);
         return new AuthenticationResult[0];
      }
   }

   protected void doHttpBasicChallenge(HttpServletResponse var1) throws IOException {
      var1.setStatus(401);
      String[] var2 = a;
      var1.setHeader(HttpConstants.HEADER_WWW_AUTHENTICATE, var2[28]);
      var1.setContentType(var2[13]);
      var1.getWriter().println(var2[43]);
   }

   private AuthenticatableHttpServlet.AhsAuthResult authenticateRequestAgainstAllIdProviders(HttpServletRequest param1, boolean param2) throws FindException, IssuedCertNotPresentedException {
      // $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: new java/util/ArrayList
      // 003: dup
      // 004: invokespecial java/util/ArrayList.<init> ()V
      // 007: astore 3
      // 008: aload 0
      // 009: getfield com/l7tech/server/AuthenticatableHttpServlet.identityProviderFactory Lcom/l7tech/server/identity/IdentityProviderFactory;
      // 00c: invokevirtual com/l7tech/server/identity/IdentityProviderFactory.findAllIdentityProviders ()Ljava/util/Collection;
      // 00f: astore 4
      // 011: aload 0
      // 012: aload 1
      // 013: invokevirtual com/l7tech/server/AuthenticatableHttpServlet.findCredentialsBasic (Ljakarta/servlet/http/HttpServletRequest;)Lcom/l7tech/policy/assertion/credential/LoginCredentials;
      // 016: astore 5
      // 018: aload 5
      // 01a: ifnull 025
      // 01d: bipush 1
      // 01e: goto 026
      // 021: invokestatic com/l7tech/server/AuthenticatableHttpServlet.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 024: athrow
      // 025: bipush 0
      // 026: istore 6
      // 028: aload 5
      // 02a: ifnonnull 03f
      // 02d: new com/l7tech/server/AuthenticatableHttpServlet$AhsAuthResult
      // 030: dup
      // 031: iload 6
      // 033: bipush 0
      // 034: anewarray 509
      // 037: invokespecial com/l7tech/server/AuthenticatableHttpServlet$AhsAuthResult.<init> (Z[Lcom/l7tech/server/identity/AuthenticationResult;)V
      // 03a: areturn
      // 03b: invokestatic com/l7tech/server/AuthenticatableHttpServlet.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 03e: athrow
      // 03f: aload 1
      // 040: invokeinterface jakarta/servlet/http/HttpServletRequest.isSecure ()Z 1
      // 045: ifne 075
      // 048: aload 0
      // 049: invokevirtual com/l7tech/server/AuthenticatableHttpServlet.isCleartextAllowed ()Z
      // 04c: ifne 075
      // 04f: goto 056
      // 052: invokestatic com/l7tech/server/AuthenticatableHttpServlet.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 055: athrow
      // 056: aload 0
      // 057: getfield com/l7tech/server/AuthenticatableHttpServlet.logger Ljava/util/logging/Logger;
      // 05a: getstatic com/l7tech/server/AuthenticatableHttpServlet.a [Ljava/lang/String;
      // 05d: bipush 40
      // 05f: aaload
      // 060: invokevirtual java/util/logging/Logger.info (Ljava/lang/String;)V
      // 063: new com/l7tech/server/AuthenticatableHttpServlet$AhsAuthResult
      // 066: dup
      // 067: iload 6
      // 069: bipush 0
      // 06a: anewarray 509
      // 06d: invokespecial com/l7tech/server/AuthenticatableHttpServlet$AhsAuthResult.<init> (Z[Lcom/l7tech/server/identity/AuthenticationResult;)V
      // 070: areturn
      // 071: invokestatic com/l7tech/server/AuthenticatableHttpServlet.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 074: athrow
      // 075: bipush 0
      // 076: istore 7
      // 078: aload 4
      // 07a: invokeinterface java/util/Collection.iterator ()Ljava/util/Iterator; 1
      // 07f: astore 8
      // 081: aload 8
      // 083: invokeinterface java/util/Iterator.hasNext ()Z 1
      // 088: ifeq 2c0
      // 08b: aload 8
      // 08d: invokeinterface java/util/Iterator.next ()Ljava/lang/Object; 1
      // 092: checkcast com/l7tech/identity/IdentityProvider
      // 095: astore 9
      // 097: iload 2
      // 098: ifeq 0aa
      // 09b: aload 0
      // 09c: getfield com/l7tech/server/AuthenticatableHttpServlet.adminSessionManager Lcom/l7tech/server/admin/AdminSessionManager;
      // 09f: aload 5
      // 0a1: bipush 0
      // 0a2: invokevirtual com/l7tech/server/admin/AdminSessionManager.authenticate (Lcom/l7tech/policy/assertion/credential/LoginCredentials;Z)Lcom/l7tech/server/identity/AuthenticationResult;
      // 0a5: astore 10
      // 0a7: goto 0b8
      // 0aa: aload 9
      // 0ac: checkcast com/l7tech/server/identity/AuthenticatingIdentityProvider
      // 0af: aload 5
      // 0b1: invokeinterface com/l7tech/server/identity/AuthenticatingIdentityProvider.authenticate (Lcom/l7tech/policy/assertion/credential/LoginCredentials;)Lcom/l7tech/server/identity/AuthenticationResult; 2
      // 0b6: astore 10
      // 0b8: aload 10
      // 0ba: ifnonnull 0cb
      // 0bd: iload 2
      // 0be: ifne 0cb
      // 0c1: goto 0c8
      // 0c4: invokestatic com/l7tech/server/AuthenticatableHttpServlet.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0c7: athrow
      // 0c8: goto 081
      // 0cb: aload 10
      // 0cd: ifnonnull 0d3
      // 0d0: goto 2c0
      // 0d3: aload 10
      // 0d5: invokevirtual com/l7tech/server/identity/AuthenticationResult.getUser ()Lcom/l7tech/identity/User;
      // 0d8: astore 11
      // 0da: aload 0
      // 0db: aload 10
      // 0dd: invokevirtual com/l7tech/server/identity/AuthenticationResult.getUser ()Lcom/l7tech/identity/User;
      // 0e0: aload 4
      // 0e2: invokevirtual com/l7tech/server/AuthenticatableHttpServlet.getProviderForUser (Lcom/l7tech/identity/User;Ljava/util/Collection;)Lcom/l7tech/identity/IdentityProvider;
      // 0e5: astore 9
      // 0e7: aload 0
      // 0e8: getfield com/l7tech/server/AuthenticatableHttpServlet.logger Ljava/util/logging/Logger;
      // 0eb: aload 5
      // 0ed: invokevirtual com/l7tech/policy/assertion/credential/LoginCredentials.getLogin ()Ljava/lang/String;
      // 0f0: aload 9
      // 0f2: invokeinterface com/l7tech/identity/IdentityProvider.getConfig ()Lcom/l7tech/identity/IdentityProviderConfig; 1
      // 0f7: invokevirtual com/l7tech/identity/IdentityProviderConfig.getName ()Ljava/lang/String;
      // 0fa: getstatic com/l7tech/server/AuthenticatableHttpServlet.a [Ljava/lang/String;
      // 0fd: bipush 50
      // 0ff: aaload
      // 100: dup_x2
      // 101: pop
      // 102: getstatic com/l7tech/server/AuthenticatableHttpServlet.a [Ljava/lang/String;
      // 105: bipush 4
      // 106: aaload
      // 107: swap
      // 108: 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" ]
      // 10d: invokevirtual java/util/logging/Logger.fine (Ljava/lang/String;)V
      // 110: aload 1
      // 111: invokeinterface jakarta/servlet/http/HttpServletRequest.isSecure ()Z 1
      // 116: ifne 136
      // 119: aload 0
      // 11a: getfield com/l7tech/server/AuthenticatableHttpServlet.logger Ljava/util/logging/Logger;
      // 11d: getstatic com/l7tech/server/AuthenticatableHttpServlet.a [Ljava/lang/String;
      // 120: bipush 44
      // 122: aaload
      // 123: invokevirtual java/util/logging/Logger.info (Ljava/lang/String;)V
      // 126: aload 3
      // 127: aload 10
      // 129: invokeinterface java/util/Collection.add (Ljava/lang/Object;)Z 2
      // 12e: pop
      // 12f: goto 25d
      // 132: invokestatic com/l7tech/server/AuthenticatableHttpServlet.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 135: athrow
      // 136: getstatic com/l7tech/server/AuthenticatableHttpServlet.checkCertificatePresent Z
      // 139: ifne 159
      // 13c: aload 0
      // 13d: getfield com/l7tech/server/AuthenticatableHttpServlet.logger Ljava/util/logging/Logger;
      // 140: getstatic com/l7tech/server/AuthenticatableHttpServlet.a [Ljava/lang/String;
      // 143: bipush 17
      // 145: aaload
      // 146: invokevirtual java/util/logging/Logger.finest (Ljava/lang/String;)V
      // 149: aload 3
      // 14a: aload 10
      // 14c: invokeinterface java/util/Collection.add (Ljava/lang/Object;)Z 2
      // 151: pop
      // 152: goto 25d
      // 155: invokestatic com/l7tech/server/AuthenticatableHttpServlet.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 158: athrow
      // 159: aload 1
      // 15a: invokestatic com/l7tech/server/util/ServletUtils.getRequestCert (Ljakarta/servlet/http/HttpServletRequest;)Ljava/security/cert/X509Certificate;
      // 15d: astore 12
      // 15f: aload 0
      // 160: aload 9
      // 162: invokevirtual com/l7tech/server/AuthenticatableHttpServlet.isLdapCerts (Lcom/l7tech/identity/IdentityProvider;)Z
      // 165: ifeq 177
      // 168: aload 11
      // 16a: checkcast com/l7tech/identity/ldap/LdapUser
      // 16d: invokevirtual com/l7tech/identity/ldap/LdapUser.getCertificate ()Ljava/security/cert/X509Certificate;
      // 170: goto 182
      // 173: invokestatic com/l7tech/server/AuthenticatableHttpServlet.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 176: athrow
      // 177: aload 0
      // 178: getfield com/l7tech/server/AuthenticatableHttpServlet.clientCertManager Lcom/l7tech/identity/cert/ClientCertManager;
      // 17b: aload 11
      // 17d: invokeinterface com/l7tech/identity/cert/ClientCertManager.getUserCert (Lcom/l7tech/identity/User;)Ljava/security/cert/Certificate; 2
      // 182: astore 13
      // 184: aload 13
      // 186: ifnonnull 1b7
      // 189: aload 0
      // 18a: getfield com/l7tech/server/AuthenticatableHttpServlet.logger Ljava/util/logging/Logger;
      // 18d: aload 11
      // 18f: invokeinterface com/l7tech/identity/User.getLogin ()Ljava/lang/String; 1
      // 194: getstatic com/l7tech/server/AuthenticatableHttpServlet.a [Ljava/lang/String;
      // 197: bipush 1
      // 198: aaload
      // 199: swap
      // 19a: getstatic com/l7tech/server/AuthenticatableHttpServlet.a [Ljava/lang/String;
      // 19d: bipush 2
      // 19e: aaload
      // 19f: 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" ]
      // 1a4: invokevirtual java/util/logging/Logger.finest (Ljava/lang/String;)V
      // 1a7: aload 3
      // 1a8: aload 10
      // 1aa: invokeinterface java/util/Collection.add (Ljava/lang/Object;)Z 2
      // 1af: pop
      // 1b0: goto 25d
      // 1b3: invokestatic com/l7tech/server/AuthenticatableHttpServlet.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 1b6: athrow
      // 1b7: aload 12
      // 1b9: ifnonnull 1e0
      // 1bc: aload 0
      // 1bd: getfield com/l7tech/server/AuthenticatableHttpServlet.logger Ljava/util/logging/Logger;
      // 1c0: aload 5
      // 1c2: invokevirtual com/l7tech/policy/assertion/credential/LoginCredentials.getLogin ()Ljava/lang/String;
      // 1c5: getstatic com/l7tech/server/AuthenticatableHttpServlet.a [Ljava/lang/String;
      // 1c8: astore 15
      // 1ca: aload 15
      // 1cc: bipush 25
      // 1ce: aaload
      // 1cf: swap
      // 1d0: aload 15
      // 1d2: bipush 35
      // 1d4: aaload
      // 1d5: 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" ]
      // 1da: invokevirtual java/util/logging/Logger.info (Ljava/lang/String;)V
      // 1dd: bipush 1
      // 1de: istore 7
      // 1e0: aload 13
      // 1e2: instanceof java/security/cert/X509Certificate
      // 1e5: ifeq 1f2
      // 1e8: aload 13
      // 1ea: checkcast java/security/cert/X509Certificate
      // 1ed: astore 14
      // 1ef: goto 205
      // 1f2: aload 0
      // 1f3: getfield com/l7tech/server/AuthenticatableHttpServlet.logger Ljava/util/logging/Logger;
      // 1f6: getstatic com/l7tech/server/AuthenticatableHttpServlet.a [Ljava/lang/String;
      // 1f9: astore 15
      // 1fb: aload 15
      // 1fd: bipush 3
      // 1fe: aaload
      // 1ff: invokevirtual java/util/logging/Logger.warning (Ljava/lang/String;)V
      // 202: goto 081
      // 205: aload 12
      // 207: aload 14
      // 209: invokestatic com/l7tech/common/io/CertUtils.certsAreEqual (Ljava/security/cert/X509Certificate;Ljava/security/cert/X509Certificate;)Z
      // 20c: ifeq 24c
      // 20f: aload 0
      // 210: getfield com/l7tech/server/AuthenticatableHttpServlet.logger Ljava/util/logging/Logger;
      // 213: getstatic com/l7tech/server/AuthenticatableHttpServlet.a [Ljava/lang/String;
      // 216: bipush 10
      // 218: aaload
      // 219: invokevirtual java/util/logging/Logger.finest (Ljava/lang/String;)V
      // 21c: aload 3
      // 21d: new com/l7tech/server/identity/AuthenticationResult
      // 220: dup
      // 221: aload 10
      // 223: invokevirtual com/l7tech/server/identity/AuthenticationResult.getUser ()Lcom/l7tech/identity/User;
      // 226: new com/l7tech/security/token/http/TlsClientCertToken
      // 229: dup
      // 22a: aload 14
      // 22c: invokespecial com/l7tech/security/token/http/TlsClientCertToken.<init> (Ljava/security/cert/X509Certificate;)V
      // 22f: aload 14
      // 231: aload 0
      // 232: getfield com/l7tech/server/AuthenticatableHttpServlet.clientCertManager Lcom/l7tech/identity/cert/ClientCertManager;
      // 235: aload 14
      // 237: invokeinterface com/l7tech/identity/cert/ClientCertManager.isCertPossiblyStale (Ljava/security/cert/X509Certificate;)Z 2
      // 23c: invokespecial com/l7tech/server/identity/AuthenticationResult.<init> (Lcom/l7tech/identity/User;Lcom/l7tech/security/token/SecurityToken;Ljava/security/cert/X509Certificate;Z)V
      // 23f: invokeinterface java/util/Collection.add (Ljava/lang/Object;)Z 2
      // 244: pop
      // 245: goto 25d
      // 248: invokestatic com/l7tech/server/AuthenticatableHttpServlet.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 24b: athrow
      // 24c: aload 0
      // 24d: getfield com/l7tech/server/AuthenticatableHttpServlet.logger Ljava/util/logging/Logger;
      // 250: getstatic com/l7tech/server/AuthenticatableHttpServlet.a [Ljava/lang/String;
      // 253: astore 15
      // 255: aload 15
      // 257: bipush 45
      // 259: aaload
      // 25a: invokevirtual java/util/logging/Logger.warning (Ljava/lang/String;)V
      // 25d: goto 2b2
      // 260: astore 10
      // 262: aload 0
      // 263: getfield com/l7tech/server/AuthenticatableHttpServlet.logger Ljava/util/logging/Logger;
      // 266: aload 5
      // 268: invokevirtual com/l7tech/policy/assertion/credential/LoginCredentials.getLogin ()Ljava/lang/String;
      // 26b: getstatic com/l7tech/server/AuthenticatableHttpServlet.a [Ljava/lang/String;
      // 26e: astore 15
      // 270: aload 15
      // 272: bipush 34
      // 274: aaload
      // 275: swap
      // 276: ldc "'"
      // 278: 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" ]
      // 27d: invokevirtual java/util/logging/Logger.warning (Ljava/lang/String;)V
      // 280: goto 2b2
      // 283: astore 10
      // 285: aload 0
      // 286: getfield com/l7tech/server/AuthenticatableHttpServlet.logger Ljava/util/logging/Logger;
      // 289: aload 5
      // 28b: invokevirtual com/l7tech/policy/assertion/credential/LoginCredentials.getLogin ()Ljava/lang/String;
      // 28e: aload 9
      // 290: invokeinterface com/l7tech/identity/IdentityProvider.getConfig ()Lcom/l7tech/identity/IdentityProviderConfig; 1
      // 295: invokevirtual com/l7tech/identity/IdentityProviderConfig.getName ()Ljava/lang/String;
      // 298: getstatic com/l7tech/server/AuthenticatableHttpServlet.a [Ljava/lang/String;
      // 29b: astore 15
      // 29d: aload 15
      // 29f: bipush 20
      // 2a1: aaload
      // 2a2: dup_x2
      // 2a3: pop
      // 2a4: aload 15
      // 2a6: bipush 31
      // 2a8: aaload
      // 2a9: swap
      // 2aa: 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" ]
      // 2af: invokevirtual java/util/logging/Logger.fine (Ljava/lang/String;)V
      // 2b2: iload 2
      // 2b3: ifeq 2bd
      // 2b6: goto 2c0
      // 2b9: invokestatic com/l7tech/server/AuthenticatableHttpServlet.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 2bc: athrow
      // 2bd: goto 081
      // 2c0: aload 3
      // 2c1: invokeinterface java/util/Collection.isEmpty ()Z 1
      // 2c6: ifeq 2f0
      // 2c9: iload 7
      // 2cb: ifeq 2f0
      // 2ce: goto 2d5
      // 2d1: invokestatic com/l7tech/server/AuthenticatableHttpServlet.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 2d4: athrow
      // 2d5: getstatic com/l7tech/server/AuthenticatableHttpServlet.a [Ljava/lang/String;
      // 2d8: bipush 46
      // 2da: aaload
      // 2db: astore 8
      // 2dd: aload 0
      // 2de: getfield com/l7tech/server/AuthenticatableHttpServlet.logger Ljava/util/logging/Logger;
      // 2e1: aload 8
      // 2e3: invokevirtual java/util/logging/Logger.warning (Ljava/lang/String;)V
      // 2e6: new com/l7tech/identity/IssuedCertNotPresentedException
      // 2e9: dup
      // 2ea: aload 8
      // 2ec: invokespecial com/l7tech/identity/IssuedCertNotPresentedException.<init> (Ljava/lang/String;)V
      // 2ef: athrow
      // 2f0: new com/l7tech/server/AuthenticatableHttpServlet$AhsAuthResult
      // 2f3: dup
      // 2f4: iload 6
      // 2f6: aload 3
      // 2f7: aload 3
      // 2f8: invokeinterface java/util/Collection.size ()I 1
      // 2fd: anewarray 509
      // 300: invokeinterface java/util/Collection.toArray ([Ljava/lang/Object;)[Ljava/lang/Object; 2
      // 305: checkcast [Lcom/l7tech/server/identity/AuthenticationResult;
      // 308: invokespecial com/l7tech/server/AuthenticatableHttpServlet$AhsAuthResult.<init> (Z[Lcom/l7tech/server/identity/AuthenticationResult;)V
      // 30b: areturn
      // try (81 -> 85): 86 com/l7tech/identity/FailAttemptsExceededException
      // try (34 -> 53): 53 com/l7tech/identity/FailAttemptsExceededException
      // try (31 -> 37): 38 com/l7tech/identity/FailAttemptsExceededException
      // try (20 -> 29): 29 com/l7tech/identity/FailAttemptsExceededException
      // try (12 -> 16): 16 com/l7tech/identity/FailAttemptsExceededException
      // try (67 -> 88): 264 com/l7tech/identity/FailAttemptsExceededException
      // try (89 -> 91): 264 com/l7tech/identity/FailAttemptsExceededException
      // try (168 -> 188): 188 com/l7tech/identity/FailAttemptsExceededException
      // try (153 -> 161): 161 com/l7tech/identity/FailAttemptsExceededException
      // try (135 -> 148): 148 com/l7tech/identity/FailAttemptsExceededException
      // try (101 -> 133): 133 com/l7tech/identity/FailAttemptsExceededException
      // try (92 -> 224): 264 com/l7tech/identity/FailAttemptsExceededException
      // try (225 -> 253): 253 com/l7tech/identity/FailAttemptsExceededException
      // try (225 -> 263): 264 com/l7tech/identity/FailAttemptsExceededException
      // try (67 -> 88): 279 java/lang/Exception
      // try (89 -> 91): 279 java/lang/Exception
      // try (92 -> 224): 279 java/lang/Exception
      // try (225 -> 263): 279 java/lang/Exception
      // try (300 -> 303): 303 com/l7tech/identity/FailAttemptsExceededException
      // try (306 -> 311): 312 com/l7tech/identity/FailAttemptsExceededException
   }

   private IdentityProvider getProviderForUser(User var1, Collection<IdentityProvider> var2) throws AuthenticationException {
      IdentityProvider var3 = null;
      if (var1 != null) {
         var3 = (IdentityProvider)Functions.grepFirst(var2, this.providerOidPredicate(var1.getProviderId()));
      }

      try {
         if (var3 == null) {
            throw new AuthenticationException(a[39]);
         } else {
            return var3;
         }
      } catch (AuthenticationException var4) {
         throw c(var4);
      }
   }

   private Unary<Boolean, IdentityProvider> providerOidPredicate(Goid var1) {
      return new f(this, var1);
   }

   private boolean isLdapCerts(IdentityProvider 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: invokeinterface com/l7tech/identity/IdentityProvider.getConfig ()Lcom/l7tech/identity/IdentityProviderConfig; 1
      // 06: instanceof com/l7tech/identity/ldap/LdapIdentityProviderConfig
      // 09: ifeq 2d
      // 0c: aload 1
      // 0d: invokeinterface com/l7tech/identity/IdentityProvider.getConfig ()Lcom/l7tech/identity/IdentityProviderConfig; 1
      // 12: checkcast com/l7tech/identity/ldap/LdapIdentityProviderConfig
      // 15: invokevirtual com/l7tech/identity/ldap/LdapIdentityProviderConfig.getUserCertificateUseType ()Lcom/l7tech/identity/ldap/LdapIdentityProviderConfig$UserCertificateUseType;
      // 18: getstatic com/l7tech/identity/ldap/LdapIdentityProviderConfig$UserCertificateUseType.NONE Lcom/l7tech/identity/ldap/LdapIdentityProviderConfig$UserCertificateUseType;
      // 1b: if_acmpeq 2d
      // 1e: goto 25
      // 21: invokestatic com/l7tech/server/AuthenticatableHttpServlet.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 24: athrow
      // 25: bipush 1
      // 26: goto 2e
      // 29: invokestatic com/l7tech/server/AuthenticatableHttpServlet.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 2c: athrow
      // 2d: bipush 0
      // 2e: ireturn
      // try (0 -> 10): 11 java/lang/RuntimeException
      // try (4 -> 15): 15 java/lang/RuntimeException
   }

   protected boolean isCleartextAllowed() {
      return false;
   }

   protected AuthenticationResult[] authenticateRequestBasic(HttpServletRequest var1, PublishedService var2) throws IOException, BadCredentialsException, MissingCredentialsException, IssuedCertNotPresentedException, LicenseException, ListenerException {
      this.licenseManager.requireFeature(this.getFeature());
      this.requireEndpoint(var1);

      boolean var3;
      try {
         label67: {
            AuthenticatableHttpServlet.AhsAuthResult var4 = this.authenticateRequestAgainstAllIdProviders(var1, false);
            var3 = var4.isSawCredentials();
            AuthenticationResult[] var5 = var4.getAuthResults();

            try {
               if (var5 == null || var5.length <= 0) {
                  break label67;
               }
            } catch (FindException var13) {
               throw c(var13);
            }

            return var5;
         }
      } catch (FindException var14) {
         String[] var10 = a;
         this.logger.log(Level.SEVERE, var10[42], var14);
         return new AuthenticationResult[0];
      }

      LoginCredentials var15 = this.findCredentialsBasic(var1);

      try {
         if (var15 == null) {
            return new AuthenticationResult[0];
         }
      } catch (FindException var11) {
         throw c(var11);
      }

      if (var2 != null) {
         Iterator var16 = var2.getPolicy().getAssertion().preorderIterator();

         while (var16.hasNext()) {
            Assertion var6 = (Assertion)var16.next();
            if (var6 instanceof CustomAssertionHolder var7 && var7.isCustomCredentialSource()) {
               UserBean var8 = new UserBean();
               var8.setProviderId(new Goid(0L, Long.MAX_VALUE));
               var8.setLogin(var15.getLogin());
               String var9 = this.passwordHasher.hashPassword(new String(var15.getCredentials()).getBytes(Charsets.UTF8));
               var8.setHashedPassword(var9);
               return new AuthenticationResult[]{new AuthenticationResult(var8, var15.getSecurityTokens())};
            }
         }
      }

      String var17 = a[16];

      try {
         this.logger.warning(var17);
         if (var3) {
            throw new BadCredentialsException(var17);
         }
      } catch (FindException var12) {
         throw c(var12);
      }

      throw new MissingCredentialsException();
   }

   private void requireEndpoint(HttpServletRequest var1) throws ListenerException {
      Endpoint var2 = this.getRequiredEndpoint();

      try {
         if (var2 != null) {
            HttpTransportModule.requireEndpoint(var1, var2);
         }
      } catch (ListenerException var3) {
         throw c(var3);
      }
   }

   protected LoginCredentials findCredentialsBasic(HttpServletRequest 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: getstatic com/l7tech/server/AuthenticatableHttpServlet.a [Ljava/lang/String;
      // 04: astore 6
      // 06: aload 6
      // 08: bipush 22
      // 0a: aaload
      // 0b: invokeinterface jakarta/servlet/http/HttpServletRequest.getHeader (Ljava/lang/String;)Ljava/lang/String; 2
      // 10: astore 2
      // 11: aload 2
      // 12: ifnull 24
      // 15: aload 2
      // 16: invokevirtual java/lang/String.length ()I
      // 19: bipush 1
      // 1a: if_icmpge 37
      // 1d: goto 24
      // 20: invokestatic com/l7tech/server/AuthenticatableHttpServlet.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 23: athrow
      // 24: aload 0
      // 25: getfield com/l7tech/server/AuthenticatableHttpServlet.logger Ljava/util/logging/Logger;
      // 28: getstatic com/l7tech/server/AuthenticatableHttpServlet.a [Ljava/lang/String;
      // 2b: bipush 23
      // 2d: aaload
      // 2e: invokevirtual java/util/logging/Logger.warning (Ljava/lang/String;)V
      // 31: aconst_null
      // 32: areturn
      // 33: invokestatic com/l7tech/server/AuthenticatableHttpServlet.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 36: athrow
      // 37: new com/l7tech/server/policy/assertion/credential/http/ServerHttpBasic
      // 3a: dup
      // 3b: new com/l7tech/policy/assertion/credential/http/HttpBasic
      // 3e: dup
      // 3f: invokespecial com/l7tech/policy/assertion/credential/http/HttpBasic.<init> ()V
      // 42: invokespecial com/l7tech/server/policy/assertion/credential/http/ServerHttpBasic.<init> (Lcom/l7tech/policy/assertion/credential/http/HttpBasic;)V
      // 45: astore 3
      // 46: aload 3
      // 47: aload 2
      // 48: invokevirtual com/l7tech/server/policy/assertion/credential/http/ServerHttpBasic.findCredentials (Ljava/lang/String;)Lcom/l7tech/policy/assertion/credential/LoginCredentials;
      // 4b: astore 4
      // 4d: aload 4
      // 4f: ifnonnull 66
      // 52: aload 0
      // 53: getfield com/l7tech/server/AuthenticatableHttpServlet.logger Ljava/util/logging/Logger;
      // 56: getstatic com/l7tech/server/AuthenticatableHttpServlet.a [Ljava/lang/String;
      // 59: bipush 7
      // 5b: aaload
      // 5c: invokevirtual java/util/logging/Logger.warning (Ljava/lang/String;)V
      // 5f: goto 66
      // 62: invokestatic com/l7tech/server/AuthenticatableHttpServlet.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 65: athrow
      // 66: aload 4
      // 68: areturn
      // 69: astore 5
      // 6b: aload 0
      // 6c: getfield com/l7tech/server/AuthenticatableHttpServlet.logger Ljava/util/logging/Logger;
      // 6f: getstatic java/util/logging/Level.SEVERE Ljava/util/logging/Level;
      // 72: getstatic com/l7tech/server/AuthenticatableHttpServlet.a [Ljava/lang/String;
      // 75: bipush 37
      // 77: aaload
      // 78: aload 5
      // 7a: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V
      // 7d: aconst_null
      // 7e: areturn
      // try (38 -> 46): 47 java/io/IOException
      // try (10 -> 25): 25 java/io/IOException
      // try (8 -> 14): 15 java/io/IOException
      // try (34 -> 50): 51 java/io/IOException
   }

   protected String getIdentityProviderName(Goid var1) {
      String[] var4 = a;
      String var2 = var4[26];

      try {
         IdentityProvider var3 = this.identityProviderFactory.getProvider(var1);
         if (var3 != null) {
            var2 = var3.getConfig().getName();
         }
      } catch (FindException var5) {
         this.logger.log(Level.WARNING, a[33], var5);
      }

      return var2;
   }

   private Assertion inlineIncludes(Assertion var1) throws PolicyAssertionException {
      Assertion var2;
      if (Assertion.contains(var1, Include.class)) {
         HashSet var3 = new HashSet();
         IncludeAssertionDereferenceTranslator var4 = new IncludeAssertionDereferenceTranslator(this.policyManager, var3, false, false);

         try {
            var2 = Assertion.translate(WspReader.getDefault().parsePermissively(WspWriter.getPolicyXml(var1), WspReader.OMIT_DISABLED), var4);
         } catch (IOException var6) {
            throw new RuntimeException(var6);
         }
      } else {
         var2 = var1;
      }

      return var2;
   }

   protected Assertion parsePolicy(String var1) throws IOException {
      try {
         return this.inlineIncludes(this.wspReader.parsePermissively(var1, WspReader.OMIT_DISABLED));
      } catch (PolicyAssertionException var4) {
         throw new CausedIOException(a[14], var4);
      }
   }

   protected boolean policyAllowAnonymous(Policy 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: aload 1
      // 002: invokevirtual com/l7tech/policy/Policy.getXml ()Ljava/lang/String;
      // 005: invokevirtual com/l7tech/server/AuthenticatableHttpServlet.parsePolicy (Ljava/lang/String;)Lcom/l7tech/policy/assertion/Assertion;
      // 008: astore 2
      // 009: aload 2
      // 00a: ifnonnull 013
      // 00d: bipush 1
      // 00e: ireturn
      // 00f: invokestatic com/l7tech/server/AuthenticatableHttpServlet.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 012: athrow
      // 013: aload 2
      // 014: invokevirtual com/l7tech/policy/assertion/Assertion.preorderIterator ()Ljava/util/Iterator;
      // 017: astore 3
      // 018: bipush 1
      // 019: istore 4
      // 01b: aload 3
      // 01c: invokeinterface java/util/Iterator.hasNext ()Z 1
      // 021: ifeq 0d5
      // 024: aload 3
      // 025: invokeinterface java/util/Iterator.next ()Ljava/lang/Object; 1
      // 02a: checkcast com/l7tech/policy/assertion/Assertion
      // 02d: astore 5
      // 02f: aload 5
      // 031: invokevirtual com/l7tech/policy/assertion/Assertion.isEnabled ()Z
      // 034: ifne 04b
      // 037: aload 0
      // 038: getfield com/l7tech/server/AuthenticatableHttpServlet.logger Ljava/util/logging/Logger;
      // 03b: getstatic com/l7tech/server/AuthenticatableHttpServlet.a [Ljava/lang/String;
      // 03e: bipush 8
      // 040: aaload
      // 041: invokevirtual java/util/logging/Logger.fine (Ljava/lang/String;)V
      // 044: goto 01b
      // 047: invokestatic com/l7tech/server/AuthenticatableHttpServlet.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 04a: athrow
      // 04b: aload 5
      // 04d: instanceof com/l7tech/policy/assertion/CustomAssertionHolder
      // 050: ifeq 06b
      // 053: aload 5
      // 055: checkcast com/l7tech/policy/assertion/CustomAssertionHolder
      // 058: astore 6
      // 05a: aload 6
      // 05c: invokevirtual com/l7tech/policy/assertion/CustomAssertionHolder.isCustomCredentialSource ()Z
      // 05f: ifeq 068
      // 062: bipush 1
      // 063: ireturn
      // 064: invokestatic com/l7tech/server/AuthenticatableHttpServlet.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 067: athrow
      // 068: goto 0d2
      // 06b: aload 5
      // 06d: instanceof com/l7tech/policy/assertion/identity/IdentityAssertion
      // 070: ifeq 0d2
      // 073: aload 5
      // 075: checkcast com/l7tech/policy/assertion/identity/IdentityAssertion
      // 078: astore 6
      // 07a: getstatic com/l7tech/server/AuthenticatableHttpServlet.a [Ljava/lang/String;
      // 07d: astore 9
      // 07f: aload 9
      // 081: bipush 11
      // 083: aaload
      // 084: astore 7
      // 086: aload 0
      // 087: getfield com/l7tech/server/AuthenticatableHttpServlet.identityProviderFactory Lcom/l7tech/server/identity/IdentityProviderFactory;
      // 08a: aload 6
      // 08c: invokevirtual com/l7tech/policy/assertion/identity/IdentityAssertion.getIdentityProviderOid ()Lcom/l7tech/objectmodel/Goid;
      // 08f: invokevirtual com/l7tech/server/identity/IdentityProviderFactory.getProvider (Lcom/l7tech/objectmodel/Goid;)Lcom/l7tech/identity/IdentityProvider;
      // 092: astore 8
      // 094: aload 8
      // 096: ifnonnull 0a7
      // 099: aload 0
      // 09a: getfield com/l7tech/server/AuthenticatableHttpServlet.logger Ljava/util/logging/Logger;
      // 09d: aload 9
      // 09f: bipush 29
      // 0a1: aaload
      // 0a2: invokevirtual java/util/logging/Logger.warning (Ljava/lang/String;)V
      // 0a5: bipush 0
      // 0a6: ireturn
      // 0a7: aload 8
      // 0a9: invokeinterface com/l7tech/identity/IdentityProvider.getConfig ()Lcom/l7tech/identity/IdentityProviderConfig; 1
      // 0ae: invokevirtual com/l7tech/identity/IdentityProviderConfig.type ()Lcom/l7tech/identity/IdentityProviderType;
      // 0b1: getstatic com/l7tech/identity/IdentityProviderType.FEDERATED Lcom/l7tech/identity/IdentityProviderType;
      // 0b4: if_acmpeq 0ba
      // 0b7: bipush 0
      // 0b8: istore 4
      // 0ba: goto 0d2
      // 0bd: astore 8
      // 0bf: aload 0
      // 0c0: getfield com/l7tech/server/AuthenticatableHttpServlet.logger Ljava/util/logging/Logger;
      // 0c3: getstatic com/l7tech/server/AuthenticatableHttpServlet.a [Ljava/lang/String;
      // 0c6: astore 9
      // 0c8: aload 9
      // 0ca: bipush 29
      // 0cc: aaload
      // 0cd: invokevirtual java/util/logging/Logger.warning (Ljava/lang/String;)V
      // 0d0: bipush 0
      // 0d1: ireturn
      // 0d2: goto 01b
      // 0d5: iload 4
      // 0d7: ifeq 0fb
      // 0da: aload 0
      // 0db: invokevirtual com/l7tech/server/AuthenticatableHttpServlet.isAllowAnonymousPolicyIfAllIdentitiesFederated ()Z
      // 0de: ifeq 0fb
      // 0e1: goto 0e8
      // 0e4: invokestatic com/l7tech/server/AuthenticatableHttpServlet.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0e7: athrow
      // 0e8: aload 0
      // 0e9: getfield com/l7tech/server/AuthenticatableHttpServlet.logger Ljava/util/logging/Logger;
      // 0ec: getstatic com/l7tech/server/AuthenticatableHttpServlet.a [Ljava/lang/String;
      // 0ef: bipush 15
      // 0f1: aaload
      // 0f2: invokevirtual java/util/logging/Logger.info (Ljava/lang/String;)V
      // 0f5: bipush 1
      // 0f6: ireturn
      // 0f7: invokestatic com/l7tech/server/AuthenticatableHttpServlet.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0fa: athrow
      // 0fb: aload 0
      // 0fc: aload 2
      // 0fd: invokevirtual com/l7tech/server/AuthenticatableHttpServlet.findCredentialAssertion (Lcom/l7tech/policy/assertion/Assertion;)Lcom/l7tech/policy/assertion/Assertion;
      // 100: ifnull 116
      // 103: aload 0
      // 104: getfield com/l7tech/server/AuthenticatableHttpServlet.logger Ljava/util/logging/Logger;
      // 107: getstatic com/l7tech/server/AuthenticatableHttpServlet.a [Ljava/lang/String;
      // 10a: bipush 41
      // 10c: aaload
      // 10d: invokevirtual java/util/logging/Logger.info (Ljava/lang/String;)V
      // 110: bipush 0
      // 111: ireturn
      // 112: invokestatic com/l7tech/server/AuthenticatableHttpServlet.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 115: athrow
      // 116: aload 0
      // 117: getfield com/l7tech/server/AuthenticatableHttpServlet.logger Ljava/util/logging/Logger;
      // 11a: getstatic com/l7tech/server/AuthenticatableHttpServlet.a [Ljava/lang/String;
      // 11d: bipush 51
      // 11f: aaload
      // 120: invokevirtual java/util/logging/Logger.info (Ljava/lang/String;)V
      // 123: bipush 1
      // 124: ireturn
      // try (41 -> 46): 46 com/l7tech/objectmodel/FindException
      // try (23 -> 33): 33 com/l7tech/objectmodel/FindException
      // try (5 -> 9): 9 com/l7tech/objectmodel/FindException
      // try (61 -> 76): 85 com/l7tech/objectmodel/FindException
      // try (77 -> 84): 85 com/l7tech/objectmodel/FindException
      // try (97 -> 102): 103 com/l7tech/objectmodel/FindException
      // try (99 -> 113): 113 com/l7tech/objectmodel/FindException
      // try (115 -> 127): 127 com/l7tech/objectmodel/FindException
   }

   protected boolean isAllowAnonymousPolicyIfAllIdentitiesFederated() {
      return this.config.getBooleanProperty(a[0], false);
   }

   private Assertion findCredentialAssertion(Assertion 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: invokevirtual com/l7tech/policy/assertion/Assertion.isEnabled ()Z
      // 04: ifeq 1b
      // 07: aload 1
      // 08: invokevirtual com/l7tech/policy/assertion/Assertion.isCredentialSource ()Z
      // 0b: ifeq 1b
      // 0e: goto 15
      // 11: invokestatic com/l7tech/server/AuthenticatableHttpServlet.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 14: athrow
      // 15: aload 1
      // 16: areturn
      // 17: invokestatic com/l7tech/server/AuthenticatableHttpServlet.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 1a: athrow
      // 1b: aload 1
      // 1c: invokevirtual com/l7tech/policy/assertion/Assertion.isEnabled ()Z
      // 1f: ifeq 6a
      // 22: aload 1
      // 23: instanceof com/l7tech/policy/assertion/composite/CompositeAssertion
      // 26: ifeq 6a
      // 29: goto 30
      // 2c: invokestatic com/l7tech/server/AuthenticatableHttpServlet.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 2f: athrow
      // 30: aload 1
      // 31: checkcast com/l7tech/policy/assertion/composite/CompositeAssertion
      // 34: astore 2
      // 35: aload 2
      // 36: invokevirtual com/l7tech/policy/assertion/composite/CompositeAssertion.getChildren ()Ljava/util/List;
      // 39: invokeinterface java/util/List.iterator ()Ljava/util/Iterator; 1
      // 3e: astore 3
      // 3f: aload 3
      // 40: invokeinterface java/util/Iterator.hasNext ()Z 1
      // 45: ifeq 6a
      // 48: aload 3
      // 49: invokeinterface java/util/Iterator.next ()Ljava/lang/Object; 1
      // 4e: checkcast com/l7tech/policy/assertion/Assertion
      // 51: astore 4
      // 53: aload 0
      // 54: aload 4
      // 56: invokevirtual com/l7tech/server/AuthenticatableHttpServlet.findCredentialAssertion (Lcom/l7tech/policy/assertion/Assertion;)Lcom/l7tech/policy/assertion/Assertion;
      // 59: astore 5
      // 5b: aload 5
      // 5d: ifnull 67
      // 60: aload 5
      // 62: areturn
      // 63: invokestatic com/l7tech/server/AuthenticatableHttpServlet.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 66: athrow
      // 67: goto 3f
      // 6a: aconst_null
      // 6b: areturn
      // try (0 -> 6): 7 java/lang/RuntimeException
      // try (3 -> 11): 11 java/lang/RuntimeException
      // try (13 -> 19): 20 java/lang/RuntimeException
      // try (40 -> 44): 44 java/lang/RuntimeException
   }

   protected ApplicationContext getApplicationContext() {
      return this.applicationContext;
   }

   protected PublishedService resolveService(Goid var1) {
      return this.serviceCache.getCachedService(var1);
   }

   protected PublishedService resolveService(Long var1) {
      return this.serviceCache.getCachedService(GoidUpgradeMapper.mapOid(EntityType.SERVICE, var1));
   }

   static {
      String[] var5 = new String[53];
      int var3 = 0;
      String var2 = "*\f\tA^h\rw\b\u0015XYM\r=\f\tVCn\f\t\u0006\u0017^Tb\r*\u0005\f\u001a\u001eE\u0017Zy\r\u0014RD+\u00066\u001d[_V}\ry\b[TRy\u001cy\u0000\u0015\u0017Sj\u001c8\u000b\u001aDR'H;\u001c\u000f\u0017V~\u001c1\f\u0015C^h\t-\f\u001f\u0017D~\u000b:\f\bDQ~\u00045\u0010[@^\u007f\u0000y!/cg+*8\u001a\u0012T\u0017d\u001e<\u001b[ddG$\u001a\u0005\u0012RY\u007fH:\f\tC\u0017b\u0006y\r\u001aCVi\t*\f[^D+\u00066\u001d[o\u0019>X`\u0017y\u0006\u0015\u0017^o\r7\u001d\u0012CN+\u0018+\u0006\r^Sn\u001acI\u00138\r\u0016^YX\r*\u001a\u0012XYF\t7\b\u001cRE\f*\f\tARy+6\u0007\u001d^P\u0015\u0017\u0006[TEn\f<\u0007\u000f^Vg\u001by\u000f\u0014BYoF(\u0018\u001a\bRE\u007f\u00016\u0007[^D+\f0\u001a\u001aU[n\fuI\u0012PYd\u001a<I\u001aDDn\u001a-\u0000\u0014Y\u0019\u0011:\u0005\u0012RY\u007f+<\u001b\u000fzVe\t>\f\t/\u000f\b\u0017^S+\u000b5\u0000\u001eYC+\u000b<\u001b\u000f\u0017Gy\r*\f\u0015CRoH8\u001a[GVy\u001cy\u0006\u001d\u0017En\u0019,\f\bC\u00190\t\u0006\u0017^TrH+\f\u001dRExH-\u0006[V\u0017e\u00077\f\u0003^D\u007f\r7\u001d[^Sn\u0006-\u0000\u000fN\u0017{\u001a6\u001f\u0012SRy \n\f\tA^h\ry\u001c\u0015VAj\u00015\b\u0019[R+\u00077I\u000f_^xH)\u0006\tC\u0019-\f\u0003C\u0018{\u00048\u0000\u0015\f\u0017h\u00008\u001b\bRC6\u001d-\u000fV\u000f\f\t\u0006\u0017^TrH<\u001b\tXEF\u0018\u0005\u0017\u0017~o\r7\u001d\u0012CNJ\u001b*\f\tC^d\u0006*I\u000bX^e\u001cy\u001d\u0014\u0017V+.<\r\u001eEV\u007f\r=I2sg%H\r\u001b\u001eVCb\u0006>I\u001aD\u0017j\u00066\u0007\u0002ZX~\u001bQ\u001a\u001b\u001eSD+\f6I\u0015XC+\t,\u001d\u0013RY\u007f\u0001:\b\u000fR\u0017j\u000f8\u0000\u0015DC+\t7\u0010[ERl\u0001*\u001d\u001eERoH0\r[GEd\u001e0\r\u001eE\u0017d\u001ay\n\u000eDCd\u0005y\b\bDRy\u001c0\u0006\u0015\u0019\u001e\u001a\f\tC^m\u0001:\b\u000fR\u0017h\u0000<\n\u0010\u0017^xH=\u0000\bVUg\r=G\u000e)\b\bD@d\u001a=!\u001aD_n\u001a\r)\u0006\u0017^Tr%8\u0007\u001aPRy\u001f\u0018\u001c\u000f_Re\u001c0\n\u001aC^d\u0006y\u000f\u001a^[n\fy\u000f\u0014E\u0017~\u001b<\u001b[\t.\u001a\u000beRj\f<\u001b\r\u0018\u001c\u000f_Xy\u0001#\b\u000f^Xe\u001e\u0017\u0006[VB\u007f\u00006\u001b\u0012MV\u007f\u00016\u0007[_Rj\f<\u001b[QX~\u0006=G\u001f\u001c\u0011\u0018RG\u007f\u00016\u0007[PR\u007f\u001c0\u0007\u001c\u0017^oH)\u001b\u0014A^o\r+\u001aU\u0005\f\u001a\u001eE\u0017\u0007\f\u0007\u0010YX|\u0006\f*\f\tA^h\r\u001a\b\u0018_R\u001d\u001b\b\b^T+\u001a<\b\u0017Z\n)$n:(puj\u001b0\n)RVg\u0005{0\t\u0006\u0017^TrH+\f\u001dRExH-\u0006[V\u0017e\u00077\f\u0003^D\u007f\r7\u001d[^Sn\u0006-\u0000\u000fN\u0017{\u001a6\u001f\u0012SRy\u001b\u001a\u0006\u0015Q^l\u001d+\b\u000f^XeH<\u001b\tXE0H;\f\u001aY\u0017,\u0017y\u0006\u0015\u0017^o\r7\u001d\u0012CN+\u0018+\u0006\r^Sn\u001acI=\u001a\u001b\u001eSD+\f6I\u0015XC+\t,\u001d\u0013RY\u007f\u0001:\b\u000fR\u0017j\u000f8\u0000\u0015DC+\t7\u0010[ERl\u0001*\u001d\u001eERoH0\r[GEd\u001e0\r\u001eE\u0019 \u001c\u001b\tXE+\u000e0\u0007\u001f^YlH0\r\u001eYCb\u001c I\u000bEX}\u0001=\f\t\u0019:\u0014\b\u0003\u0019\u0017e\u001d4\u000b\u001eE\u0017d\u000ey\u000f\u001a^[n\fy\b\u000fCRf\u0018-\u001a[_VxH;\f\u001eY\u0017y\r8\n\u0013RS+\u000e6\u001b[BDn\u001ayNry\u0001\u001aD\u0017}\t5\u0000\u001f\u0017Uj\u001b0\n[TEn\f<\u0007\u000f^Vg\u001by\u000b\u000eC\u0017b\u001by\u001b\u001eQBx\r=I\u001aBCc\r7\u001d\u0012TV\u007f\u00016\u0007[URh\t,\u001a\u001e\u0017_nH=\u0000\u001f\u0017Yd\u001cy\u0019\tXAnH)\u0006\bDRx\u001b0\u0006\u0015\u0017XmH1\u0000\b\u0017Tg\u0001<\u0007\u000f\u0017Tn\u001a-G2:\u0006\u0016\u0019[<\u001c<\n\u0013\u0019Dn\u001a/\f\t\u0019Dn\u001a/\u0000\u0018RD%\u000b1\f\u0018\\tn\u001a-\u0000\u001d^Tj\u001c<9\tRDn\u0006- \u001c\u0011\u0018RG\u007f\u00016\u0007[[Xd\u00030\u0007\u001c\u0017Qd\u001ay\f\u0003TR{\u001c0\u0006\u0015\u0019#\u001a\u0006\u0015Q^l\u001d+\b\u000f^XeH<\u001b\tXE0H:\u0006\u000e[S+\u00066\u001d[PR\u007fH\u001b\t\u001b\u0014A^o\r+I\u0015XC+\u000e6\u001c\u0015S\u0017m\u0007+I\u000eDRy4\u0011=/g\u0017I\t*\u0000\u0018\u0017V~\u001c1\f\u0015C^h\t-\u0000\u0014Y\u0017b\u001by\u0007\u0014C\u0017j\u00045\u0006\fRS+\u001f0\u001d\u0013XB\u007fH\n:7)\t\u0006\u0017^TrH=\u0006\u001eD\u0017e\u0007-I\u001a[[d\u001fy\b\u0015XYr\u00056\u001c\b\u0017En\u0019,\f\bCD%\u0014\u001c\u001b\tXE+\u000f<\u001d\u000f^YlH,\u001a\u001eED%\u0018\u0018\u001c\u000f_Re\u001c0\n\u001aC^d\u0006y;\u001eFBb\u001a<\rU)\u0011=/g\u0017I\t*\u0000\u0018\u0017^xH;\f\u0012YP+\u0018<\u001b\u0016^C\u007f\r=I\f^Cc\u0007,\u001d[ddGW-\u0001\u001e\u0017V~\u001c1\f\u0015C^h\t-\f\u001f\u0017Bx\r+I\u0013VD+\ty\u001f\u001a[^oH:\f\tC\u0017i\u001d-I\u0013R\u0017{\u001a<\u001a\u001eYCn\fy\b[S^m\u000e<\u001b\u001eYCh\r+\u001d[CX+\u001c1\f[DRy\u001e5\f\u000fg\u001b\b\b^T+\u000b+\f\u001fRY\u007f\u00018\u0005\b\u0017Vy\ry\u001f\u001a[^oH;\u001c\u000f\u0017Cc\ry\n\u0017^Re\u001cy\r\u0012S\u0017e\u0007-I\u000bERx\r7\u001d[_^xH:\u0005\u0012RY\u007fH:\f\tC\u0017j\u001by\u0019\u001aEC+\u0007?I\u000f_R+\u001b*\u0005[_Ve\f*\u0001\u001a\\R\u000e5\u0000\u0018RYx\r\u0014\b\u0015VPn\u001a6\u001a\u0006\u0015Q^l\u001d+\b\u000f^XeH<\u001b\tXE0H:\u0006\u000e[S+\u00066\u001d[PR\u007fH8\u0019\u000b[^h\t-\u0000\u0014Y\u0017h\u00077\u001d\u001eOC\u0016~I\fVD+\u001d7\f\u0003GRh\u001c<\r[CN{\ry \u0018\u001c\u000f_Re\u001c0\n\u001aC^d\u0006y\u001a\u000eTTn\u001b*I\u001dXE+\u001d*\f\t\u0017";
      int var4 = "*\f\tA^h\rw\b\u0015XYM\r=\f\tVCn\f\t\u0006\u0017^Tb\r*\u0005\f\u001a\u001eE\u0017Zy\r\u0014RD+\u00066\u001d[_V}\ry\b[TRy\u001cy\u0000\u0015\u0017Sj\u001c8\u000b\u001aDR'H;\u001c\u000f\u0017V~\u001c1\f\u0015C^h\t-\f\u001f\u0017D~\u000b:\f\bDQ~\u00045\u0010[@^\u007f\u0000y!/cg+*8\u001a\u0012T\u0017d\u001e<\u001b[ddG$\u001a\u0005\u0012RY\u007fH:\f\tC\u0017b\u0006y\r\u001aCVi\t*\f[^D+\u00066\u001d[o\u0019>X`\u0017y\u0006\u0015\u0017^o\r7\u001d\u0012CN+\u0018+\u0006\r^Sn\u001acI\u00138\r\u0016^YX\r*\u001a\u0012XYF\t7\b\u001cRE\f*\f\tARy+6\u0007\u001d^P\u0015\u0017\u0006[TEn\f<\u0007\u000f^Vg\u001by\u000f\u0014BYoF(\u0018\u001a\bRE\u007f\u00016\u0007[^D+\f0\u001a\u001aU[n\fuI\u0012PYd\u001a<I\u001aDDn\u001a-\u0000\u0014Y\u0019\u0011:\u0005\u0012RY\u007f+<\u001b\u000fzVe\t>\f\t/\u000f\b\u0017^S+\u000b5\u0000\u001eYC+\u000b<\u001b\u000f\u0017Gy\r*\f\u0015CRoH8\u001a[GVy\u001cy\u0006\u001d\u0017En\u0019,\f\bC\u00190\t\u0006\u0017^TrH+\f\u001dRExH-\u0006[V\u0017e\u00077\f\u0003^D\u007f\r7\u001d[^Sn\u0006-\u0000\u000fN\u0017{\u001a6\u001f\u0012SRy \n\f\tA^h\ry\u001c\u0015VAj\u00015\b\u0019[R+\u00077I\u000f_^xH)\u0006\tC\u0019-\f\u0003C\u0018{\u00048\u0000\u0015\f\u0017h\u00008\u001b\bRC6\u001d-\u000fV\u000f\f\t\u0006\u0017^TrH<\u001b\tXEF\u0018\u0005\u0017\u0017~o\r7\u001d\u0012CNJ\u001b*\f\tC^d\u0006*I\u000bX^e\u001cy\u001d\u0014\u0017V+.<\r\u001eEV\u007f\r=I2sg%H\r\u001b\u001eVCb\u0006>I\u001aD\u0017j\u00066\u0007\u0002ZX~\u001bQ\u001a\u001b\u001eSD+\f6I\u0015XC+\t,\u001d\u0013RY\u007f\u0001:\b\u000fR\u0017j\u000f8\u0000\u0015DC+\t7\u0010[ERl\u0001*\u001d\u001eERoH0\r[GEd\u001e0\r\u001eE\u0017d\u001ay\n\u000eDCd\u0005y\b\bDRy\u001c0\u0006\u0015\u0019\u001e\u001a\f\tC^m\u0001:\b\u000fR\u0017h\u0000<\n\u0010\u0017^xH=\u0000\bVUg\r=G\u000e)\b\bD@d\u001a=!\u001aD_n\u001a\r)\u0006\u0017^Tr%8\u0007\u001aPRy\u001f\u0018\u001c\u000f_Re\u001c0\n\u001aC^d\u0006y\u000f\u001a^[n\fy\u000f\u0014E\u0017~\u001b<\u001b[\t.\u001a\u000beRj\f<\u001b\r\u0018\u001c\u000f_Xy\u0001#\b\u000f^Xe\u001e\u0017\u0006[VB\u007f\u00006\u001b\u0012MV\u007f\u00016\u0007[_Rj\f<\u001b[QX~\u0006=G\u001f\u001c\u0011\u0018RG\u007f\u00016\u0007[PR\u007f\u001c0\u0007\u001c\u0017^oH)\u001b\u0014A^o\r+\u001aU\u0005\f\u001a\u001eE\u0017\u0007\f\u0007\u0010YX|\u0006\f*\f\tA^h\r\u001a\b\u0018_R\u001d\u001b\b\b^T+\u001a<\b\u0017Z\n)$n:(puj\u001b0\n)RVg\u0005{0\t\u0006\u0017^TrH+\f\u001dRExH-\u0006[V\u0017e\u00077\f\u0003^D\u007f\r7\u001d[^Sn\u0006-\u0000\u000fN\u0017{\u001a6\u001f\u0012SRy\u001b\u001a\u0006\u0015Q^l\u001d+\b\u000f^XeH<\u001b\tXE0H;\f\u001aY\u0017,\u0017y\u0006\u0015\u0017^o\r7\u001d\u0012CN+\u0018+\u0006\r^Sn\u001acI=\u001a\u001b\u001eSD+\f6I\u0015XC+\t,\u001d\u0013RY\u007f\u0001:\b\u000fR\u0017j\u000f8\u0000\u0015DC+\t7\u0010[ERl\u0001*\u001d\u001eERoH0\r[GEd\u001e0\r\u001eE\u0019 \u001c\u001b\tXE+\u000e0\u0007\u001f^YlH0\r\u001eYCb\u001c I\u000bEX}\u0001=\f\t\u0019:\u0014\b\u0003\u0019\u0017e\u001d4\u000b\u001eE\u0017d\u000ey\u000f\u001a^[n\fy\b\u000fCRf\u0018-\u001a[_VxH;\f\u001eY\u0017y\r8\n\u0013RS+\u000e6\u001b[BDn\u001ayNry\u0001\u001aD\u0017}\t5\u0000\u001f\u0017Uj\u001b0\n[TEn\f<\u0007\u000f^Vg\u001by\u000b\u000eC\u0017b\u001by\u001b\u001eQBx\r=I\u001aBCc\r7\u001d\u0012TV\u007f\u00016\u0007[URh\t,\u001a\u001e\u0017_nH=\u0000\u001f\u0017Yd\u001cy\u0019\tXAnH)\u0006\bDRx\u001b0\u0006\u0015\u0017XmH1\u0000\b\u0017Tg\u0001<\u0007\u000f\u0017Tn\u001a-G2:\u0006\u0016\u0019[<\u001c<\n\u0013\u0019Dn\u001a/\f\t\u0019Dn\u001a/\u0000\u0018RD%\u000b1\f\u0018\\tn\u001a-\u0000\u001d^Tj\u001c<9\tRDn\u0006- \u001c\u0011\u0018RG\u007f\u00016\u0007[[Xd\u00030\u0007\u001c\u0017Qd\u001ay\f\u0003TR{\u001c0\u0006\u0015\u0019#\u001a\u0006\u0015Q^l\u001d+\b\u000f^XeH<\u001b\tXE0H:\u0006\u000e[S+\u00066\u001d[PR\u007fH\u001b\t\u001b\u0014A^o\r+I\u0015XC+\u000e6\u001c\u0015S\u0017m\u0007+I\u000eDRy4\u0011=/g\u0017I\t*\u0000\u0018\u0017V~\u001c1\f\u0015C^h\t-\u0000\u0014Y\u0017b\u001by\u0007\u0014C\u0017j\u00045\u0006\fRS+\u001f0\u001d\u0013XB\u007fH\n:7)\t\u0006\u0017^TrH=\u0006\u001eD\u0017e\u0007-I\u001a[[d\u001fy\b\u0015XYr\u00056\u001c\b\u0017En\u0019,\f\bCD%\u0014\u001c\u001b\tXE+\u000f<\u001d\u000f^YlH,\u001a\u001eED%\u0018\u0018\u001c\u000f_Re\u001c0\n\u001aC^d\u0006y;\u001eFBb\u001a<\rU)\u0011=/g\u0017I\t*\u0000\u0018\u0017^xH;\f\u0012YP+\u0018<\u001b\u0016^C\u007f\r=I\f^Cc\u0007,\u001d[ddGW-\u0001\u001e\u0017V~\u001c1\f\u0015C^h\t-\f\u001f\u0017Bx\r+I\u0013VD+\ty\u001f\u001a[^oH:\f\tC\u0017i\u001d-I\u0013R\u0017{\u001a<\u001a\u001eYCn\fy\b[S^m\u000e<\u001b\u001eYCh\r+\u001d[CX+\u001c1\f[DRy\u001e5\f\u000fg\u001b\b\b^T+\u000b+\f\u001fRY\u007f\u00018\u0005\b\u0017Vy\ry\u001f\u001a[^oH;\u001c\u000f\u0017Cc\ry\n\u0017^Re\u001cy\r\u0012S\u0017e\u0007-I\u000bERx\r7\u001d[_^xH:\u0005\u0012RY\u007fH:\f\tC\u0017j\u001by\u0019\u001aEC+\u0007?I\u000f_R+\u001b*\u0005[_Ve\f*\u0001\u001a\\R\u000e5\u0000\u0018RYx\r\u0014\b\u0015VPn\u001a6\u001a\u0006\u0015Q^l\u001d+\b\u000f^XeH<\u001b\tXE0H:\u0006\u000e[S+\u00066\u001d[PR\u007fH8\u0019\u000b[^h\t-\u0000\u0014Y\u0017h\u00077\u001d\u001eOC\u0016~I\fVD+\u001d7\f\u0003GRh\u001c<\r[CN{\ry \u0018\u001c\u000f_Re\u001c0\n\u001aC^d\u0006y\u001a\u000eTTn\u001b*I\u001dXE+\u001d*\f\t\u0017"
         .length();
      char var1 = 29;
      int var7 = -1;

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

         while (true) {
            String var8 = a(var10000, a(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var8;
                  if ((var7 += var1) >= var4) {
                     a = var5;
                     checkCertificatePresent = ConfigFactory.getBooleanProperty(a[36], true);
                     return;
                  }

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

                  var2 = "JET\u001d\u00171\u000b~E]\u0007T)GvEOT\u0015&DtSU\u001b\u0001;\u000bhOI\u0001\u0011;_i\u0004\u0017sN]\u001a\u0000!_czJ\u001b\u0002!O\u007fX~\u0015\u0017<DhS";
                  var4 = "JET\u001d\u00171\u000b~E]\u0007T)GvEOT\u0015&DtSU\u001b\u0001;\u000bhOI\u0001\u0011;_i\u0004\u0017sN]\u001a\u0000!_czJ\u001b\u0002!O\u007fX~\u0015\u0017<DhS"
                     .length();
                  var1 = '%';
                  var7 = -1;
            }

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

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

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

      return var10000;
   }

   private static String a(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 -> 65;
            case 1 -> 113;
            case 2 -> 99;
            case 3 -> 47;
            case 4 -> 47;
            case 5 -> 19;
            default -> 112;
         });
      }

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

   protected static class AhsAuthResult {
      private final boolean a;
      private final AuthenticationResult[] b;

      public AhsAuthResult(boolean var1, AuthenticationResult[] var2) {
         if (var2 == null) {
            throw new IllegalArgumentException();
         }

         this.a = var1;
         this.b = var2;
      }

      public boolean isSawCredentials() {
         return this.a;
      }

      public AuthenticationResult[] getAuthResults() {
         return this.b;
      }
   }
}
