package com.l7tech.external.assertions.gatewaygraphql.server.data;

import com.l7tech.gateway.common.transport.jms.JmsConnection;
import com.l7tech.gateway.common.transport.jms.JmsEndpoint;
import com.l7tech.gateway.common.transport.jms.JmsOutboundMessageType;
import com.l7tech.gateway.common.transport.jms.JmsReplyType;
import com.l7tech.util.Pair;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import org.apache.commons.lang3.StringUtils;

public class JmsOutboundOptionsHelper {
   public static final String CONNECTION_POOL_TYPE;
   public static final String SESSION_POOL_TYPE;
   public static final String REPLY_TYPE;
   public static final String REPLY_TO;
   public static final String USE_MESSAGE_ID_FOR_CORRELATION;
   public static final String MESSAGE_FORMAT;
   public static final String POOL_TYPE;
   public static final String POOL_MAX_SIZE;
   public static final String POOL_MIN_IDLE_ITEMS;
   public static final String POOL_MAX_IDLE_ITEMS;
   public static final String POOL_ITEM_WAITING_TIME;
   public static final String POOL_IDLE_TIMEOUT;
   public static final String POOL_EVICT_MAX_AGE;
   public static final String POOL_EVICT_INTERVAL;
   public static final String POOL_EVICT_BATCH_SIZE;
   public static final Set<String> SUPPORTED_OPTIONS;
   public static final Set<Pair<String, String>> CONNECTION_POOL_EXTRA_PROPERTIES;
   private static final String[] a;

   private JmsOutboundOptionsHelper() {
   }

   public static Map<String, String> getOptionsFrom(JmsEndpoint var0, Properties var1) {
      HashMap var2 = new HashMap();
      String[] var3 = a;
      var2.put(var3[26], var0.getReplyType().name());
      var2.put(var3[22], var0.getReplyToQueueName());
      var2.put(var3[9], String.valueOf(var0.isUseMessageIdForCorrelation()));
      var2.put(var3[11], var0.getOutboundMessageType().name());
      String var10001 = var3[15];
      String var10002;
      if (Boolean.TRUE.toString().equals(var1.getProperty(JmsConnection.PROP_CONNECTION_POOL_ENABLE))) {
         var10002 = var3[19];
      } else {
         var3 = a;
         var10002 = var3[1];
      }

      var2.put(var10001, var10002);
      var3 = a;
      if (var3[28].equals(var2.get(var3[15]))) {
         var2.put(var3[6], var1.getProperty(JmsConnection.PROP_CONNECTION_POOL_SIZE));
         var2.put(var3[0], var1.getProperty(JmsConnection.PROP_CONNECTION_MIN_IDLE));
         var2.put(var3[21], var1.getProperty(JmsConnection.PROP_CONNECTION_POOL_MAX_WAIT));
         var2.putAll(a(var1));
      } else {
         var3 = a;
         var2.put(var3[6], var1.getProperty(JmsConnection.PROP_SESSION_POOL_SIZE));
         var2.put(var3[3], var1.getProperty(JmsConnection.PROP_MAX_SESSION_IDLE));
         var2.put(var3[21], var1.getProperty(JmsConnection.PROP_SESSION_POOL_MAX_WAIT));
      }

      return var2;
   }

   public static void setOptionsTo(JmsEndpoint var0, Properties var1, Map<String, String> var2) {
      String[] var10 = a;
      String var3 = (String)var2.get(var10[26]);
      if (StringUtils.isNotEmpty(var3)) {
         var0.setReplyType(JmsReplyType.valueOf(var3));
      }

      var10 = a;
      String var4 = (String)var2.get(var10[22]);
      if (StringUtils.isNotEmpty(var4)) {
         var0.setReplyToQueueName(var4);
      }

      var10 = a;
      String var5 = (String)var2.get(var10[9]);
      if (StringUtils.isNotEmpty(var5)) {
         var0.setUseMessageIdForCorrelation(Boolean.parseBoolean(var5));
      }

      var10 = a;
      String var6 = (String)var2.get(var10[11]);
      if (StringUtils.isNotEmpty(var6)) {
         var0.setOutboundMessageType(JmsOutboundMessageType.valueOf(var6));
      }

      var10 = a;
      String var7 = (String)var2.get(var10[15]);
      String var8 = (String)var2.get(var10[6]);
      String var9 = (String)var2.get(var10[21]);
      if (var10[28].equals(var7)) {
         a(var1, var8, (String)var2.get(var10[0]), var9);
         a(var1, var2);
      } else {
         var10 = a;
         if (var10[17].equals(var7)) {
            b(var1, var8, (String)var2.get(var10[3]), var9);
         }
      }
   }

