package com.l7tech.server.identity.ldap;

import com.l7tech.common.io.WhirlycacheFactory;
import com.l7tech.identity.GroupBean;
import com.l7tech.identity.User;
import com.l7tech.identity.ldap.GroupMappingConfig;
import com.l7tech.identity.ldap.LdapGroup;
import com.l7tech.identity.ldap.LdapIdentityProviderConfig;
import com.l7tech.identity.ldap.LdapUser;
import com.l7tech.identity.ldap.MemberStrategy;
import com.l7tech.identity.ldap.UserMappingConfig;
import com.l7tech.objectmodel.EntityHeaderSet;
import com.l7tech.objectmodel.EntityType;
import com.l7tech.objectmodel.FindException;
import com.l7tech.objectmodel.Goid;
import com.l7tech.objectmodel.IdentityHeader;
import com.l7tech.server.Lifecycle;
import com.l7tech.server.LifecycleException;
import com.l7tech.util.ConfigFactory;
import com.l7tech.util.ExceptionUtils;
import com.l7tech.util.Pair;
import com.l7tech.util.ResourceUtils;
import com.whirlycott.cache.Cache;
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 javax.naming.AuthenticationException;
import javax.naming.NameNotFoundException;
import javax.naming.NamingException;
import javax.naming.OperationNotSupportedException;
import javax.naming.SizeLimitExceededException;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import javax.naming.directory.DirContext;
import javax.naming.ldap.LdapName;
import org.jetbrains.annotations.NotNull;

@LdapClassLoaderRequired
public class LdapGroupManagerImpl implements LdapGroupManager, Lifecycle {
   private static final String a;
   private static final Logger b;
   private static final String c;
   private static final boolean d;
   private static final boolean e;
   private static final int f = 0;
   private static final long g = 60000L;
   private static final int h = 0;
   private LdapIdentityProviderConfig i;
   private LdapIdentityProvider j;
   private LdapRuntimeConfig k;
   private Goid l;
   private ad m;
   private Cache n;
   private int o = 0;
   private long p = 60000L;
   private int q = 0;
   private static final String[] r;

   @Override
   public synchronized void configure(LdapIdentityProvider var1) {
      this.j = var1;
      this.i = this.j.getConfig();
      this.o = this.a(this.i.getGroupCacheSize(), 0) * 2;
      this.p = this.a(this.i.getGroupCacheMaxAge(), 60000L);
      this.q = this.a(this.i.getGroupMaxNesting(), 0);
      this.m = new ae(this, this.i.getSearchBase(), this.a());
   }

   public void setLdapRuntimeConfig(LdapRuntimeConfig var1) {
      this.k = var1;
   }

   @Override
   public void start() throws LifecycleException {
      LdapGroupManagerImpl var10000;
      Cache var10001;
      label16: {
         try {
            var10000 = this;
            if (this.o < 1) {
               var10001 = null;
               break label16;
            }
         } catch (LifecycleException var1) {
            throw a(var1);
         }

         var10001 = WhirlycacheFactory.createCache(r[14] + this.f() + ")", this.o, 33, WhirlycacheFactory.POLICY_LFU);
      }

      var10000.n = var10001;
   }

   @Override
   public void stop() throws LifecycleException {
      Cache var1 = this.n;

      try {
         this.n = null;
         if (var1 != null) {
            WhirlycacheFactory.shutdown(var1);
         }
      } catch (LifecycleException var2) {
         throw a(var2);
      }
   }

   public LdapGroup findByPrimaryKey(String var1) throws FindException {
      LdapGroupManagerImpl.GroupCacheKey var2 = LdapGroupManagerImpl.GroupCacheKey.buildDnKey(var1);
      LdapGroup var3 = this.a(var2);
      if (var3 == null) {
         synchronized (var2.getSync()) {
            var3 = this.a(var2);
            if (var3 == null) {
               LdapGroup[] var5 = new LdapGroup[1];
               LdapIdentityProviderConfig var6 = this.g();

               try {
                  this.m.a(var1, new o(this, var5));
               } catch (NameNotFoundException var13) {
                  if (b.isLoggable(Level.FINEST)) {
                     Logger var18 = b;
                     String var19 = var6.getName();
                     String var9 = ExceptionUtils.getMessage(var13);
                     String var10 = var19;
                     String var11 = var1;
                     String[] var17 = r;
                     var18.finest(var17[15] + var11 + var17[25] + var10 + var17[16] + var9 + ")");
                  }
               } catch (AuthenticationException var14) {
                  Logger var10000 = b;
                  Level var10001 = Level.WARNING;
                  String var10002 = var14.getMessage();
                  String[] var12 = r;
                  var10000.log(var10001, var12[9] + var10002, ExceptionUtils.getDebugException(var14));
                  throw new FindException(var12[0] + var14.getMessage(), var14);
               } catch (NamingException var15) {
                  b.log(Level.WARNING, () -> r[10] + var15.getMessage());
                  throw new FindException(r[8] + var15.getMessage(), ExceptionUtils.getDebugException(var15));
               }

               var3 = var5[0];
            }
         }
      }

      return var3;
   }

   public LdapGroup reify(GroupBean var1) {
      LdapGroup var2 = new LdapGroup(var1.getProviderId(), var1.getId(), var1.getName());
      var2.setDescription(var1.getDescription());
      return var2;
   }

   public LdapGroup findByName(String var1) throws FindException {
      LdapGroupManagerImpl.GroupCacheKey var2 = LdapGroupManagerImpl.GroupCacheKey.buildCnKey(var1);
      LdapGroup var3 = this.a(var2);
      if (var3 == null) {
         synchronized (var2.getSync()) {
            var3 = this.a(var2);
            if (var3 == null) {
               LdapIdentityProvider var5 = this.d();
               String var6 = var5.groupSearchFilterWithParam(var1);
               LdapGroup[] var7 = new LdapGroup[1];

               try {
                  this.m.a(var6, 2L, null, new p(this, var7));
               } catch (AuthenticationException var11) {
                  Logger var10000 = b;
                  Level var10001 = Level.WARNING;
                  String var10002 = var11.getMessage();
                  String[] var10 = r;
                  var10000.log(var10001, var10[36] + var10002, ExceptionUtils.getDebugException(var11));
                  throw new FindException(var10[8] + var11.getMessage(), var11);
               } catch (NamingException var12) {
                  b.log(Level.WARNING, var12, () -> r[3] + var12.getMessage());
                  throw new FindException(r[8] + var12.getMessage(), var12);
               }

               var3 = var7[0];
            }
         }
      }

      return var3;
   }

