package com.l7tech.server.policy.module;

import com.l7tech.gateway.common.module.ModuleDigest;
import com.l7tech.gateway.common.module.ModuleLoadingException;
import com.l7tech.util.ExceptionUtils;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

public abstract class ModulesScanner<T extends BaseAssertionModule> {
   private static final Logger a;
   protected File lastScanDir = null;
   protected long lastScanDirModTime = 0L;
   protected final Map<String, T> scannedModules = new ConcurrentHashMap<>();
   protected final Map<String, Long> failModTimes = new ConcurrentHashMap<>();
   protected final Map<String, Long> skipModTimes = new ConcurrentHashMap<>();
   private static final String[] j;

   @NotNull
   protected abstract ModulesScanner.ModuleLoadStatus<T> onModuleLoad(ModuleData var1) throws ModuleException;

   protected abstract boolean onModuleUnload(T var1) throws ModuleException;

   protected void onScanComplete(boolean var1) {
   }

   public T getModule(String var1) {
      return this.scannedModules.get(var1);
   }

   protected T insertModule(@NotNull T var1) {
      try {
         if (var1 == null) {
            a(0);
         }
      } catch (IllegalArgumentException var2) {
         throw b(var2);
      }

      return this.scannedModules.put(var1.getName(), (T)var1);
   }

   protected T removeModule(@NotNull T var1) {
      try {
         if (var1 == null) {
            a(1);
         }
      } catch (IllegalArgumentException var2) {
         throw b(var2);
      }

      return this.scannedModules.remove(var1.getName());
   }

   private void a() {
      this.scannedModules.clear();
   }

   protected void clearFailedModTimes() {
      this.failModTimes.clear();
   }

   protected void clearSkippedModTimes() {
      this.skipModTimes.clear();
   }

   public Collection<T> getModules() {
      return Collections.unmodifiableCollection(this.scannedModules.values());
   }

   protected boolean isScanNeeded(File 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 1
      // 01: aload 0
      // 02: getfield com/l7tech/server/policy/module/ModulesScanner.lastScanDir Ljava/io/File;
      // 05: invokevirtual java/io/File.equals (Ljava/lang/Object;)Z
      // 08: ifeq 2e
      // 0b: lload 2
      // 0c: aload 0
      // 0d: getfield com/l7tech/server/policy/module/ModulesScanner.lastScanDirModTime J
      // 10: lcmp
      // 11: ifne 2e
      // 14: goto 1b
      // 17: invokestatic com/l7tech/server/policy/module/ModulesScanner.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 1a: athrow
      // 1b: aload 0
      // 1c: getfield com/l7tech/server/policy/module/ModulesScanner.failModTimes Ljava/util/Map;
      // 1f: invokeinterface java/util/Map.isEmpty ()Z 1
      // 24: ifne 36
      // 27: goto 2e
      // 2a: invokestatic com/l7tech/server/policy/module/ModulesScanner.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 2d: athrow
      // 2e: bipush 1
      // 2f: goto 37
      // 32: invokestatic com/l7tech/server/policy/module/ModulesScanner.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 35: athrow
      // 36: bipush 0
      // 37: ireturn
      // try (0 -> 10): 11 java/lang/IllegalArgumentException
      // try (5 -> 17): 18 java/lang/IllegalArgumentException
      // try (13 -> 22): 22 java/lang/IllegalArgumentException
   }

   protected boolean processRemovedModules(@NotNull Set<String> var1) {
      try {
         if (var1 == null) {
            a(2);
         }
      } catch (ModuleException var10) {
         throw b(var10);
      }

      boolean var2 = false;

      for (BaseAssertionModule var4 : this.scannedModules.values()) {
         String var5 = var4.getName();

         try {
            if (var4.isFromDb() || var1.contains(var5)) {
               continue;
            }
         } catch (ModuleException var9) {
            throw b(var9);
         }

         String[] var7 = j;
         a.fine(var7[46] + var5);

         try {
            if (this.skipModTimes.get(var5) == null) {
               if (this.onModuleUnload((T)var4)) {
                  var2 = true;
               } else {
                  this.skipModTimes.put(var4.getName(), var4.getModifiedTime());
               }
            }
         } catch (ModuleException var8) {
            Logger var10000 = a;
            Level var10001 = Level.WARNING;
            String var10002 = var4.getName();
            var7 = j;
            var10000.log(var10001, var7[4] + var10002 + var7[37]);
            a.log(Level.WARNING, var7[15] + ExceptionUtils.getMessage(var8), var8);
         }
      }

      return var2;
   }

   protected void cleanRemovedFailedModules(@NotNull Set<String> var1) {
      try {
         if (var1 == null) {
            a(3);
         }
      } catch (IllegalArgumentException var6) {
         throw b(var6);
      }

      for (String var4 : this.failModTimes.keySet()) {
         try {
            if (!var1.contains(var4)) {
               a.info(j[30] + var4);
               this.failModTimes.remove(var4);
            }
         } catch (IllegalArgumentException var5) {
            throw b(var5);
         }
      }
   }

