package com.l7tech.policy.assertion;

import com.l7tech.common.io.XmlUtil;
import com.l7tech.common.mime.ContentTypeHeader;
import com.l7tech.objectmodel.ExternalEntityHeader;
import com.l7tech.objectmodel.migration.Migration;
import com.l7tech.objectmodel.migration.MigrationMappingSelection;
import com.l7tech.objectmodel.migration.PropertyResolver;
import com.l7tech.policy.validator.AssertionValidatorSupport;
import com.l7tech.policy.variable.Syntax;
import com.l7tech.policy.wsp.Java5EnumTypeMapping;
import com.l7tech.policy.wsp.SimpleTypeMappingFinder;
import com.l7tech.util.NameValuePair;
import java.io.IOException;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import org.xml.sax.SAXException;

public class CustomizeErrorResponseAssertion extends Assertion implements UsesVariables {
   private static final String META_INITIALIZED;
   private CustomizeErrorResponseAssertion.ErrorLevel errorLevel = CustomizeErrorResponseAssertion.ErrorLevel.TEMPLATE_RESPONSE;
   private String httpStatus;
   private String contentType;
   private String content;
   private boolean includePolicyDownloadURL;
   private NameValuePair[] extraHeaders;
   static final long serialVersionUID = 7391894012493629510L;
   private static final String[] b;

   public CustomizeErrorResponseAssertion() {
      String[] var1 = b;
      this.httpStatus = var1[4];
      this.contentType = var1[1];
      this.content = var1[9];
      this.includePolicyDownloadURL = false;
      this.extraHeaders = null;
   }

   public CustomizeErrorResponseAssertion.ErrorLevel getErrorLevel() {
      return this.errorLevel;
   }

   public void setErrorLevel(CustomizeErrorResponseAssertion.ErrorLevel var1) {
      this.errorLevel = var1;
   }

   public String getHttpStatus() {
      return this.httpStatus;
   }

   public void setHttpStatus(String var1) {
      this.httpStatus = var1;
   }

   public String getContentType() {
      return this.contentType;
   }

   public void setContentType(String var1) {
      this.contentType = var1;
   }

   public String getContent() {
      return this.content;
   }

   public void setContent(String var1) {
      this.content = var1;
   }

   public boolean isIncludePolicyDownloadURL() {
      return this.includePolicyDownloadURL;
   }

   public void setIncludePolicyDownloadURL(boolean var1) {
      this.includePolicyDownloadURL = var1;
   }

   public NameValuePair[] getExtraHeaders() {
      return this.extraHeaders;
   }

   public void setExtraHeaders(NameValuePair[] var1) {
      this.extraHeaders = var1;
   }

   @Migration(
      mapName = MigrationMappingSelection.NONE,
      mapValue = MigrationMappingSelection.REQUIRED,
      export = false,
      valueType = ExternalEntityHeader.ValueType.TEXT_ARRAY,
      resolver = PropertyResolver.Type.SERVER_VARIABLE
   )
   @Override
   public String[] getVariablesUsed() {
      HashSet var1 = new HashSet();
      this.collectVars(var1, this.httpStatus);
      this.collectVars(var1, this.contentType);
      this.collectVars(var1, this.content);
      if (this.extraHeaders != null) {
         for (NameValuePair var5 : this.extraHeaders) {
            this.collectVars(var1, var5.getKey());
            this.collectVars(var1, var5.getValue());
         }
      }

      return var1.toArray(new String[var1.size()]);
   }

   @Override
   public AssertionMetadata meta() {
      DefaultAssertionMetadata var1 = this.defaultMeta();
      if (Boolean.TRUE.equals(var1.get(META_INITIALIZED))) {
         return var1;
      }

      String[] var2 = b;
      var1.put(var2[17], var2[12]);
      var1.put(var2[5], var2[3]);
      var1.put(var2[21], new String[]{var2[15]});
      var1.put(var2[6], var2[7]);
      var1.put(var2[20], var2[8]);
      var1.put(var2[10], var2[14]);
      var1.put(var2[19], var2[16]);
      var1.put(var2[0], var2[11]);
      var1.put(var2[13], new SimpleTypeMappingFinder(Arrays.asList(new Java5EnumTypeMapping(CustomizeErrorResponseAssertion.ErrorLevel.class, var2[18]))));
      var1.put(META_INITIALIZED, Boolean.TRUE);
      return var1;
   }

