package com.l7tech.gateway.common.security.rbac;

import com.l7tech.objectmodel.EntityType;
import com.l7tech.util.ConfigFactory;
import java.text.MessageFormat;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.regex.Pattern;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

public class RbacUtilities {
   public static final String SYSTEM_PROP_ENABLEROLEEDIT;
   public static final String SYSTEM_PROP_ENABLE_BUILTIN_ROLEEDIT;
   public static final Pattern removeOidPattern;
   public static final String REGEX_PATTERN;
   private static final Map<EntityType, Pattern> a;
   private static final String[] b;

   public static boolean isEnableRoleEditing() {
      return ConfigFactory.getBooleanProperty(b[6], true);
   }

   public static boolean isEnableBuiltInRoleEditing() {
      return ConfigFactory.getBooleanProperty(b[5], false);
   }

   public static String getDescriptionString(Role param0, boolean 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:
      // 000: aload 0
      // 001: invokevirtual com/l7tech/gateway/common/security/rbac/Role.isUserCreated ()Ljava/lang/Boolean;
      // 004: invokevirtual java/lang/Boolean.booleanValue ()Z
      // 007: ifeq 013
      // 00a: aload 0
      // 00b: invokevirtual com/l7tech/gateway/common/security/rbac/Role.getDescription ()Ljava/lang/String;
      // 00e: areturn
      // 00f: invokestatic com/l7tech/gateway/common/security/rbac/RbacUtilities.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 012: athrow
      // 013: aload 0
      // 014: invokevirtual com/l7tech/gateway/common/security/rbac/Role.getName ()Ljava/lang/String;
      // 017: astore 2
      // 018: getstatic com/l7tech/gateway/common/security/rbac/RbacUtilities.removeOidPattern Ljava/util/regex/Pattern;
      // 01b: aload 2
      // 01c: invokevirtual java/util/regex/Pattern.matcher (Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
      // 01f: astore 3
      // 020: aload 3
      // 021: invokevirtual java/util/regex/Matcher.matches ()Z
      // 024: ifeq 02d
      // 027: aload 3
      // 028: bipush 1
      // 029: invokevirtual java/util/regex/Matcher.group (I)Ljava/lang/String;
      // 02c: astore 2
      // 02d: aload 0
      // 02e: invokevirtual com/l7tech/gateway/common/security/rbac/Role.getDescription ()Ljava/lang/String;
      // 031: astore 4
      // 033: aload 2
      // 034: invokestatic org/apache/commons/lang3/StringUtils.isEmpty (Ljava/lang/CharSequence;)Z
      // 037: ifne 049
      // 03a: aload 4
      // 03c: invokestatic org/apache/commons/lang3/StringUtils.isEmpty (Ljava/lang/CharSequence;)Z
      // 03f: ifeq 050
      // 042: goto 049
      // 045: invokestatic com/l7tech/gateway/common/security/rbac/RbacUtilities.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 048: athrow
      // 049: ldc ""
      // 04b: areturn
      // 04c: invokestatic com/l7tech/gateway/common/security/rbac/RbacUtilities.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 04f: athrow
      // 050: aconst_null
      // 051: astore 5
      // 053: aload 0
      // 054: invokevirtual com/l7tech/gateway/common/security/rbac/Role.getEntityType ()Lcom/l7tech/objectmodel/EntityType;
      // 057: astore 6
      // 059: aload 6
      // 05b: ifnull 0cb
      // 05e: getstatic com/l7tech/gateway/common/security/rbac/RbacUtilities.a Ljava/util/Map;
      // 061: aload 6
      // 063: invokeinterface java/util/Map.containsKey (Ljava/lang/Object;)Z 2
      // 068: ifeq 0cb
      // 06b: goto 072
      // 06e: invokestatic com/l7tech/gateway/common/security/rbac/RbacUtilities.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 071: athrow
      // 072: getstatic com/l7tech/gateway/common/security/rbac/RbacUtilities.a Ljava/util/Map;
      // 075: aload 6
      // 077: invokeinterface java/util/Map.get (Ljava/lang/Object;)Ljava/lang/Object; 2
      // 07c: checkcast java/util/regex/Pattern
      // 07f: astore 7
      // 081: aload 7
      // 083: aload 2
      // 084: invokevirtual java/util/regex/Pattern.matcher (Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
      // 087: astore 3
      // 088: aload 3
      // 089: invokevirtual java/util/regex/Matcher.matches ()Z
      // 08c: ifeq 0cb
      // 08f: aload 3
      // 090: bipush 1
      // 091: invokevirtual java/util/regex/Matcher.group (I)Ljava/lang/String;
      // 094: astore 5
      // 096: aload 0
      // 097: invokevirtual com/l7tech/gateway/common/security/rbac/Role.getCachedSpecificEntity ()Lcom/l7tech/objectmodel/Entity;
      // 09a: astore 8
      // 09c: aload 8
      // 09e: instanceof com/l7tech/gateway/common/service/PublishedService
      // 0a1: ifeq 0cb
      // 0a4: aload 8
      // 0a6: checkcast com/l7tech/gateway/common/service/PublishedService
      // 0a9: invokevirtual com/l7tech/gateway/common/service/PublishedService.getRoutingUri ()Ljava/lang/String;
      // 0ac: astore 9
      // 0ae: aload 9
      // 0b0: ifnull 0cb
      // 0b3: aload 5
      // 0b5: aload 9
      // 0b7: getstatic com/l7tech/gateway/common/security/rbac/RbacUtilities.b [Ljava/lang/String;
      // 0ba: astore 10
      // 0bc: aload 10
      // 0be: bipush 20
      // 0c0: aaload
      // 0c1: swap
      // 0c2: ldc "]"
      // 0c4: 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" ]
      // 0c9: astore 5
      // 0cb: iload 1
      // 0cc: ifeq 0e8
      // 0cf: aload 2
      // 0d0: getstatic com/l7tech/gateway/common/security/rbac/RbacUtilities.b [Ljava/lang/String;
      // 0d3: bipush 1
      // 0d4: aaload
      // 0d5: swap
      // 0d6: getstatic com/l7tech/gateway/common/security/rbac/RbacUtilities.b [Ljava/lang/String;
      // 0d9: bipush 13
      // 0db: aaload
      // 0dc: 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" ]
      // 0e1: goto 0e9
      // 0e4: invokestatic com/l7tech/gateway/common/security/rbac/RbacUtilities.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 0e7: athrow
      // 0e8: aload 2
      // 0e9: astore 8
      // 0eb: aload 5
      // 0ed: ifnonnull 0fe
      // 0f0: bipush 1
      // 0f1: anewarray 157
      // 0f4: dup
      // 0f5: bipush 0
      // 0f6: aload 8
      // 0f8: aastore
      // 0f9: astore 7
      // 0fb: goto 10e
      // 0fe: bipush 2
      // 0ff: anewarray 157
      // 102: dup
      // 103: bipush 0
      // 104: aload 8
      // 106: aastore
      // 107: dup
      // 108: bipush 1
      // 109: aload 5
      // 10b: aastore
      // 10c: astore 7
      // 10e: aload 4
      // 110: aload 7
      // 112: checkcast [Ljava/lang/Object;
      // 115: invokestatic java/text/MessageFormat.format (Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
      // 118: areturn
      // try (0 -> 7): 7 java/lang/IllegalArgumentException
      // try (26 -> 32): 33 java/lang/IllegalArgumentException
      // try (29 -> 37): 37 java/lang/IllegalArgumentException
      // try (44 -> 50): 51 java/lang/IllegalArgumentException
      // try (92 -> 104): 104 java/lang/IllegalArgumentException
   }