   protected boolean processNewOrChangedModules(@NotNull File[] param1, @NotNull Set<String> param2) {
      // $VF: Couldn't be decompiled
      // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
      // java.lang.RuntimeException: parsing failure!
      //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
      //
      // Bytecode:
      // 000: aload 1
      // 001: ifnonnull 00f
      // 004: bipush 4
      // 005: invokestatic com/l7tech/server/policy/module/ModulesScanner.a (I)V
      // 008: goto 00f
      // 00b: invokestatic com/l7tech/server/policy/module/ModulesScanner.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 00e: athrow
      // 00f: aload 2
      // 010: ifnonnull 01e
      // 013: bipush 5
      // 014: invokestatic com/l7tech/server/policy/module/ModulesScanner.a (I)V
      // 017: goto 01e
      // 01a: invokestatic com/l7tech/server/policy/module/ModulesScanner.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 01d: athrow
      // 01e: bipush 0
      // 01f: istore 3
      // 020: aload 1
      // 021: astore 4
      // 023: aload 4
      // 025: arraylength
      // 026: istore 5
      // 028: bipush 0
      // 029: istore 6
      // 02b: iload 6
      // 02d: iload 5
      // 02f: if_icmpge 2fa
      // 032: aload 4
      // 034: iload 6
      // 036: aaload
      // 037: astore 7
      // 039: aload 7
      // 03b: invokevirtual java/io/File.isFile ()Z
      // 03e: ifne 078
      // 041: getstatic com/l7tech/server/policy/module/ModulesScanner.a Ljava/util/logging/Logger;
      // 044: getstatic java/util/logging/Level.FINE Ljava/util/logging/Level;
      // 047: invokevirtual java/util/logging/Logger.isLoggable (Ljava/util/logging/Level;)Z
      // 04a: ifeq 2f4
      // 04d: goto 054
      // 050: invokestatic com/l7tech/server/policy/module/ModulesScanner.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 053: athrow
      // 054: getstatic com/l7tech/server/policy/module/ModulesScanner.a Ljava/util/logging/Logger;
      // 057: aload 7
      // 059: invokevirtual java/io/File.getAbsolutePath ()Ljava/lang/String;
      // 05c: getstatic com/l7tech/server/policy/module/ModulesScanner.j [Ljava/lang/String;
      // 05f: bipush 36
      // 061: aaload
      // 062: swap
      // 063: getstatic com/l7tech/server/policy/module/ModulesScanner.j [Ljava/lang/String;
      // 066: bipush 51
      // 068: aaload
      // 069: 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" ]
      // 06e: invokevirtual java/util/logging/Logger.info (Ljava/lang/String;)V
      // 071: goto 2f4
      // 074: invokestatic com/l7tech/server/policy/module/ModulesScanner.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 077: athrow
      // 078: aload 7
      // 07a: invokevirtual java/io/File.getName ()Ljava/lang/String;
      // 07d: astore 8
      // 07f: aload 2
      // 080: aload 8
      // 082: invokeinterface java/util/Set.contains (Ljava/lang/Object;)Z 2
      // 087: ifeq 091
      // 08a: goto 2f4
      // 08d: invokestatic com/l7tech/server/policy/module/ModulesScanner.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 090: athrow
      // 091: aload 7
      // 093: invokevirtual java/io/File.lastModified ()J
      // 096: lstore 9
      // 098: lload 9
      // 09a: invokestatic java/lang/Long.valueOf (J)Ljava/lang/Long;
      // 09d: aload 0
      // 09e: getfield com/l7tech/server/policy/module/ModulesScanner.skipModTimes Ljava/util/Map;
      // 0a1: aload 8
      // 0a3: invokeinterface java/util/Map.get (Ljava/lang/Object;)Ljava/lang/Object; 2
      // 0a8: invokevirtual java/lang/Long.equals (Ljava/lang/Object;)Z
      // 0ab: ifeq 0ce
      // 0ae: getstatic com/l7tech/server/policy/module/ModulesScanner.a Ljava/util/logging/Logger;
      // 0b1: aload 8
      // 0b3: getstatic com/l7tech/server/policy/module/ModulesScanner.j [Ljava/lang/String;
      // 0b6: bipush 0
      // 0b7: aaload
      // 0b8: swap
      // 0b9: getstatic com/l7tech/server/policy/module/ModulesScanner.j [Ljava/lang/String;
      // 0bc: bipush 55
      // 0be: aaload
      // 0bf: 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" ]
      // 0c4: invokevirtual java/util/logging/Logger.finer (Ljava/lang/String;)V
      // 0c7: goto 2f4
      // 0ca: invokestatic com/l7tech/server/policy/module/ModulesScanner.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0cd: athrow
      // 0ce: aload 0
      // 0cf: getfield com/l7tech/server/policy/module/ModulesScanner.scannedModules Ljava/util/Map;
      // 0d2: aload 8
      // 0d4: invokeinterface java/util/Map.get (Ljava/lang/Object;)Ljava/lang/Object; 2
      // 0d9: checkcast com/l7tech/server/policy/module/BaseAssertionModule
      // 0dc: astore 11
      // 0de: aload 11
      // 0e0: ifnonnull 120
      // 0e3: lload 9
      // 0e5: invokestatic java/lang/Long.valueOf (J)Ljava/lang/Long;
      // 0e8: aload 0
      // 0e9: getfield com/l7tech/server/policy/module/ModulesScanner.failModTimes Ljava/util/Map;
      // 0ec: aload 8
      // 0ee: invokeinterface java/util/Map.get (Ljava/lang/Object;)Ljava/lang/Object; 2
      // 0f3: invokevirtual java/lang/Long.equals (Ljava/lang/Object;)Z
      // 0f6: ifeq 14b
      // 0f9: goto 100
      // 0fc: invokestatic com/l7tech/server/policy/module/ModulesScanner.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0ff: athrow
      // 100: getstatic com/l7tech/server/policy/module/ModulesScanner.a Ljava/util/logging/Logger;
      // 103: aload 8
      // 105: getstatic com/l7tech/server/policy/module/ModulesScanner.j [Ljava/lang/String;
      // 108: astore 14
      // 10a: aload 14
      // 10c: bipush 52
      // 10e: aaload
      // 10f: swap
      // 110: aload 14
      // 112: bipush 33
      // 114: aaload
      // 115: 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" ]
      // 11a: invokevirtual java/util/logging/Logger.fine (Ljava/lang/String;)V
      // 11d: goto 2f4
      // 120: aload 11
      // 122: invokevirtual com/l7tech/server/policy/module/BaseAssertionModule.getModifiedTime ()J
      // 125: lload 9
      // 127: lcmp
      // 128: ifne 14b
      // 12b: getstatic com/l7tech/server/policy/module/ModulesScanner.a Ljava/util/logging/Logger;
      // 12e: aload 8
      // 130: getstatic com/l7tech/server/policy/module/ModulesScanner.j [Ljava/lang/String;
      // 133: astore 14
      // 135: aload 14
      // 137: bipush 25
      // 139: aaload
      // 13a: swap
      // 13b: aload 14
      // 13d: bipush 22
      // 13f: aaload
      // 140: 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" ]
      // 145: invokevirtual java/util/logging/Logger.fine (Ljava/lang/String;)V
      // 148: goto 2f4
      // 14b: getstatic com/l7tech/server/policy/module/ModulesScanner.a Ljava/util/logging/Logger;
      // 14e: aload 8
      // 150: getstatic com/l7tech/server/policy/module/ModulesScanner.j [Ljava/lang/String;
      // 153: astore 14
      // 155: aload 14
      // 157: bipush 31
      // 159: aaload
      // 15a: swap
      // 15b: 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" ]
      // 160: invokevirtual java/util/logging/Logger.info (Ljava/lang/String;)V
      // 163: new com/l7tech/server/policy/module/ModulesScanner$DigestBuilder
      // 166: dup
      // 167: invokespecial com/l7tech/server/policy/module/ModulesScanner$DigestBuilder.<init> ()V
      // 16a: aload 7
      // 16c: invokevirtual com/l7tech/server/policy/module/ModulesScanner$DigestBuilder.file (Ljava/io/File;)Lcom/l7tech/server/policy/module/ModulesScanner$DigestBuilder;
      // 16f: invokevirtual com/l7tech/server/policy/module/ModulesScanner$DigestBuilder.build ()Ljava/lang/String;
      // 172: astore 12
      // 174: aload 11
      // 176: ifnull 1ad
      // 179: aload 11
      // 17b: invokevirtual com/l7tech/server/policy/module/BaseAssertionModule.getDigest ()Ljava/lang/String;
      // 17e: aload 12
      // 180: invokevirtual java/lang/String.equals (Ljava/lang/Object;)Z
      // 183: ifeq 1ad
      // 186: goto 18d
      // 189: invokestatic com/l7tech/server/policy/module/ModulesScanner.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 18c: athrow
      // 18d: getstatic com/l7tech/server/policy/module/ModulesScanner.a Ljava/util/logging/Logger;
      // 190: aload 8
      // 192: getstatic com/l7tech/server/policy/module/ModulesScanner.j [Ljava/lang/String;
      // 195: astore 14
      // 197: aload 14
      // 199: bipush 56
      // 19b: aaload
      // 19c: swap
      // 19d: aload 14
      // 19f: bipush 57
      // 1a1: aaload
      // 1a2: 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" ]
      // 1a7: invokevirtual java/util/logging/Logger.info (Ljava/lang/String;)V
      // 1aa: goto 2f4
      // 1ad: aload 0
      // 1ae: new com/l7tech/server/policy/module/c
      // 1b1: dup
      // 1b2: aload 0
      // 1b3: aload 7
      // 1b5: aload 12
      // 1b7: lload 9
      // 1b9: invokespecial com/l7tech/server/policy/module/c.<init> (Lcom/l7tech/server/policy/module/ModulesScanner;Ljava/io/File;Ljava/lang/String;J)V
      // 1bc: invokevirtual com/l7tech/server/policy/module/ModulesScanner.onModuleLoad (Lcom/l7tech/server/policy/module/ModuleData;)Lcom/l7tech/server/policy/module/ModulesScanner$ModuleLoadStatus;
      // 1bf: astore 13
      // 1c1: iload 3
      // 1c2: ifne 1e3
      // 1c5: aload 13
      // 1c7: invokevirtual com/l7tech/server/policy/module/ModulesScanner$ModuleLoadStatus.isPrevModuleUnloaded ()Z
      // 1ca: ifne 1e3
      // 1cd: goto 1d4
      // 1d0: invokestatic com/l7tech/server/policy/module/ModulesScanner.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 1d3: athrow
      // 1d4: aload 13
      // 1d6: invokevirtual com/l7tech/server/policy/module/ModulesScanner$ModuleLoadStatus.getLoadedModule ()Lcom/l7tech/server/policy/module/BaseAssertionModule;
      // 1d9: ifnull 1eb
      // 1dc: goto 1e3
      // 1df: invokestatic com/l7tech/server/policy/module/ModulesScanner.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 1e2: athrow
      // 1e3: bipush 1
      // 1e4: goto 1ec
      // 1e7: invokestatic com/l7tech/server/policy/module/ModulesScanner.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 1ea: athrow
      // 1eb: bipush 0
      // 1ec: istore 3
      // 1ed: aload 13
      // 1ef: invokevirtual com/l7tech/server/policy/module/ModulesScanner$ModuleLoadStatus.getLoadedModule ()Lcom/l7tech/server/policy/module/BaseAssertionModule;
      // 1f2: ifnonnull 226
      // 1f5: getstatic com/l7tech/server/policy/module/ModulesScanner.a Ljava/util/logging/Logger;
      // 1f8: aload 8
      // 1fa: getstatic com/l7tech/server/policy/module/ModulesScanner.j [Ljava/lang/String;
      // 1fd: astore 14
      // 1ff: aload 14
      // 201: bipush 21
      // 203: aaload
      // 204: swap
      // 205: aload 14
      // 207: bipush 9
      // 209: aaload
      // 20a: 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" ]
      // 20f: invokevirtual java/util/logging/Logger.warning (Ljava/lang/String;)V
      // 212: aload 0
      // 213: getfield com/l7tech/server/policy/module/ModulesScanner.skipModTimes Ljava/util/Map;
      // 216: aload 8
      // 218: lload 9
      // 21a: invokestatic java/lang/Long.valueOf (J)Ljava/lang/Long;
      // 21d: invokeinterface java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; 3
      // 222: pop
      // 223: goto 2f4
      // 226: aload 0
      // 227: getfield com/l7tech/server/policy/module/ModulesScanner.skipModTimes Ljava/util/Map;
      // 22a: aload 13
      // 22c: invokevirtual com/l7tech/server/policy/module/ModulesScanner$ModuleLoadStatus.getLoadedModule ()Lcom/l7tech/server/policy/module/BaseAssertionModule;
      // 22f: invokevirtual com/l7tech/server/policy/module/BaseAssertionModule.getName ()Ljava/lang/String;
      // 232: invokeinterface java/util/Map.remove (Ljava/lang/Object;)Ljava/lang/Object; 2
      // 237: pop
      // 238: goto 2f4
      // 23b: astore 11
      // 23d: getstatic com/l7tech/server/policy/module/ModulesScanner.a Ljava/util/logging/Logger;
      // 240: getstatic java/util/logging/Level.SEVERE Ljava/util/logging/Level;
      // 243: aload 8
      // 245: aload 11
      // 247: invokestatic com/l7tech/util/ExceptionUtils.getMessage (Ljava/lang/Throwable;)Ljava/lang/String;
      // 24a: getstatic com/l7tech/server/policy/module/ModulesScanner.j [Ljava/lang/String;
      // 24d: astore 14
      // 24f: aload 14
      // 251: bipush 19
      // 253: aaload
      // 254: dup_x2
      // 255: pop
      // 256: aload 14
      // 258: bipush 3
      // 259: aaload
      // 25a: swap
      // 25b: 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" ]
      // 260: aload 11
      // 262: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V
      // 265: aload 0
      // 266: getfield com/l7tech/server/policy/module/ModulesScanner.failModTimes Ljava/util/Map;
      // 269: aload 8
      // 26b: lload 9
      // 26d: invokestatic java/lang/Long.valueOf (J)Ljava/lang/Long;
      // 270: invokeinterface java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; 3
      // 275: pop
      // 276: goto 2f4
      // 279: astore 11
      // 27b: getstatic com/l7tech/server/policy/module/ModulesScanner.a Ljava/util/logging/Logger;
      // 27e: getstatic java/util/logging/Level.SEVERE Ljava/util/logging/Level;
      // 281: aload 8
      // 283: aload 11
      // 285: invokestatic com/l7tech/util/ExceptionUtils.getMessage (Ljava/lang/Throwable;)Ljava/lang/String;
      // 288: getstatic com/l7tech/server/policy/module/ModulesScanner.j [Ljava/lang/String;
      // 28b: astore 14
      // 28d: aload 14
      // 28f: bipush 54
      // 291: aaload
      // 292: dup_x2
      // 293: pop
      // 294: aload 14
      // 296: bipush 49
      // 298: aaload
      // 299: swap
      // 29a: 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" ]
      // 29f: aload 11
      // 2a1: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V
      // 2a4: aload 0
      // 2a5: getfield com/l7tech/server/policy/module/ModulesScanner.failModTimes Ljava/util/Map;
      // 2a8: aload 8
      // 2aa: lload 9
      // 2ac: invokestatic java/lang/Long.valueOf (J)Ljava/lang/Long;
      // 2af: invokeinterface java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; 3
      // 2b4: pop
      // 2b5: goto 2f4
      // 2b8: astore 11
      // 2ba: getstatic com/l7tech/server/policy/module/ModulesScanner.a Ljava/util/logging/Logger;
      // 2bd: getstatic java/util/logging/Level.SEVERE Ljava/util/logging/Level;
      // 2c0: aload 8
      // 2c2: aload 11
      // 2c4: invokestatic com/l7tech/util/ExceptionUtils.getMessage (Ljava/lang/Throwable;)Ljava/lang/String;
      // 2c7: getstatic com/l7tech/server/policy/module/ModulesScanner.j [Ljava/lang/String;
      // 2ca: astore 14
      // 2cc: aload 14
      // 2ce: bipush 28
      // 2d0: aaload
      // 2d1: dup_x2
      // 2d2: pop
      // 2d3: aload 14
      // 2d5: bipush 49
      // 2d7: aaload
      // 2d8: swap
      // 2d9: 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" ]
      // 2de: aload 11
      // 2e0: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V
      // 2e3: aload 0
      // 2e4: getfield com/l7tech/server/policy/module/ModulesScanner.failModTimes Ljava/util/Map;
      // 2e7: aload 8
      // 2e9: lload 9
      // 2eb: invokestatic java/lang/Long.valueOf (J)Ljava/lang/Long;
      // 2ee: invokeinterface java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; 3
      // 2f3: pop
      // 2f4: iinc 6 1
      // 2f7: goto 02b
      // 2fa: iload 3
      // 2fb: ireturn
      // try (96 -> 106): 107 java/io/IOException
      // try (68 -> 88): 88 java/io/IOException
      // try (58 -> 63): 63 java/io/IOException
      // try (33 -> 53): 53 java/io/IOException
      // try (30 -> 37): 38 java/io/IOException
      // try (7 -> 11): 12 java/io/IOException
      // try (0 -> 4): 5 java/io/IOException
      // try (90 -> 122): 245 java/io/IOException
      // try (123 -> 141): 245 java/io/IOException
      // try (159 -> 166): 167 java/io/IOException
      // try (142 -> 182): 245 java/io/IOException
      // try (201 -> 209): 209 java/io/IOException
      // try (195 -> 204): 205 java/io/IOException
      // try (193 -> 198): 199 java/io/IOException
      // try (183 -> 236): 245 java/io/IOException
      // try (237 -> 244): 245 java/io/IOException
      // try (90 -> 122): 273 com/l7tech/server/policy/module/ModuleException
      // try (123 -> 141): 273 com/l7tech/server/policy/module/ModuleException
      // try (142 -> 182): 273 com/l7tech/server/policy/module/ModuleException
      // try (183 -> 236): 273 com/l7tech/server/policy/module/ModuleException
      // try (237 -> 244): 273 com/l7tech/server/policy/module/ModuleException
      // try (90 -> 122): 301 java/lang/Throwable
      // try (123 -> 141): 301 java/lang/Throwable
      // try (142 -> 182): 301 java/lang/Throwable
      // try (183 -> 236): 301 java/lang/Throwable
      // try (237 -> 244): 301 java/lang/Throwable
   }

