package com.l7tech.server.search.processors;

import com.l7tech.objectmodel.EntityHeader;
import com.l7tech.objectmodel.EntityType;
import com.l7tech.objectmodel.FindException;
import com.l7tech.objectmodel.polback.PolicyBackedService;
import com.l7tech.objectmodel.polback.PolicyBackedServiceOperation;
import com.l7tech.policy.Policy;
import com.l7tech.server.policy.PolicyManager;
import com.l7tech.server.search.exceptions.CannotReplaceDependenciesException;
import com.l7tech.server.search.exceptions.CannotRetrieveDependenciesException;
import com.l7tech.server.search.objects.Dependency;
import jakarta.inject.Inject;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.jetbrains.annotations.NotNull;

public class PolicyBackedServiceDependencyProcessor extends DefaultDependencyProcessor<PolicyBackedService> implements DependencyProcessor<PolicyBackedService> {
   @Inject
   private PolicyManager policyManager;
   private static final String[] a;

   @NotNull
   public List<Dependency> findDependencies(@NotNull PolicyBackedService var1, @NotNull DependencyFinder var2) throws FindException, CannotRetrieveDependenciesException {
      try {
         if (var1 == null) {
            b(0);
         }
      } catch (FindException var10) {
         throw a(var10);
      }

      try {
         if (var2 == null) {
            b(1);
         }
      } catch (FindException var11) {
         throw a(var11);
      }

      ArrayList var3 = new ArrayList();
      var3.addAll(super.findDependencies(var1, var2));

      for (PolicyBackedServiceOperation var5 : var1.getOperations()) {
         Policy var6 = (Policy)this.policyManager.findByPrimaryKey(var5.getPolicyGoid());
         Dependency var7 = var2.a(DependencyFinder.FindResults.create(var6, null));

         try {
            if (var7 != null) {
               var3.add(var7);
            }
         } catch (FindException var9) {
            throw a(var9);
         }
      }

      try {
         if (var3 == null) {
            b(2);
         }

         return var3;
      } catch (FindException var8) {
         throw a(var8);
      }
   }

   public void replaceDependencies(
      @NotNull PolicyBackedService var1, @NotNull Map<EntityHeader, EntityHeader> var2, @NotNull DependencyFinder var3, boolean var4
   ) throws CannotReplaceDependenciesException {
      try {
         if (var1 == null) {
            b(3);
         }
      } catch (CannotReplaceDependenciesException var12) {
         throw a(var12);
      }

      try {
         if (var2 == null) {
            b(4);
         }
      } catch (CannotReplaceDependenciesException var10) {
         throw a(var10);
      }

      try {
         if (var3 == null) {
            b(5);
         }
      } catch (CannotReplaceDependenciesException var11) {
         throw a(var11);
      }

      for (PolicyBackedServiceOperation var6 : var1.getOperations()) {
         EntityHeader var7 = new EntityHeader(var6.getPolicyGoid(), EntityType.POLICY, null, null);
         EntityHeader var8 = (EntityHeader)var2.get(var7);

         try {
            if (var8 != null) {
               var6.setPolicyGoid(var8.getGoid());
            }
         } catch (CannotReplaceDependenciesException var9) {
            throw a(var9);
         }
      }

      super.replaceDependencies(var1, var2, var3, var4);
   }

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

   static {
      String[] var5 = new String[10];
      int var3 = 0;
      String var2 = "DE\b31{l[E\u0016+\u001dyy\u0006PI\u0016;5j\u0010PI\u0016;\u0014}ySN\u001c:>{`SSJUO\u0015p</}SC\u0010p#}{@E\np#}hDC\u0010p jfUE\u000b,?jz\u0019p\u001739{ptA\u001b45|ZSR\u000e63}MSP\u001d14}gUY(-?{lES\u0017-\u0013FO\u001463aKWC\u0013:4KlDV\u0011<5>wR\u001f*=}gB\u0000\u001e0\"8IxO\f\u0011%te\u0016P\u0019-1ulBE\n\u007fw=z\u0011\u0000\u00179p=z\u0018\u0005\u000b\u007f=mzB\u0000\u00160$8kS\u0000\u0016*<t\u0013DE\b31{lrE\b:>|lXC\u0011:#*vn\u0017+\u001emeZ\u0000\u0015:$pfR\u0000],~=z\u0016M\r,$8gYTX-5l|DNX1%te";
      int var4 = "DE\b31{l[E\u0016+\u001dyy\u0006PI\u0016;5j\u0010PI\u0016;\u0014}ySN\u001c:>{`SSJUO\u0015p</}SC\u0010p#}{@E\np#}hDC\u0010p jfUE\u000b,?jz\u0019p\u001739{ptA\u001b45|ZSR\u000e63}MSP\u001d14}gUY(-?{lES\u0017-\u0013FO\u001463aKWC\u0013:4KlDV\u0011<5>wR\u001f*=}gB\u0000\u001e0\"8IxO\f\u0011%te\u0016P\u0019-1ulBE\n\u007fw=z\u0011\u0000\u00179p=z\u0018\u0005\u000b\u007f=mzB\u0000\u00160$8kS\u0000\u0016*<t\u0013DE\b31{lrE\b:>|lXC\u0011:#*vn\u0017+\u001emeZ\u0000\u0015:$pfR\u0000],~=z\u0016M\r,$8gYTX-5l|DNX1%te"
         .length();
      char var1 = 14;
      int var7 = -1;

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

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

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

                  var2 = "\u0002\u001bDiF/+\u0001\u001cNhl)2\u0001\u0001J\u0007\u001dG\"n}/\u0001\u0011B\"q/)\u0012\u0017X\"q/:\u0016\u0011B\"r84\u0007\u0017Y~m8(K\"Eak)\"&\u0013Ifg.\b\u0001\u0000\\da/\u001f\u0001\u0002Ocf/5\u0007\u000bz\u007fm)>\u0017\u0001E\u007f";
                  var4 = "\u0002\u001bDiF/+\u0001\u001cNhl)2\u0001\u0001J\u0007\u001dG\"n}/\u0001\u0011B\"q/)\u0012\u0017X\"q/:\u0016\u0011B\"r84\u0007\u0017Y~m8(K\"Eak)\"&\u0013Ifg.\b\u0001\u0000\\da/\u001f\u0001\u0002Ocf/5\u0007\u000bz\u007fm)>\u0017\u0001E\u007f"
                     .length();
                  var1 = 16;
                  var7 = -1;
            }

            var10000 = 127;
            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] ^ 36);
      }

      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 -> 27;
            case 1 -> 13;
            case 2 -> 85;
            case 3 -> 114;
            case 4 -> 125;
            case 5 -> 53;
            default -> 36;
         });
      }

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