package com.l7tech.common.io.failover;

import java.util.HashMap;
import java.util.Map;

public class OrderedStickyFailoverStrategy<ST> extends AbstractFailoverStrategy<ST> {
   public static final long DEFAULT_PROBE_TIME = 900000L;
   private int current = 0;
   private long lastProbeTime = -1L;
   private long probeTime = -1L;
   private int probeDelay;
   private int probing = -1;
   private int nextdown = -1;
   private Map<ST, Integer> index = new HashMap<>();
   static final long serialVersionUID = 1412945330603459202L;
   private static final String[] b;

   public OrderedStickyFailoverStrategy(ST[] var1) {
      super((ST[])var1);

      for (int var2 = 0; var2 < var1.length; var2++) {
         Object var3 = var1[var2];
         this.index.put((ST)var3, var2);
      }
   }

   public long getProbeTime() {
      return this.probeTime;
   }

   public void setProbeTime(long 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: lload 1
      // 01: lconst_1
      // 02: lcmp
      // 03: ifge 26
      // 06: lload 1
      // 07: ldc2_w -1
      // 0a: lcmp
      // 0b: ifeq 26
      // 0e: goto 15
      // 11: invokestatic com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 14: athrow
      // 15: new java/lang/IllegalArgumentException
      // 18: dup
      // 19: getstatic com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.b [Ljava/lang/String;
      // 1c: bipush 4
      // 1d: aaload
      // 1e: invokespecial java/lang/IllegalArgumentException.<init> (Ljava/lang/String;)V
      // 21: athrow
      // 22: invokestatic com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 25: athrow
      // 26: aload 0
      // 27: lload 1
      // 28: putfield com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.probeTime J
      // 2b: return
      // try (0 -> 8): 9 java/lang/IllegalArgumentException
      // try (4 -> 18): 18 java/lang/IllegalArgumentException
   }

   @Override
   public ST selectService() {
      // $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/common/io/failover/OrderedStickyFailoverStrategy.current I
      // 04: ifle 99
      // 07: aload 0
      // 08: getfield com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.probing I
      // 0b: iflt 62
      // 0e: goto 15
      // 11: invokestatic com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 14: athrow
      // 15: aload 0
      // 16: dup
      // 17: getfield com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.probeDelay I
      // 1a: bipush 1
      // 1b: isub
      // 1c: dup_x1
      // 1d: putfield com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.probeDelay I
      // 20: ifge 99
      // 23: goto 2a
      // 26: invokestatic com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 29: athrow
      // 2a: aload 0
      // 2b: aload 0
      // 2c: getfield com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.servers [Ljava/lang/Object;
      // 2f: arraylength
      // 30: putfield com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.probeDelay I
      // 33: aload 0
      // 34: dup
      // 35: getfield com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.probing I
      // 38: bipush 1
      // 39: iadd
      // 3a: dup_x1
      // 3b: putfield com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.probing I
      // 3e: aload 0
      // 3f: getfield com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.current I
      // 42: if_icmpge 5a
      // 45: goto 4c
      // 48: invokestatic com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 4b: athrow
      // 4c: aload 0
      // 4d: getfield com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.servers [Ljava/lang/Object;
      // 50: aload 0
      // 51: getfield com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.probing I
      // 54: aaload
      // 55: areturn
      // 56: invokestatic com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 59: athrow
      // 5a: aload 0
      // 5b: bipush -1
      // 5c: putfield com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.probing I
      // 5f: goto 99
      // 62: aload 0
      // 63: getfield com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.timeSource Lcom/l7tech/util/TimeSource;
      // 66: invokevirtual com/l7tech/util/TimeSource.currentTimeMillis ()J
      // 69: lstore 1
      // 6a: lload 1
      // 6b: aload 0
      // 6c: getfield com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.lastProbeTime J
      // 6f: lsub
      // 70: aload 0
      // 71: invokevirtual com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.getProbeInterval ()J
      // 74: lcmp
      // 75: ifle 99
      // 78: aload 0
      // 79: lload 1
      // 7a: putfield com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.lastProbeTime J
      // 7d: aload 0
      // 7e: bipush 0
      // 7f: putfield com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.probing I
      // 82: aload 0
      // 83: aload 0
      // 84: getfield com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.servers [Ljava/lang/Object;
      // 87: arraylength
      // 88: putfield com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.probeDelay I
      // 8b: aload 0
      // 8c: getfield com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.servers [Ljava/lang/Object;
      // 8f: aload 0
      // 90: getfield com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.probing I
      // 93: aaload
      // 94: areturn
      // 95: invokestatic com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 98: athrow
      // 99: aload 0
      // 9a: getfield com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.current I
      // 9d: aload 0
      // 9e: getfield com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.servers [Ljava/lang/Object;
      // a1: arraylength
      // a2: if_icmplt e3
      // a5: aload 0
      // a6: getfield com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.nextdown I
      // a9: iflt c6
      // ac: goto b3
      // af: invokestatic com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // b2: athrow
      // b3: aload 0
      // b4: getfield com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.nextdown I
      // b7: aload 0
      // b8: getfield com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.servers [Ljava/lang/Object;
      // bb: arraylength
      // bc: if_icmplt d2
      // bf: goto c6
      // c2: invokestatic com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // c5: athrow
      // c6: aload 0
      // c7: bipush 0
      // c8: putfield com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.nextdown I
      // cb: goto d2
      // ce: invokestatic com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // d1: athrow
      // d2: aload 0
      // d3: getfield com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.servers [Ljava/lang/Object;
      // d6: aload 0
      // d7: dup
      // d8: getfield com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.nextdown I
      // db: dup_x1
      // dc: bipush 1
      // dd: iadd
      // de: putfield com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.nextdown I
      // e1: aaload
      // e2: areturn
      // e3: aload 0
      // e4: getfield com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.servers [Ljava/lang/Object;
      // e7: aload 0
      // e8: getfield com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.current I
      // eb: aaload
      // ec: areturn
      // try (0 -> 6): 7 java/lang/IllegalArgumentException
      // try (3 -> 17): 18 java/lang/IllegalArgumentException
      // try (9 -> 35): 36 java/lang/IllegalArgumentException
      // try (20 -> 44): 44 java/lang/IllegalArgumentException
      // try (54 -> 79): 79 java/lang/IllegalArgumentException
      // try (81 -> 90): 91 java/lang/IllegalArgumentException
      // try (87 -> 99): 100 java/lang/IllegalArgumentException
      // try (93 -> 105): 106 java/lang/IllegalArgumentException
   }