   public void delete(LdapGroup var1) {
      throw new UnsupportedOperationException();
   }

   public void deleteAll(Goid var1) {
      throw new UnsupportedOperationException();
   }

   public void deleteAllVirtual(Goid var1) {
      throw new UnsupportedOperationException();
   }

   public void delete(String var1) {
      throw new UnsupportedOperationException();
   }

   public String saveGroup(LdapGroup var1) {
      throw new UnsupportedOperationException();
   }

   public void update(LdapGroup var1) {
      throw new UnsupportedOperationException();
   }

   public String save(LdapGroup var1, Set var2) {
      throw new UnsupportedOperationException();
   }

   public String save(Goid var1, LdapGroup var2, Set var3) {
      throw new UnsupportedOperationException();
   }

   public void update(LdapGroup var1, Set var2) {
      throw new UnsupportedOperationException();
   }

   public Collection<IdentityHeader> search(String var1) throws FindException {
      LdapIdentityProvider var2 = this.d();
      return var2.search(new EntityType[]{EntityType.GROUP}, var1);
   }

   public Class getImpClass() {
      return LdapGroup.class;
   }

   public boolean isMember(User var1, LdapGroup var2) throws FindException {
      try {
         if (!var1.getProviderId().equals(this.e())) {
            b.log(Level.FINE, r[19]);
            return false;
         }
      } catch (FindException var3) {
         throw a(var3);
      }

      return this.a(var1, var2, true, 1);
   }

   private boolean a(User var1, LdapGroup var2, boolean var3, int var4) throws FindException {
      LdapIdentityProviderConfig var5 = this.g();

      for (GroupMappingConfig var9 : var5.getGroupMappings()) {
         MemberStrategy var10 = var9.getMemberStrategy();

         label368: {
            try {
               if (MemberStrategy.MEMBERS_BY_OU.equals(var10) && var3) {
                  break label368;
               }
            } catch (NamingException var41) {
               throw a(var41);
            }

            Attributes var11 = var2.getAttributes();

            Attribute var10000;
            label334: {
               try {
                  if (var11 == null) {
                     var10000 = null;
                     break label334;
                  }
               } catch (NamingException var40) {
                  throw a(var40);
               }

               var10000 = var11.get(var9.getMemberAttrName());
            }

            Attribute var12 = var10000;

            try {
               if (var12 == null) {
                  continue;
               }
            } catch (NamingException var33) {
               throw a(var33);
            }

            for (int var13 = 0; var13 < var12.size(); var13++) {
               try {
                  String var14 = (String)var12.get(var13);

                  try {
                     if (MemberStrategy.MEMBERS_ARE_LOGIN.equals(var10)) {
                        if (!this.a(var14, var1.getLogin())) {
                           return true;
                        }

                        return true;
                     }
                  } catch (NamingException var38) {
                     throw a(var38);
                  }

                  try {
                     if (MemberStrategy.MEMBERS_ARE_DN.equals(var10)) {
                        if (!this.a(var14, var1.getId())) {
                           return true;
                        }

                        return true;
                     }
                  } catch (NamingException var37) {
                     throw a(var37);
                  }

                  if (MemberStrategy.MEMBERS_ARE_NVPAIR.equals(var10)) {
                     for (String var16 : this.b()) {
                        if (this.a(var14, var16 + "=" + var1.getName())) {
                           return true;
                        }
                     }

                     if (this.a(var14, var1.getId())) {
                        return true;
                     }
                  }
               } catch (NamingException var39) {
                  b.log(Level.WARNING, r[37] + var39.getMessage(), ExceptionUtils.getDebugException(var39));
               }
            }

            if (!this.a(var4)) {
               continue;
            }

            ArrayList var45 = new ArrayList();

            try {
               for (int var47 = 0; var47 < var12.size(); var47++) {
                  try {
                     String var49 = (String)var12.get(var47);
                     if (!this.a(var2, var49)) {
                        LdapGroup var52 = null;
                        if (MemberStrategy.MEMBERS_ARE_LOGIN.equals(var10)) {
                           var52 = this.findByName((String)var12.get(var47));
                        } else if (MemberStrategy.MEMBERS_ARE_DN.equals(var10)) {
                           var52 = this.findByPrimaryKey(var49);
                        } else if (MemberStrategy.MEMBERS_ARE_NVPAIR.equals(var10)) {
                           String var17 = this.a(var49);
                           var52 = this.findByName(var17);
                        }

                        try {
                           if (var52 != null) {
                              if (!this.a(var1, var52, true, var4 + 1)) {
                                 return true;
                              }

                              return true;
                           }
                        } catch (NamingException var34) {
                           throw a(var34);
                        }

                        var45.add(var49);
                     }
                  } catch (NamingException var35) {
                  }
               }
               continue;
            } finally {
               this.a(var2, var45);
            }
         }

         try {
            LdapName var42 = new LdapName(var1.getId());
            LdapName var44 = new LdapName(var2.getDn());
            if (var42.startsWith(var44)) {
               return true;
            }

            if (this.a(var4)) {
               ArrayList var46 = new ArrayList();
               if (!this.b(var2, var46)) {
                  synchronized (this.c(var2)) {
                     if (!this.b(var2, var46)) {
                        String var50 = this.j.groupSearchFilterWithParam("*");
                        this.m.a(var2.getDn(), var50, 0L, null, new q(this, var2, var46));
                        this.c(var2, var46);
                     }
                  }
               }

               for (LdapGroup var51 : var46) {
                  if (this.a(var1, var51, false, var4 + 1)) {
                     return true;
                  }
               }
            }
         } catch (NamingException var32) {
            String[] var19 = r;
            String var43 = var19[29];
            b.log(Level.WARNING, var32, () -> {
               String var2x = var32.getMessage();
               String var3x = var43;
               return r[27] + var3x + var2x;
            });
            throw new FindException(var43 + var32.getMessage(), var32);
         }
      }

      return false;
   }

   private boolean a(String var1, String var2) {
      try {
         if (this.g().isGroupMembershipCaseInsensitive() || !e) {
            return var1.equalsIgnoreCase(var2);
         }
      } catch (UnsupportedOperationException var4) {
         throw a(var4);
      }

      return var1.equals(var2);
   }