   public void loadServerModuleFile(@NotNull File param1, @NotNull String param2, @NotNull String param3) throws ModuleLoadingException {
      // $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 1
      // 001: ifnonnull 010
      // 004: bipush 6
      // 006: invokestatic com/l7tech/server/policy/module/ModulesScanner.a (I)V
      // 009: goto 010
      // 00c: invokestatic com/l7tech/server/policy/module/ModulesScanner.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 00f: athrow
      // 010: aload 2
      // 011: ifnonnull 020
      // 014: bipush 7
      // 016: invokestatic com/l7tech/server/policy/module/ModulesScanner.a (I)V
      // 019: goto 020
      // 01c: invokestatic com/l7tech/server/policy/module/ModulesScanner.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 01f: athrow
      // 020: aload 3
      // 021: ifnonnull 030
      // 024: bipush 8
      // 026: invokestatic com/l7tech/server/policy/module/ModulesScanner.a (I)V
      // 029: goto 030
      // 02c: invokestatic com/l7tech/server/policy/module/ModulesScanner.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 02f: athrow
      // 030: aload 1
      // 031: invokevirtual java/io/File.getName ()Ljava/lang/String;
      // 034: astore 4
      // 036: aload 1
      // 037: invokevirtual java/io/File.lastModified ()J
      // 03a: lstore 5
      // 03c: aload 0
      // 03d: getfield com/l7tech/server/policy/module/ModulesScanner.scannedModules Ljava/util/Map;
      // 040: aload 4
      // 042: invokeinterface java/util/Map.get (Ljava/lang/Object;)Ljava/lang/Object; 2
      // 047: checkcast com/l7tech/server/policy/module/BaseAssertionModule
      // 04a: astore 7
      // 04c: aload 7
      // 04e: ifnull 082
      // 051: aload 2
      // 052: aload 7
      // 054: invokevirtual com/l7tech/server/policy/module/BaseAssertionModule.getDigest ()Ljava/lang/String;
      // 057: invokevirtual java/lang/String.equals (Ljava/lang/Object;)Z
      // 05a: ifeq 082
      // 05d: goto 064
      // 060: invokestatic com/l7tech/server/policy/module/ModulesScanner.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 063: athrow
      // 064: getstatic com/l7tech/server/policy/module/ModulesScanner.a Ljava/util/logging/Logger;
      // 067: aload 4
      // 069: getstatic com/l7tech/server/policy/module/ModulesScanner.j [Ljava/lang/String;
      // 06c: bipush 12
      // 06e: aaload
      // 06f: swap
      // 070: getstatic com/l7tech/server/policy/module/ModulesScanner.j [Ljava/lang/String;
      // 073: bipush 1
      // 074: aaload
      // 075: 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" ]
      // 07a: invokevirtual java/util/logging/Logger.info (Ljava/lang/String;)V
      // 07d: return
      // 07e: invokestatic com/l7tech/server/policy/module/ModulesScanner.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 081: athrow
      // 082: aload 0
      // 083: invokevirtual com/l7tech/server/policy/module/ModulesScanner.getModules ()Ljava/util/Collection;
      // 086: invokeinterface java/util/Collection.iterator ()Ljava/util/Iterator; 1
      // 08b: astore 8
      // 08d: aload 8
      // 08f: invokeinterface java/util/Iterator.hasNext ()Z 1
      // 094: ifeq 0d1
      // 097: aload 8
      // 099: invokeinterface java/util/Iterator.next ()Ljava/lang/Object; 1
      // 09e: checkcast com/l7tech/server/policy/module/BaseAssertionModule
      // 0a1: astore 9
      // 0a3: aload 2
      // 0a4: aload 9
      // 0a6: invokevirtual com/l7tech/server/policy/module/BaseAssertionModule.getDigest ()Ljava/lang/String;
      // 0a9: invokevirtual java/lang/String.equals (Ljava/lang/Object;)Z
      // 0ac: ifeq 0ce
      // 0af: new com/l7tech/gateway/common/module/ModuleLoadingException
      // 0b2: dup
      // 0b3: aload 3
      // 0b4: getstatic com/l7tech/server/policy/module/ModulesScanner.j [Ljava/lang/String;
      // 0b7: bipush 39
      // 0b9: aaload
      // 0ba: swap
      // 0bb: getstatic com/l7tech/server/policy/module/ModulesScanner.j [Ljava/lang/String;
      // 0be: bipush 47
      // 0c0: aaload
      // 0c1: 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" ]
      // 0c6: invokespecial com/l7tech/gateway/common/module/ModuleLoadingException.<init> (Ljava/lang/String;)V
      // 0c9: athrow
      // 0ca: invokestatic com/l7tech/server/policy/module/ModulesScanner.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0cd: athrow
      // 0ce: goto 08d
      // 0d1: aload 0
      // 0d2: new com/l7tech/server/policy/module/d
      // 0d5: dup
      // 0d6: aload 0
      // 0d7: aload 1
      // 0d8: aload 2
      // 0d9: lload 5
      // 0db: aload 3
      // 0dc: invokespecial com/l7tech/server/policy/module/d.<init> (Lcom/l7tech/server/policy/module/ModulesScanner;Ljava/io/File;Ljava/lang/String;JLjava/lang/String;)V
      // 0df: invokevirtual com/l7tech/server/policy/module/ModulesScanner.onModuleLoad (Lcom/l7tech/server/policy/module/ModuleData;)Lcom/l7tech/server/policy/module/ModulesScanner$ModuleLoadStatus;
      // 0e2: astore 8
      // 0e4: aload 8
      // 0e6: invokevirtual com/l7tech/server/policy/module/ModulesScanner$ModuleLoadStatus.getLoadedModule ()Lcom/l7tech/server/policy/module/BaseAssertionModule;
      // 0e9: ifnonnull 126
      // 0ec: getstatic com/l7tech/server/policy/module/ModulesScanner.a Ljava/util/logging/Logger;
      // 0ef: aload 4
      // 0f1: getstatic com/l7tech/server/policy/module/ModulesScanner.j [Ljava/lang/String;
      // 0f4: bipush 38
      // 0f6: aaload
      // 0f7: swap
      // 0f8: getstatic com/l7tech/server/policy/module/ModulesScanner.j [Ljava/lang/String;
      // 0fb: bipush 10
      // 0fd: aaload
      // 0fe: 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" ]
      // 103: invokevirtual java/util/logging/Logger.warning (Ljava/lang/String;)V
      // 106: new com/l7tech/gateway/common/module/ModuleLoadingException
      // 109: dup
      // 10a: aload 4
      // 10c: getstatic com/l7tech/server/policy/module/ModulesScanner.j [Ljava/lang/String;
      // 10f: bipush 21
      // 111: aaload
      // 112: swap
      // 113: getstatic com/l7tech/server/policy/module/ModulesScanner.j [Ljava/lang/String;
      // 116: bipush 9
      // 118: aaload
      // 119: 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" ]
      // 11e: invokespecial com/l7tech/gateway/common/module/ModuleLoadingException.<init> (Ljava/lang/String;)V
      // 121: athrow
      // 122: invokestatic com/l7tech/server/policy/module/ModulesScanner.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 125: athrow
      // 126: goto 135
      // 129: astore 8
      // 12b: new com/l7tech/gateway/common/module/ModuleLoadingException
      // 12e: dup
      // 12f: aload 8
      // 131: invokespecial com/l7tech/gateway/common/module/ModuleLoadingException.<init> (Ljava/lang/Throwable;)V
      // 134: athrow
      // 135: return
      // try (100 -> 127): 127 com/l7tech/server/policy/module/ModuleException
      // try (68 -> 86): 86 com/l7tech/server/policy/module/ModuleException
      // try (35 -> 55): 55 com/l7tech/server/policy/module/ModuleException
      // try (33 -> 40): 41 com/l7tech/server/policy/module/ModuleException
      // try (14 -> 18): 19 com/l7tech/server/policy/module/ModuleException
      // try (7 -> 11): 12 com/l7tech/server/policy/module/ModuleException
      // try (0 -> 4): 5 com/l7tech/server/policy/module/ModuleException
      // try (89 -> 129): 130 com/l7tech/server/policy/module/ModuleException
   }