   public static Set<ScopePredicate> getAnonymousNoOidsCopyOfScope(@Nullable Set<ScopePredicate> var0) {
      HashSet var1 = new HashSet();
      if (var0 != null) {
         for (ScopePredicate var3 : var0) {
            ScopePredicate var4 = var3.createAnonymousClone();
            var4.setGoid(ScopePredicate.DEFAULT_GOID);
            var1.add(var4);
         }
      }

      return var1;
   }

   public static Role fromEntityHeader(@NotNull RoleEntityHeader var0) {
      try {
         if (var0 == null) {
            a(0);
         }
      } catch (IllegalArgumentException var2) {
         throw a(var2);
      }

      Role var1 = new Role();
      var1.setGoid(var0.getGoid());
      var1.setName(var0.getName());
      var1.setDescription(var0.getDescription());
      var1.setUserCreated(var0.isUserCreated());
      var1.setVersion(var0.getVersion());
      var1.setEntityGoid(var0.getEntityGoid());
      var1.setEntityType(var0.getEntityType());
      return var1;
   }

   static {
      String[] var5 = new String[22];
      int var3 = 0;
      String var2 = ":bQg+\u000b 5dGB\u000b\u000409b\b`cJx\u0001\u000b3b*\u00028b}\u0015Txm\"\u0006wNK~c9\u001eVFFycKbn\u000fH2\u0001Kbn\u000fH2p0c 2Lp\u00064u_n\u000b\u0017\u0019\u0002LI-\u0015Bep!\f2I\u0018s|8\u0010 QLt' C.%?\u007fS$\u0002R 9sV$\u001c\u00075?>_f\u0002\n#\u0019tW~,\u0010=0dWd<\n89c\u001e?\u007fS$\u0002R 9sV$\u001c\u00075?>_f\u0002\n#\u0019tW~<\n89c\b\u0010\u007fY*=\f:7\u0006\f\u007fRc\r\u001c5?\u007fS%\u0002R 9sV%\t\u0004 9g_sA\u0006;1}QdA\u00161?eLc\u001a\u001c{.r_iA76=sk~\u0007\t=(y[y\u0007\u000fuL|\u0007\u00061\u0011\u0015t[d\u001a\f %0nx\u0001\u0013=8uL\u0019\u0002LI-\u0015Bep!\f2I\u0018s|8\u0010 QLt' C.\t`?M~\u001c\n:;.\u0006\u001a\u007fRn\u000b\u0017\u0015\u001bqJo\u0019\u0004-|SR\u007f\u001d\u00111.0pe\n\u0000'\u0006\u000euNe\u001c\u0011%?\u007fS$\u0002R 9sV$\u001c\u00075?>_f\u0002\n#\u0019tW~,\u0010=0dWd<\n89c>\u001dbY\u007f\u0003\u0000:(0Xe\u001cE\u0014\u0012\u007fJD\u001b\t8|`_x\u000f\b1(uL*I@'{0QlN@'r5M*\u0003\u0010'(0Pe\u001aE690P\u007f\u0002\t\u001e?\u007fS$\u0002R 9sV$\u001c\u00075?>_f\u0002\n#\u0019tW~<\n89c";
      int var4 = ":bQg+\u000b 5dGB\u000b\u000409b\b`cJx\u0001\u000b3b*\u00028b}\u0015Txm\"\u0006wNK~c9\u001eVFFycKbn\u000fH2\u0001Kbn\u000fH2p0c 2Lp\u00064u_n\u000b\u0017\u0019\u0002LI-\u0015Bep!\f2I\u0018s|8\u0010 QLt' C.%?\u007fS$\u0002R 9sV$\u001c\u00075?>_f\u0002\n#\u0019tW~,\u0010=0dWd<\n89c\u001e?\u007fS$\u0002R 9sV$\u001c\u00075?>_f\u0002\n#\u0019tW~<\n89c\b\u0010\u007fY*=\f:7\u0006\f\u007fRc\r\u001c5?\u007fS%\u0002R 9sV%\t\u0004 9g_sA\u0006;1}QdA\u00161?eLc\u001a\u001c{.r_iA76=sk~\u0007\t=(y[y\u0007\u000fuL|\u0007\u00061\u0011\u0015t[d\u001a\f %0nx\u0001\u0013=8uL\u0019\u0002LI-\u0015Bep!\f2I\u0018s|8\u0010 QLt' C.\t`?M~\u001c\n:;.\u0006\u001a\u007fRn\u000b\u0017\u0015\u001bqJo\u0019\u0004-|SR\u007f\u001d\u00111.0pe\n\u0000'\u0006\u000euNe\u001c\u0011%?\u007fS$\u0002R 9sV$\u001c\u00075?>_f\u0002\n#\u0019tW~,\u0010=0dWd<\n89c>\u001dbY\u007f\u0003\u0000:(0Xe\u001cE\u0014\u0012\u007fJD\u001b\t8|`_x\u000f\b1(uL*I@'{0QlN@'r5M*\u0003\u0010'(0Pe\u001aE690P\u007f\u0002\t\u001e?\u007fS$\u0002R 9sV$\u001c\u00075?>_f\u0002\n#\u0019tW~<\n89c"
         .length();
      char var1 = 16;
      int var7 = -1;

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

         while (true) {
            String var9 = a(var10000, a(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var9;
                  if ((var7 += var1) >= var4) {
                     b = var5;
                     String[] var10 = b;
                     REGEX_PATTERN = b[4];
                     SYSTEM_PROP_ENABLE_BUILTIN_ROLEEDIT = var10[17];
                     SYSTEM_PROP_ENABLEROLEEDIT = var10[19];
                     String[] var8 = b;
                     removeOidPattern = Pattern.compile(var8[2]);
                     a = new HashMap<>();
                     a.put(EntityType.SERVICE, Pattern.compile(MessageFormat.format(var8[12], var8[10])));
                     a.put(EntityType.ID_PROVIDER_CONFIG, Pattern.compile(MessageFormat.format(var8[4], var8[11])));
                     a.put(EntityType.POLICY, Pattern.compile(MessageFormat.format(var8[4], var8[8])));
                     a.put(EntityType.FOLDER, Pattern.compile(MessageFormat.format(var8[4], var8[14])));
                     a.put(EntityType.ESM_SSG_CLUSTER, Pattern.compile(MessageFormat.format(var8[4], var8[15])));
                     a.put(EntityType.ESM_STANDARD_REPORT, Pattern.compile(MessageFormat.format(var8[4], var8[16])));
                     a.put(EntityType.LOG_SINK, Pattern.compile(MessageFormat.format(var8[4], var8[7])));
                     a.put(EntityType.SECURITY_ZONE, Pattern.compile(MessageFormat.format(var8[4], var8[21])));
                     return;
                  }

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

                  var2 = "\u007fH\u0004\u0005|Sl";
                  var4 = "\u007fH\u0004\u0005|Sl".length();
                  var1 = 2;
                  var7 = -1;
            }

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

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

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

      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 -> 99;
            case 1 -> 47;
            case 2 -> 1;
            case 3 -> 53;
            case 4 -> 81;
            case 5 -> 90;
            default -> 107;
         });
      }

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