   private String a(String var1) {
      String var2 = var1;
      int var3 = var2.indexOf(61);
      if (var3 > 0) {
         var2 = var2.substring(var3 + 1);
      }

      return var2;
   }

   public void addUsers(LdapGroup var1, Set var2) {
      throw new UnsupportedOperationException();
   }

   public void removeUsers(LdapGroup var1, Set var2) {
      throw new UnsupportedOperationException();
   }

   public void addUser(LdapUser var1, Set var2) {
      throw new UnsupportedOperationException();
   }

   public void removeUser(LdapUser var1, Set var2) {
      throw new UnsupportedOperationException();
   }

   public void addUser(LdapUser var1, LdapGroup var2) {
      throw new UnsupportedOperationException();
   }

   public void removeUser(LdapUser var1, LdapGroup var2) {
      throw new UnsupportedOperationException();
   }

   public Set<IdentityHeader> getGroupHeaders(LdapUser var1) throws FindException {
      LdapIdentityProvider var2 = this.d();
      LdapIdentityProviderConfig var3 = this.g();
      GroupMappingConfig[] var4 = var3.getGroupMappings();
      boolean var5 = false;
      h var6 = new h();
      var6.or();

      for (GroupMappingConfig var10 : var4) {
         String var11 = var10.getObjClass();
         String var12 = var10.getMemberAttrName();
         MemberStrategy var13 = var10.getMemberStrategy();
         if (MemberStrategy.MEMBERS_BY_OU.equals(var13)) {
            var5 = true;
         } else {
            try {
               if (MemberStrategy.MEMBERS_ARE_LOGIN.equals(var13)) {
                  var6.and();
                  var6.objectClass(var11);
                  var6.attrEquals(var12, var1.getLogin());
                  var6.end();
                  continue;
               }
            } catch (AuthenticationException var33) {
               throw a(var33);
            }

            try {
               if (MemberStrategy.MEMBERS_ARE_DN.equals(var13)) {
                  var6.and();
                  var6.objectClass(var11);
                  var6.attrEquals(var12, var1.getId());
                  var6.end();
                  continue;
               }
            } catch (AuthenticationException var34) {
               throw a(var34);
            }

            if (MemberStrategy.MEMBERS_ARE_NVPAIR.equals(var13)) {
               var6.and();
               var6.objectClass(var11);
               Set var14 = this.b();
               var6.or();

               for (String var16 : var14) {
                  var6.attrEquals(var12, var16 + "=" + var1.getName());
               }

               var6.attrEquals(var12, var1.getId());
               var6.end();
               var6.end();
            }
         }
      }

      var6.end();
      EntityHeaderSet var35 = new EntityHeaderSet();
      if (!var6.isEmpty()) {
         DirContext var36 = null;

         try {
            try {
               var36 = var2.getBrowseContext();
            } catch (AuthenticationException var30) {
               String[] var42 = r;
               String var39 = var42[41];
               b.log(Level.WARNING, var42[33] + var30.getMessage(), ExceptionUtils.getDebugException(var30));
               throw new FindException(var39 + var30.getMessage(), var30);
            } catch (NamingException var31) {
               String[] var18 = r;
               String var38 = var18[13];
               b.log(Level.WARNING, var31, () -> {
                  String var2x = var31.getMessage();
                  String var3x = var38;
                  return r[12] + var3x + var2x;
               });
               throw new FindException(var38 + var31.getMessage(), var31);
            }

            long var37 = this.k.getMaxGroupSearchResultSize();

            try {
               DirContext var40 = var36;
               this.m.a(var36, var6.buildFilter(), var37, null, new r(this, var2, var35, var40));
            } catch (SizeLimitExceededException var28) {
               String[] var43 = r;
               b.log(Level.FINE, var43[11], var28);
               var35.setMaxExceeded(var37);
            } catch (NamingException var29) {
               String var41 = r[39];
               b.log(Level.WARNING, var29, () -> var41 + var29.getMessage());
               throw new FindException(var41 + var29.getMessage(), var29);
            }

            try {
               if (var5) {
                  this.a(var36, var35, var1.getId(), 1);
               }
            } catch (AuthenticationException var27) {
               throw a(var27);
            }
         } finally {
            ResourceUtils.closeQuietly(var36);
         }
      }

      return var35;
   }

   public Set<IdentityHeader> getGroupHeadersForNestedGroup(@NotNull String var1) throws FindException {
      try {
         if (var1 == null) {
            b(0);
         }
      } catch (NamingException var6) {
         throw a(var6);
      }

      EntityHeaderSet var2 = new EntityHeaderSet();
      if (this.c()) {
         IdentityHeader var3 = new IdentityHeader(this.e(), var1, EntityType.GROUP, null, null, null, null);

         try {
            DirContext var4 = this.d().getBrowseContext();
            this.a(var4, var2, var3, 1);
         } catch (NamingException var5) {
            throw new FindException(r[35] + var1, var5);
         }
      }

      return var2;
   }