   public void updateServerModuleFile(@NotNull File param1, @NotNull String param2, @NotNull String param3) {
      // $VF: Couldn't be decompiled
      // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
      // java.lang.RuntimeException: parsing failure!
      //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
      //
      // Bytecode:
      // 00: aload 1
      // 01: ifnonnull 10
      // 04: bipush 9
      // 06: invokestatic com/l7tech/server/policy/module/ModulesScanner.a (I)V
      // 09: goto 10
      // 0c: invokestatic com/l7tech/server/policy/module/ModulesScanner.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0f: athrow
      // 10: aload 2
      // 11: ifnonnull 20
      // 14: bipush 10
      // 16: invokestatic com/l7tech/server/policy/module/ModulesScanner.a (I)V
      // 19: goto 20
      // 1c: invokestatic com/l7tech/server/policy/module/ModulesScanner.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 1f: athrow
      // 20: aload 3
      // 21: ifnonnull 30
      // 24: bipush 11
      // 26: invokestatic com/l7tech/server/policy/module/ModulesScanner.a (I)V
      // 29: goto 30
      // 2c: invokestatic com/l7tech/server/policy/module/ModulesScanner.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 2f: athrow
      // 30: aload 1
      // 31: invokevirtual java/io/File.getName ()Ljava/lang/String;
      // 34: astore 4
      // 36: aload 0
      // 37: getfield com/l7tech/server/policy/module/ModulesScanner.scannedModules Ljava/util/Map;
      // 3a: aload 4
      // 3c: invokeinterface java/util/Map.get (Ljava/lang/Object;)Ljava/lang/Object; 2
      // 41: checkcast com/l7tech/server/policy/module/BaseAssertionModule
      // 44: astore 5
      // 46: aload 5
      // 48: ifnull 6b
      // 4b: aload 2
      // 4c: aload 5
      // 4e: invokevirtual com/l7tech/server/policy/module/BaseAssertionModule.getDigest ()Ljava/lang/String;
      // 51: invokevirtual java/lang/String.equals (Ljava/lang/Object;)Z
      // 54: ifeq 6b
      // 57: goto 5e
      // 5a: invokestatic com/l7tech/server/policy/module/ModulesScanner.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 5d: athrow
      // 5e: aload 5
      // 60: aload 3
      // 61: invokevirtual com/l7tech/server/policy/module/BaseAssertionModule.setEntityName (Ljava/lang/String;)V
      // 64: goto 6b
      // 67: invokestatic com/l7tech/server/policy/module/ModulesScanner.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 6a: athrow
      // 6b: return
      // try (0 -> 4): 5 java/lang/IllegalArgumentException
      // try (7 -> 11): 12 java/lang/IllegalArgumentException
      // try (14 -> 18): 19 java/lang/IllegalArgumentException
      // try (30 -> 37): 38 java/lang/IllegalArgumentException
      // try (32 -> 43): 44 java/lang/IllegalArgumentException
   }

