package com.l7tech.gateway.pm2.graphql.beans.entity;

import com.l7tech.gateway.common.transport.SsgConnector;
import com.l7tech.gateway.common.transport.TransportDescriptor;
import com.l7tech.gateway.common.transport.SsgConnector.Endpoint;
import io.leangen.graphql.annotations.GraphQLQuery;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class TransportProtocolDTO {
   private final TransportDescriptor a;
   private final String b;
   private final String c;
   private final String d;
   private final boolean e;
   private final String f;
   private ProtocolTabsDTO g;
   private ProtocolFeaturesDTO h;
   private ServiceResolutionDTO i;
   private TLSConfigurationDTO j;
   private CustomPanelDTO k;
   private static final String[] l;

   public TransportProtocolDTO(TransportDescriptor var1) {
      this.a = var1;
      this.b = var1.getScheme();
      this.c = var1.getDisplayName();
      this.d = var1.getDescription();
      this.e = var1.getModularAssertionClassname() != null;
      this.f = var1.getModularAssertionClassname();
   }

   @GraphQLQuery(name = "scheme", description = "Protocol scheme identifier (e.g., 'HTTPS', 'HTTP2')")
   public String getScheme() {
      return this.b;
   }

   @GraphQLQuery(name = "displayName", description = "Human-readable protocol name")
   public String getDisplayName() {
      return this.c;
   }

   @GraphQLQuery(name = "description", description = "Protocol description")
   public String getDescription() {
      return this.d;
   }

   @GraphQLQuery(name = "modular", description = "Whether this is a modular connector")
   public boolean isModular() {
      return this.e;
   }

   @GraphQLQuery(name = "modularAssertionClassname", description = "Classname of the modular assertion (if modular)")
   public String getModularAssertionClassname() {
      return this.f;
   }

   @GraphQLQuery(name = "tabs", description = "Configuration for which tabs should be visible")
   public ProtocolTabsDTO getTabs() {
      if (this.g == null) {
         this.g = this.b();
      }

      return this.g;
   }

   @GraphQLQuery(name = "features", description = "Configuration for enabled features checkboxes")
   public ProtocolFeaturesDTO getFeatures() {
      if (this.h == null) {
         this.h = this.c();
      }

      return this.h;
   }

   @GraphQLQuery(name = "serviceResolution", description = "Configuration for service resolution options")
   public ServiceResolutionDTO getServiceResolution() {
      if (this.i == null) {
         this.i = this.d();
      }

      return this.i;
   }

   @GraphQLQuery(name = "tlsConfiguration", description = "TLS/SSL configuration options")
   public TLSConfigurationDTO getTlsConfiguration() {
      if (this.j == null) {
         this.j = this.e();
      }

      return this.j;
   }

   @GraphQLQuery(name = "customPanel", description = "Custom panel configuration for 'Other Settings' tab")
   public CustomPanelDTO getCustomPanel() {
      if (this.k == null) {
         this.k = this.f();
      }

      return this.k;
   }

   TransportDescriptor a() {
      return this.a;
   }

   private ProtocolTabsDTO b() {
      boolean var1 = this.a.isUsesTls();
      boolean var2 = this.a.isFtpBased();
      boolean var3 = this.a.isHttpBased();
      boolean var4 = this.a.isHttpBased() || this.a.isSupportsPrivateThreadPool();
      boolean var5 = this.a.getCustomPropertiesPanelClassname() != null;
      return new ProtocolTabsDTO(var1, var3, var2, var4, var5);
   }

   private ProtocolFeaturesDTO c() {
      ArrayList var1 = new ArrayList();
      if (this.a.getSupportedEndpoints() != null) {
         for (Endpoint var3 : this.a.getSupportedEndpoints()) {
            var1.add(var3.name());
         }
      }

      return new ProtocolFeaturesDTO(var1, this.a.isSupportsPrivateThreadPool(), this.a.isDisableBuiltInServices());
   }

   private ServiceResolutionDTO d() {
      return new ServiceResolutionDTO(
         this.a.isSupportsHardwiredServiceResolution(),
         this.a.isRequiresHardwiredServiceResolutionAlways(),
         this.a.isRequiresHardwiredServiceResolutionForNonXml(),
         this.a.isSupportsSpecifiedContentType(),
         this.a.isRequiresSpecifiedContentType()
      );
   }

   private TLSConfigurationDTO e() {
      List var1 = this.a.getSupportedTlsVersions() != null ? new ArrayList(this.a.getSupportedTlsVersions()) : Collections.emptyList();
      List var2 = new ArrayList();
      if (this.a.getEnabledCipherSuites() != null) {
         var2 = Arrays.asList(this.a.getEnabledCipherSuites());
      }

      return new TLSConfigurationDTO(this.a.isUsesTls(), var1, var2);
   }

   private CustomPanelDTO f() {
      String var1 = this.a.getCustomPropertiesPanelClassname();
      if (var1 == null) {
         return new CustomPanelDTO(false, null, null, Collections.emptyList());
      }

      String var2 = this.a(var1);
      List var3 = this.b(var2);
      return new CustomPanelDTO(true, var2, var1, var3);
   }

   private String a(String var1) {
      if (var1 == null) {
         return null;
      }

      String[] var2 = l;
      if (var1.contains(var2[15])) {
         return var2[19];
      }

      var2 = l;
      if (var1.contains(var2[22])) {
         return var2[10];
      }

      var2 = l;
      return var1.contains(var2[27]) ? var2[7] : l[16];
   }

   private List<CustomPropertyDTO> b(String var1) {
      if (var1 == null) {
         return Collections.emptyList();
      }

      String[] var4;

      return switch (var1) {
         case var4[24] -> this.g();
         case var4[13] -> this.h();
         case l[12] -> this.i();
         default -> Collections.emptyList();
      };
   }

   private List<CustomPropertyDTO> g() {
      ArrayList var1 = new ArrayList();
      String[] var2 = l;
      if (var2[0].equalsIgnoreCase(this.b)) {
         var1.add(
            new CustomPropertyDTO(
               SsgConnector.PROP_ENABLE_WEBSOCKET,
               var2[3],
               var2[18],
               CustomPropertyDTO.PropertyType.BOOLEAN,
               CustomPropertyDTO.ControlType.CHECKBOX,
               null,
               false,
               null,
               new PropertyValidationDTO(false, null, null, null, null)
            )
         );
      }

      return var1;
   }

   private List<CustomPropertyDTO> h() {
      ArrayList var1 = new ArrayList();
      String[] var2 = l;
      var1.add(
         new CustomPropertyDTO(
            var2[25],
            var2[20],
            var2[21],
            CustomPropertyDTO.PropertyType.INTEGER,
            CustomPropertyDTO.ControlType.SPINNER,
            var2[11],
            null,
            null,
            new PropertyValidationDTO(false, 1, Integer.MAX_VALUE, null, var2[2])
         )
      );
      var1.add(
         new CustomPropertyDTO(
            var2[1],
            var2[23],
            var2[17],
            CustomPropertyDTO.PropertyType.INTEGER,
            CustomPropertyDTO.ControlType.SPINNER,
            var2[26],
            null,
            null,
            new PropertyValidationDTO(false, 0, Integer.MAX_VALUE, null, var2[14])
         )
      );
      var1.add(
         new CustomPropertyDTO(
            var2[6],
            var2[5],
            var2[4],
            CustomPropertyDTO.PropertyType.INTEGER,
            CustomPropertyDTO.ControlType.SPINNER,
            var2[8],
            null,
            null,
            new PropertyValidationDTO(false, 1, Integer.MAX_VALUE, null, var2[9])
         )
      );
      return var1;
   }

   private List<CustomPropertyDTO> i() {
      return Collections.emptyList();
   }

   static {
      String[] var5 = new String[28];
      int var3 = 0;
      String var2 = "\u0012`\u001c}&\u001b2@<]Ge(5Z&H\u0016?\"5Z\u0001I\u0019.\u001f3Y-B\u0000?\u001a\u0017A;YU).zUh]\u001a8\".]>HU\"%.Q/H\u0007\u0010\u001fZ)O\u0019.k\rQ*~\u001a( ?@<\u0017U0D\u0018>&zZ=@\u0017.9z[.\r=\u001f\u001f\n\u001bz\r\u0016$%4Q+Y\u001c$%)\u0014)A\u0019$<?Ph\u0005\u0011.-;A$YOkzj\u0004x\u0004\u0013\u0017U0D\u0018>&zw'C\u001b.(.]'C\u0006\u00142@<]Ge&;L\u000bB\u001b%.9@!B\u001b8\u0003<@8\u0004k\u0004x\u001d\u001a\u0017A;YU).zUh]\u001a8\".]>HU\"%.Q/H\u0007\u00052@<]G\u0003k\u0004x\u0003<@8\u00052@<]G\u001e\u0017A;YU).zUhC\u001a%f4Q/L\u0001\"=?\u0014!C\u0001.,?F\u001f\u0012@<]!9*4G8B\u0007?\u0004.\\-_&.?.]&J\u0006\u001b*4Q$\u00069A;Y\u001a&I\u000e]%HU\"%zG-N\u001a%/)\u0014*H\u0013$9?\u0014)CU\"/6Qhe!\u001f\u001bu\u0006hN\u001a%%?W<D\u001a%k3GhN\u0019$8?Ph\u0005\u0011.-;A$YOkxj\u0004a;\u001fZ)O\u0019.k\rQ*~\u001a( ?@h]\u0007$?5W'AU8>*D'_\u0001k$4\u0014<E\u001c8k\u0012`\u001c}&k'3G<H\u001bk;5F<\u00042@<]\u001a\u0017U0D\u0018>&zw'C\u0016>9(Q&YU\u0018?(Q)@\u0006I\u0017U0D\u0018>&zZ=@\u0017.9z[.\r\u0016$%9A:_\u0010%?zG<_\u0010*&)\u00148H\u0007k\u0003\u000e`\u0018\u0002Gk(5Z&H\u0016?\"5Zh\u0005\u0011.-;A$YOkzj\u0004a\u001d\u0012@<]G\u001f9;Z;]\u001a9?\nF']\u00109?3Q;}\u0014%.6!\u0019[&C\u0010(?3[&\r</'?\u0014\u001cD\u0018.$/@h\u0005\u0006.(5Z,^\\\u00042@<]\u001a2@<]Ge&;L\u000bB\u001b(>(F-C\u0001\u0018?(Q)@\u0006";
      int var4 = "\u0012`\u001c}&\u001b2@<]Ge(5Z&H\u0016?\"5Z\u0001I\u0019.\u001f3Y-B\u0000?\u001a\u0017A;YU).zUh]\u001a8\".]>HU\"%.Q/H\u0007\u0010\u001fZ)O\u0019.k\rQ*~\u001a( ?@<\u0017U0D\u0018>&zZ=@\u0017.9z[.\r=\u001f\u001f\n\u001bz\r\u0016$%4Q+Y\u001c$%)\u0014)A\u0019$<?Ph\u0005\u0011.-;A$YOkzj\u0004x\u0004\u0013\u0017U0D\u0018>&zw'C\u001b.(.]'C\u0006\u00142@<]Ge&;L\u000bB\u001b%.9@!B\u001b8\u0003<@8\u0004k\u0004x\u001d\u001a\u0017A;YU).zUh]\u001a8\".]>HU\"%.Q/H\u0007\u00052@<]G\u0003k\u0004x\u0003<@8\u00052@<]G\u001e\u0017A;YU).zUhC\u001a%f4Q/L\u0001\"=?\u0014!C\u0001.,?F\u001f\u0012@<]!9*4G8B\u0007?\u0004.\\-_&.?.]&J\u0006\u001b*4Q$\u00069A;Y\u001a&I\u000e]%HU\"%zG-N\u001a%/)\u0014*H\u0013$9?\u0014)CU\"/6Qhe!\u001f\u001bu\u0006hN\u001a%%?W<D\u001a%k3GhN\u0019$8?Ph\u0005\u0011.-;A$YOkxj\u0004a;\u001fZ)O\u0019.k\rQ*~\u001a( ?@h]\u0007$?5W'AU8>*D'_\u0001k$4\u0014<E\u001c8k\u0012`\u001c}&k'3G<H\u001bk;5F<\u00042@<]\u001a\u0017U0D\u0018>&zw'C\u0016>9(Q&YU\u0018?(Q)@\u0006I\u0017U0D\u0018>&zZ=@\u0017.9z[.\r\u0016$%9A:_\u0010%?zG<_\u0010*&)\u00148H\u0007k\u0003\u000e`\u0018\u0002Gk(5Z&H\u0016?\"5Zh\u0005\u0011.-;A$YOkzj\u0004a\u001d\u0012@<]G\u001f9;Z;]\u001a9?\nF']\u00109?3Q;}\u0014%.6!\u0019[&C\u0010(?3[&\r</'?\u0014\u001cD\u0018.$/@h\u0005\u0006.(5Z,^\\\u00042@<]\u001a2@<]Ge&;L\u000bB\u001b(>(F-C\u0001\u0018?(Q)@\u0006"
         .length();
      char var1 = 5;
      int var7 = -1;

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

         while (true) {
            String var12 = a(c(var10000));
            switch (var10001) {
               case 0:
                  var5[var3++] = var12;
                  if ((var7 += var1) >= var4) {
                     l = var5;
                     return;
                  }

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

                  var2 = "i\u0004x\u001b\u001c@8y\u0007*%)D'_\u0001\u001b95D-_\u0001\".)d)C\u0010'";
                  var4 = "i\u0004x\u001b\u001c@8y\u0007*%)D'_\u0001\u001b95D-_\u0001\".)d)C\u0010'".length();
                  var1 = 3;
                  var7 = -1;
            }

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

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

      return var10000;
   }

   private static String a(char[] var0) {
      int var10002 = var0.length;
      char[] var10001 = var0;
      int var10000 = var10002;

      for (int var1 = 0; var10000 > var1; var1++) {
         var10001[var1] = (char)(var10001[var1] ^ switch (var1 % 7) {
            case 0 -> 90;
            case 1 -> 52;
            case 2 -> 72;
            case 3 -> 45;
            case 4 -> 117;
            case 5 -> 75;
            default -> 75;
         });
      }

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