   public static void resetOptionsTo(JmsEndpoint var0, Properties var1) {
      var0.setReplyType(JmsReplyType.AUTOMATIC);
      var0.setReplyToQueueName("");
      var0.setUseMessageIdForCorrelation(false);
      var0.setOutboundMessageType(JmsOutboundMessageType.AUTOMATIC);
      var1.setProperty(JmsConnection.PROP_CONNECTION_POOL_ENABLE, Boolean.FALSE.toString());
      var1.setProperty(JmsConnection.PROP_CONNECTION_POOL_SIZE, String.valueOf(1));
      var1.setProperty(JmsConnection.PROP_CONNECTION_MIN_IDLE, String.valueOf(0));
      var1.setProperty(JmsConnection.PROP_CONNECTION_POOL_MAX_WAIT, String.valueOf(5000L));
      var1.setProperty(JmsConnection.PROP_SESSION_POOL_SIZE, String.valueOf(8));
      var1.setProperty(JmsConnection.PROP_MAX_SESSION_IDLE, String.valueOf(8));
      var1.setProperty(JmsConnection.PROP_SESSION_POOL_MAX_WAIT, String.valueOf(5000L));
   }

   private static Map<String, String> a(Properties var0) {
      HashMap var1 = new HashMap();
      CONNECTION_POOL_EXTRA_PROPERTIES.forEach(var2 -> {
         String var3 = var0.getProperty((String)var2.right);
         if (StringUtils.isNotEmpty(var3)) {
            var1.put((String)var2.left, var3);
         }
      });
      return var1;
   }

   private static void a(Properties var0, Map<String, String> var1) {
      CONNECTION_POOL_EXTRA_PROPERTIES.forEach(var2 -> {
         String var3 = (String)var1.get(var2.left);
         if (StringUtils.isNotEmpty(var3)) {
            var0.setProperty((String)var2.right, var3);
         }
      });
   }

   private static void a(Properties var0, String var1, String var2, String var3) {
      var0.setProperty(JmsConnection.PROP_CONNECTION_POOL_ENABLE, Boolean.TRUE.toString());
      if (StringUtils.isNotEmpty(var1)) {
         var0.setProperty(JmsConnection.PROP_CONNECTION_POOL_SIZE, var1);
      }

      if (StringUtils.isNotEmpty(var2)) {
         var0.setProperty(JmsConnection.PROP_CONNECTION_MIN_IDLE, var2);
      }

      if (StringUtils.isNotEmpty(var3)) {
         var0.setProperty(JmsConnection.PROP_CONNECTION_POOL_MAX_WAIT, var3);
      }
   }

   private static void b(Properties var0, String var1, String var2, String var3) {
      var0.setProperty(JmsConnection.PROP_CONNECTION_POOL_ENABLE, Boolean.FALSE.toString());
      if (StringUtils.isNotEmpty(var1)) {
         var0.setProperty(JmsConnection.PROP_SESSION_POOL_SIZE, var1);
      }

      if (StringUtils.isNotEmpty(var2)) {
         var0.setProperty(JmsConnection.PROP_MAX_SESSION_IDLE, var2);
      }

      if (StringUtils.isNotEmpty(var3)) {
         var0.setProperty(JmsConnection.PROP_SESSION_POOL_MAX_WAIT, var3);
      }
   }

