package com.l7tech.server.policy.custom;

import com.l7tech.common.io.NonCloseableOutputStream;
import com.l7tech.gateway.common.custom.CustomAssertionDescriptor;
import com.l7tech.gateway.common.custom.CustomAssertionsRegistrar;
import com.l7tech.gateway.common.custom.CustomAssertionsRegistrar.AssertionResourceData;
import com.l7tech.gateway.common.module.AssertionModuleInfo;
import com.l7tech.gateway.common.module.ModuleLoadingException;
import com.l7tech.gateway.common.module.ServerModuleFile;
import com.l7tech.policy.assertion.CustomAssertionHolder;
import com.l7tech.policy.assertion.ext.Category;
import com.l7tech.policy.assertion.ext.CustomAssertion;
import com.l7tech.policy.assertion.ext.CustomAssertionUI;
import com.l7tech.policy.assertion.ext.CustomCredentialSource;
import com.l7tech.policy.assertion.ext.action.CustomTaskActionUI;
import com.l7tech.policy.assertion.ext.cei.CustomExtensionInterfaceBinding;
import com.l7tech.policy.assertion.ext.entity.CustomEntitySerializer;
import com.l7tech.policy.assertion.ext.licensing.CustomFeatureSetName;
import com.l7tech.policy.wsp.ClassLoaderUtil;
import com.l7tech.server.DefaultKey;
import com.l7tech.server.admin.ExtensionInterfaceManager;
import com.l7tech.server.module.AssertionModuleFinder;
import com.l7tech.server.policy.CustomKeyValueStoreManager;
import com.l7tech.server.policy.SecurePasswordServicesImpl;
import com.l7tech.server.policy.ServerAssertionRegistry;
import com.l7tech.server.policy.ServiceFinderImpl;
import com.l7tech.server.policy.module.AllCustomAssertionClassLoader;
import com.l7tech.server.policy.module.CustomAssertionModule;
import com.l7tech.server.policy.module.CustomAssertionModulesConfig;
import com.l7tech.server.policy.module.CustomAssertionsScanner;
import com.l7tech.server.policy.module.ModularAssertionModule;
import com.l7tech.server.policy.module.ScannerCallbacks;
import com.l7tech.server.security.SignerServicesImpl;
import com.l7tech.server.security.keystore.SsgKeyStoreManager;
import com.l7tech.server.security.password.SecurePasswordManager;
import com.l7tech.server.store.KeyValueStoreServicesImpl;
import com.l7tech.util.Config;
import com.l7tech.util.ExceptionUtils;
import com.l7tech.util.IOUtils;
import com.l7tech.util.Pair;
import com.l7tech.util.PoolByteArrayOutputStream;
import com.l7tech.util.ResourceUtils;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.zip.GZIPOutputStream;
import org.apache.commons.compress.archivers.tar.TarArchiveEntry;
import org.apache.commons.compress.archivers.tar.TarArchiveOutputStream;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationEvent;
import org.springframework.context.support.ApplicationObjectSupport;
import org.springframework.core.io.ContextResource;
import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;