   public void unloadServerModuleFile(@NotNull File var1, @NotNull String var2, @NotNull String var3) throws ModuleLoadingException {
      try {
         if (var1 == null) {
            a(12);
         }
      } catch (ModuleException var13) {
         throw b(var13);
      }

      try {
         if (var2 == null) {
            a(13);
         }
      } catch (ModuleException var10) {
         throw b(var10);
      }

      try {
         if (var3 == null) {
            a(14);
         }
      } catch (ModuleException var12) {
         throw b(var12);
      }

      String var4 = var1.getName();
      BaseAssertionModule var5 = this.getModule(var4);

      try {
         if (var5 == null) {
            throw new ModuleLoadingException(j[14] + var4 + "\"");
         }
      } catch (ModuleException var9) {
         throw b(var9);
      }

      try {
         if (!var2.equals(var5.getDigest())) {
            throw new ModuleLoadingException(j[40] + var4 + "\"");
         }
      } catch (ModuleException var11) {
         throw b(var11);
      }

      try {
         try {
            if (!this.onModuleUnload((T)var5)) {
               throw new ModuleLoadingException(j[8] + var4 + "\"");
            }
         } catch (ModuleLoadingException var7) {
            throw b(var7);
         }
      } catch (ModuleException var8) {
         throw new ModuleLoadingException(j[41] + var4 + "\"", var8);
      }
   }