   private void a(DirContext param1, EntityHeaderSet<IdentityHeader> param2, String param3, int param4) {
      // $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 3
      // 01: invokevirtual java/lang/String.toLowerCase ()Ljava/lang/String;
      // 04: astore 5
      // 06: bipush 1
      // 07: istore 6
      // 09: aload 5
      // 0b: getstatic com/l7tech/server/identity/ldap/LdapGroupManagerImpl.r [Ljava/lang/String;
      // 0e: astore 10
      // 10: aload 10
      // 12: bipush 7
      // 14: aaload
      // 15: iload 6
      // 17: invokevirtual java/lang/String.indexOf (Ljava/lang/String;I)I
      // 1a: istore 7
      // 1c: iload 7
      // 1e: iflt 9e
      // 21: aload 0
      // 22: aload 3
      // 23: iload 7
      // 25: invokevirtual java/lang/String.substring (I)Ljava/lang/String;
      // 28: invokevirtual com/l7tech/server/identity/ldap/LdapGroupManagerImpl.findByPrimaryKey (Ljava/lang/String;)Lcom/l7tech/identity/ldap/LdapGroup;
      // 2b: astore 8
      // 2d: aload 8
      // 2f: ifnull 66
      // 32: aload 0
      // 33: aload 8
      // 35: invokevirtual com/l7tech/server/identity/ldap/LdapGroupManagerImpl.a (Lcom/l7tech/identity/ldap/LdapGroup;)Lcom/l7tech/objectmodel/IdentityHeader;
      // 38: astore 9
      // 3a: aload 2
      // 3b: aload 9
      // 3d: invokevirtual com/l7tech/objectmodel/EntityHeaderSet.add (Lcom/l7tech/objectmodel/EntityHeader;)Z
      // 40: ifeq 66
      // 43: aload 0
      // 44: iload 4
      // 46: invokevirtual com/l7tech/server/identity/ldap/LdapGroupManagerImpl.a (I)Z
      // 49: ifeq 66
      // 4c: goto 53
      // 4f: invokestatic com/l7tech/server/identity/ldap/LdapGroupManagerImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 52: athrow
      // 53: aload 0
      // 54: aload 1
      // 55: aload 2
      // 56: aload 9
      // 58: iload 4
      // 5a: bipush 1
      // 5b: iadd
      // 5c: invokevirtual com/l7tech/server/identity/ldap/LdapGroupManagerImpl.a (Ljavax/naming/directory/DirContext;Lcom/l7tech/objectmodel/EntityHeaderSet;Lcom/l7tech/objectmodel/IdentityHeader;I)V
      // 5f: goto 66
      // 62: invokestatic com/l7tech/server/identity/ldap/LdapGroupManagerImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 65: athrow
      // 66: goto 86
      // 69: astore 8
      // 6b: getstatic com/l7tech/server/identity/ldap/LdapGroupManagerImpl.b Ljava/util/logging/Logger;
      // 6e: aload 8
      // 70: invokevirtual com/l7tech/objectmodel/FindException.getMessage ()Ljava/lang/String;
      // 73: getstatic com/l7tech/server/identity/ldap/LdapGroupManagerImpl.r [Ljava/lang/String;
      // 76: astore 10
      // 78: aload 10
      // 7a: bipush 38
      // 7c: aaload
      // 7d: swap
      // 7e: 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" ]
      // 83: invokevirtual java/util/logging/Logger.finest (Ljava/lang/String;)V
      // 86: iload 7
      // 88: bipush 2
      // 89: iadd
      // 8a: istore 6
      // 8c: aload 5
      // 8e: getstatic com/l7tech/server/identity/ldap/LdapGroupManagerImpl.r [Ljava/lang/String;
      // 91: bipush 20
      // 93: aaload
      // 94: iload 6
      // 96: invokevirtual java/lang/String.indexOf (Ljava/lang/String;I)I
      // 99: istore 7
      // 9b: goto 1c
      // 9e: return
      // try (32 -> 47): 48 com/l7tech/objectmodel/FindException
      // try (28 -> 36): 37 com/l7tech/objectmodel/FindException
      // try (16 -> 50): 51 com/l7tech/objectmodel/FindException
   }

   public Set<IdentityHeader> getGroupHeaders(String var1) throws FindException {
      return this.getGroupHeaders((LdapUser)this.getUserManager().findByPrimaryKey(var1));
   }

   public void setGroupHeaders(LdapUser var1, Set var2) {
      throw new UnsupportedOperationException();
   }

   public void setGroupHeaders(String var1, Set var2) {
      throw new UnsupportedOperationException();
   }

   private void a(DirContext var1, EntityHeaderSet<IdentityHeader> var2, IdentityHeader var3, int var4) {
      LdapIdentityProvider var5 = this.d();
      String var6 = this.a(var3);
      if (var6 != null) {
         long var7 = this.k.getMaxGroupSearchResultSize();

         try {
            this.m.a(var1, var6, var7, null, new s(this, var5, var2, var4, var1));
         } catch (SizeLimitExceededException var11) {
            String[] var10 = r;
            b.log(Level.FINE, var10[34], var11);
            var2.setMaxExceeded(var7);
         } catch (NamingException var12) {
            b.log(Level.WARNING, r[4] + var6, var12);
         }
      }

      this.a(var1, var2, var3.getStrId(), var4);
   }

   private IdentityHeader a(LdapGroup var1) {
      return new IdentityHeader(this.e(), var1.getDn(), EntityType.GROUP, var1.getCn(), var1.getDescription(), null, null);
   }

   private String a(IdentityHeader var1) {
      LdapIdentityProviderConfig var2 = this.g();
      GroupMappingConfig[] var3 = var2.getGroupMappings();
      h var4 = new h();
      var4.or();

      for (GroupMappingConfig var8 : var3) {
         try {
            if (var8.getMemberStrategy().equals(MemberStrategy.MEMBERS_ARE_DN)) {
               var4.and();
               var4.objectClass(var8.getObjClass());
               var4.attrEquals(var8.getMemberAttrName(), var1.getStrId());
               var4.end();
               continue;
            }
         } catch (UnsupportedOperationException var12) {
            throw a(var12);
         }

         try {
            if (var8.getMemberStrategy().equals(MemberStrategy.MEMBERS_ARE_LOGIN)) {
               var4.and();
               var4.objectClass(var8.getObjClass());
               var4.attrEquals(var8.getMemberAttrName(), var1.getName());
               var4.end();
               continue;
            }
         } catch (UnsupportedOperationException var11) {
            throw a(var11);
         }

         try {
            if (var8.getMemberStrategy().equals(MemberStrategy.MEMBERS_ARE_NVPAIR)) {
               var4.and();
               var4.objectClass(var8.getObjClass());
               var4.attrEqualsUnsafe(var8.getMemberAttrName(), var8.getNameAttrName() + "=" + LdapUtils.filterEscape(var1.getName()));
               var4.end();
               var4.and();
               var4.objectClass(var8.getObjClass());
               var4.attrEquals(var8.getMemberAttrName(), var1.getStrId());
               var4.end();
            }
         } catch (UnsupportedOperationException var9) {
            throw a(var9);
         }
      }

      try {
         var4.end();
         if (var4.isEmpty()) {
            return null;
         }
      } catch (UnsupportedOperationException var10) {
         throw a(var10);
      }

      return var4.buildFilter();
   }

   public EntityHeaderSet<IdentityHeader> getUserHeaders(LdapGroup var1) throws FindException {
      return this.a(var1, 1, new HashSet<>(), new HashSet<>());
   }