   static {
      String[] var5 = new String[30];
      int var3 = 0;
      String var2 = "l.&YBKmgu\"TBRNj5\u001b_A[Jw>?H\u0007P\u001e\u0001hdqM\u0019l.&YBKmgu\"TBRNb#\u001b_A[Jw>?H\u0019l.&YBKmgu\"TBRNb#\u001b_A[Jw>?H\u001bl.&YBKmgu\"TBRFu21Oo_w`3\u0001RW[\u0010l.&YBKmgu ^]RzW4\u0014l.&YBKmgu\"TBRNb#\u0001RW[\u0012l.&YBKmgu ^]RzW\"\"^\u0017l.&YBKmgu\"TBRJw>?vLFBd>#l.&YBKmgu'HHsfp(3\\HwgE4 xBLqf73ODQm\u001cl.&YBKmgu\"TBRJw>?rIRfW2?^BKw\u0016l.&YBKmgu?^^Mbd>\u0014T_Sbw\u001al.&YBKmgu\"TBRFu21OdPwf)$ZA\u0019l.&YBKmgu\"TBRNj5\u001b_A[Jw>?H\u001al.&YBKmgu\"TBRFu21OdPwf)$ZA\u0011l.&YBKmgu\"TBRWz+7\u001cl.&YBKmgu\"TBRJw>?lLWwj55oDSf\u0007P\u001e\u0001hdqM#l.&YBKmgu'HHsfp(3\\HwgE4 xBLqf73ODQm\n@\u0014\u001cuh}WJ\u0014\u001c\u001bl.&YBKmgu\"TBRFu21Oo_w`3\u0001RW[\u001cl.&YBKmgu\"TBRJw>?lLWwj55oDSf\u0010l.&YBKmgu ^]RzW4\u0011l.&YBKmgu\"TBRWz+7\u001cl.&YBKmgu\"TBRJw>?rIRfW2?^BKw\u0016l.&YBKmgu?^^Mbd>\u0014T_Sbw\u0012l.&YBKmgu ^]RzW\"\"^\u0014l.&YBKmgu\"TBRNb#\u0001RW[";
      int var4 = "l.&YBKmgu\"TBRNj5\u001b_A[Jw>?H\u0007P\u001e\u0001hdqM\u0019l.&YBKmgu\"TBRNb#\u001b_A[Jw>?H\u0019l.&YBKmgu\"TBRNb#\u001b_A[Jw>?H\u001bl.&YBKmgu\"TBRFu21Oo_w`3\u0001RW[\u0010l.&YBKmgu ^]RzW4\u0014l.&YBKmgu\"TBRNb#\u0001RW[\u0012l.&YBKmgu ^]RzW\"\"^\u0017l.&YBKmgu\"TBRJw>?vLFBd>#l.&YBKmgu'HHsfp(3\\HwgE4 xBLqf73ODQm\u001cl.&YBKmgu\"TBRJw>?rIRfW2?^BKw\u0016l.&YBKmgu?^^Mbd>\u0014T_Sbw\u001al.&YBKmgu\"TBRFu21OdPwf)$ZA\u0019l.&YBKmgu\"TBRNj5\u001b_A[Jw>?H\u001al.&YBKmgu\"TBRFu21OdPwf)$ZA\u0011l.&YBKmgu\"TBRWz+7\u001cl.&YBKmgu\"TBRJw>?lLWwj55oDSf\u0007P\u001e\u0001hdqM#l.&YBKmgu'HHsfp(3\\HwgE4 xBLqf73ODQm\n@\u0014\u001cuh}WJ\u0014\u001c\u001bl.&YBKmgu\"TBRFu21Oo_w`3\u0001RW[\u001cl.&YBKmgu\"TBRJw>?lLWwj55oDSf\u0010l.&YBKmgu ^]RzW4\u0011l.&YBKmgu\"TBRWz+7\u001cl.&YBKmgu\"TBRJw>?rIRfW2?^BKw\u0016l.&YBKmgu?^^Mbd>\u0014T_Sbw\u0012l.&YBKmgu ^]RzW\"\"^\u0014l.&YBKmgu\"TBRNb#\u0001RW["
         .length();
      char var1 = 25;
      int var7 = -1;

      label24:
      while (true) {
         byte var10000 = 93;
         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) {
                     a = var5;
                     String[] var10 = a;
                     POOL_MAX_SIZE = a[6];
                     MESSAGE_FORMAT = var10[11];
                     CONNECTION_POOL_TYPE = var10[28];
                     POOL_EVICT_INTERVAL = var10[12];
                     REPLY_TO = var10[22];
                     POOL_EVICT_MAX_AGE = var10[8];
                     REPLY_TYPE = var10[26];
                     POOL_MIN_IDLE_ITEMS = var10[0];
                     POOL_MAX_IDLE_ITEMS = var10[3];
                     SESSION_POOL_TYPE = var10[17];
                     POOL_TYPE = var10[15];
                     POOL_ITEM_WAITING_TIME = var10[21];
                     POOL_EVICT_BATCH_SIZE = var10[4];
                     USE_MESSAGE_ID_FOR_CORRELATION = var10[9];
                     POOL_IDLE_TIMEOUT = var10[24];
                     String[] var13 = new String[13];
                     String[] var8 = a;
                     var13[0] = var8[7];
                     var13[1] = var8[5];
                     var13[2] = var8[18];
                     var13[3] = var8[25];
                     var13[4] = var8[23];
                     var13[5] = var8[27];
                     var13[6] = var8[13];
                     var13[7] = var8[2];
                     var13[8] = var8[16];
                     var13[9] = var8[10];
                     var13[10] = var8[29];
                     var13[11] = var8[14];
                     var13[12] = var8[20];
                     SUPPORTED_OPTIONS = new HashSet<>(Arrays.asList(var13));
                     CONNECTION_POOL_EXTRA_PROPERTIES = new HashSet<>(
                        Arrays.asList(
                           Pair.pair(var8[24], JmsConnection.PROP_CONNECTION_IDLE_TIMEOUT),
                           Pair.pair(var8[8], JmsConnection.PROP_CONNECTION_EVICTABLE_TIME),
                           Pair.pair(var8[12], JmsConnection.PROP_CONNECTION_POOL_EVICT_INTERVAL),
                           Pair.pair(var8[4], JmsConnection.PROP_CONNECTION_POOL_EVICT_BATCH_SIZE)
                        )
                     );
                     return;
                  }

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

                  var2 = "~*\"KVCit*\"\u0017R\u0010\u0018g|uSYK\u001cj|ltI\u0000\u0001Hrx|Z\u0000";
                  var4 = "~*\"KVCit*\"\u0017R\u0010\u0018g|uSYK\u001cj|ltI\u0000\u0001Hrx|Z\u0000".length();
                  var1 = '\n';
                  var7 = -1;
            }

            var10000 = 99;
            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] ^ 94);
      }

      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 -> 94;
            case 1 -> 6;
            case 2 -> 15;
            case 3 -> 102;
            case 4 -> 112;
            case 5 -> 99;
            default -> 94;
         });
      }

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