package com.l7tech.policy.assertion.xmlsec;

import com.l7tech.policy.assertion.AssertionMetadata;
import com.l7tech.policy.assertion.DefaultAssertionMetadata;
import com.l7tech.policy.assertion.MessageTargetableAssertion;
import com.l7tech.policy.assertion.annotation.RequiresSOAP;
import com.l7tech.policy.variable.DataType;
import com.l7tech.policy.variable.VariableMetadata;
import com.l7tech.security.token.SecurityTokenType;

@RequiresSOAP
public class ProcessRstrSoapResponse extends MessageTargetableAssertion {
   public static final String DEFAULT_VARIABLE_PREFIX;
   public static final String VARIABLE_TOKEN;
   public static final String VARIABLE_CREATE_TIME;
   public static final String VARIABLE_EXPIRY_TIME;
   public static final String VARIABLE_SERVER_ENTROPY;
   public static final String VARIABLE_KEY_SIZE;
   public static final String VARIABLE_FULL_KEY;
   private static final String ASSERTION_BASIC_NAME;
   private static final String META_INITIALIZED;
   private SecurityTokenType tokenType = SecurityTokenType.UNKNOWN;
   private String variablePrefix;
   static final long serialVersionUID = 7406034327859723785L;
   private static final String[] b;

   public ProcessRstrSoapResponse() {
      this.variablePrefix = b[20];
   }

   public SecurityTokenType getTokenType() {
      return this.tokenType;
   }

   public void setTokenType(SecurityTokenType var1) {
      this.tokenType = var1;
   }

   public String getVariablePrefix() {
      return this.variablePrefix;
   }

   public void setVariablePrefix(String var1) {
      this.variablePrefix = var1;
   }

   public static String[] getVariableSuffixes() {
      String[] var10000 = new String[6];
      String[] var0 = b;
      var10000[0] = var0[9];
      var10000[1] = var0[13];
      var10000[2] = var0[17];
      var10000[3] = var0[22];
      var10000[4] = var0[2];
      var10000[5] = var0[15];
      return var10000;
   }

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