   private EntityHeaderSet<IdentityHeader> a(LdapGroup var1, int var2, Set<String> var3, Set<String> var4) throws FindException {
      LdapIdentityProvider var5 = this.d();
      LdapIdentityProviderConfig var6 = this.g();
      GroupMappingConfig[] var7 = var6.getGroupMappings();
      EntityHeaderSet var8 = new EntityHeaderSet();
      DirContext var9 = null;

      try {
         String var22 = var1.getDn();
         var9 = var5.getBrowseContext();
         DirContext var11 = var9;
         this.m.a(var9, var22, new t(this, var7, var11, var8, var2, var3, var4));
         return var8;
      } catch (AuthenticationException var19) {
         b.log(Level.WARNING, r[31] + var19.getMessage(), ExceptionUtils.getDebugException(var19));
         throw new FindException(var19.getMessage(), var19);
      } catch (NamingException var20) {
         NamingException var10 = var20;

         try {
            if (ExceptionUtils.causedBy(var10, FindException.class)) {
               throw (FindException)ExceptionUtils.getCauseIfCausedBy(var10, FindException.class);
            }
         } catch (AuthenticationException var18) {
            throw a(var18);
         }

         b.log(Level.SEVERE, null, var20);
         throw new FindException(var20.getMessage(), var20);
      } finally {
         ResourceUtils.closeQuietly(var9);
      }
   }

   public Set<IdentityHeader> getUserHeaders(String var1) throws FindException {
      return this.getUserHeaders(this.findByPrimaryKey(var1));
   }

   public void setUserHeaders(LdapGroup var1, Set var2) {
      throw new UnsupportedOperationException();
   }

   public void setUserHeaders(String var1, Set var2) {
      throw new UnsupportedOperationException();
   }

   public EntityHeaderSet<IdentityHeader> findAllHeaders() throws FindException {
      LdapIdentityProvider var1 = this.d();
      return var1.search(new EntityType[]{EntityType.GROUP}, "*");
   }

   public Collection findAll() throws FindException {
      EntityHeaderSet var1 = this.findAllHeaders();
      ArrayList var2 = new ArrayList();

      for (IdentityHeader var4 : var1) {
         var2.add(this.findByPrimaryKey(var4.getStrId()));
      }

      return var2;
   }

   protected LdapUserManager getUserManager() {
      LdapIdentityProvider var1 = this.d();
      return (LdapUserManager)var1.getUserManager();
   }

   private void a(DirContext var1, String var2, EntityHeaderSet<IdentityHeader> var3, int var4, Set<String> var5, Set<String> var6) throws NamingException {
      LdapIdentityProvider var7 = this.d();
      long var8 = this.k.getMaxGroupSearchResultSize();

      try {
         if (var3.size() >= var8) {
            return;
         }
      } catch (SizeLimitExceededException var16) {
         throw a(var16);
      }

      String var10 = var7.userSearchFilterWithParam("*");

      try {
         this.m.a(var1, var2, var10, var8, null, new u(this, var7, var3));
      } catch (SizeLimitExceededException var14) {
         String[] var12 = r;
         b.log(Level.FINE, var12[6], var14);
         var3.setMaxExceeded(var8);
      }

      try {
         if (var3.size() >= var8 || !this.a(var4)) {
            return;
         }
      } catch (SizeLimitExceededException var15) {
         throw a(var15);
      }

      var10 = var7.groupSearchFilterWithParam("*");

      try {
         this.m.a(var1, var2, var10, var8, null, new v(this, var2, var6, var4, var5, var3));
      } catch (SizeLimitExceededException var13) {
         b.log(Level.FINE, r[6], var13);
         var3.setMaxExceeded(var8);
      }
   }

   private boolean a(DirContext var1, String var2, Set<IdentityHeader> var3) throws NamingException {
      LdapIdentityProvider var4 = this.d();
      LdapIdentityProviderConfig var5 = this.g();
      long var6 = this.k.getMaxGroupSearchResultSize();

      try {
         if (var3.size() >= var6) {
            return true;
         }
      } catch (OperationNotSupportedException var15) {
         throw a(var15);
      }

      h var8 = new h();
      var8.or();
      UserMappingConfig[] var9 = var5.getUserMappings();

      for (UserMappingConfig var13 : var9) {
         var8.and();
         var8.objectClass(var13.getObjClass());
         var8.expression(var2);
         var8.end();
      }

      var8.end();
      boolean[] var16 = new boolean[1];

      try {
         this.m.a(var1, var8.buildFilter(), var6, null, new n(this, var4, var3, var16));
      } catch (OperationNotSupportedException var14) {
         b.log(Level.FINE, var5.getName() + r[21] + var2, var14);
      }

      return var16[0];
   }

   private String[] a() {
      String[] var1 = null;
      Collection var2 = this.j.getReturningAttributes();
      if (var2 != null) {
         var1 = var2.toArray(new String[var2.size()]);
      }

      return var1;
   }

   private Set<String> b() {
      Set var1;
      if (d) {
         var1 = Collections.singleton(c);
      } else {
         var1 = new HashSet();

         for (UserMappingConfig var5 : this.i.getUserMappings()) {
            var1.add(var5.getNameAttrName());
         }
      }

      return var1;
   }

   private int a(Integer var1, int var2) {
      int var3 = var2;
      if (var1 != null) {
         var3 = var1;
      }

      return var3;
   }

   private long a(Long var1, long var2) {
      long var4 = var2;
      if (var1 != null) {
         var4 = var1;
      }

      return var4;
   }

   private boolean c() {
      try {
         if (this.q != 1) {
            return true;
         }
      } catch (UnsupportedOperationException var1) {
         throw a(var1);
      }

      return false;
   }

   private boolean a(int 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 0
      // 01: getfield com/l7tech/server/identity/ldap/LdapGroupManagerImpl.q I
      // 04: ifeq 16
      // 07: iload 1
      // 08: aload 0
      // 09: getfield com/l7tech/server/identity/ldap/LdapGroupManagerImpl.q I
      // 0c: if_icmpge 1e
      // 0f: goto 16
      // 12: invokestatic com/l7tech/server/identity/ldap/LdapGroupManagerImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 15: athrow
      // 16: bipush 1
      // 17: goto 1f
      // 1a: invokestatic com/l7tech/server/identity/ldap/LdapGroupManagerImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 1d: athrow
      // 1e: bipush 0
      // 1f: ireturn
      // try (0 -> 7): 8 java/lang/UnsupportedOperationException
      // try (3 -> 12): 12 java/lang/UnsupportedOperationException
   }

