package com.l7tech.server.security.cert;

import com.l7tech.common.http.GenericHttpClientFactory;
import com.l7tech.common.io.CertUtils;
import com.l7tech.common.io.WhirlycacheFactory;
import com.l7tech.gateway.common.audit.Audit;
import com.l7tech.server.url.AbstractUrlObjectCache;
import com.l7tech.server.url.HttpObjectCache;
import com.l7tech.server.url.LdapUrlObjectCache;
import com.l7tech.util.CausedIOException;
import com.l7tech.util.Config;
import com.l7tech.util.ConfigFactory;
import com.l7tech.util.Pair;
import com.l7tech.util.TimeUnit;
import com.whirlycott.cache.Cache;
import java.io.IOException;
import java.math.BigInteger;
import java.security.cert.CRLException;
import java.security.cert.X509CRL;
import java.security.cert.X509Certificate;
import java.util.Timer;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.logging.Logger;
import org.springframework.beans.factory.DisposableBean;

public class CrlCacheImpl implements CrlCache, DisposableBean {
   private static final Logger a;
   private static final int b;
   private static final int c;
   private static final String d;
   private static final String e;
   private static final String f;
   private final Cache g;
   private final Cache h;
   private final LdapUrlObjectCache<X509CRL> i;
   private final HttpObjectCache<X509CRL> j;
   private final ExecutorService k;
   private final Config l;
   private static final String m;
   private static final long n = 300000L;
   private static final String o;
   private static final long p = 60000L;
   private static final String q;
   private static final String r;
   private static final int s = 3;
   private static final int t = 1000;
   private static final String u;
   protected static final String PROP_MAX_CRL_SIZE;
   protected static final int DEFAULT_MAX_CRL_SIZE = 1048576;
   private static final String[] v;

   public CrlCacheImpl(GenericHttpClientFactory var1, Config var2, Timer var3) throws Exception {
      String var10001 = CrlCache.class.getSimpleName();
      String[] var14 = v;
      this.g = WhirlycacheFactory.createCache(var10001 + var14[17], 100, 1800, WhirlycacheFactory.POLICY_LRU);
      this.h = WhirlycacheFactory.createCache(CrlCache.class.getSimpleName() + var14[12], 1000, 1800, WhirlycacheFactory.POLICY_LRU);
      this.l = var2;
      long var4 = var2.getTimeUnitProperty(var14[11], 300000L);
      long var6 = var2.getTimeUnitProperty(var14[39], 60000L);
      int var8 = var2.getIntProperty(var14[5], 3);

      label45: {
         try {
            if (var8 >= 0 && var8 <= 100) {
               break label45;
            }
         } catch (Exception var17) {
            throw a(var17);
         }

         var8 = 3;
         var14 = v;
         a.warning(var14[3] + var8 + var14[27]);
      }

      var14 = v;
      long var9 = var2.getTimeUnitProperty(var14[22], 5000L);
      long var11 = var2.getTimeUnitProperty(var14[26], 30000L);
      this.i = new LdapUrlObjectCache<>(var14[9], var4, AbstractUrlObjectCache.WAIT_LATEST, null, null, var9, var11, true);
      int var13 = ConfigFactory.getIntProperty(var14[13], 1000);

      label36: {
         try {
            if (var13 > 0 && var13 >= 1000) {
               break label36;
            }
         } catch (Exception var16) {
            throw a(var16);
         }

         var13 = 1000;
      }

      try {
         if (ConfigFactory.getProperty(v[37], null) != null) {
            a.config(v[4] + var13);
         }
      } catch (Exception var15) {
         throw a(var15);
      }

      var14 = v;
      this.j = new HttpObjectCache<>(var14[9], var13, var4, -1L, var1, new l(), AbstractUrlObjectCache.WAIT_INITIAL, var14[6], 1048576);
      this.k = this.a(var8);
      this.a(var3, var6);
   }

   public void destroy() throws Exception {
      try {
         if (this.k != null) {
            this.k.shutdown();
         }
      } catch (Exception var1) {
         throw a(var1);
      }
   }

   @Override
   public String[] getCrlUrlsFromCertificate(X509Certificate var1, Audit var2) throws IOException {
      String[] var3 = this.a(var1);

      try {
         if (var3 == null) {
            throw new IllegalStateException();
         } else {
            return var3;
         }
      } catch (IOException var4) {
         throw a(var4);
      }
   }