      String[] var2 = b;
      var1.put(var2[28], var2[26]);
      var1.put(var2[31], var2[18]);
      var1.put(var2[3], new String[]{var2[4]});
      var1.put(var2[33], var2[12]);
      var1.put(var2[21], var2[6]);
      var1.put(var2[27], var2[19]);
      var1.put(var2[23], var2[37]);
      var1.put(var2[24], var2[25]);
      var1.put(META_INITIALIZED, Boolean.TRUE);
      return var1;
   }

   @Override
   protected MessageTargetableAssertion.VariablesSet doGetVariablesSet() {
      MessageTargetableAssertion.VariablesSet var10000 = super.doGetVariablesSet();
      VariableMetadata[] var10001 = new VariableMetadata[6];
      String[] var1 = b;
      var10001[0] = new VariableMetadata(this.variablePrefix + var1[11], false, false, null, false, DataType.ELEMENT);
      var10001[1] = new VariableMetadata(this.variablePrefix + var1[32], false, false, null, false);
      var10001[2] = new VariableMetadata(this.variablePrefix + var1[8], false, false, null, false);
      var10001[3] = new VariableMetadata(this.variablePrefix + var1[0], false, false, null, false);
      var10001[4] = new VariableMetadata(this.variablePrefix + var1[30], false, false, null, false, DataType.INTEGER);
      var10001[5] = new VariableMetadata(this.variablePrefix + var1[35], false, false, null, false);
      return var10000.withVariables(var10001);
   }

   static {
      String[] var5 = new String[38];
      int var3 = 0;
      String var2 = "-F1\u0001dvUF[ \u0001}c^\u0015qF \u0001@vTsZ:\u0000wCUlV1\u0000a|U\u0007hP- {iB\u000esT8\u0016fgBEZ8\u0017waT\u000b{X8 wpRq\\ \n\u0007e@8\u001fYv^\u0004b@ \u001c\u0014-X1\u0007swFwT\u001d\u001d{gNbY=\tww\u000b-P,\u0003{a^W\\9\u0016\u0005wZ?\u0016|\u0007hP- {iB\u0006-A;\u0018w}+`Z9\\~$SfV<\\q|IpZ8\u0016=aBpZ!\u0001qvT,M9\u001fw\u007fBnP:\u0007<tNe\n`G1\u0012fvsjX1\rpP&\u0005wabmA&\u001cbj\u0007e@8\u001fYv^\u0005wZ?\u0016|\nfM$\u001a`jsjX1iSG;\u0010w`T#A<\u00162AtWgt\u0001w`Wl['\u00162~BpF5\u0014w3Sl\u00153\u0016f3SkPt\u0000wpRq\\ \n2gHhP:SafDk\u00155\u00002@B`@&\u001afj\u0007@Z:\u0007wkS#a;\u0018w}\u0007lGt S^k#A;\u0018w}\t+`Z9\\~$SfV<\\q|IpZ8\u0016=aBpZ!\u0001qvT,M9\u001fw\u007fBnP:\u0007<tNe\u0015qF \u0001@vTsZ:\u0000wCUlV1\u0000a|U\u0015sZ8\u001aqjfgC=\u0010wPKbF'\u001ds~B\rpP&\u0005wabmA&\u001cbj\u0019sG;\u0003waSjP'6vzSlG\u0017\u001fs`TmT9\u0016\u0014sG;\u0003waSjP'2qgNl[\u001a\u0012\u007fv\"Qf\u0000!2ABpE;\u001dav\u0007SG;\u0010w`TlGt#`|WfG \u001aw`\u0015SG;\u0010w`T#g\u0007'@3ufF$\u001c|`B\u000esZ8\u001aqjilQ1:q|I\tp];\u0001f]FnP\u0015SG;\u0010w`T#g\u0007'@3ufF$\u001c|`B\b-^1\nAz]f\u000bgP'\u0010`zWw\\;\u001d\u000b-V&\u0016sgBW\\9\u0016\u000fsT8\u0016fgBMZ0\u0016[pHm\nfM$\u001a`jsjX1\b-S!\u001f~XBz";
      int var4 = "-F1\u0001dvUF[ \u0001}c^\u0015qF \u0001@vTsZ:\u0000wCUlV1\u0000a|U\u0007hP- {iB\u000esT8\u0016fgBEZ8\u0017waT\u000b{X8 wpRq\\ \n\u0007e@8\u001fYv^\u0004b@ \u001c\u0014-X1\u0007swFwT\u001d\u001d{gNbY=\tww\u000b-P,\u0003{a^W\\9\u0016\u0005wZ?\u0016|\u0007hP- {iB\u0006-A;\u0018w}+`Z9\\~$SfV<\\q|IpZ8\u0016=aBpZ!\u0001qvT,M9\u001fw\u007fBnP:\u0007<tNe\n`G1\u0012fvsjX1\rpP&\u0005wabmA&\u001cbj\u0007e@8\u001fYv^\u0005wZ?\u0016|\nfM$\u001a`jsjX1iSG;\u0010w`T#A<\u00162AtWgt\u0001w`Wl['\u00162~BpF5\u0014w3Sl\u00153\u0016f3SkPt\u0000wpRq\\ \n2gHhP:SafDk\u00155\u00002@B`@&\u001afj\u0007@Z:\u0007wkS#a;\u0018w}\u0007lGt S^k#A;\u0018w}\t+`Z9\\~$SfV<\\q|IpZ8\u0016=aBpZ!\u0001qvT,M9\u001fw\u007fBnP:\u0007<tNe\u0015qF \u0001@vTsZ:\u0000wCUlV1\u0000a|U\u0015sZ8\u001aqjfgC=\u0010wPKbF'\u001ds~B\rpP&\u0005wabmA&\u001cbj\u0019sG;\u0003waSjP'6vzSlG\u0017\u001fs`TmT9\u0016\u0014sG;\u0003waSjP'2qgNl[\u001a\u0012\u007fv\"Qf\u0000!2ABpE;\u001dav\u0007SG;\u0010w`TlGt#`|WfG \u001aw`\u0015SG;\u0010w`T#g\u0007'@3ufF$\u001c|`B\u000esZ8\u001aqjilQ1:q|I\tp];\u0001f]FnP\u0015SG;\u0010w`T#g\u0007'@3ufF$\u001c|`B\b-^1\nAz]f\u000bgP'\u0010`zWw\\;\u001d\u000b-V&\u0016sgBW\\9\u0016\u000fsT8\u0016fgBMZ0\u0016[pHm\nfM$\u001a`jsjX1\b-S!\u001f~XBz"
         .length();
      char var1 = 14;
      int var7 = -1;

      label24:
      while (true) {
         byte var10000 = 7;
         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;
                     String[] var9 = b;
                     DEFAULT_VARIABLE_PREFIX = b[1];
                     ASSERTION_BASIC_NAME = var9[29];
                     VARIABLE_KEY_SIZE = var9[10];
                     VARIABLE_TOKEN = var9[16];
                     VARIABLE_FULL_KEY = var9[5];
                     VARIABLE_CREATE_TIME = var9[36];
                     VARIABLE_EXPIRY_TIME = var9[34];
                     VARIABLE_SERVER_ENTROPY = var9[14];
                     META_INITIALIZED = ProcessRstrSoapResponse.class.getName() + b[7];
                     return;
                  }

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

                  var2 = "6\u0011gD0 %<\u000egA6\fo\u000b(r\u00050\u0000j\u000b'*\u001f&\fn@j5\u0010;\u0006nVj\u0015\u0003:\u0000gV7\u0017\u0002!\u0011QJ%5#0\u0010rJ*6\u0014\u0005\u0011mU!7\u0005<\u0006qa-$\u001d:\u0004";
                  var4 = "6\u0011gD0 %<\u000egA6\fo\u000b(r\u00050\u0000j\u000b'*\u001f&\fn@j5\u0010;\u0006nVj\u0015\u0003:\u0000gV7\u0017\u0002!\u0011QJ%5#0\u0010rJ*6\u0014\u0005\u0011mU!7\u0005<\u0006qa-$\u001d:\u0004"
                     .length();
                  var1 = '\n';
                  var7 = -1;
            }

            var10000 = 81;
            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] ^ 32);
      }

      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 -> 4;
            case 1 -> 50;
            case 2 -> 83;
            case 3 -> 116;
            case 4 -> 21;
            case 5 -> 20;
            default -> 32;
         });
      }

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