public class CustomAssertionsRegistrarImpl
   extends ApplicationObjectSupport
   implements CustomAssertionsRegistrar,
   InitializingBean,
   DisposableBean,
   AssertionModuleFinder<CustomAssertionModule> {
   private static final Logger a;
   private Config b;
   private ClassLoader c;
   private final ServerAssertionRegistry d;
   private ExtensionInterfaceManager e;
   private SecurePasswordManager f;
   private CustomKeyValueStoreManager g;
   private SsgKeyStoreManager h;
   private DefaultKey i;
   private CustomAssertionsScanner j = null;
   private ServiceFinderImpl k = null;
   private static final String[] l;

   public CustomAssertionsRegistrarImpl(ServerAssertionRegistry var1) {
      if (var1 == null) {
         throw new IllegalArgumentException(l[1]);
      }

      this.d = var1;
   }

   public byte[] getAssertionClass(String param1) {
      // $VF: Couldn't be decompiled
      // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
      // java.lang.RuntimeException: parsing failure!
      //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
      //
      // Bytecode:
      // 00: aload 1
      // 01: ifnull 1a
      // 04: aload 1
      // 05: bipush 46
      // 07: invokevirtual java/lang/String.lastIndexOf (I)I
      // 0a: aload 1
      // 0b: bipush 46
      // 0d: invokevirtual java/lang/String.indexOf (I)I
      // 10: if_icmpgt 20
      // 13: goto 1a
      // 16: invokestatic com/l7tech/server/policy/custom/CustomAssertionsRegistrarImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 19: athrow
      // 1a: aconst_null
      // 1b: areturn
      // 1c: invokestatic com/l7tech/server/policy/custom/CustomAssertionsRegistrarImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 1f: athrow
      // 20: aload 1
      // 21: bipush 46
      // 23: bipush 47
      // 25: invokevirtual java/lang/String.replace (CC)Ljava/lang/String;
      // 28: getstatic com/l7tech/server/policy/custom/CustomAssertionsRegistrarImpl.l [Ljava/lang/String;
      // 2b: bipush 52
      // 2d: aaload
      // 2e: 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" ]
      // 33: astore 2
      // 34: aload 0
      // 35: aload 2
      // 36: invokevirtual com/l7tech/server/policy/custom/CustomAssertionsRegistrarImpl.getAssertionResourceBytes (Ljava/lang/String;)[B
      // 39: areturn
      // try (0 -> 9): 10 java/lang/IllegalArgumentException
      // try (2 -> 14): 14 java/lang/IllegalArgumentException
   }

   public byte[] getAssertionResourceBytes(String var1) {
      try {
         if (a.isLoggable(Level.FINEST)) {
            a.finest(l[56] + var1);
         }
      } catch (IOException var12) {
         throw a(var12);
      }

      try {
         if (this.c == null) {
            return null;
         }
      } catch (IOException var14) {
         throw a(var14);
      }

      byte[] var2 = this.a(var1);

      try {
         if (var2 != null) {
            return var2;
         }
      } catch (IOException var13) {
         throw a(var13);
      }

      for (ModularAssertionModule var5 : this.d.getLoadedModules()) {
         try {
            byte[] var6 = var5.getResourceBytes(var1, true);
            if (var6 != null) {
               return var6;
            }
         } catch (IOException var11) {
            Logger var10000 = a;
            Level var10001 = Level.WARNING;
            String var10002 = var5.getName();
            String var7 = ExceptionUtils.getMessage(var11);
            String var8 = var1;
            String var9 = var10002;
            String[] var10 = l;
            var10000.log(var10001, var10[42] + var9 + var10[76] + var8 + var10[73] + var7, var11);
         }
      }

      return null;
   }

   // $VF: Could not verify finally blocks. A semaphore variable has been added to preserve control flow.
   // 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!)
   public byte[] getAssertionResourceDataAsBytes(Collection<String> var1) {
      long var2 = System.currentTimeMillis();
      ByteArrayOutputStream var4 = null;
      boolean var23 = false /* VF: Semaphore variable */;

      byte[] var9;
      label91: {
         String[] var31;
         try {
            var23 = true;
            ArrayList var27 = new ArrayList(var1.size());

            for (String var29 : var1) {
               var27.add(new Pair(var29, this.getAssertionResourceData(var29)));
            }

            var4 = new ByteArrayOutputStream();
            GZIPOutputStream var28 = new GZIPOutputStream(var4);
            ObjectOutputStream var30 = new ObjectOutputStream(var28);
            var30.writeObject(var27);
            var30.flush();
            var30.close();
            byte[] var8 = var4.toByteArray();

            try {
               if (a.isLoggable(Level.FINE)) {
                  a.log(Level.FINE, l[16] + var8.length);
               }
            } catch (IOException var24) {
               throw a(var24);
            }

            var9 = var8;
            var23 = false;
            break label91;
         } catch (IOException var25) {
            Logger var10000 = a;
            Level var10001 = Level.WARNING;
            String var10002 = ExceptionUtils.getMessage(var25);
            var31 = l;
            var10000.log(var10001, var31[81] + var10002, var25);
            var23 = false;
         } finally {
            if (var23) {
               ResourceUtils.closeQuietly(var4);
               if (a.isLoggable(Level.FINE)) {
                  long var15 = System.currentTimeMillis();
                  double var17 = ((double)var15 - var2) / 1000.0;
                  var31 = l;
                  a.log(Level.FINE, String.format(var31[32], var17, var31[53]));
               }
            }
         }

         ResourceUtils.closeQuietly(var4);
         if (a.isLoggable(Level.FINE)) {
            long var5 = System.currentTimeMillis();
            double var7 = ((double)var5 - var2) / 1000.0;
            a.log(Level.FINE, String.format(var31[32], var7, var31[53]));
         }

         return null;
      }

      ResourceUtils.closeQuietly(var4);
      if (a.isLoggable(Level.FINE)) {
         long var10 = System.currentTimeMillis();
         double var12 = ((double)var10 - var2) / 1000.0;
         String[] var32 = l;
         a.log(Level.FINE, String.format(var32[10], var12, var32[8]));
      }

      return var9;
   }

   public AssertionResourceData getAssertionResourceData(String var1) {
      try {
         if (a.isLoggable(Level.FINEST)) {
            a.finest(l[19] + var1);
         }
      } catch (IllegalArgumentException var3) {
         throw a(var3);
      }

      try {
         if (this.c == null) {
            return null;
         }
      } catch (IllegalArgumentException var5) {
         throw a(var5);
      }

      byte[] var2 = this.a(var1);

      try {
         if (var2 != null) {
            return new AssertionResourceData(var1, false, var2);
         }
      } catch (IllegalArgumentException var4) {
         throw a(var4);
      }

      return this.b(var1);
   }

   private byte[] a(String var1) {
      InputStream var2 = null;

      try {
         if (this.d(var1)) {
            var2 = this.c.getResourceAsStream(var1);
            if (var2 != null) {
               return IOUtils.slurpStream(var2);
            }
         }
      } catch (IOException var8) {
         Logger var10000 = a;
         Level var10001 = Level.WARNING;
         String var10003 = ExceptionUtils.getMessage(var8);
         String[] var5 = l;
         var10000.log(var10001, var5[36] + var1 + var5[73] + var10003, var8);
      } finally {
         ResourceUtils.closeQuietly(var2);
      }

      return null;
   }

   private AssertionResourceData b(@NotNull String var1) {
      try {
         if (var1 == null) {
            a(0);
         }
      } catch (IOException var43) {
         throw a(var43);
      }

      AssertionResourceData var2 = null;
      long var3 = System.currentTimeMillis();
      Set var5 = this.d.getLoadedModules();
      PoolByteArrayOutputStream var6 = null;

      try {
         var6 = new PoolByteArrayOutputStream(65536);
         TarArchiveOutputStream var7 = null;

         try {
            for (ModularAssertionModule var9 : var5) {
               byte[] var10 = var9.getResourceBytes(var1, true);
               if (var10 != null) {
                  HashSet var11 = this.a(var1, var9.getClientResources(), var9);

                  try {
                     if (a.isLoggable(Level.FINE)) {
                        a.log(Level.FINE, l[23] + var11.size());
                     }
                  } catch (IOException var39) {
                     throw a(var39);
                  }

                  for (String var13 : var11) {
                     if (this.a(var1, var13)) {
                        byte[] var14 = var9.getResourceBytes(var13, true);

                        try {
                           if (var14 == null) {
                              a.warning(l[62] + var13 + l[30]);
                              continue;
                           }
                        } catch (IOException var38) {
                           throw a(var38);
                        }

                        if (var7 == null) {
                           var7 = new TarArchiveOutputStream(new GZIPOutputStream(new NonCloseableOutputStream(var6)));
                           var7.setLongFileMode(3);
                        }

                        TarArchiveEntry var15 = new TarArchiveEntry(var13);
                        var15.setSize(var14.length);
                        var7.putArchiveEntry(var15);
                        var7.write(var14);
                        var7.closeArchiveEntry();
                     }
                  }

                  if (var7 == null) {
                     var2 = new AssertionResourceData(var1, false, var10);
                  }
                  break;
               }
            }
         } catch (IOException var40) {
            String[] var22 = l;
            a.log(Level.WARNING, var22[28], var40);
         } finally {
            ResourceUtils.closeQuietly(var7);
         }

         if (var7 != null) {
            var2 = new AssertionResourceData(this.c(var1), true, var6.toByteArray());
         }
      } finally {
         ResourceUtils.closeQuietly(var6);
      }

      try {
         if (var2 == null || !a.isLoggable(Level.FINE)) {
            return var2;
         }
      } catch (IOException var37) {
         throw a(var37);
      }

      Logger var10000 = a;
      Level var10001 = Level.FINE;
      int var10002 = var2.getData().length;
      String var10003 = var2.getResourceName();
      long var18 = System.currentTimeMillis() - var3;
      String var20 = var10003;
      int var21 = var10002;
      String[] var44 = l;
      var10000.log(var10001, var44[29] + var21 + var44[61] + var20 + var44[5] + var18 + var44[25]);
      return var2;
   }

   @NotNull
   private HashSet<String> a(@NotNull String var1, @Nullable String[] var2, @NotNull ModularAssertionModule var3) throws IOException {
      try {
         if (var1 == null) {
            a(1);
         }
      } catch (IOException var14) {
         throw a(var14);
      }

      try {
         if (var3 == null) {
            a(2);
         }
      } catch (IOException var16) {
         throw a(var16);
      }

      Resource[] var4 = null;

      try {
         PathMatchingResourcePatternResolver var5 = new PathMatchingResourcePatternResolver(var3.getModuleClassLoader());
         String var10002 = this.c(var1);
         String[] var18 = l;
         var4 = var5.getResources("/" + var10002 + var18[15]);
      } catch (IOException var13) {
         String[] var10 = l;
         a.log(Level.FINE, var10[67] + var1 + var10[60], ExceptionUtils.getDebugException(var13));
      }

      int var19;
      HashSet var10000;
      HashSet var10001;
      label69: {
         try {
            var10000 = new HashSet;
            var10001 = var10000;
            if (var2 == null) {
               var19 = 0;
               break label69;
            }
         } catch (IOException var15) {
            throw a(var15);
         }

         var19 = var2.length;
      }

      var10001./* $VF: Unable to resugar constructor */<init>(var19 + (var4 == null ? 0 : var4.length));
      HashSet var17 = var10000;

      try {
         if (var2 != null) {
            Collections.addAll(var17, var2);
         }
      } catch (IOException var12) {
         throw a(var12);
      }

      if (var4 != null) {
         for (Resource var9 : var4) {
            var17.add(a(var9));
         }
      }

      try {
         if (var17 == null) {
            a(3);
         }

         return var17;
      } catch (IOException var11) {
         throw a(var11);
      }
   }

   private static String a(Resource var0) {
      try {
         if (var0 instanceof ContextResource) {
            return ((ContextResource)var0).getPathWithinContext();
         }
      } catch (IllegalArgumentException var2) {
         throw a(var2);
      }

      label25: {
         try {
            if (var0 instanceof FileSystemResource && ((FileSystemResource)var0).getPath().contains(l[20])) {
               break label25;
            }
         } catch (IllegalArgumentException var3) {
            throw a(var3);
         }

         return var0.getFilename();
      }

      String var1 = ((FileSystemResource)var0).getPath();
      return var1.substring(var1.indexOf(l[51]));
   }

   private boolean a(@NotNull String var1, @NotNull String var2) {
      try {
         if (var1 == null) {
            a(4);
         }
      } catch (IllegalArgumentException var3) {
         throw a(var3);
      }

      try {
         if (var2 == null) {
            a(5);
         }
      } catch (IllegalArgumentException var4) {
         throw a(var4);
      }

      return this.c(var2).startsWith(this.c(var1));
   }

   @NotNull
   private String c(@NotNull String var1) {
      try {
         if (var1 == null) {
            a(6);
         }
      } catch (IllegalArgumentException var5) {
         throw a(var5);
      }

      String var2 = var1;
      if (var2.startsWith("/")) {
         var2 = var2.substring(1);
      }

      int var3 = var2.lastIndexOf(47);
      if (var3 >= 0) {
         var2 = var2.substring(0, var3);
      }

      try {
         if (var2 == null) {
            a(7);
         }

         return var2;
      } catch (IllegalArgumentException var4) {
         throw a(var4);
      }
   }

   public CustomAssertionHolder getAssertion(String var1) {
      return this.a(com.l7tech.server.policy.custom.a.c(var1));
   }

   public CustomAssertionHolder getAssertionByExternalName(String var1) {
      return this.a(com.l7tech.server.policy.custom.a.d(var1));
   }

   public Collection<CustomAssertionHolder> getAssertions() {
      Set var1 = com.l7tech.server.policy.custom.a.b();
      return this.a(var1);
   }

   public Collection<CustomAssertionHolder> getAssertions(Category var1) {
      Set var2 = com.l7tech.server.policy.custom.a.a(var1);
      return this.a(var2);
   }

   public boolean hasCustomCredentialSource() {
      try {
         for (CustomAssertionDescriptor var3 : com.l7tech.server.policy.custom.a.b()) {
            if (var3.hasCategory(Category.ACCESS_CONTROL)) {
               return true;
            }

            if (CustomCredentialSource.class.isAssignableFrom(var3.getAssertion())) {
               CustomCredentialSource var4 = (CustomCredentialSource)var3.getAssertion().newInstance();
               if (var4.isCredentialSource()) {
                  return true;
               }
            }
         }
      } catch (Exception var5) {
         a.log(Level.WARNING, l[55], var5);
      }

      return false;
   }

   public CustomAssertionDescriptor getDescriptor(Class var1) {
      return com.l7tech.server.policy.custom.a.a(var1);
   }

   public Collection<AssertionModuleInfo> getAssertionModuleInfo() {
      ArrayList var1 = new ArrayList();

      for (CustomAssertionModule var4 : this.getLoadedModules()) {
         var1.add(new AssertionModuleInfo(var4.getName(), var4.getEntityName(), var4.getDigest(), this.a(var4)));
      }

      return var1;
   }

   public AssertionModuleInfo getModuleInfoForAssertionClass(String var1) {
      try {
         if (var1 == null) {
            throw new IllegalArgumentException(l[69]);
         }
      } catch (IllegalArgumentException var4) {
         throw a(var4);
      }

      CustomAssertionModule var2 = this.getModuleForAssertion(var1);

      try {
         return var2 != null ? new AssertionModuleInfo(var2.getName(), var2.getEntityName(), var2.getDigest(), this.a(var2)) : null;
      } catch (IllegalArgumentException var3) {
         throw a(var3);
      }
   }

   private Collection<String> a(@NotNull CustomAssertionModule var1) {
      try {
         if (var1 == null) {
            a(8);
         }
      } catch (IllegalArgumentException var5) {
         throw a(var5);
      }

      ArrayList var2 = new ArrayList();

      for (CustomAssertionDescriptor var4 : var1.getDescriptors()) {
         var2.add(var4.getAssertion().getName());
      }

      return Collections.unmodifiableCollection(var2);
   }

   public CustomAssertionUI getUI(String var1) {
      return com.l7tech.server.policy.custom.a.a(var1);
   }

   public CustomTaskActionUI getTaskActionUI(String var1) {
      return com.l7tech.server.policy.custom.a.b(var1);
   }

   public CustomEntitySerializer getExternalEntitySerializer(String var1) {
      return com.l7tech.server.policy.custom.a.e(var1);
   }

   public void setServerConfig(Config var1) {
      this.b = var1;
   }

   public void setExtensionInterfaceManager(ExtensionInterfaceManager var1) {
      this.e = var1;
   }

   public void setSecurePasswordManager(SecurePasswordManager var1) {
      this.f = var1;
   }

   public void setCustomKeyValueStoreManager(CustomKeyValueStoreManager var1) {
      this.g = var1;
   }

   public void setSsgKeyStoreManager(SsgKeyStoreManager var1) {
      this.h = var1;
   }

   public void setDefaultKey(DefaultKey var1) {
      this.i = var1;
   }

   public CustomAssertionsScanner createScanner(@NotNull CustomAssertionModulesConfig var1, @NotNull ScannerCallbacks.CustomAssertion var2) {
      try {
         if (var1 == null) {
            a(9);
         }
      } catch (IllegalArgumentException var3) {
         throw a(var3);
      }

      try {
         if (var2 == null) {
            a(10);
         }
      } catch (IllegalArgumentException var4) {
         throw a(var4);
      }

      return new CustomAssertionsScanner(var1, var2);
   }

   public CustomAssertionModulesConfig createScannerConfig(@NotNull Config var1) {
      try {
         if (var1 == null) {
            a(11);
         }
      } catch (IllegalArgumentException var2) {
         throw a(var2);
      }

      return new CustomAssertionModulesConfig(var1);
   }

   public void afterPropertiesSet() throws Exception {
      try {
         if (this.b == null) {
            throw new IllegalArgumentException(l[70]);
         }
      } catch (Exception var6) {
         throw a(var6);
      }

      try {
         if (this.e == null) {
            throw new IllegalArgumentException(l[31]);
         }
      } catch (Exception var9) {
         throw a(var9);
      }

      try {
         if (this.f == null) {
            throw new IllegalArgumentException(l[27]);
         }
      } catch (Exception var5) {
         throw a(var5);
      }

      try {
         if (this.g == null) {
            throw new IllegalArgumentException(l[68]);
         }
      } catch (Exception var8) {
         throw a(var8);
      }

      try {
         if (this.h == null) {
            throw new IllegalArgumentException(l[75]);
         }
      } catch (Exception var4) {
         throw a(var4);
      }

      try {
         if (this.i == null) {
            throw new IllegalArgumentException(l[24]);
         }
      } catch (Exception var7) {
         throw a(var7);
      }

      CustomAssertionModulesConfig var1 = this.createScannerConfig(this.b);
      b var2 = new b(this);
      this.j = this.createScanner(var1, var2);
      this.j.scanModules();
      ClassLoader var3 = this.getClass().getClassLoader();
      if (var1.getModuleDir() != null) {
         var3 = new AllCustomAssertionClassLoader(AllCustomAssertionClassLoader.class.getClassLoader(), this.j.getModules(), var3);
         ClassLoaderUtil.setClassloader(var3);
      }

      this.c = var3;
      this.j.startTimer(var1.getRescanPeriodMillis());
   }

   private Collection<CustomAssertionHolder> a(Set var1) {
      ArrayList var2 = new ArrayList();

      for (Object var4 : var1) {
         CustomAssertionHolder var5 = this.a((CustomAssertionDescriptor)var4);

         try {
            if (var5 != null) {
               var2.add(var5);
            }
         } catch (IllegalArgumentException var6) {
            throw a(var6);
         }
      }

      return var2;
   }

   private CustomAssertionHolder a(CustomAssertionDescriptor var1) {
      CustomAssertionHolder var2 = null;

      try {
         if (var1 == null) {
            return null;
         }
      } catch (Exception var7) {
         throw a(var7);
      }

      try {
         Class var3 = var1.getAssertion();
         var2 = new CustomAssertionHolder();
         CustomAssertion var4 = (CustomAssertion)var3.newInstance();
         var2.setCustomAssertion(var4);
         var2.setCategories(var1.getCategories());
         var2.setDescriptionText(var1.getDescription());
         var2.setPaletteNodeName(var1.getPaletteNodeName());
         var2.setPolicyNodeName(var1.getPolicyNodeName());
         var2.setIsUiAutoOpen(var1.getIsUiAutoOpen());
         var2.setModuleFileName(var1.getModuleFileName());
         if (var4 instanceof CustomFeatureSetName var5) {
            var2.setRegisteredCustomFeatureSetName(var5.getFeatureSetName());
         }
      } catch (Exception var6) {
         a.log(Level.WARNING, l[43], var6);
      }

      return var2;
   }

   private boolean d(String var1) {
      boolean var2 = false;

      for (Object var5 : com.l7tech.server.policy.custom.a.a()) {
         CustomAssertionDescriptor var6 = (CustomAssertionDescriptor)var5;
         Class var7 = var6.getAssertion();
         Class var8 = var6.getUiClass();

         label73: {
            try {
               if (var7 != null && var1.startsWith(var7.getPackage().getName().replace('.', '/'))) {
                  break label73;
               }
            } catch (IllegalArgumentException var16) {
               throw a(var16);
            }

            label74: {
               try {
                  if (var8 != null && var1.startsWith(var8.getPackage().getName().replace('.', '/'))) {
                     break label74;
                  }
               } catch (IllegalArgumentException var15) {
                  throw a(var15);
               }

               String[] var9 = var6.getUiAllowedPackages();

               for (String var13 : var9) {
                  if (var1.startsWith(var13)) {
                     var2 = true;
                     break;
                  }
               }

               try {
                  if (var2) {
                     break;
                  }
               } catch (IllegalArgumentException var14) {
                  throw a(var14);
               }

               Set var17 = var6.getUiAllowedResources();
               if (!var17.contains(var1)) {
                  continue;
               }

               var2 = true;
               break;
            }

            var2 = true;
            break;
         }

         var2 = true;
         break;
      }

      return var2;
   }

   protected final void registerCustomExtensionInterface(@Nullable Class<? extends CustomExtensionInterfaceBinding> var1) throws IllegalAccessException, InstantiationException {
      try {
         if (CustomExtensionInterfaceBinding.getServiceFinder() == null) {
            CustomExtensionInterfaceBinding.setServiceFinder(this.a());
         }
      } catch (IllegalAccessException var3) {
         throw a(var3);
      }

      if (var1 != null) {
         CustomExtensionInterfaceBinding var2 = (CustomExtensionInterfaceBinding)var1.newInstance();
         this.e.registerInterface(var2.getInterfaceClass(), null, var2.getImplementationObject(), true);
      }
   }

   @Deprecated
   protected final String parseModuleFileName(@NotNull String var1, @NotNull String var2) {
      try {
         if (var1 == null) {
            a(12);
         }
      } catch (IllegalArgumentException var6) {
         throw a(var6);
      }

      try {
         if (var2 == null) {
            a(13);
         }
      } catch (IllegalArgumentException var7) {
         throw a(var7);
      }

      String var3 = var1;
      String var4 = File.separator;
      int var5 = var3.indexOf("!" + var4 + var2);
      if (var5 < 0) {
         var4 = "/";
         var5 = var3.indexOf("!" + var4 + var2);
      }

      var3 = var3.substring(0, var5);
      return var3.substring(var3.lastIndexOf(var4) + 1);
   }

   private void a(@NotNull ApplicationEvent var1) {
      try {
         if (var1 == null) {
            a(14);
         }
      } catch (IllegalArgumentException var4) {
         throw a(var4);
      }

      ApplicationContext var2 = this.getApplicationContext();

      try {
         if (var2 != null) {
            var2.publishEvent(var1);
         }
      } catch (IllegalArgumentException var3) {
         throw a(var3);
      }
   }

   public void destroy() throws Exception {
      this.j.destroy();
   }

   private ServiceFinderImpl a() {
      try {
         if (this.f == null) {
            throw new IllegalStateException(l[9]);
         }
      } catch (IllegalArgumentException var5) {
         throw a(var5);
      }

      try {
         if (this.g == null) {
            throw new IllegalStateException(l[74]);
         }
      } catch (IllegalArgumentException var2) {
         throw a(var2);
      }

      try {
         if (this.h == null) {
            throw new IllegalStateException(l[48]);
         }
      } catch (IllegalArgumentException var4) {
         throw a(var4);
      }

      try {
         if (this.i == null) {
            throw new IllegalStateException(l[14]);
         }
      } catch (IllegalArgumentException var1) {
         throw a(var1);
      }

      try {
         if (this.k == null) {
            this.k = new ServiceFinderImpl();
            this.k.setSecurePasswordServicesImpl(new SecurePasswordServicesImpl(this.f));
            this.k.setKeyValueStoreImpl(new KeyValueStoreServicesImpl(this.g));
            this.k.setSignerServicesImpl(new SignerServicesImpl(this.h, this.i));
         }
      } catch (IllegalArgumentException var3) {
         throw a(var3);
      }

      return this.k;
   }

   public void loadModule(@NotNull File var1, @NotNull ServerModuleFile var2) throws ModuleLoadingException {
      try {
         if (var1 == null) {
            a(15);
         }
      } catch (ModuleLoadingException var3) {
         throw a(var3);
      }

      try {
         if (var2 == null) {
            a(16);
         }
      } catch (ModuleLoadingException var4) {
         throw a(var4);
      }

      this.j.loadServerModuleFile(var1, var2.getModuleSha256(), var2.getName());
   }

   public void updateModule(@NotNull File var1, @NotNull ServerModuleFile var2) {
      try {
         if (var1 == null) {
            a(17);
         }
      } catch (IllegalArgumentException var3) {
         throw a(var3);
      }

      try {
         if (var2 == null) {
            a(18);
         }
      } catch (IllegalArgumentException var4) {
         throw a(var4);
      }

      this.j.updateServerModuleFile(var1, var2.getModuleSha256(), var2.getName());
   }

   public void unloadModule(@NotNull File var1, @NotNull ServerModuleFile var2) throws ModuleLoadingException {
      try {
         if (var1 == null) {
            a(19);
         }
      } catch (ModuleLoadingException var3) {
         throw a(var3);
      }

      try {
         if (var2 == null) {
            a(20);
         }
      } catch (ModuleLoadingException var4) {
         throw a(var4);
      }

      this.j.unloadServerModuleFile(var1, var2.getModuleSha256(), var2.getName());
   }

   public boolean isModuleLoaded(@NotNull File var1, @NotNull ServerModuleFile var2) {
      try {
         if (var1 == null) {
            a(21);
         }
      } catch (IllegalArgumentException var3) {
         throw a(var3);
      }

      try {
         if (var2 == null) {
            a(22);
         }
      } catch (IllegalArgumentException var4) {
         throw a(var4);
      }

      return this.j.isServerModuleFileLoaded(var1, var2.getModuleSha256(), var2.getName());
   }

   @Nullable
   public CustomAssertionModule getModuleForAssertion(@NotNull String var1) {
      try {
         if (var1 == null) {
            a(23);
         }
      } catch (IllegalArgumentException var5) {
         throw a(var5);
      }

      for (CustomAssertionModule var3 : this.j.getModules()) {
         try {
            if (var3.offersClass(var1)) {
               return var3;
            }
         } catch (IllegalArgumentException var4) {
            throw a(var4);
         }
      }

      return null;
   }

   @Nullable
   public CustomAssertionModule getModuleByName(@NotNull String var1) {
      try {
         if (var1 == null) {
            a(24);
         }
      } catch (IllegalArgumentException var5) {
         throw a(var5);
      }

      for (CustomAssertionModule var3 : this.j.getModules()) {
         try {
            if (var3.getName().equals(var1)) {
               return var3;
            }
         } catch (IllegalArgumentException var4) {
            throw a(var4);
         }
      }

      return null;
   }

   @Nullable
   public CustomAssertionModule getModuleForClassLoader(ClassLoader var1) {
      try {
         if (var1 == null) {
            throw new IllegalArgumentException(l[21]);
         }
      } catch (IllegalArgumentException var5) {
         throw a(var5);
      }

      for (CustomAssertionModule var3 : this.j.getModules()) {
         try {
            if (var1 == var3.getModuleClassLoader()) {
               return var3;
            }
         } catch (IllegalArgumentException var4) {
            throw a(var4);
         }
      }

      return null;
   }

   @Nullable
   public CustomAssertionModule getModuleForPackage(@NotNull String var1) {
      try {
         if (var1 == null) {
            a(25);
         }
      } catch (IllegalArgumentException var2) {
         throw a(var2);
      }

      throw new UnsupportedOperationException(l[71]);
   }

   @Override
   public boolean isFirstPartyAssertionPackage(@NotNull String var1) {
      try {
         if (var1 == null) {
            a(26);
         }
      } catch (IllegalArgumentException var2) {
         throw a(var2);
      }

      throw new UnsupportedOperationException(l[41]);
   }

   @NotNull
   @Override
   public Set<CustomAssertionModule> getLoadedModules() {
      return new HashSet<>(this.j.getModules());
   }

   static {
      String[] var5 = new String[82];
      int var3 = 0;
      String var2 = "\nz*N\r\u0016*\u001dO8U\u0010\u001d\u0019l*D\n\u0010 \u0017q\u000bD\u001f\r:\fm \u0001\u0011\u0017i\nz(T\u0011\u0016,\u001c\u0005\u001di<O\f\b\u001fz-q\u0019\u0010!\u000b\u0007\u001fe0Q,\u0005;\u0006Xk6N\u0013D\t\u001bs8R\u000b*(\u0015z\f\ro=@\f\u0001\u0004\u0017{,M\u001d%\u001fz-\u0001\u0019\u0017:\u001dm-H\u0017\ni\nz*N\r\u0016*\u001d?=@\f\u0005i\u0019lyC\u0001\u0010,\u000b1(\u000bz:T\n\u0001\u0019\u0019l*V\u0017\u0016-5~7@\u001f\u0001;Xv*\u0001\u0016\u000b=Xv7H\f\r(\u0014v#D\u001c\u0012])w\u0013\u001eD:\u001d|yG\u0017\u0016sX:*+\f\u0015p=T\u0014\u0001\f\u0016k0U\u0001\u000e\u001fz-q\u0019\u0007\"\u0019x<q\u0019\u0010!\u0013\b~+R\u001d)&\u001cj5D>\r%\u001dQ8L\u001d\u001d\u001cz?@\r\b=3z \u0001\u0011\u0017i\u0016p-\u0001\u0011\n \fv8M\u0011\u001e,\u001c\u000bW5s\u000eRJ*\u0014~*R%9l*D\n\u0010 \u0017qyS\u001d\u0017&\rm:DX\u0000(\f~yC\u0001\u0010,Xs<O\u001f\u0010!B?\u0004\b~-I\n\u000bk8F\u001d\u0000\u000f\u0011s<(+z+W\u0011\n.X|,R\f\u000b$X~*R\u001d\u0016=\u0011p7\u0001\n\u0001:\u0017j+B\u001dD-\u0019k8\u001bX\n\u001bp4\u000e\u0014S=\u001d|1\u001b\u001bs8R\u000b(&\u0019{<SX\u0007(\u0016q6UX\u0006,Xq,M\u0014E=\u001bp4\u000e\u0014S=\u001d|1\u000e\u000b\u0001;\u000ez+\u000e\b\u000b%\u0011| \u000e\u001b\u0011:\fp4\u000e;\u0011:\fp4`\u000b\u0017,\nk0N\u0016\u0017\u001b\u001dx0R\f\u0016(\nV4Q\u0014\u000b(~-IX\u0017 \u0002zc\u0001\u0017<z?@\r\b=XT<XX\r:Xm<P\r\r;\u001d{\u0003\u0015lw\u000e\u001fz-q\u0019\u0007\"\u0019x<q\u0019\u0010!#+z:T\n\u0001i(~*R\u000f\u000b;\u001c?\u0014@\u0016\u0005.\u001dmyH\u000bD;\u001dn,H\n\u0001-!=m+N\nD*\nz8U\u0011\n.Xm<R\u0017\u0011;\u001bzyf\"-\u0019XK\u0018sV\t;m<@\f\r'\u001f?\u0002_1'=g-D\u0016\u0017 \u0017qyh\u0016\u0010,\ny8B\u001dD\u0004\u0019q8F\u001d\u0016i\u0011lyS\u001d\u0015<\u0011m<E\u0012])w\u0013\u001eD:\u001d|yG\u0017\u0016sX:*+>9m>T\u0015\u0001'\f??N\nD\t6p-o\r\b%Xo8S\u0019\t,\fz+\u0001_A:_?6GXA:V:*\u0001\u0015\u0011:\f?7N\fD+\u001d?7T\u0014\b\u0015\u001fz-l\u0017\u0000<\u0014z\u001fN\n%:\u000bz+U\u0011\u000b'\f\rq5N\u0019\u0000\u0004\u0017{,M\u001d)=m+N\nD%\u0017~=H\u0016\u0003i\u001bj*U\u0017\ti\u0019l*D\n\u0010 \u0017qyS\u001d\u0017&\rm:DBD=\u001bp4\u000e\u0014S=\u001d|1\u000e\u000b\u0001;\u000ez+\u000e\b\u000b%\u0011| \u000e\u001b\u0011:\fp4\u000e;\u0011:\fp4`\u000b\u0017,\nk0N\u0016\u0017\u001b\u001dx0R\f\u0016(\nV4Q\u0014\f\bj;M\u0011\u0017!=i<O\f\u0005\b~-IJ\u000e\u001bp7G\u0011\u0003\u000f\u0011s<o\u0019\t,*5z-I\u0017\u0000i\u0016p-\u0001\u000b\u00119\bp+U\u001d\u0000i\u001ep+\u0001;\u0011:\fp4\u00019\u0017:\u001dm-H\u0017\n:#=m+N\nD%\u0017~=H\u0016\u0003i\nz*N\r\u0016*\u001d??S\u0017\ti\u0015p=T\u0014\u0001i&-q8C\u0014\u0001i\fpyH\u0016\u0017=\u0019q-H\u0019\u0010,X|,R\f\u000b$X~*R\u001d\u0016=\u0011p7\u0018\u001bj*U\u0017\t\b\u000bl<S\f\r&\u0016\\8M\u0014\u0006(\u001bt*\u0006\u0015p=T\u0014\u0001\u0006\u001bp7G\u0011\u0003\n\u0014p8E5\u000b-\rs<%\u000bl>j\u001d\u001d\u001a\fp+D5\u0005'\u0019x<SX\r:Xq6UX\r'\u0011k0@\u0014\r3\u001d{\u0012\u0011l\n@\u0015\u0001\u0006\nL,C(\u0005*\u0013~>D\u0013\u001bm<@\f\u0001\u001a\u001b~7O\u001d\u0016\n\u0017q?H\u001f\n\u001bp4\u000e\u0014S=\u001d|1\u0006V|5@\u000b\u0017%\u001fz-\u0001\u0019\u0017:\u001dm-H\u0017\ni\nz*N\r\u0016*\u001d?=@\f\u0005i\u0019lyC\u0001\u0010,\u000b1\r\u001bm<@\f\u0001\u001a\u001b~7O\u001d\u0016\\=m+N\nD>\u0010v5DX\u0000,\fz+L\u0011\n \u0016xyH\u001eD=\u0010z+DX\r:X~yb\r\u0017=\u0017r\u0018R\u000b\u0001;\fv6OX\u0016,\u001fv*U\u001d\u0016,\u001c?.I\u0011\u0007!Xv*\u0001\u001b\u0016,\u001cz7U\u0011\u0005%Xl6T\n\u0007,V#+z+W\u0011\n.X|,R\f\u000b$X~*R\u001d\u0016=\u0011p7\u0001\n\u0001:\u0017j+B\u001d^i\r\u0015p=T\u0014\u0001:;p7G\u0011\u0003*8Q6U6\u0011%\u0014?4D\f\f&\u001c?|RVA:Xr,R\fD'\u0017kyS\u001d\u0010<\nqyO\r\b%\u0005\b~-II`Xy6SX\u000b9\fv4H\u0002\u0005=\u0011p7\u000fXD\u001e\u0011s5\u0001\n\u0001:\u0017s/DX\b(\fz+\rX\b \u0013z5XX\u0014(\nkyN\u001eD-\u001do<O\u001c\u0001'\f?3@\nD%\u0011}+@\n\u001di\rq=D\nD\b9Mth6\"f\u0014v;\u000eV\u001dX} U\u001dD(\u000bl<S\f\r&\u0016?>[\u0011\u0014i\f~+\u0001\u001e\u000b;X\u00125v*R\u0011\n.Xm<R\u0017\u0011;\u001bzy\u0006\b\u001fz-q\u0019\u0010!\u000b\u000e\u0011l\u0014N\u001c\u0011%\u001dS6@\u001c\u0001-\u001c\u0011l\u001fH\n\u0017=(~+U\u0001%:\u000bz+U\u0011\u000b'(~:J\u0019\u0003,\u000b\b~:J\u0019\u0003,6~4D%-q8C\u0014\u0001i\fpyS\u001d\u0017&\u0014i<\u0001\u0019\u0017:\u001dm-H\u0017\ni\nz*N\r\u0016*\u001d?*;j*U\u0017\ti3z \u0001.\u0005%\rzyr\f\u000b;\u001d?\u0014@\u0016\u0005.\u001dmyH\u000bD;\u001dn,H\n\u0001-\u0019\u001bs8R\u000b*(\u0015zyB\u0019\n'\u0017kyC\u001dD'\rs5\u0000\u0019+z+W\u001d\u0016i;p7G\u0011\u0003i\u0011lyS\u001d\u0015<\u0011m<E*5z-I\u0017\u0000i\u0016p-\u0001\u000b\u00119\bp+U\u001d\u0000i\u001ep+\u0001;\u0011:\fp4\u00019\u0017:\u001dm-H\u0017\n:\u0011\u001bp7G\u0011\u0003\u000f\u0011s<t\n\b\u0019\u0019k1\u0002B?-\u001bj*U\u0017\t\u0002\u001df\u000f@\u0014\u0011,+k6S\u001d)(\u0016~>D\nD \u000b?7N\fD \u0016v-H\u0019\b \u0002z= +L\u001e\u00013\u00010+k6S\u001dD\u0004\u0019q8F\u001d\u0016i\u0011lyS\u001d\u0015<\u0011m<E\u0002B?\n\u0015p=T\u0014\u0001\u0007\u0019r<\u0013\u001fz-`\u000b\u0017,\nk0N\u0016'%\u0019l*D\u000b\u000f\u001fz-l\u0017\u0000<\u0014z\u001bX6\u0005$\u001d";
      int var4 = "\nz*N\r\u0016*\u001dO8U\u0010\u001d\u0019l*D\n\u0010 \u0017q\u000bD\u001f\r:\fm \u0001\u0011\u0017i\nz(T\u0011\u0016,\u001c\u0005\u001di<O\f\b\u001fz-q\u0019\u0010!\u000b\u0007\u001fe0Q,\u0005;\u0006Xk6N\u0013D\t\u001bs8R\u000b*(\u0015z\f\ro=@\f\u0001\u0004\u0017{,M\u001d%\u001fz-\u0001\u0019\u0017:\u001dm-H\u0017\ni\nz*N\r\u0016*\u001d?=@\f\u0005i\u0019lyC\u0001\u0010,\u000b1(\u000bz:T\n\u0001\u0019\u0019l*V\u0017\u0016-5~7@\u001f\u0001;Xv*\u0001\u0016\u000b=Xv7H\f\r(\u0014v#D\u001c\u0012])w\u0013\u001eD:\u001d|yG\u0017\u0016sX:*+\f\u0015p=T\u0014\u0001\f\u0016k0U\u0001\u000e\u001fz-q\u0019\u0007\"\u0019x<q\u0019\u0010!\u0013\b~+R\u001d)&\u001cj5D>\r%\u001dQ8L\u001d\u001d\u001cz?@\r\b=3z \u0001\u0011\u0017i\u0016p-\u0001\u0011\n \fv8M\u0011\u001e,\u001c\u000bW5s\u000eRJ*\u0014~*R%9l*D\n\u0010 \u0017qyS\u001d\u0017&\rm:DX\u0000(\f~yC\u0001\u0010,Xs<O\u001f\u0010!B?\u0004\b~-I\n\u000bk8F\u001d\u0000\u000f\u0011s<(+z+W\u0011\n.X|,R\f\u000b$X~*R\u001d\u0016=\u0011p7\u0001\n\u0001:\u0017j+B\u001dD-\u0019k8\u001bX\n\u001bp4\u000e\u0014S=\u001d|1\u001b\u001bs8R\u000b(&\u0019{<SX\u0007(\u0016q6UX\u0006,Xq,M\u0014E=\u001bp4\u000e\u0014S=\u001d|1\u000e\u000b\u0001;\u000ez+\u000e\b\u000b%\u0011| \u000e\u001b\u0011:\fp4\u000e;\u0011:\fp4`\u000b\u0017,\nk0N\u0016\u0017\u001b\u001dx0R\f\u0016(\nV4Q\u0014\u000b(~-IX\u0017 \u0002zc\u0001\u0017<z?@\r\b=XT<XX\r:Xm<P\r\r;\u001d{\u0003\u0015lw\u000e\u001fz-q\u0019\u0007\"\u0019x<q\u0019\u0010!#+z:T\n\u0001i(~*R\u000f\u000b;\u001c?\u0014@\u0016\u0005.\u001dmyH\u000bD;\u001dn,H\n\u0001-!=m+N\nD*\nz8U\u0011\n.Xm<R\u0017\u0011;\u001bzyf\"-\u0019XK\u0018sV\t;m<@\f\r'\u001f?\u0002_1'=g-D\u0016\u0017 \u0017qyh\u0016\u0010,\ny8B\u001dD\u0004\u0019q8F\u001d\u0016i\u0011lyS\u001d\u0015<\u0011m<E\u0012])w\u0013\u001eD:\u001d|yG\u0017\u0016sX:*+>9m>T\u0015\u0001'\f??N\nD\t6p-o\r\b%Xo8S\u0019\t,\fz+\u0001_A:_?6GXA:V:*\u0001\u0015\u0011:\f?7N\fD+\u001d?7T\u0014\b\u0015\u001fz-l\u0017\u0000<\u0014z\u001fN\n%:\u000bz+U\u0011\u000b'\f\rq5N\u0019\u0000\u0004\u0017{,M\u001d)=m+N\nD%\u0017~=H\u0016\u0003i\u001bj*U\u0017\ti\u0019l*D\n\u0010 \u0017qyS\u001d\u0017&\rm:DBD=\u001bp4\u000e\u0014S=\u001d|1\u000e\u000b\u0001;\u000ez+\u000e\b\u000b%\u0011| \u000e\u001b\u0011:\fp4\u000e;\u0011:\fp4`\u000b\u0017,\nk0N\u0016\u0017\u001b\u001dx0R\f\u0016(\nV4Q\u0014\f\bj;M\u0011\u0017!=i<O\f\u0005\b~-IJ\u000e\u001bp7G\u0011\u0003\u000f\u0011s<o\u0019\t,*5z-I\u0017\u0000i\u0016p-\u0001\u000b\u00119\bp+U\u001d\u0000i\u001ep+\u0001;\u0011:\fp4\u00019\u0017:\u001dm-H\u0017\n:#=m+N\nD%\u0017~=H\u0016\u0003i\nz*N\r\u0016*\u001d??S\u0017\ti\u0015p=T\u0014\u0001i&-q8C\u0014\u0001i\fpyH\u0016\u0017=\u0019q-H\u0019\u0010,X|,R\f\u000b$X~*R\u001d\u0016=\u0011p7\u0018\u001bj*U\u0017\t\b\u000bl<S\f\r&\u0016\\8M\u0014\u0006(\u001bt*\u0006\u0015p=T\u0014\u0001\u0006\u001bp7G\u0011\u0003\n\u0014p8E5\u000b-\rs<%\u000bl>j\u001d\u001d\u001a\fp+D5\u0005'\u0019x<SX\r:Xq6UX\r'\u0011k0@\u0014\r3\u001d{\u0012\u0011l\n@\u0015\u0001\u0006\nL,C(\u0005*\u0013~>D\u0013\u001bm<@\f\u0001\u001a\u001b~7O\u001d\u0016\n\u0017q?H\u001f\n\u001bp4\u000e\u0014S=\u001d|1\u0006V|5@\u000b\u0017%\u001fz-\u0001\u0019\u0017:\u001dm-H\u0017\ni\nz*N\r\u0016*\u001d?=@\f\u0005i\u0019lyC\u0001\u0010,\u000b1\r\u001bm<@\f\u0001\u001a\u001b~7O\u001d\u0016\\=m+N\nD>\u0010v5DX\u0000,\fz+L\u0011\n \u0016xyH\u001eD=\u0010z+DX\r:X~yb\r\u0017=\u0017r\u0018R\u000b\u0001;\fv6OX\u0016,\u001fv*U\u001d\u0016,\u001c?.I\u0011\u0007!Xv*\u0001\u001b\u0016,\u001cz7U\u0011\u0005%Xl6T\n\u0007,V#+z+W\u0011\n.X|,R\f\u000b$X~*R\u001d\u0016=\u0011p7\u0001\n\u0001:\u0017j+B\u001d^i\r\u0015p=T\u0014\u0001:;p7G\u0011\u0003*8Q6U6\u0011%\u0014?4D\f\f&\u001c?|RVA:Xr,R\fD'\u0017kyS\u001d\u0010<\nqyO\r\b%\u0005\b~-II`Xy6SX\u000b9\fv4H\u0002\u0005=\u0011p7\u000fXD\u001e\u0011s5\u0001\n\u0001:\u0017s/DX\b(\fz+\rX\b \u0013z5XX\u0014(\nkyN\u001eD-\u001do<O\u001c\u0001'\f?3@\nD%\u0011}+@\n\u001di\rq=D\nD\b9Mth6\"f\u0014v;\u000eV\u001dX} U\u001dD(\u000bl<S\f\r&\u0016?>[\u0011\u0014i\f~+\u0001\u001e\u000b;X\u00125v*R\u0011\n.Xm<R\u0017\u0011;\u001bzy\u0006\b\u001fz-q\u0019\u0010!\u000b\u000e\u0011l\u0014N\u001c\u0011%\u001dS6@\u001c\u0001-\u001c\u0011l\u001fH\n\u0017=(~+U\u0001%:\u000bz+U\u0011\u000b'(~:J\u0019\u0003,\u000b\b~:J\u0019\u0003,6~4D%-q8C\u0014\u0001i\fpyS\u001d\u0017&\u0014i<\u0001\u0019\u0017:\u001dm-H\u0017\ni\nz*N\r\u0016*\u001d?*;j*U\u0017\ti3z \u0001.\u0005%\rzyr\f\u000b;\u001d?\u0014@\u0016\u0005.\u001dmyH\u000bD;\u001dn,H\n\u0001-\u0019\u001bs8R\u000b*(\u0015zyB\u0019\n'\u0017kyC\u001dD'\rs5\u0000\u0019+z+W\u001d\u0016i;p7G\u0011\u0003i\u0011lyS\u001d\u0015<\u0011m<E*5z-I\u0017\u0000i\u0016p-\u0001\u000b\u00119\bp+U\u001d\u0000i\u001ep+\u0001;\u0011:\fp4\u00019\u0017:\u001dm-H\u0017\n:\u0011\u001bp7G\u0011\u0003\u000f\u0011s<t\n\b\u0019\u0019k1\u0002B?-\u001bj*U\u0017\t\u0002\u001df\u000f@\u0014\u0011,+k6S\u001d)(\u0016~>D\nD \u000b?7N\fD \u0016v-H\u0019\b \u0002z= +L\u001e\u00013\u00010+k6S\u001dD\u0004\u0019q8F\u001d\u0016i\u0011lyS\u001d\u0015<\u0011m<E\u0002B?\n\u0015p=T\u0014\u0001\u0007\u0019r<\u0013\u001fz-`\u000b\u0017,\nk0N\u0016'%\u0019l*D\u000b\u000f\u001fz-l\u0017\u0000<\u0014z\u001bX6\u0005$\u001d"
         .length();
      char var1 = '\f';
      int var7 = -1;

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

         while (true) {
            String var8 = a(var10000, e(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var8;
                  if ((var7 += var1) >= var4) {
                     l = var5;
                     a = Logger.getLogger(CustomAssertionsRegistrar.class.getName());
                     return;
                  }

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

                  var2 = ".K\u001c]&1\r%K.\u007f;\u0005\u0019*E\tw,-\f\\\u001a\u007f;u\u000b=\\\rq$<\u0016.\u000e\tc:0\n=G\u0007~i'\u001d:A\u001db*0X(]Hr0!\u001d:\u0014H";
                  var4 = ".K\u001c]&1\r%K.\u007f;\u0005\u0019*E\tw,-\f\\\u001a\u007f;u\u000b=\\\rq$<\u0016.\u000e\tc:0\n=G\u0007~i'\u001d:A\u001db*0X(]Hr0!\u001d:\u0014H"
                     .length();
                  var1 = 19;
                  var7 = -1;
            }

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

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

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

      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 -> 46;
            case 1 -> 73;
            case 2 -> 15;
            case 3 -> 119;
            case 4 -> 46;
            case 5 -> 50;
            default -> 31;
         });
      }

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