   private void collectVars(Set<String> var1, String var2) {
      if (var2 != null && !var2.isEmpty()) {
         String[] var3 = Syntax.getReferencedNames(var2);
         var1.addAll(Arrays.asList(var3));
      }
   }

   static {
      String[] var5 = new String[22];
      int var3 = 0;
      String var2 = "\u000e\u0019>\u007fD@3\u001f\u001a;rFM\n\f5>wTJ\u000b\u001f\u001b7\u0019\n\u0013*b\bI\t\u001f\u001f<-\u0007Z\r\u001f\u0004!sS\u00040*0\u007f.\u0014P\u001b7bF]\u0004\n\u0017\u001bxNM\f\u001f\u001a;lB]D=\u0019<pN^\u0010\f\u0013rbO\\E\f\u0013!fHW\u0016\u001bV?sTJ\u0004\u0019\u0013rbH\u0019\u0007\u001bV'eB]E\u0017\u0018ruFJ\u0000^\u001946WV\t\u0017\u0015+6AX\f\u0012\u0003 s\t\u0003KFb\u000b\u001a\u0013!uUP\u0015\n\u001f=x\u000f\u000e\u0017>sSM\u00000\u00196snZ\n\u0010+\u001d\u0019?9K\u000e\u0011\u001b\u0015:9DV\u000b\r\u0019>s\bK\u0000\r\u0019'dD\\\u0016Q\u0012;eDV\u000b\u0010\u00131b\t^\f\u0018\u0019;\u0004 yU\u00197\u001b\u0005\"yIJ\u0000^& yW\\\u0017\n\u001f7e\u00157\u0018&sUW\u0004\u0012V\u0001sUO\u0000\fV\u0017dUV\u0017\u0019\u000e\u0004=fBK\u0011\u0017\u0013!SCP\u0011\u0011\u0004\u0011zFJ\u0016\u0010\u0017?sd\u001d\u0019?8K\u000e\u0011\u001b\u0015:8WV\t\u0017\u0015+8FJ\u0016\u001b\u0004&\u007fHWK=\u0003!bHT\f\u0004\u0013\u0017dUV\u0017,\u0013!fHW\u0016\u001b7!eBK\u0011\u0017\u0019<2dL\u0016\n\u0019?\u007f]\\ \f\u0004=du\\\u0016\u000e\u0019<eBx\u0016\r\u0013 bNV\u000b(\u0017>\u007fCX\u0011\u0011\u0004\u0018=\u0003!bHT\f\u0004\u0013rSUK\n\fV\u0000sTI\n\u0010\u00057\u0010\t\u0005\"ER[\u0011\u0007\u00067PNW\u0001\u001b\u0004@\u001d\u0019?8K\u000e\u0011\u001b\u0015:8DV\u000b\r\u0019>s\tI\u0004\u0010\u0013>e\tz\u0010\r\u0002={NC\u0000;\u0004 yUk\u0000\r\u0006=xT\\5\f\u0019\"sUM\f\u001b\u0005\u0016\u007fFU\n\u0019\u0005\u001f\u00036\u007fS\u0004\u001f\u0003&y\t\r\u001e=dSw\u0004\u0013\u0013\n\u001b\u0004 yUu\u0000\b\u0013>\u0015\u000e\u0019>\u007fD@$\u001a\u0000;uBz\t\u001f\u0005!xFT\u0000";
      int var4 = "\u000e\u0019>\u007fD@3\u001f\u001a;rFM\n\f5>wTJ\u000b\u001f\u001b7\u0019\n\u0013*b\bI\t\u001f\u001f<-\u0007Z\r\u001f\u0004!sS\u00040*0\u007f.\u0014P\u001b7bF]\u0004\n\u0017\u001bxNM\f\u001f\u001a;lB]D=\u0019<pN^\u0010\f\u0013rbO\\E\f\u0013!fHW\u0016\u001bV?sTJ\u0004\u0019\u0013rbH\u0019\u0007\u001bV'eB]E\u0017\u0018ruFJ\u0000^\u001946WV\t\u0017\u0015+6AX\f\u0012\u0003 s\t\u0003KFb\u000b\u001a\u0013!uUP\u0015\n\u001f=x\u000f\u000e\u0017>sSM\u00000\u00196snZ\n\u0010+\u001d\u0019?9K\u000e\u0011\u001b\u0015:9DV\u000b\r\u0019>s\bK\u0000\r\u0019'dD\\\u0016Q\u0012;eDV\u000b\u0010\u00131b\t^\f\u0018\u0019;\u0004 yU\u00197\u001b\u0005\"yIJ\u0000^& yW\\\u0017\n\u001f7e\u00157\u0018&sUW\u0004\u0012V\u0001sUO\u0000\fV\u0017dUV\u0017\u0019\u000e\u0004=fBK\u0011\u0017\u0013!SCP\u0011\u0011\u0004\u0011zFJ\u0016\u0010\u0017?sd\u001d\u0019?8K\u000e\u0011\u001b\u0015:8WV\t\u0017\u0015+8FJ\u0016\u001b\u0004&\u007fHWK=\u0003!bHT\f\u0004\u0013\u0017dUV\u0017,\u0013!fHW\u0016\u001b7!eBK\u0011\u0017\u0019<2dL\u0016\n\u0019?\u007f]\\ \f\u0004=du\\\u0016\u000e\u0019<eBx\u0016\r\u0013 bNV\u000b(\u0017>\u007fCX\u0011\u0011\u0004\u0018=\u0003!bHT\f\u0004\u0013rSUK\n\fV\u0000sTI\n\u0010\u00057\u0010\t\u0005\"ER[\u0011\u0007\u00067PNW\u0001\u001b\u0004@\u001d\u0019?8K\u000e\u0011\u001b\u0015:8DV\u000b\r\u0019>s\tI\u0004\u0010\u0013>e\tz\u0010\r\u0002={NC\u0000;\u0004 yUk\u0000\r\u0006=xT\\5\f\u0019\"sUM\f\u001b\u0005\u0016\u007fFU\n\u0019\u0005\u001f\u00036\u007fS\u0004\u001f\u0003&y\t\r\u001e=dSw\u0004\u0013\u0013\n\u001b\u0004 yUu\u0000\b\u0013>\u0015\u000e\u0019>\u007fD@$\u001a\u0000;uBz\t\u001f\u0005!xFT\u0000"
         .length();
      char var1 = 24;
      int var7 = -1;

      label24:
      while (true) {
         byte var10000 = 21;
         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;
                     META_INITIALIZED = CustomizeErrorResponseAssertion.class.getName() + b[2];
                     return;
                  }

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

                  var2 = "V\\e>\u001a\u0013IOKy\u000f\u001c\u0015TI@D/\u0012\u0004\u000eVOf+\u000b\u0015X`Af*\u001a\u0013N";
                  var4 = "V\\e>\u001a\u0013IOKy\u000f\u001c\u0015TI@D/\u0012\u0004\u000eVOf+\u000b\u0015X`Af*\u001a\u0013N".length();
                  var1 = 20;
                  var7 = -1;
            }