   public boolean isServerModuleFileLoaded(@NotNull File param1, @NotNull String param2, @NotNull String param3) {
      // $VF: Couldn't be decompiled
      // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
      // java.lang.RuntimeException: parsing failure!
      //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
      //
      // Bytecode:
      // 00: aload 1
      // 01: ifnonnull 10
      // 04: bipush 15
      // 06: invokestatic com/l7tech/server/policy/module/ModulesScanner.a (I)V
      // 09: goto 10
      // 0c: invokestatic com/l7tech/server/policy/module/ModulesScanner.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0f: athrow
      // 10: aload 2
      // 11: ifnonnull 20
      // 14: bipush 16
      // 16: invokestatic com/l7tech/server/policy/module/ModulesScanner.a (I)V
      // 19: goto 20
      // 1c: invokestatic com/l7tech/server/policy/module/ModulesScanner.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 1f: athrow
      // 20: aload 3
      // 21: ifnonnull 30
      // 24: bipush 17
      // 26: invokestatic com/l7tech/server/policy/module/ModulesScanner.a (I)V
      // 29: goto 30
      // 2c: invokestatic com/l7tech/server/policy/module/ModulesScanner.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 2f: athrow
      // 30: aload 1
      // 31: invokevirtual java/io/File.getName ()Ljava/lang/String;
      // 34: astore 4
      // 36: aload 0
      // 37: getfield com/l7tech/server/policy/module/ModulesScanner.scannedModules Ljava/util/Map;
      // 3a: aload 4
      // 3c: invokeinterface java/util/Map.get (Ljava/lang/Object;)Ljava/lang/Object; 2
      // 41: checkcast com/l7tech/server/policy/module/BaseAssertionModule
      // 44: astore 5
      // 46: aload 5
      // 48: ifnull 66
      // 4b: aload 2
      // 4c: aload 5
      // 4e: invokevirtual com/l7tech/server/policy/module/BaseAssertionModule.getDigest ()Ljava/lang/String;
      // 51: invokevirtual java/lang/String.equals (Ljava/lang/Object;)Z
      // 54: ifeq 66
      // 57: goto 5e
      // 5a: invokestatic com/l7tech/server/policy/module/ModulesScanner.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 5d: athrow
      // 5e: bipush 1
      // 5f: goto 67
      // 62: invokestatic com/l7tech/server/policy/module/ModulesScanner.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 65: athrow
      // 66: bipush 0
      // 67: ireturn
      // try (0 -> 4): 5 java/lang/IllegalArgumentException
      // try (7 -> 11): 12 java/lang/IllegalArgumentException
      // try (14 -> 18): 19 java/lang/IllegalArgumentException
      // try (30 -> 37): 38 java/lang/IllegalArgumentException
      // try (32 -> 42): 42 java/lang/IllegalArgumentException
   }

   protected synchronized boolean scanModules(@NotNull ModulesConfig var1) {
      try {
         if (var1 == null) {
            a(18);
         }
      } catch (IllegalArgumentException var22) {
         throw b(var22);
      }

      try {
         if (!var1.isFeatureEnabled()) {
            return false;
         }
      } catch (IllegalArgumentException var18) {
         throw b(var18);
      }

      try {
         if (!var1.isScanningEnabled()) {
            return false;
         }
      } catch (IllegalArgumentException var21) {
         throw b(var21);
      }

      File var2 = var1.getModuleDir();
      long var3 = var2.lastModified();

      try {
         if (!this.isScanNeeded(var2, var3)) {
            a.finest(j[27]);
            return false;
         }
      } catch (IllegalArgumentException var20) {
         throw b(var20);
      }

      String[] var12 = j;
      a.log(Level.FINE, var12[50], var2.getAbsolutePath());
      boolean var5 = false;

      try {
         this.lastScanDir = var2;
         this.lastScanDirModTime = var3;
         HashSet var6 = new HashSet();
         HashSet var7 = new HashSet();
         File[] var8 = var2.listFiles(new e(this, var1, var6, var7));
         if (var8 == null) {
            a.log(Level.WARNING, var12[48] + var2.getName());
            return false;
         }

         Arrays.sort(var8, new f(this));

         for (String var10 : var7) {
            var6.remove(var10);
         }

         if (this.processRemovedModules(var6)) {
            var5 = true;
         }

         this.cleanRemovedFailedModules(var6);
         if (this.processNewOrChangedModules(var8, var7)) {
            var5 = true;
         }

         return var5;
      } finally {
         this.onScanComplete(var5);
      }
   }

   protected void reset() {
      this.lastScanDir = null;
      this.lastScanDirModTime = 0L;
   }

   public synchronized void destroy() {
      for (BaseAssertionModule var2 : this.scannedModules.values()) {
         try {
            this.onModuleUnload((T)var2);
         } catch (Throwable var5) {
            Logger var10000 = a;
            Level var10001 = Level.WARNING;
            String var10002 = var2.getName();
            String var10003 = ExceptionUtils.getMessage(var5);
            String[] var4 = j;
            var10000.log(var10001, var4[2] + var10002 + var4[53] + var10003, var5);
         }
      }

      this.a();
      this.clearFailedModTimes();
      this.clearSkippedModTimes();
      this.reset();
   }