   @Override
   public X509CRL getCrl(String param1, X509Certificate param2, Audit param3) throws CRLException, 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: aconst_null
      // 001: astore 5
      // 003: aconst_null
      // 004: astore 6
      // 006: aconst_null
      // 007: astore 7
      // 009: aload 0
      // 00a: getfield com/l7tech/server/security/cert/CrlCacheImpl.g Lcom/whirlycott/cache/Cache;
      // 00d: aload 1
      // 00e: invokeinterface com/whirlycott/cache/Cache.retrieve (Ljava/lang/Object;)Ljava/lang/Object; 2
      // 013: checkcast com/l7tech/server/security/cert/k
      // 016: astore 8
      // 018: aload 8
      // 01a: ifnonnull 06a
      // 01d: aload 3
      // 01e: getstatic com/l7tech/gateway/common/audit/SystemMessages.CERTVAL_REV_CACHE_MISS Lcom/l7tech/gateway/common/audit/Messages$M;
      // 021: bipush 2
      // 022: anewarray 140
      // 025: dup
      // 026: bipush 0
      // 027: getstatic com/l7tech/server/security/cert/CrlCacheImpl.v [Ljava/lang/String;
      // 02a: astore 12
      // 02c: aload 12
      // 02e: bipush 33
      // 030: aaload
      // 031: aastore
      // 032: dup
      // 033: bipush 1
      // 034: aload 1
      // 035: aastore
      // 036: invokeinterface com/l7tech/gateway/common/audit/Audit.logAndAudit (Lcom/l7tech/gateway/common/audit/AuditDetailMessage;[Ljava/lang/String;)V 3
      // 03b: new com/l7tech/server/security/cert/k
      // 03e: dup
      // 03f: aload 0
      // 040: invokespecial com/l7tech/server/security/cert/k.<init> (Lcom/l7tech/server/security/cert/CrlCacheImpl;)V
      // 043: astore 8
      // 045: aload 0
      // 046: getfield com/l7tech/server/security/cert/CrlCacheImpl.g Lcom/whirlycott/cache/Cache;
      // 049: aload 1
      // 04a: aload 8
      // 04c: invokeinterface com/whirlycott/cache/Cache.store (Ljava/lang/Object;Ljava/lang/Object;)V 3
      // 051: aconst_null
      // 052: astore 4
      // 054: aload 8
      // 056: getfield com/l7tech/server/security/cert/k.d Ljava/util/concurrent/locks/ReadWriteLock;
      // 059: invokeinterface java/util/concurrent/locks/ReadWriteLock.readLock ()Ljava/util/concurrent/locks/Lock; 1
      // 05e: astore 6
      // 060: aload 6
      // 062: invokeinterface java/util/concurrent/locks/Lock.lock ()V 1
      // 067: goto 0fd
      // 06a: aload 8
      // 06c: getfield com/l7tech/server/security/cert/k.d Ljava/util/concurrent/locks/ReadWriteLock;
      // 06f: invokeinterface java/util/concurrent/locks/ReadWriteLock.readLock ()Ljava/util/concurrent/locks/Lock; 1
      // 074: astore 6
      // 076: aload 6
      // 078: invokeinterface java/util/concurrent/locks/Lock.lock ()V 1
      // 07d: aload 8
      // 07f: invokevirtual com/l7tech/server/security/cert/k.getCrl ()Ljava/security/cert/X509CRL;
      // 082: astore 5
      // 084: aload 8
      // 086: getfield com/l7tech/server/security/cert/k.c J
      // 089: invokestatic java/lang/System.currentTimeMillis ()J
      // 08c: lcmp
      // 08d: ifge 0c6
      // 090: aload 3
      // 091: getstatic com/l7tech/gateway/common/audit/SystemMessages.CERTVAL_REV_CACHE_STALE Lcom/l7tech/gateway/common/audit/Messages$M;
      // 094: bipush 3
      // 095: anewarray 140
      // 098: dup
      // 099: bipush 0
      // 09a: getstatic com/l7tech/server/security/cert/CrlCacheImpl.v [Ljava/lang/String;
      // 09d: astore 12
      // 09f: aload 12
      // 0a1: bipush 9
      // 0a3: aaload
      // 0a4: aastore
      // 0a5: dup
      // 0a6: bipush 1
      // 0a7: aload 1
      // 0a8: aastore
      // 0a9: dup
      // 0aa: bipush 2
      // 0ab: new java/util/Date
      // 0ae: dup
      // 0af: aload 8
      // 0b1: getfield com/l7tech/server/security/cert/k.c J
      // 0b4: invokespecial java/util/Date.<init> (J)V
      // 0b7: invokevirtual java/util/Date.toString ()Ljava/lang/String;
      // 0ba: aastore
      // 0bb: invokeinterface com/l7tech/gateway/common/audit/Audit.logAndAudit (Lcom/l7tech/gateway/common/audit/AuditDetailMessage;[Ljava/lang/String;)V 3
      // 0c0: aconst_null
      // 0c1: astore 4
      // 0c3: goto 0fd
      // 0c6: aload 3
      // 0c7: getstatic com/l7tech/gateway/common/audit/SystemMessages.CERTVAL_REV_CACHE_FRESH Lcom/l7tech/gateway/common/audit/Messages$M;
      // 0ca: bipush 3
      // 0cb: anewarray 140
      // 0ce: dup
      // 0cf: bipush 0
      // 0d0: getstatic com/l7tech/server/security/cert/CrlCacheImpl.v [Ljava/lang/String;
      // 0d3: astore 12
      // 0d5: aload 12
      // 0d7: bipush 9
      // 0d9: aaload
      // 0da: aastore
      // 0db: dup
      // 0dc: bipush 1
      // 0dd: aload 1
      // 0de: aastore
      // 0df: dup
      // 0e0: bipush 2
      // 0e1: new java/util/Date
      // 0e4: dup
      // 0e5: aload 8
      // 0e7: getfield com/l7tech/server/security/cert/k.c J
      // 0ea: invokespecial java/util/Date.<init> (J)V
      // 0ed: invokevirtual java/util/Date.toString ()Ljava/lang/String;
      // 0f0: aastore
      // 0f1: invokeinterface com/l7tech/gateway/common/audit/Audit.logAndAudit (Lcom/l7tech/gateway/common/audit/AuditDetailMessage;[Ljava/lang/String;)V 3
      // 0f6: aload 8
      // 0f8: invokevirtual com/l7tech/server/security/cert/k.getCrl ()Ljava/security/cert/X509CRL;
      // 0fb: astore 4
      // 0fd: aload 4
      // 0ff: ifnonnull 310
      // 102: aload 1
      // 103: getstatic com/l7tech/server/security/cert/CrlCacheImpl.v [Ljava/lang/String;
      // 106: bipush 1
      // 107: aaload
      // 108: invokevirtual java/lang/String.startsWith (Ljava/lang/String;)Z
      // 10b: ifne 121
      // 10e: aload 1
      // 10f: getstatic com/l7tech/server/security/cert/CrlCacheImpl.v [Ljava/lang/String;
      // 112: bipush 2
      // 113: aaload
      // 114: invokevirtual java/lang/String.startsWith (Ljava/lang/String;)Z
      // 117: ifeq 12b
      // 11a: goto 121
      // 11d: invokestatic com/l7tech/server/security/cert/CrlCacheImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 120: athrow
      // 121: aload 0
      // 122: aload 1
      // 123: invokevirtual com/l7tech/server/security/cert/CrlCacheImpl.b (Ljava/lang/String;)Ljava/security/cert/X509CRL;
      // 126: astore 4
      // 128: goto 16f
      // 12b: aload 1
      // 12c: getstatic com/l7tech/server/security/cert/CrlCacheImpl.v [Ljava/lang/String;
      // 12f: bipush 23
      // 131: aaload
      // 132: invokevirtual java/lang/String.startsWith (Ljava/lang/String;)Z
      // 135: ifne 14c
      // 138: aload 1
      // 139: getstatic com/l7tech/server/security/cert/CrlCacheImpl.v [Ljava/lang/String;
      // 13c: bipush 32
      // 13e: aaload
      // 13f: invokevirtual java/lang/String.startsWith (Ljava/lang/String;)Z
      // 142: ifeq 156
      // 145: goto 14c
      // 148: invokestatic com/l7tech/server/security/cert/CrlCacheImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 14b: athrow
      // 14c: aload 0
      // 14d: aload 1
      // 14e: invokevirtual com/l7tech/server/security/cert/CrlCacheImpl.a (Ljava/lang/String;)Ljava/security/cert/X509CRL;
      // 151: astore 4
      // 153: goto 16f
      // 156: new java/security/cert/CRLException
      // 159: dup
      // 15a: aload 1
      // 15b: getstatic com/l7tech/server/security/cert/CrlCacheImpl.v [Ljava/lang/String;
      // 15e: astore 12
      // 160: aload 12
      // 162: bipush 34
      // 164: aaload
      // 165: swap
      // 166: 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" ]
      // 16b: invokespecial java/security/cert/CRLException.<init> (Ljava/lang/String;)V
      // 16e: athrow
      // 16f: aload 0
      // 170: getfield com/l7tech/server/security/cert/CrlCacheImpl.l Lcom/l7tech/util/Config;
      // 173: getstatic com/l7tech/server/security/cert/CrlCacheImpl.v [Ljava/lang/String;
      // 176: bipush 8
      // 178: aaload
      // 179: bipush 0
      // 17a: invokeinterface com/l7tech/util/Config.getBooleanProperty (Ljava/lang/String;Z)Z 3
      // 17f: ifeq 19d
      // 182: aload 2
      // 183: ifnull 19d
      // 186: goto 18d
      // 189: invokestatic com/l7tech/server/security/cert/CrlCacheImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 18c: athrow
      // 18d: aload 4
      // 18f: aload 2
      // 190: invokevirtual java/security/cert/X509Certificate.getPublicKey ()Ljava/security/PublicKey;
      // 193: invokevirtual java/security/cert/X509CRL.verify (Ljava/security/PublicKey;)V
      // 196: goto 19d
      // 199: invokestatic com/l7tech/server/security/cert/CrlCacheImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 19c: athrow
      // 19d: aload 3
      // 19e: getstatic com/l7tech/gateway/common/audit/SystemMessages.CERTVAL_REV_CACHE_UPDATE Lcom/l7tech/gateway/common/audit/Messages$M;
      // 1a1: bipush 2
      // 1a2: anewarray 140
      // 1a5: dup
      // 1a6: bipush 0
      // 1a7: getstatic com/l7tech/server/security/cert/CrlCacheImpl.v [Ljava/lang/String;
      // 1aa: astore 12
      // 1ac: aload 12
      // 1ae: bipush 9
      // 1b0: aaload
      // 1b1: aastore
      // 1b2: dup
      // 1b3: bipush 1
      // 1b4: aload 1
      // 1b5: aastore
      // 1b6: invokeinterface com/l7tech/gateway/common/audit/Audit.logAndAudit (Lcom/l7tech/gateway/common/audit/AuditDetailMessage;[Ljava/lang/String;)V 3
      // 1bb: goto 2d6
      // 1be: astore 9
      // 1c0: aload 5
      // 1c2: ifnull 25c
      // 1c5: aload 0
      // 1c6: getfield com/l7tech/server/security/cert/CrlCacheImpl.l Lcom/l7tech/util/Config;
      // 1c9: getstatic com/l7tech/server/security/cert/CrlCacheImpl.v [Ljava/lang/String;
      // 1cc: astore 12
      // 1ce: aload 12
      // 1d0: bipush 31
      // 1d2: aaload
      // 1d3: bipush 0
      // 1d4: invokeinterface com/l7tech/util/Config.getBooleanProperty (Ljava/lang/String;Z)Z 3
      // 1d9: istore 10
      // 1db: iload 10
      // 1dd: ifeq 225
      // 1e0: aload 5
      // 1e2: invokevirtual java/security/cert/X509CRL.getNextUpdate ()Ljava/util/Date;
      // 1e5: ifnull 225
      // 1e8: goto 1ef
      // 1eb: invokestatic com/l7tech/server/security/cert/CrlCacheImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 1ee: athrow
      // 1ef: aload 5
      // 1f1: invokevirtual java/security/cert/X509CRL.getNextUpdate ()Ljava/util/Date;
      // 1f4: invokevirtual java/util/Date.getTime ()J
      // 1f7: invokestatic java/lang/System.currentTimeMillis ()J
      // 1fa: lcmp
      // 1fb: ifgt 225
      // 1fe: goto 205
      // 201: invokestatic com/l7tech/server/security/cert/CrlCacheImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 204: athrow
      // 205: getstatic com/l7tech/server/security/cert/CrlCacheImpl.a Ljava/util/logging/Logger;
      // 208: aload 1
      // 209: getstatic com/l7tech/server/security/cert/CrlCacheImpl.v [Ljava/lang/String;
      // 20c: bipush 19
      // 20e: aaload
      // 20f: swap
      // 210: getstatic com/l7tech/server/security/cert/CrlCacheImpl.v [Ljava/lang/String;
      // 213: bipush 10
      // 215: aaload
      // 216: 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" ]
      // 21b: invokevirtual java/util/logging/Logger.severe (Ljava/lang/String;)V
      // 21e: aload 9
      // 220: athrow
      // 221: invokestatic com/l7tech/server/security/cert/CrlCacheImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 224: athrow
      // 225: aload 3
      // 226: getstatic com/l7tech/gateway/common/audit/SystemMessages.CERTVAL_REV_USE_CACHE Lcom/l7tech/gateway/common/audit/Messages$M;
      // 229: bipush 3
      // 22a: anewarray 140
      // 22d: dup
      // 22e: bipush 0
      // 22f: getstatic com/l7tech/server/security/cert/CrlCacheImpl.v [Ljava/lang/String;
      // 232: astore 12
      // 234: aload 12
      // 236: bipush 9
      // 238: aaload
      // 239: aastore
      // 23a: dup
      // 23b: bipush 1
      // 23c: aload 1
      // 23d: aastore
      // 23e: dup
      // 23f: bipush 2
      // 240: new java/util/Date
      // 243: dup
      // 244: aload 8
      // 246: getfield com/l7tech/server/security/cert/k.c J
      // 249: invokespecial java/util/Date.<init> (J)V
      // 24c: invokevirtual java/util/Date.toString ()Ljava/lang/String;
      // 24f: aastore
      // 250: invokeinterface com/l7tech/gateway/common/audit/Audit.logAndAudit (Lcom/l7tech/gateway/common/audit/AuditDetailMessage;[Ljava/lang/String;)V 3
      // 255: aload 5
      // 257: astore 4
      // 259: goto 25f
      // 25c: aload 9
      // 25e: athrow
      // 25f: goto 2d6
      // 262: astore 9
      // 264: getstatic com/l7tech/server/security/cert/CrlCacheImpl.a Ljava/util/logging/Logger;
      // 267: getstatic java/util/logging/Level.WARNING Ljava/util/logging/Level;
      // 26a: getstatic com/l7tech/server/security/cert/CrlCacheImpl.v [Ljava/lang/String;
      // 26d: bipush 38
      // 26f: aaload
      // 270: bipush 2
      // 271: anewarray 29
      // 274: dup
      // 275: bipush 0
      // 276: aload 2
      // 277: ifnull 285
      // 27a: aload 2
      // 27b: invokevirtual java/security/cert/X509Certificate.getSubjectDN ()Ljava/security/Principal;
      // 27e: goto 28f
      // 281: invokestatic com/l7tech/server/security/cert/CrlCacheImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 284: athrow
      // 285: getstatic com/l7tech/server/security/cert/CrlCacheImpl.v [Ljava/lang/String;
      // 288: astore 12
      // 28a: aload 12
      // 28c: bipush 35
      // 28e: aaload
      // 28f: aastore
      // 290: dup
      // 291: bipush 1
      // 292: aload 9
      // 294: invokevirtual java/lang/Exception.getMessage ()Ljava/lang/String;
      // 297: aastore
      // 298: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;[Ljava/lang/Object;)V
      // 29b: aload 5
      // 29d: ifnull 2c1
      // 2a0: getstatic com/l7tech/server/security/cert/CrlCacheImpl.a Ljava/util/logging/Logger;
      // 2a3: getstatic java/util/logging/Level.FINE Ljava/util/logging/Level;
      // 2a6: aload 1
      // 2a7: getstatic com/l7tech/server/security/cert/CrlCacheImpl.v [Ljava/lang/String;
      // 2aa: astore 12
      // 2ac: aload 12
      // 2ae: bipush 25
      // 2b0: aaload
      // 2b1: swap
      // 2b2: 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" ]
      // 2b7: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;)V
      // 2ba: aload 5
      // 2bc: astore 4
      // 2be: goto 2d6
      // 2c1: new java/security/cert/CRLException
      // 2c4: dup
      // 2c5: aload 1
      // 2c6: getstatic com/l7tech/server/security/cert/CrlCacheImpl.v [Ljava/lang/String;
      // 2c9: bipush 21
      // 2cb: aaload
      // 2cc: swap
      // 2cd: 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" ]
      // 2d2: invokespecial java/security/cert/CRLException.<init> (Ljava/lang/String;)V
      // 2d5: athrow
      // 2d6: aload 6
      // 2d8: invokeinterface java/util/concurrent/locks/Lock.unlock ()V 1
      // 2dd: aconst_null
      // 2de: astore 6
      // 2e0: aload 8
      // 2e2: getfield com/l7tech/server/security/cert/k.d Ljava/util/concurrent/locks/ReadWriteLock;
      // 2e5: invokeinterface java/util/concurrent/locks/ReadWriteLock.writeLock ()Ljava/util/concurrent/locks/Lock; 1
      // 2ea: astore 7
      // 2ec: aload 7
      // 2ee: invokeinterface java/util/concurrent/locks/Lock.lock ()V 1
      // 2f3: aload 8
      // 2f5: aload 4
      // 2f7: invokevirtual com/l7tech/server/security/cert/k.setCrl (Ljava/security/cert/X509CRL;)V
      // 2fa: aload 7
      // 2fc: invokeinterface java/util/concurrent/locks/Lock.unlock ()V 1
      // 301: aconst_null
      // 302: astore 7
      // 304: aload 0
      // 305: getfield com/l7tech/server/security/cert/CrlCacheImpl.g Lcom/whirlycott/cache/Cache;
      // 308: aload 1
      // 309: aload 8
      // 30b: invokeinterface com/whirlycott/cache/Cache.store (Ljava/lang/Object;Ljava/lang/Object;)V 3
      // 310: aload 4
      // 312: astore 9
      // 314: aload 7
      // 316: ifnull 327
      // 319: aload 7
      // 31b: invokeinterface java/util/concurrent/locks/Lock.unlock ()V 1
      // 320: goto 327
      // 323: invokestatic com/l7tech/server/security/cert/CrlCacheImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 326: athrow
      // 327: aload 6
      // 329: ifnull 33a
      // 32c: aload 6
      // 32e: invokeinterface java/util/concurrent/locks/Lock.unlock ()V 1
      // 333: goto 33a
      // 336: invokestatic com/l7tech/server/security/cert/CrlCacheImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 339: athrow
      // 33a: aload 9
      // 33c: areturn
      // 33d: astore 11
      // 33f: aload 7
      // 341: ifnull 352
      // 344: aload 7
      // 346: invokeinterface java/util/concurrent/locks/Lock.unlock ()V 1
      // 34b: goto 352
      // 34e: invokestatic com/l7tech/server/security/cert/CrlCacheImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 351: athrow
      // 352: aload 6
      // 354: ifnull 365
      // 357: aload 6
      // 359: invokeinterface java/util/concurrent/locks/Lock.unlock ()V 1
      // 35e: goto 365
      // 361: invokestatic com/l7tech/server/security/cert/CrlCacheImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 364: athrow
      // 365: aload 11
      // 367: athrow
      // try (184 -> 193): 194 java/io/IOException
      // try (176 -> 186): 187 java/io/IOException
      // try (144 -> 156): 157 java/io/IOException
      // try (124 -> 136): 137 java/io/IOException
      // try (124 -> 213): 214 java/io/IOException
      // try (124 -> 213): 291 java/lang/Exception
      // try (292 -> 306): 306 java/io/IOException
      // try (235 -> 257): 257 java/io/IOException
      // try (229 -> 241): 242 java/io/IOException
      // try (227 -> 232): 233 java/io/IOException
      // try (12 -> 370): 386 null
      // try (377 -> 381): 382 java/io/IOException
      // try (370 -> 374): 375 java/io/IOException
      // try (386 -> 387): 386 null
      // try (387 -> 391): 392 java/io/IOException
      // try (394 -> 398): 399 java/io/IOException
   }

   private X509CRL a(String var1) throws IOException {
      AbstractUrlObjectCache.FetchResult var2 = this.j.fetchCached(var1, AbstractUrlObjectCache.WAIT_INITIAL);

      label52: {
         try {
            if (var2.getResult() != 2 && var2.getResult() != 3) {
               break label52;
            }
         } catch (IOException var8) {
            throw a(var8);
         }

         X509CRL var3 = (X509CRL)var2.getUserObject();
         if (var3 == null) {
            IOException var4 = var2.getException();

            try {
               if (var4 != null) {
                  throw var4;
               }
            } catch (IOException var7) {
               throw a(var7);
            }

            int var10002 = var2.getResult();
            String[] var5 = v;
            throw new CausedIOException(var5[30] + var10002);
         }

         return var3;
      }

      IOException var9 = var2.getException();

      try {
         if (var9 == null) {
            throw new CausedIOException(v[36] + var2.getResult());
         }
      } catch (IOException var6) {
         throw a(var6);
      }

      throw var9;
   }

   private X509CRL b(String param1) throws IOException, CRLException {
      // $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/security/cert/CrlCacheImpl.i Lcom/l7tech/server/url/LdapUrlObjectCache;
      // 04: aload 1
      // 05: getstatic com/l7tech/server/url/AbstractUrlObjectCache.WAIT_INITIAL Lcom/l7tech/server/url/AbstractUrlObjectCache$WaitMode;
      // 08: invokevirtual com/l7tech/server/url/LdapUrlObjectCache.fetchCached (Ljava/lang/String;Lcom/l7tech/server/url/AbstractUrlObjectCache$WaitMode;)Lcom/l7tech/server/url/AbstractUrlObjectCache$FetchResult;
      // 0b: astore 2
      // 0c: aload 2
      // 0d: invokevirtual com/l7tech/server/url/AbstractUrlObjectCache$FetchResult.getResult ()I
      // 10: ifeq d6
      // 13: aload 2
      // 14: invokevirtual com/l7tech/server/url/AbstractUrlObjectCache$FetchResult.getUserObject ()Ljava/lang/Object;
      // 17: checkcast com/l7tech/server/url/LdapUrlObjectCache$LdapCacheEntry
      // 1a: astore 5
      // 1c: aload 5
      // 1e: dup
      // 1f: astore 6
      // 21: monitorenter
      // 22: aload 5
      // 24: invokevirtual com/l7tech/server/url/LdapUrlObjectCache$LdapCacheEntry.getPayload ()Ljava/lang/Object;
      // 27: checkcast java/security/cert/X509CRL
      // 2a: astore 7
      // 2c: aload 7
      // 2e: ifnonnull c8
      // 31: aload 5
      // 33: invokevirtual com/l7tech/server/url/LdapUrlObjectCache$LdapCacheEntry.getInterestingAttributeName ()Ljava/lang/String;
      // 36: astore 3
      // 37: aload 5
      // 39: invokevirtual com/l7tech/server/url/LdapUrlObjectCache$LdapCacheEntry.getInterestingAttributeValues ()Ljava/util/List;
      // 3c: astore 4
      // 3e: aload 3
      // 3f: ifnonnull 5b
      // 42: new java/io/IOException
      // 45: dup
      // 46: aload 1
      // 47: getstatic com/l7tech/server/security/cert/CrlCacheImpl.v [Ljava/lang/String;
      // 4a: bipush 14
      // 4c: aaload
      // 4d: swap
      // 4e: 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" ]
      // 53: invokespecial java/io/IOException.<init> (Ljava/lang/String;)V
      // 56: athrow
      // 57: invokestatic com/l7tech/server/security/cert/CrlCacheImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 5a: athrow
      // 5b: aload 4
      // 5d: ifnull 71
      // 60: aload 4
      // 62: invokeinterface java/util/List.isEmpty ()Z 1
      // 67: ifeq 83
      // 6a: goto 71
      // 6d: invokestatic com/l7tech/server/security/cert/CrlCacheImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 70: athrow
      // 71: new java/io/IOException
      // 74: dup
      // 75: getstatic com/l7tech/server/security/cert/CrlCacheImpl.v [Ljava/lang/String;
      // 78: bipush 40
      // 7a: aaload
      // 7b: invokespecial java/io/IOException.<init> (Ljava/lang/String;)V
      // 7e: athrow
      // 7f: invokestatic com/l7tech/server/security/cert/CrlCacheImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 82: athrow
      // 83: aload 4
      // 85: invokeinterface java/util/List.size ()I 1
      // 8a: bipush 1
      // 8b: if_icmple a0
      // 8e: new java/lang/IllegalStateException
      // 91: dup
      // 92: getstatic com/l7tech/server/security/cert/CrlCacheImpl.v [Ljava/lang/String;
      // 95: bipush 18
      // 97: aaload
      // 98: invokespecial java/lang/IllegalStateException.<init> (Ljava/lang/String;)V
      // 9b: athrow
      // 9c: invokestatic com/l7tech/server/security/cert/CrlCacheImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 9f: athrow
      // a0: aload 4
      // a2: bipush 0
      // a3: invokeinterface java/util/List.get (I)Ljava/lang/Object; 2
      // a8: checkcast [B
      // ab: astore 8
      // ad: invokestatic com/l7tech/common/io/CertUtils.getFactory ()Ljava/security/cert/CertificateFactory;
      // b0: new java/io/ByteArrayInputStream
      // b3: dup
      // b4: aload 8
      // b6: invokespecial java/io/ByteArrayInputStream.<init> ([B)V
      // b9: invokevirtual java/security/cert/CertificateFactory.generateCRL (Ljava/io/InputStream;)Ljava/security/cert/CRL;
      // bc: checkcast java/security/cert/X509CRL
      // bf: astore 7
      // c1: aload 5
      // c3: aload 7
      // c5: invokevirtual com/l7tech/server/url/LdapUrlObjectCache$LdapCacheEntry.setPayload (Ljava/lang/Object;)V
      // c8: aload 7
      // ca: aload 6
      // cc: monitorexit
      // cd: areturn
      // ce: astore 9
      // d0: aload 6
      // d2: monitorexit
      // d3: aload 9
      // d5: athrow
      // d6: aload 2
      // d7: invokevirtual com/l7tech/server/url/AbstractUrlObjectCache$FetchResult.getException ()Ljava/io/IOException;
      // da: athrow
      // try (60 -> 71): 71 java/io/IOException
      // try (45 -> 58): 58 java/io/IOException
      // try (43 -> 48): 49 java/io/IOException
      // try (29 -> 41): 41 java/io/IOException
      // try (17 -> 92): 93 null
      // try (93 -> 96): 93 null
   }

   private void a(Timer param1, long 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/server/security/cert/CrlCacheImpl.k Ljava/util/concurrent/ExecutorService;
      // 04: ifnull 2c
      // 07: aload 1
      // 08: ifnull 2c
      // 0b: goto 12
      // 0e: invokestatic com/l7tech/server/security/cert/CrlCacheImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 11: athrow
      // 12: aload 1
      // 13: new com/l7tech/server/security/cert/ac
      // 16: dup
      // 17: aload 0
      // 18: lload 2
      // 19: invokespecial com/l7tech/server/security/cert/ac.<init> (Lcom/l7tech/server/security/cert/CrlCacheImpl;J)V
      // 1c: ldc2_w 74033
      // 1f: ldc2_w 27157
      // 22: invokevirtual java/util/Timer.schedule (Ljava/util/TimerTask;JJ)V
      // 25: goto 2c
      // 28: invokestatic com/l7tech/server/security/cert/CrlCacheImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 2b: athrow
      // 2c: return
      // try (0 -> 5): 6 java/lang/IllegalStateException
      // try (3 -> 17): 18 java/lang/IllegalStateException
   }

   private ExecutorService a(int var1) {
      ExecutorService var2 = null;
      if (var1 > 0) {
         var2 = Executors.newFixedThreadPool(var1);
      }

      return var2;
   }

   private String[] a(X509Certificate var1) throws IOException {
      CrlCacheImpl.CrlUrlCacheKey var2 = new CrlCacheImpl.CrlUrlCacheKey(var1);
      String[] var3 = (String[])this.h.retrieve(var2);
      if (var3 == null) {
         var3 = CertUtils.getCrlUrls(var1);
         this.h.store(var2, var3);
      }

      return var3;
   }

   static {
      String[] var5 = new String[41];
      int var3 = 0;
      String var2 = "%)T)\n$K{4\\= \u0012f!'~#%4b3-O4\n\u0017d='h!-\u0017s0\u00059&\\!s\u00069&\\!:L7\u001c%S>;\u001fi2b^>'\u0010n27O4-Vq4.H4i\u0010h'b^0*\u001ebu1X#?\u001fd<,Zq=\u001eu0#Y\"iQC\u00001T?.Vt,1I4$Vw'-M4;\u0002~u!R<g\u001a0!'^9g\u0005b'4X#g\u0005b67O8=\u000f)6'O%g\u0015u9\u0001\\2!\u0013T<8Xl\u0015%)T)\n$K{!\\2!\u0013)!*O4(\u0012t\u000f%)T)\n$K{/\\)\u001a\u001f}0\u0014%)T)\n$K{/T?\f\u000ew<0D\u0010.\u0013$%)T)\n$K{4\\= \u0012f!'~#%4b3-O4\n\u0017d='h!-\u0017s0\u0003\u0016\u0010q@\bbT\"i\u0014b,-S5i\u0000f9+Y8=\u000f'%'O8&\u0012+u*X?*\u0013';-\u001d=&\u0018`00\u001d$:\u0013cu$R#i\u0004b#-^0=\u001fh;\u0014%)T)\n$K{!\\2!\u0013)0:M8;\u000f\n{!X#=5f6*X,6-P\u007f%As0!U\u007f:\u0013u#'O\u007f:\u0013d 0T%0Xd00I\u007f*\u0004k\u0016#^9,%n/'\u001d\u001b-\u001d <\u0013u,bN%;\u001fi2bT?i:C\u0014\u0012\u001d\u0004\u001b:=u\u000e%)T)\n$K{'E! \u0004~&%)T)\n$K{+S'(\u001an1#I4\n\u0004k\u0016#^9,9i\u001b'E%\u001c\u0006c46X\t{!O=\n\u0017d='\"\u0019\u0006|\u0001i\u0017s!0T3<\u0002bu*\\\"i\u001br96T!%\u0013'##Q$,\u0005\u0005\u0016\u0010qq\u0012\u0017%)T)\n$K{!\\2!\u0013)%0X41\u0006n';\u0017\u0016\u0010qq \u0005';-Iq(\u0003s=-O83\u0013cob\u00159&\\!\n\u0019i;'^% \u0019i\u0001+P4&\u0003s\u0005=6I!s\u0014%)T)\n$K{/\\)\f\u000ew<0D\u0010.\u0013\u0016\u00001T?.Vs='\u001d2(\u0015o0&\u001d\u0012\u001b:=u\u000f9&\\!\u001b\u0013f1\u0016T<,\u0019r!\u0015rn\u001d$:\u001fi2bY4/\u0017r96\u001dvzQ)\u0014%)T)\n$K{!\\2!\u0013)0:M8;\u000f\u000f%)T)\n$K{/\\)\u001a\u001f}01\u0000,\\3%\u0013'!-\u001d0*\u0015b&1\u001d\u0012\u001b:'30R<i>S\u0001\u0012\u001d2(\u0015o0n\u001d\"=\u0017s 1\u001d8:L'&%)T)\n$K{+S'(\u001an1#I4\n\u0004k\u0016#^9,9i\u001b'E%\u001c\u0006c46X\u0006=6I!:L\u0003\u0016\u0010q\u001c\u0000,N$9\u0006h'6X5i5U\u0019bh\u0003\u0005Vt6*X<,L'\u0004\u001b-S41\u0000,\\3%\u0013'!-\u001d0*\u0015b&1\u001d\u0012\u001b:'30R<i>S\u0001\u0012\u001d2(\u0015o0n\u001d\"=\u0017s 1\u001d8:L',6-P\u007f%As0!U\u007f:\u0013u#'O\u007f:\u0013d 0T%0Xd00I\u007f*\u0004k\u0016#^9,%n/'>\u0003'O8/\u001fd46T>'Vh3b~\u0003\u0005Vt<%S0=\u0003u0b[0 \u001ab1b\\6(\u001fi&6\u001d8:\u0005r00\u001dv2Fzrx\u001d*x\u000b";
      int var4 = "%)T)\n$K{4\\= \u0012f!'~#%4b3-O4\n\u0017d='h!-\u0017s0\u00059&\\!s\u00069&\\!:L7\u001c%S>;\u001fi2b^>'\u0010n27O4-Vq4.H4i\u0010h'b^0*\u001ebu1X#?\u001fd<,Zq=\u001eu0#Y\"iQC\u00001T?.Vt,1I4$Vw'-M4;\u0002~u!R<g\u001a0!'^9g\u0005b'4X#g\u0005b67O8=\u000f)6'O%g\u0015u9\u0001\\2!\u0013T<8Xl\u0015%)T)\n$K{!\\2!\u0013)!*O4(\u0012t\u000f%)T)\n$K{/\\)\u001a\u001f}0\u0014%)T)\n$K{/T?\f\u000ew<0D\u0010.\u0013$%)T)\n$K{4\\= \u0012f!'~#%4b3-O4\n\u0017d='h!-\u0017s0\u0003\u0016\u0010q@\bbT\"i\u0014b,-S5i\u0000f9+Y8=\u000f'%'O8&\u0012+u*X?*\u0013';-\u001d=&\u0018`00\u001d$:\u0013cu$R#i\u0004b#-^0=\u001fh;\u0014%)T)\n$K{!\\2!\u0013)0:M8;\u000f\n{!X#=5f6*X,6-P\u007f%As0!U\u007f:\u0013u#'O\u007f:\u0013d 0T%0Xd00I\u007f*\u0004k\u0016#^9,%n/'\u001d\u001b-\u001d <\u0013u,bN%;\u001fi2bT?i:C\u0014\u0012\u001d\u0004\u001b:=u\u000e%)T)\n$K{'E! \u0004~&%)T)\n$K{+S'(\u001an1#I4\n\u0004k\u0016#^9,9i\u001b'E%\u001c\u0006c46X\t{!O=\n\u0017d='\"\u0019\u0006|\u0001i\u0017s!0T3<\u0002bu*\\\"i\u001br96T!%\u0013'##Q$,\u0005\u0005\u0016\u0010qq\u0012\u0017%)T)\n$K{!\\2!\u0013)%0X41\u0006n';\u0017\u0016\u0010qq \u0005';-Iq(\u0003s=-O83\u0013cob\u00159&\\!\n\u0019i;'^% \u0019i\u0001+P4&\u0003s\u0005=6I!s\u0014%)T)\n$K{/\\)\f\u000ew<0D\u0010.\u0013\u0016\u00001T?.Vs='\u001d2(\u0015o0&\u001d\u0012\u001b:=u\u000f9&\\!\u001b\u0013f1\u0016T<,\u0019r!\u0015rn\u001d$:\u001fi2bY4/\u0017r96\u001dvzQ)\u0014%)T)\n$K{!\\2!\u0013)0:M8;\u000f\u000f%)T)\n$K{/\\)\u001a\u001f}01\u0000,\\3%\u0013'!-\u001d0*\u0015b&1\u001d\u0012\u001b:'30R<i>S\u0001\u0012\u001d2(\u0015o0n\u001d\"=\u0017s 1\u001d8:L'&%)T)\n$K{+S'(\u001an1#I4\n\u0004k\u0016#^9,9i\u001b'E%\u001c\u0006c46X\u0006=6I!:L\u0003\u0016\u0010q\u001c\u0000,N$9\u0006h'6X5i5U\u0019bh\u0003\u0005Vt6*X<,L'\u0004\u001b-S41\u0000,\\3%\u0013'!-\u001d0*\u0015b&1\u001d\u0012\u001b:'30R<i>S\u0001\u0012\u001d2(\u0015o0n\u001d\"=\u0017s 1\u001d8:L',6-P\u007f%As0!U\u007f:\u0013u#'O\u007f:\u0013d 0T%0Xd00I\u007f*\u0004k\u0016#^9,%n/'>\u0003'O8/\u001fd46T>'Vh3b~\u0003\u0005Vt<%S0=\u0003u0b[0 \u001ab1b\\6(\u001fi&6\u001d8:\u0005r00\u001dv2Fzrx\u001d*x\u000b"
         .length();
      char var1 = '$';
      int var7 = -1;

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

         while (true) {
            String var8 = a(var10000, c(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var8;
                  if ((var7 += var1) >= var4) {
                     v = var5;
                     String[] var9 = v;
                     f = v[24];
                     e = var9[7];
                     d = var9[15];
                     q = var9[16];
                     u = var9[37];
                     m = var9[28];
                     o = var9[20];
                     r = var9[0];
                     PROP_MAX_CRL_SIZE = var9[29];
                     a = Logger.getLogger(CrlCacheImpl.class.getName());
                     b = TimeUnit.HOURS.getMultiplier();
                     c = TimeUnit.MINUTES.getMultiplier();
                     return;
                  }

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

                  var2 = "S_\"_|R=\rW*DWe_SF.BGp\u0018QM op\nw\u001fa\u0005WF\"EJt\u0014\u0003B*KJeQM[?\u0007Or\u0014PQ%S";
                  var4 = "S_\"_|R=\rW*DWe_SF.BGp\u0018QM op\nw\u001fa\u0005WF\"EJt\u0014\u0003B*KJeQM[?\u0007Or\u0014PQ%S".length();
                  var1 = 23;
                  var7 = -1;
            }

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

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

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

      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 -> 122;
            case 1 -> 109;
            case 2 -> 18;
            case 3 -> 126;
            case 4 -> 102;
            case 5 -> 89;
            default -> 40;
         });
      }

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

   private static final class CrlUrlCacheKey extends Pair<String, BigInteger> {
      static final long serialVersionUID = 7032589617551642924L;

      private CrlUrlCacheKey(X509Certificate var1) {
         super(CertUtils.getIssuerDN(var1), var1.getSerialNumber());
      }
   }
}