   private LdapIdentityProvider d() {
      LdapIdentityProvider var1 = this.j;

      try {
         if (var1 == null) {
            throw new IllegalStateException(r[32]);
         } else {
            return var1;
         }
      } catch (UnsupportedOperationException var2) {
         throw a(var2);
      }
   }

   private Goid e() {
      try {
         if (this.l == null) {
            this.l = this.i.getGoid();
         }
      } catch (UnsupportedOperationException var1) {
         throw a(var1);
      }

      return this.l;
   }

   private String f() {
      StringBuilder var1 = new StringBuilder();
      var1.append(this.e());
      var1.append(',');
      var1.append(this.i.getVersion());
      return var1.toString();
   }

   private LdapIdentityProviderConfig g() {
      LdapIdentityProviderConfig var1 = this.i;

      try {
         if (var1 == null) {
            throw new IllegalStateException(r[28]);
         } else {
            return var1;
         }
      } catch (UnsupportedOperationException var2) {
         throw a(var2);
      }
   }

   private LdapGroup a(LdapGroupManagerImpl.GroupCacheKey var1) {
      LdapGroup var2 = null;
      Cache var3 = this.n;
      if (var3 != null) {
         e var4 = (e)var3.retrieve(var1);
         if (!this.a(var4)) {
            var2 = var4.a();
         }
      }

      return var2;
   }

   private void b(LdapGroup var1) {
      Cache var2 = this.n;

      try {
         if (var2 == null || var1 == null) {
            return;
         }
      } catch (UnsupportedOperationException var4) {
         throw a(var4);
      }

      e var3 = new e(var1);
      var2.store(LdapGroupManagerImpl.GroupCacheKey.buildDnKey(var1.getDn()), var3, var3.f);
      var2.store(LdapGroupManagerImpl.GroupCacheKey.buildCnKey(var1.getCn()), var3, var3.f);
   }

   private boolean a(LdapGroup var1, String var2) {
      boolean var3 = false;
      Cache var4 = this.n;
      if (var4 != null) {
         e var5 = (e)var4.retrieve(LdapGroupManagerImpl.GroupCacheKey.buildDnKey(var1.getDn()));
         if (!this.a(var5)) {
            var3 = var5.isNonGroup(var2);
         }
      }

      return var3;
   }

   private void a(LdapGroup var1, Collection<String> var2) {
      Cache var3 = this.n;

      try {
         if (var3 == null || var2.isEmpty()) {
            return;
         }
      } catch (UnsupportedOperationException var6) {
         throw a(var6);
      }

      e var4 = (e)var3.retrieve(LdapGroupManagerImpl.GroupCacheKey.buildDnKey(var1.getDn()));

      try {
         if (!this.a(var4)) {
            var4.addNonGroups(var2);
         }
      } catch (UnsupportedOperationException var5) {
         throw a(var5);
      }
   }

   private Object c(LdapGroup var1) {
      return (this.getClass().getName() + r[40] + var1.getDn()).intern();
   }

   private boolean b(LdapGroup var1, Collection<LdapGroup> var2) {
      boolean var3 = false;
      Cache var4 = this.n;
      if (var4 != null) {
         e var5 = (e)var4.retrieve(LdapGroupManagerImpl.GroupCacheKey.buildDnKey(var1.getDn()));
         if (!this.a(var5)) {
            Collection var6 = var5.getSubgroups();
            if (var6 != null) {
               var3 = true;
               var2.addAll(var6);
            }
         }
      }

      return var3;
   }

   private void c(LdapGroup var1, Collection<LdapGroup> var2) {
      Cache var3 = this.n;
      if (var3 != null) {
         e var4 = (e)var3.retrieve(LdapGroupManagerImpl.GroupCacheKey.buildDnKey(var1.getDn()));

         try {
            if (!this.a(var4)) {
               var4.setSubgroups(var2);
            }
         } catch (UnsupportedOperationException var5) {
            throw a(var5);
         }
      }
   }

   private LdapGroup a(String var1, Attributes var2) throws NamingException {
      LdapGroup var3 = null;
      LdapIdentityProviderConfig var4 = this.g();
      GroupMappingConfig[] var5 = var4.getGroupMappings();
      String[] var14 = r;
      Attribute var6 = var2.get(var14[18]);

      for (GroupMappingConfig var10 : var5) {
         String var11 = var10.getObjClass();
         if (LdapUtils.a(var6, var11)) {
            Object var12 = LdapUtils.a(var2, var10.getNameAttrName());
            Object var13 = LdapUtils.a(var2, r[1]);

            Goid var10000;
            String var10001;
            String var10002;
            label34: {
               try {
                  var10000 = this.e();
                  var10001 = var1;
                  if (var12 != null) {
                     var10002 = var12.toString();
                     break label34;
                  }
               } catch (NamingException var16) {
                  throw a(var16);
               }

               var10002 = null;
            }

            String var10003;
            label27: {
               try {
                  if (var13 != null) {
                     var10003 = var13.toString();
                     break label27;
                  }
               } catch (NamingException var15) {
                  throw a(var15);
               }

               var10003 = null;
            }

            var3 = a(var10000, var10001, var10002, var10003, var2);
            break;
         }
      }

      return var3;
   }

   private static LdapGroup a(Goid var0, String var1, String var2, String var3, Attributes var4) {
      LdapGroup var5 = new LdapGroup();

      try {
         var5.setProviderId(var0);
         var5.setDn(var1);
         var5.setDescription(var3);
         var5.setAttributes(var4);
         if (var2 != null) {
            var5.setCn(var2);
         }

         return var5;
      } catch (UnsupportedOperationException var6) {
         throw a(var6);
      }
   }

   private boolean a(e var1) {
      boolean var2 = true;
      if (var1 != null) {
         long var3 = var1.f;

         boolean var10000;
         label19: {
            try {
               if (var3 + this.p < System.currentTimeMillis()) {
                  var10000 = true;
                  break label19;
               }
            } catch (UnsupportedOperationException var5) {
               throw a(var5);
            }

            var10000 = false;
         }

         var2 = var10000;
      }

      return var2;
   }