   static {
      String[] var5 = new String[60];
      int var3 = 0;
      String var2 = "I8K`epgg\u007fH`slee\u007fCf{|)\"$\"s\u0005|~wje\u007fL{d9jh:Fddld 7D|y>} <Mny~ld\"E-W`e9~h6Ij7lg--@h~j}e-Lap9do;Pcr9\"]\u007f\rfpwfr6Kh7p} *K{~u)i+\u0005l\u007fxgg:V&-9\u0018F>Lcr})t0\u0005zyufa;\u0005bx}|l:\u0005\fm0Az{|Mi8@|c\u0019c3@nyKlm0Sjs_hi3@kZvmu3@|\u0016u1I`v}Ze-SjeTfd*IjQpee+F>Lcr})t0\u0005zyufa;\u0005bx}|l:\u001e/dmhg:A/qpeerKnz|)\"5\"\u007fHnerld\u007fD|7jbi/Ujs5)w6Ic7wft\u007fGj7ufa;@k7x} +Mfd9}i2@!5\"\u007fHnerld\u007fD|7jbi/Ujs5)w6Ic7wft\u007fGj7ufa;@k7x} +Mfd9}i2@!\nj>WBx}|l:V\u0015W0K(c9{e3Jns9do;Pcr9+\ns+Dhr}Oi3@3M0Az{|)a/Ujvkz 1J{7{li1B/{vhd:A47j}a8@k7\u007f`l:\bavtl }\u0007E-W`e#)\u0014l0DkD|{v:WBx}|l:cf{|\fi1VjemDo;Pcr\u0006m0Az{|!U1Dm{|)t0\u0005}rxm >V|rk}i0K/zvmu3@/L\u0011u/Anc|mE1Qfc`Ga2@\bM0Az{|)\"\u0012\"\u007fRnd9go+\u0005l\u007fxgg:A!\u0016u/Anc|Ze-SjeTfd*IjQpee.c0H {.}e<M d|{v:W gvei<\\ zvmu3@ Zvmu3@|Dzhn1@}\u0015S4L\u007fg|m 2Jkbul 9Lcr9+\u000bs<DaZvmu3@|bN0\u0005ndjlr+L`y9do;Pcr9oi3@|7xmd:A#7klm0Sjs9fr\u007fAfdxkl:V/dpgc:\u0005`bk)l>V{7jja1\t/vwm 1J/qx`l*Wjd9}o\u007fWjckp4U1Mny}ee;\u0005jozlp+L`y9~h6Ij7ufa;Lap9hs,@}cpfn\u007fH`slee\u007f~>A-Bzz|gt\u007fC`e9IN0QAbue /D}vtlt:W/0<z'\u007fJi7<z.zV/zlzt\u007fK`c9ke\u007fKz{uBF0Whrm}i1B/v{fu+\u0005ivpee;\u0005bx}|l:\u0005{\u007fx} 7D|7{le1\u0005}rtfv:A/xk)d6Vnuulde\u0005(C7@l|pgg\u007fH`slee\u007fRfcq)u/Anc|m +Lbrj}a2U57\ne1Qfc`Ga2@`\"\u007fVfyzl 6Q|7tfd6Cftx}i0K/cpde\u007fMndw.t\u007fFgvwne;\u0005|~wje\u007fQgr9ea,Q/cpde\u007fL{7\u007fhi3@k7mf 3Jns9zu<Fjdjou3Iv9\u000fm0Az{|Oi3@Avtls\u0018i,vjeolr\u0012JkbulF6Ij[vhd:A\u001dT7L|7pz 1J{7xg -@hbuhr\u007fCf{|)[,,\u007fH`slee\u007fRf{u)b:\u0005}rm{i:A/sl{i1B/y|qt\u007fFgvwneq\bM0Az{|)\"\u001eC>Kaxm)l0Dk7}|p3Llvml 2Jkbul }UC>Kaxm)u1I`v})m0Az{|)a,\u0005k~~ls+\u0005`q9eo>Ajs9hn;\u0005|cxne;\u0005i~ul 2L|zx}c7\u001e/dmhg:A/qpeerKnz|)\"0E-W`e9~h6Ij7lgl0Dk~wn 2Jkbul;\u007fV{v~ld\u007fCf{|$n>Hj7;\u0015p-JlrjzR:H`a|mM0Az{|z\u0017d6Vnuuld\u0012JkbulF6IjYxde,\fr:H`a|Do;Pcr\u001ap-JlrjzN:R@eZaa1BjsTfd*Ijd5P-Jlrjzi1B/zvmu3@/cqht\u007fMnd9ke:K/e|do)@k7v{ ;L|v{ee;\u001f/5\"d\u0005Bx}|l:\u0005x~ma :]ntm)c0K{rw} <Mjtrzu2\u0005n{kla;\\/{vhd:A!-F>Lcr})t0\u0005hrm)t7@/qpee\u007fIfdm)f0W/zvmu3@|7}`re\u0005\"]\u007f\rfpwfr6Kh7p} *K{~u)i+\u0005l\u007fxgg:V&-92S<Daypgg\u007fFzdmfm\u007fD|d|{t6Ja7tfd*Ijd9mi-@lcv{y\u007f^?j7'.\u0011]s\u0005||pyp6Kh7p}.q\u000b\u0016I8K`epgg\u007fH`slee\u007fCf{|)\"\u0002:\u007f!U1Dm{|)t0\u0005cxxm >V|rk}i0K/zvmu3@/LP\"\u007fVfyzl 6Q|7tfd6Cftx}i0K/cpde\u007fMndw.t\u007fFgvwne;\u0005|~wje\u007fQgr9ea,Q/cpde\u007fL{7nhs\u007fVd~iye;\u000b\u0015W0K(c9{e3Jns9do;Pcr9+$\"s\u0005|~wje\u007fL{d9jh:Fddld 7D|y>} <Mny~ld";
      int var4 = "I8K`epgg\u007fH`slee\u007fCf{|)\"$\"s\u0005|~wje\u007fL{d9jh:Fddld 7D|y>} <Mny~ld\"E-W`e9~h6Ij7lg--@h~j}e-Lap9do;Pcr9\"]\u007f\rfpwfr6Kh7p} *K{~u)i+\u0005l\u007fxgg:V&-9\u0018F>Lcr})t0\u0005zyufa;\u0005bx}|l:\u0005\fm0Az{|Mi8@|c\u0019c3@nyKlm0Sjs_hi3@kZvmu3@|\u0016u1I`v}Ze-SjeTfd*IjQpee+F>Lcr})t0\u0005zyufa;\u0005bx}|l:\u001e/dmhg:A/qpeerKnz|)\"5\"\u007fHnerld\u007fD|7jbi/Ujs5)w6Ic7wft\u007fGj7ufa;@k7x} +Mfd9}i2@!5\"\u007fHnerld\u007fD|7jbi/Ujs5)w6Ic7wft\u007fGj7ufa;@k7x} +Mfd9}i2@!\nj>WBx}|l:V\u0015W0K(c9{e3Jns9do;Pcr9+\ns+Dhr}Oi3@3M0Az{|)a/Ujvkz 1J{7{li1B/{vhd:A47j}a8@k7\u007f`l:\bavtl }\u0007E-W`e#)\u0014l0DkD|{v:WBx}|l:cf{|\fi1VjemDo;Pcr\u0006m0Az{|!U1Dm{|)t0\u0005}rxm >V|rk}i0K/zvmu3@/L\u0011u/Anc|mE1Qfc`Ga2@\bM0Az{|)\"\u0012\"\u007fRnd9go+\u0005l\u007fxgg:A!\u0016u/Anc|Ze-SjeTfd*IjQpee.c0H {.}e<M d|{v:W gvei<\\ zvmu3@ Zvmu3@|Dzhn1@}\u0015S4L\u007fg|m 2Jkbul 9Lcr9+\u000bs<DaZvmu3@|bN0\u0005ndjlr+L`y9do;Pcr9oi3@|7xmd:A#7klm0Sjs9fr\u007fAfdxkl:V/dpgc:\u0005`bk)l>V{7jja1\t/vwm 1J/qx`l*Wjd9}o\u007fWjckp4U1Mny}ee;\u0005jozlp+L`y9~h6Ij7ufa;Lap9hs,@}cpfn\u007fH`slee\u007f~>A-Bzz|gt\u007fC`e9IN0QAbue /D}vtlt:W/0<z'\u007fJi7<z.zV/zlzt\u007fK`c9ke\u007fKz{uBF0Whrm}i1B/v{fu+\u0005ivpee;\u0005bx}|l:\u0005{\u007fx} 7D|7{le1\u0005}rtfv:A/xk)d6Vnuulde\u0005(C7@l|pgg\u007fH`slee\u007fRfcq)u/Anc|m +Lbrj}a2U57\ne1Qfc`Ga2@`\"\u007fVfyzl 6Q|7tfd6Cftx}i0K/cpde\u007fMndw.t\u007fFgvwne;\u0005|~wje\u007fQgr9ea,Q/cpde\u007fL{7\u007fhi3@k7mf 3Jns9zu<Fjdjou3Iv9\u000fm0Az{|Oi3@Avtls\u0018i,vjeolr\u0012JkbulF6Ij[vhd:A\u001dT7L|7pz 1J{7xg -@hbuhr\u007fCf{|)[,,\u007fH`slee\u007fRf{u)b:\u0005}rm{i:A/sl{i1B/y|qt\u007fFgvwneq\bM0Az{|)\"\u001eC>Kaxm)l0Dk7}|p3Llvml 2Jkbul }UC>Kaxm)u1I`v})m0Az{|)a,\u0005k~~ls+\u0005`q9eo>Ajs9hn;\u0005|cxne;\u0005i~ul 2L|zx}c7\u001e/dmhg:A/qpeerKnz|)\"0E-W`e9~h6Ij7lgl0Dk~wn 2Jkbul;\u007fV{v~ld\u007fCf{|$n>Hj7;\u0015p-JlrjzR:H`a|mM0Az{|z\u0017d6Vnuuld\u0012JkbulF6IjYxde,\fr:H`a|Do;Pcr\u001ap-JlrjzN:R@eZaa1BjsTfd*Ijd5P-Jlrjzi1B/zvmu3@/cqht\u007fMnd9ke:K/e|do)@k7v{ ;L|v{ee;\u001f/5\"d\u0005Bx}|l:\u0005x~ma :]ntm)c0K{rw} <Mjtrzu2\u0005n{kla;\\/{vhd:A!-F>Lcr})t0\u0005hrm)t7@/qpee\u007fIfdm)f0W/zvmu3@|7}`re\u0005\"]\u007f\rfpwfr6Kh7p} *K{~u)i+\u0005l\u007fxgg:V&-92S<Daypgg\u007fFzdmfm\u007fD|d|{t6Ja7tfd*Ijd9mi-@lcv{y\u007f^?j7'.\u0011]s\u0005||pyp6Kh7p}.q\u000b\u0016I8K`epgg\u007fH`slee\u007fCf{|)\"\u0002:\u007f!U1Dm{|)t0\u0005cxxm >V|rk}i0K/zvmu3@/LP\"\u007fVfyzl 6Q|7tfd6Cftx}i0K/cpde\u007fMndw.t\u007fFgvwne;\u0005|~wje\u007fQgr9ea,Q/cpde\u007fL{7nhs\u007fVd~iye;\u000b\u0015W0K(c9{e3Jns9do;Pcr9+$\"s\u0005|~wje\u007fL{d9jh:Fddld 7D|y>} <Mny~ld"
         .length();
      char var1 = 22;
      int var7 = -1;

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

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

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

                  var2 = "^\rvTCC\u000bP\r|GFAz\\\u000f}A";
                  var4 = "^\rvTCC\u000bP\r|GFAz\\\u000f}A".length();
                  var1 = 6;
                  var7 = -1;
            }

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

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

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

      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 -> 12;
            case 1 -> 83;
            case 2 -> 41;
            case 3 -> 3;
            case 4 -> 27;
            case 5 -> 21;
            default -> 5;
         });
      }

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

   public static class DigestBuilder {
      private File a = null;
      private boolean b = true;
      private static final String[] c;

      public ModulesScanner.DigestBuilder file(@NotNull File var1) {
         try {
            if (var1 == null) {
               a(0);
            }
         } catch (IllegalArgumentException var2) {
            throw a(var2);
         }

         this.a = var1;
         return this;
      }

      public ModulesScanner.DigestBuilder closeFile(boolean var1) {
         this.b = var1;
         return this;
      }

      @NotNull
      public String build() throws IOException {
         try {
            if (this.a == null) {
               throw new IllegalArgumentException(c[7]);
            }
         } catch (IOException var2) {
            throw a(var2);
         }

         try {
            String var10000 = ModuleDigest.hexEncodedDigest(new FileInputStream(this.a), this.b);
            if (var10000 == null) {
               a(1);
            }

            return var10000;
         } catch (IOException var1) {
            throw a(var1);
         }
      }

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

      static {
         String[] var5 = new String[8];
         int var3 = 0;
         String var2 = "\u0005N}R$\u0019&\u0003BxR;K \u0010DbR8A>\u000fBiR%A6\u0013MuR\u0005A6\u0013Mu\u000e\u001bM3\bOu\u000flj;\u0001Dc\t\n[;\nEu\u000f>'Sw\b%K<\u0012\u0001v\u0012:\u000e\u0012(Nd3=B>FQq\u000f)C7\u0012Db]o\u000b!A\u0001\u007f\u001bh\u000b!H\u0004c]%[!\u0012\u0001~\u0012<\u000e0\u0003\u0001~\b$B*&o\u007f\t\u0006[>\n\u0001}\u0018<F=\u0002\u00015\u000ef\u000b!FLe\u000e<\u000e<\tU0\u000f-Z'\u0014O0\u0013=B>\u0005\u0004Ty\u0011,\u0004\u0000H|\u0018<\u0005N}R$\u0019&\u0003BxR;K \u0010DbR8A>\u000fBiR%A6\u0013MuR\u0005A6\u0013Mu\u000e\u001bM3\bOu\u000flj;\u0001Dc\t\n[;\nEu\u000f";
         int var4 = "\u0005N}R$\u0019&\u0003BxR;K \u0010DbR8A>\u000fBiR%A6\u0013MuR\u0005A6\u0013Mu\u000e\u001bM3\bOu\u000flj;\u0001Dc\t\n[;\nEu\u000f>'Sw\b%K<\u0012\u0001v\u0012:\u000e\u0012(Nd3=B>FQq\u000f)C7\u0012Db]o\u000b!A\u0001\u007f\u001bh\u000b!H\u0004c]%[!\u0012\u0001~\u0012<\u000e0\u0003\u0001~\b$B*&o\u007f\t\u0006[>\n\u0001}\u0018<F=\u0002\u00015\u000ef\u000b!FLe\u000e<\u000e<\tU0\u000f-Z'\u0014O0\u0013=B>\u0005\u0004Ty\u0011,\u0004\u0000H|\u0018<\u0005N}R$\u0019&\u0003BxR;K \u0010DbR8A>\u000fBiR%A6\u0013MuR\u0005A6\u0013Mu\u000e\u001bM3\bOu\u000flj;\u0001Dc\t\n[;\nEu\u000f"
            .length();
         char var1 = '<';
         int var7 = -1;

         label24:
         while (true) {
            byte var10000 = 121;
            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) {
                        c = var5;
                        return;
                     }

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

                     var2 = "\u0016^j\u000e\u0013\u0016^j\u000e~[%\u001eYi\u001f~Z!PYs\u00072";
                     var4 = "\u0016^j\u000e\u0013\u0016^j\u000e~[%\u001eYi\u001f~Z!PYs\u00072".length();
                     var1 = 4;
                     var7 = -1;
               }

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

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

         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 -> 31;
               case 1 -> 88;
               case 2 -> 105;
               case 3 -> 4;
               case 4 -> 49;
               case 5 -> 87;
               default -> 43;
            });
         }

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

   protected static class ModuleLoadStatus<T extends BaseAssertionModule> {
      private boolean a;
      private T b;

      public ModuleLoadStatus() {
         this(false, null);
      }

      public ModuleLoadStatus(boolean var1, @Nullable T var2) {
         this.a = var1;
         this.b = (T)var2;
      }

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

      public void setPrevModuleUnloaded(boolean var1) {
         this.a = var1;
      }

      public T getLoadedModule() {
         return this.b;
      }

      public void setLoadedModule(@Nullable T var1) {
         this.b = (T)var1;
      }
   }
}