   private int index(ST var1) {
      Integer var2 = this.index.get(var1);

      try {
         if (var2 == null) {
            throw new IllegalArgumentException(b[3] + var1 + b[2]);
         }
      } catch (IllegalArgumentException var3) {
         throw a(var3);
      }

      return var2;
   }

   @Override
   public void reportFailure(ST 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: aload 1
      // 02: invokevirtual com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.index (Ljava/lang/Object;)I
      // 05: aload 0
      // 06: getfield com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.current I
      // 09: if_icmpne 50
      // 0c: aload 0
      // 0d: getfield com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.current I
      // 10: aload 0
      // 11: getfield com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.servers [Ljava/lang/Object;
      // 14: arraylength
      // 15: if_icmplt 2b
      // 18: goto 1f
      // 1b: invokestatic com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 1e: athrow
      // 1f: aload 0
      // 20: bipush 0
      // 21: putfield com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.current I
      // 24: goto 50
      // 27: invokestatic com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 2a: athrow
      // 2b: aload 0
      // 2c: dup
      // 2d: getfield com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.current I
      // 30: bipush 1
      // 31: iadd
      // 32: putfield com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.current I
      // 35: aload 0
      // 36: getfield com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.lastProbeTime J
      // 39: lconst_0
      // 3a: lcmp
      // 3b: ifge 50
      // 3e: aload 0
      // 3f: aload 0
      // 40: getfield com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.timeSource Lcom/l7tech/util/TimeSource;
      // 43: invokevirtual com/l7tech/util/TimeSource.currentTimeMillis ()J
      // 46: putfield com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.lastProbeTime J
      // 49: goto 50
      // 4c: invokestatic com/l7tech/common/io/failover/OrderedStickyFailoverStrategy.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 4f: athrow
      // 50: return
      // try (0 -> 12): 13 java/lang/IllegalArgumentException
      // try (6 -> 19): 19 java/lang/IllegalArgumentException
      // try (21 -> 37): 38 java/lang/IllegalArgumentException
   }

   @Override
   public void reportSuccess(ST var1) {
      int var2 = this.index((ST)var1);

      try {
         if (var2 < this.current) {
            this.current = var2;
         }
      } catch (IllegalArgumentException var3) {
         throw a(var3);
      }
   }

   @Override
   public String getName() {
      return b[0];
   }

   @Override
   public String getDescription() {
      return b[1];
   }

   private long getProbeInterval() {
      try {
         if (this.probeTime > 0L) {
            return this.probeTime;
         }
      } catch (IllegalArgumentException var1) {
         throw a(var1);
      }

      return super.getProbeInterval(900000L);
   }

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

   static {
      String[] var5 = new String[5];
      int var3 = 0;
      String var2 = "zx`#3,\u0017\u001cZx`#3,\u00175Yp/\"\"\n5}m2)i5tch)7,\u0001(2*m5a'\u001ca*o(.>\u001d5~kf5!\u001af*b'(%\u001ccovf2=\u0001t~a!8";
      int var4 = "zx`#3,\u0017\u001cZx`#3,\u00175Yp/\"\"\n5}m2)i5tch)7,\u0001(2*m5a'\u001ca*o(.>\u001d5~kf5!\u001af*b'(%\u001ccovf2=\u0001t~a!8".length();
      char var1 = 7;
      int var7 = -1;

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

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

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

                  var2 = "\u0004'$#wiD&&\"f$+\u001a =.aaX_=*anq\u007fBp-$#tcE9;(ua";
                  var4 = "\u0004'$#wiD&&\"f$+\u001a =.aaX_=*anq\u007fBp-$#tcE9;(ua".length();
                  var1 = '\r';
                  var7 = -1;
            }

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

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

      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 -> 72;
            case 1 -> 87;
            case 2 -> 89;
            case 3 -> 27;
            case 4 -> 28;
            case 5 -> 20;
            default -> 46;
         });
      }

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