   static {
      String[] var5 = new String[42];
      int var3 = 0;
      String var2 = "e\u000f:oZ$&n\u00164cD7od\u0000y&\u000bo\u000b$eF*v\u007f\u00078h\u0002h\u0000\"G*\u0016V\u0014&ty\u0001%*\u00144nb\u00022&V6og\n>hScay\u0001\"v\u000ec\u001de\u000f:oZ$&n\u00164cD7od\u0000wq]7n+\b>j@&t+=h\u0001:(Xtrn\r?(G&t}\u000b%(]'ce\u001a>rMmjo\u000f'(W,k{\u000f%cy&ki\u000b%uw\"un=2hG*rb\u00182jM(\u007f\u00062&G&gy\r?&F&u~\u0002#u\u0014&~h\u000b2bQ'&\u007f\u00062&Y\"~b\u0003\"k\u001a\u0003d\u001bj\u0012e\u000f:oZ$&n\u00164cD7od\u0000y&1G*\u0016V\u0014\"s\u007f\u00062h@*ej\u001a>iZccy\u001c8t\u0018cqc\u0007;c\u0014!sb\u00023oZ$&l\u001c8sDy&\"G*\u0016V\u0014&ty\u0001%*\u00144nb\u00022&V6og\n>hScay\u0001\"v\u000ecc\u007f\u00062&G&gy\r?&F&u~\u0002#u\u0014&~h\u000b2bQ'&\u007f\u00062&Y\"~b\u0003\"k\u001acgo\n>hScg++9r]7\u007f_\u0017'c\u001a\u000eGS+\u0013Y{\u0016RT=\u0012Gf\u0000NT<\u0012Ua\u000fR+\u001a8&@+c+\u001c2uA/rx\fG*\u0016V\u0014&ty\u0001%<\u0014\u0014h\u000f9h[7&l\u000b#&W,h\u007f\u000b/r\u000ec\u0012G*\u0016V\u0014\u0004td\u001b'&w\"ec\u000bw.\u0006L\u001c8sDc\u0002+F>J\u001c0sY&h\u007fN1iFcFE\u0001#HA/j+\u001e6tU.c\u007f\u000b%&\u0013fu,N8`\u0014fu%K$&Y6u\u007fN9i@cdnN9sX/\u000bd\f=cW7eg\u000f$u'^\u001d2t\u0014*u+\u00008r\u0014%td\u0003wr\\*u+'3cZ7o\u007f\u0017wVF,pb\n2t\u0003d\u001bj\u001ao\u0007%cW7iy\u0017weU-hd\u001awuQ\"th\u0006wiZ.h\u0001:(Xtrn\r?(G&t}\u000b%(]'ce\u001a>rMmjo\u000f'(Y&ki\u000b%G@7tE\u000f:c\u0007l\u001c8sD\nb1h\u0001:(Xtrn\r?(G&t}\u000b%(]'ce\u001a>rMmjo\u000f'(A0cF\u000b:dQ1G\u007f\u001a%HU.c\u0012+\n8cGchd\u001awcL*u\u007fN>h4h\u0001:)Xtrn\r?)G&t}\u000b%)]'ce\u001a>rMljo\u000f')x'g{)%iA3Kj\u00006aQ1Of\u001e;\fG*\u0016V\u0014&ty\u0001%<\u0014\u000fE\u0001#&W,hm\u00070sF&b*\"m\u000f>jQ'&\u007f\u0001we\\&e`N0t[6v+\u00032kV&tx\u0006>v\u000ec\u001dl\u000b#AF,s{&2gP&tx(8tz&u\u007f\u000b3AF,s{\u001bG*\u0016V\u0014\"s\u007f\u00062h@*ej\u001a>iZccy\u001c8t\u000ec\u000fE\u0001#&W,hm\u00070sF&b*\u001bG*\u0016V\u0014\"s\u007f\u00062h@*ej\u001a>iZccy\u001c8t\u000ec(\u007f\u00062&G&gy\r?&F&u~\u0002#u\u0014&~h\u000b2bQ'&\u007f\u00062&Y\"~b\u0003\"k\u001a%^\u00006dX&&\u007f\u0001wtQ7tb\u000b!c\u0014$td\u001b'u\u0014%iyN0t[6v1N1G*\u0016V\u0014\"s\u007f\u00062h@*ej\u001a>iZccy\u001c8t\u0018cqc\u0007;c\u0014!sb\u00023oZ$&l\u001c8sDy&\u001bG*\u0016V\u0014\"r\u007f\u001c>dA7c+\u001c2gPccy\u001c8t\u000ec\u001dh\u0001\"jPchd\u001awtQ0ig\u00182&@+oxN0t[6v+\u0016n\u001c%iFcan\u001a#oZ$&j\u0000$qQ1<+";
      int var4 = "e\u000f:oZ$&n\u00164cD7od\u0000y&\u000bo\u000b$eF*v\u007f\u00078h\u0002h\u0000\"G*\u0016V\u0014&ty\u0001%*\u00144nb\u00022&V6og\n>hScay\u0001\"v\u000ec\u001de\u000f:oZ$&n\u00164cD7od\u0000wq]7n+\b>j@&t+=h\u0001:(Xtrn\r?(G&t}\u000b%(]'ce\u001a>rMmjo\u000f'(W,k{\u000f%cy&ki\u000b%uw\"un=2hG*rb\u00182jM(\u007f\u00062&G&gy\r?&F&u~\u0002#u\u0014&~h\u000b2bQ'&\u007f\u00062&Y\"~b\u0003\"k\u001a\u0003d\u001bj\u0012e\u000f:oZ$&n\u00164cD7od\u0000y&1G*\u0016V\u0014\"s\u007f\u00062h@*ej\u001a>iZccy\u001c8t\u0018cqc\u0007;c\u0014!sb\u00023oZ$&l\u001c8sDy&\"G*\u0016V\u0014&ty\u0001%*\u00144nb\u00022&V6og\n>hScay\u0001\"v\u000ecc\u007f\u00062&G&gy\r?&F&u~\u0002#u\u0014&~h\u000b2bQ'&\u007f\u00062&Y\"~b\u0003\"k\u001acgo\n>hScg++9r]7\u007f_\u0017'c\u001a\u000eGS+\u0013Y{\u0016RT=\u0012Gf\u0000NT<\u0012Ua\u000fR+\u001a8&@+c+\u001c2uA/rx\fG*\u0016V\u0014&ty\u0001%<\u0014\u0014h\u000f9h[7&l\u000b#&W,h\u007f\u000b/r\u000ec\u0012G*\u0016V\u0014\u0004td\u001b'&w\"ec\u000bw.\u0006L\u001c8sDc\u0002+F>J\u001c0sY&h\u007fN1iFcFE\u0001#HA/j+\u001e6tU.c\u007f\u000b%&\u0013fu,N8`\u0014fu%K$&Y6u\u007fN9i@cdnN9sX/\u000bd\f=cW7eg\u000f$u'^\u001d2t\u0014*u+\u00008r\u0014%td\u0003wr\\*u+'3cZ7o\u007f\u0017wVF,pb\n2t\u0003d\u001bj\u001ao\u0007%cW7iy\u0017weU-hd\u001awuQ\"th\u0006wiZ.h\u0001:(Xtrn\r?(G&t}\u000b%(]'ce\u001a>rMmjo\u000f'(Y&ki\u000b%G@7tE\u000f:c\u0007l\u001c8sD\nb1h\u0001:(Xtrn\r?(G&t}\u000b%(]'ce\u001a>rMmjo\u000f'(A0cF\u000b:dQ1G\u007f\u001a%HU.c\u0012+\n8cGchd\u001awcL*u\u007fN>h4h\u0001:)Xtrn\r?)G&t}\u000b%)]'ce\u001a>rMljo\u000f')x'g{)%iA3Kj\u00006aQ1Of\u001e;\fG*\u0016V\u0014&ty\u0001%<\u0014\u000fE\u0001#&W,hm\u00070sF&b*\"m\u000f>jQ'&\u007f\u0001we\\&e`N0t[6v+\u00032kV&tx\u0006>v\u000ec\u001dl\u000b#AF,s{&2gP&tx(8tz&u\u007f\u000b3AF,s{\u001bG*\u0016V\u0014\"s\u007f\u00062h@*ej\u001a>iZccy\u001c8t\u000ec\u000fE\u0001#&W,hm\u00070sF&b*\u001bG*\u0016V\u0014\"s\u007f\u00062h@*ej\u001a>iZccy\u001c8t\u000ec(\u007f\u00062&G&gy\r?&F&u~\u0002#u\u0014&~h\u000b2bQ'&\u007f\u00062&Y\"~b\u0003\"k\u001a%^\u00006dX&&\u007f\u0001wtQ7tb\u000b!c\u0014$td\u001b'u\u0014%iyN0t[6v1N1G*\u0016V\u0014\"s\u007f\u00062h@*ej\u001a>iZccy\u001c8t\u0018cqc\u0007;c\u0014!sb\u00023oZ$&l\u001c8sDy&\u001bG*\u0016V\u0014\"r\u007f\u001c>dA7c+\u001c2gPccy\u001c8t\u000ec\u001dh\u0001\"jPchd\u001awtQ0ig\u00182&@+oxN0t[6v+\u0016n\u001c%iFcan\u001a#oZ$&j\u0000$qQ1<+"
         .length();
      char var1 = 18;
      int var7 = -1;

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

         while (true) {
            String var9 = a(var10000, b(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var9;
                  if ((var7 += var1) >= var4) {
                     r = var5;
                     a = r[8];
                     b = Logger.getLogger(LdapGroupManagerImpl.class.getName());
                     String[] var8 = r;
                     c = ConfigFactory.getProperty(var8[22], var8[2]);
                     d = ConfigFactory.getBooleanProperty(var8[24], false);
                     e = ConfigFactory.getBooleanProperty(var8[5], true);
                     return;
                  }

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

                  var2 = "2\t6pG%}j\n0?F8`2\u0014|\u001b-|O#2x\u001f72C8|k\u001f;f\u001aw";
                  var4 = "2\t6pG%}j\n0?F8`2\u0014|\u001b-|O#2x\u001f72C8|k\u001f;f\u001aw".length();
                  var1 = 15;
                  var7 = -1;
            }

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

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

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

      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 -> 82;
            case 1 -> 55;
            case 2 -> 14;
            case 3 -> 95;
            case 4 -> 109;
            case 5 -> 26;
            default -> 95;
         });
      }

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