            var10000 = 77;
            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] ^ 112);
      }

      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 -> 107;
            case 1 -> 99;
            case 2 -> 71;
            case 3 -> 3;
            case 4 -> 50;
            case 5 -> 44;
            default -> 112;
         });
      }

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

   public static final class CustomizeErrorResponseAssertionValidator extends AssertionValidatorSupport<CustomizeErrorResponseAssertion> {
      private static final String d;

      public CustomizeErrorResponseAssertionValidator(CustomizeErrorResponseAssertion 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: invokespecial com/l7tech/policy/validator/AssertionValidatorSupport.<init> (Lcom/l7tech/policy/assertion/Assertion;)V
         // 05: aload 1
         // 06: invokevirtual com/l7tech/policy/assertion/CustomizeErrorResponseAssertion.isEnabled ()Z
         // 09: ifeq 5b
         // 0c: aload 1
         // 0d: invokevirtual com/l7tech/policy/assertion/CustomizeErrorResponseAssertion.getErrorLevel ()Lcom/l7tech/policy/assertion/CustomizeErrorResponseAssertion$ErrorLevel;
         // 10: getstatic com/l7tech/policy/assertion/CustomizeErrorResponseAssertion$ErrorLevel.TEMPLATE_RESPONSE Lcom/l7tech/policy/assertion/CustomizeErrorResponseAssertion$ErrorLevel;
         // 13: if_acmpne 5b
         // 16: aload 0
         // 17: aload 1
         // 18: invokevirtual com/l7tech/policy/assertion/CustomizeErrorResponseAssertion.getContentType ()Ljava/lang/String;
         // 1b: invokevirtual com/l7tech/policy/assertion/CustomizeErrorResponseAssertion$CustomizeErrorResponseAssertionValidator.b (Ljava/lang/String;)Z
         // 1e: ifeq 5b
         // 21: goto 28
         // 24: invokestatic com/l7tech/policy/assertion/CustomizeErrorResponseAssertion$CustomizeErrorResponseAssertionValidator.a (Ljava/lang/Exception;)Ljava/lang/Exception;
         // 27: athrow
         // 28: aload 0
         // 29: aload 1
         // 2a: invokevirtual com/l7tech/policy/assertion/CustomizeErrorResponseAssertion.getContent ()Ljava/lang/String;
         // 2d: invokevirtual com/l7tech/policy/assertion/CustomizeErrorResponseAssertion$CustomizeErrorResponseAssertionValidator.c (Ljava/lang/String;)Z
         // 30: ifeq 5b
         // 33: goto 3a
         // 36: invokestatic com/l7tech/policy/assertion/CustomizeErrorResponseAssertion$CustomizeErrorResponseAssertionValidator.a (Ljava/lang/Exception;)Ljava/lang/Exception;
         // 39: athrow
         // 3a: aload 0
         // 3b: aload 1
         // 3c: invokevirtual com/l7tech/policy/assertion/CustomizeErrorResponseAssertion.getContent ()Ljava/lang/String;
         // 3f: invokevirtual com/l7tech/policy/assertion/CustomizeErrorResponseAssertion$CustomizeErrorResponseAssertionValidator.d (Ljava/lang/String;)V
         // 42: goto 5b
         // 45: invokestatic com/l7tech/policy/assertion/CustomizeErrorResponseAssertion$CustomizeErrorResponseAssertionValidator.a (Ljava/lang/Exception;)Ljava/lang/Exception;
         // 48: athrow
         // 49: astore 2
         // 4a: aload 0
         // 4b: aload 2
         // 4c: invokestatic com/l7tech/util/ExceptionUtils.getMessage (Ljava/lang/Throwable;)Ljava/lang/String;
         // 4f: getstatic com/l7tech/policy/assertion/CustomizeErrorResponseAssertion$CustomizeErrorResponseAssertionValidator.d Ljava/lang/String;
         // 52: swap
         // 53: invokedynamic makeConcatWithConstants (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" ]
         // 58: invokevirtual com/l7tech/policy/assertion/CustomizeErrorResponseAssertion$CustomizeErrorResponseAssertionValidator.addWarningMessage (Ljava/lang/String;)V
         // 5b: goto 5f
         // 5e: astore 2
         // 5f: return
         // try (10 -> 23): 24 org/xml/sax/SAXException
         // try (6 -> 15): 16 org/xml/sax/SAXException
         // try (26 -> 30): 33 org/xml/sax/SAXException
         // try (18 -> 31): 31 com/l7tech/policy/variable/VariableNameSyntaxException
         // try (3 -> 41): 42 com/l7tech/policy/variable/VariableNameSyntaxException
      }

      private boolean b(String var1) {
         boolean var2 = false;

         try {
            if (var1 == null || Syntax.getReferencedNames(var1).length != 0) {
               return var2;
            }
         } catch (IOException var5) {
            throw a(var5);
         }

         try {
            var2 = ContentTypeHeader.parseValue(var1).isXml();
         } catch (IOException var4) {
         }

         return var2;
      }

      private boolean c(String 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 1
         // 01: ifnull 1b
         // 04: aload 1
         // 05: invokestatic com/l7tech/policy/variable/Syntax.getReferencedNames (Ljava/lang/String;)[Ljava/lang/String;
         // 08: arraylength
         // 09: ifne 1b
         // 0c: goto 13
         // 0f: invokestatic com/l7tech/policy/assertion/CustomizeErrorResponseAssertion$CustomizeErrorResponseAssertionValidator.a (Ljava/lang/Exception;)Ljava/lang/Exception;
         // 12: athrow
         // 13: bipush 1
         // 14: goto 1c
         // 17: invokestatic com/l7tech/policy/assertion/CustomizeErrorResponseAssertion$CustomizeErrorResponseAssertionValidator.a (Ljava/lang/Exception;)Ljava/lang/Exception;
         // 1a: athrow
         // 1b: bipush 0
         // 1c: ireturn
         // try (0 -> 6): 7 com/l7tech/policy/variable/VariableNameSyntaxException
         // try (2 -> 11): 11 com/l7tech/policy/variable/VariableNameSyntaxException
      }

      private void d(String var1) throws SAXException {
         XmlUtil.parse(var1);
      }

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

      static {
         String var10002 = a(61, e("4rRoD\u0006}\u00037CpO\u0011.>Zm?B\u001b.\bxU?\\\rb\n:GpY\u0005k\u0002-\u0001"));
         byte var10001 = -1;
         d = var10002;
      }

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

         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 -> 91;
               case 1 -> 42;
               case 2 -> 28;
               case 3 -> 34;
               case 4 -> 22;
               case 5 -> 85;
               default -> 51;
            });
         }

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

   public enum ErrorLevel {
      DROP_CONNECTION,
      TEMPLATE_RESPONSE;

      // $VF: Failed to inline enum fields
      // 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!)
      static {
         String[] var0 = new String[2];
         int var4 = 0;
         String var3 = "\u0003L\u0001\u0007\u0013q<\u0012V\u001e\u0012\f`'\u0019Z\t\u000f\u0013[\u0003\u0007\u0000s'\u0019G\t\u0014\u000by'\u0019";
         int var5 = "\u0003L\u0001\u0007\u0013q<\u0012V\u001e\u0012\f`'\u0019Z\t\u000f\u0013[\u0003\u0007\u0000s'\u0019G\t\u0014\u000by'\u0019".length();
         char var2 = 17;
         int var1 = -1;

         while (true) {
            String var10002 = a(34, a(var3.substring(++var1, var1 + var2)));
            byte var10001 = -1;
            var0[var4++] = var10002;
            if ((var1 += var2) >= var5) {
               DROP_CONNECTION = new CustomizeErrorResponseAssertion.ErrorLevel();
               TEMPLATE_RESPONSE = new CustomizeErrorResponseAssertion.ErrorLevel();
               return;
            }

            var2 = var3.charAt(var1);
         }
      }

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

         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 -> 117;
               case 1 -> 43;
               case 2 -> 110;
               case 3 -> 117;
               case 4 -> 125;
               case 5 -> 18;
               default -> 74;
            });
         }

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