   private static final class GroupCacheKey extends Pair<String, String> {
      static final long serialVersionUID = 4771537123965738825L;
      private static final String[] b;

      private GroupCacheKey(String var1, String var2) {
         super(var1, var2);
      }

      private static LdapGroupManagerImpl.GroupCacheKey buildDnKey(String var0) {
         return new LdapGroupManagerImpl.GroupCacheKey(b[1], var0);
      }

      private static LdapGroupManagerImpl.GroupCacheKey buildCnKey(String var0) {
         return new LdapGroupManagerImpl.GroupCacheKey(b[2], var0);
      }

      private Object getSync() {
         return (this.getClass().getName() + b[0] + (String)this.left + "," + (String)this.right + ")").intern();
      }

      static {
         String[] var5 = new String[3];
         int var3 = 0;
         String var2 = "L\u0013\u00180\u0010\u000b\u0007\u0007\u001b\u0018rM\u0002\u0005\u001a\u0002\u0002\u001a";
         int var4 = "L\u0013\u00180\u0010\u000b\u0007\u0007\u001b\u0018rM\u0002\u0005\u001a\u0002\u0002\u001a".length();
         char var1 = '\f';
         int var0 = -1;

         while (true) {
            String var10002 = b(78, b(var2.substring(++var0, var0 + var1)));
            byte var10001 = -1;
            var5[var3++] = var10002;
            if ((var0 += var1) >= var4) {
               b = var5;
               return;
            }

            var1 = var2.charAt(var0);
         }
      }

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

         return var10000;
      }

      private static String b(int var0, char[] var1) {
         int var10003 = var1.length;
         int var10002 = var0;
         char[] var10001 = var1;
         int var10000 = var10003;

         for (int var2 = 0; var10000 > var2; var2++) {
            var10001[var2] = (char)(var10001[var2] ^ var10002 ^ switch (var2 % 7) {
               case 0 -> 47;
               case 1 -> 58;
               case 2 -> 36;
               case 3 -> 17;
               case 4 -> 43;
               case 5 -> 53;
               default -> 100;
            });
         }

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