package com.l7tech.common.mime;

import com.l7tech.common.http.HttpHeader;
import com.l7tech.util.ConfigFactory;
import com.l7tech.util.ExceptionUtils;
import com.l7tech.util.PoolByteArrayOutputStream;
import jakarta.mail.internet.MimeUtility;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Collections;
import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.atomic.AtomicReference;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Pattern;

public class MimeHeader implements HttpHeader {
   private static final Logger a;
   public static final String PROP_PRESERVE_FORMAT;
   public static final boolean PRESERVE_FORMAT;
   static final byte[] b;
   protected static final byte[] SEMICOLON;
   protected static final byte[] COLON;
   private final String c;
   private final String d;
   private final String e;
   private final boolean f;
   protected final AtomicReference<Map<String, String>> params;
   protected byte[] serializedBytes;
   private static final Pattern g;
   private static final String[] p;

   protected MimeHeader(String param1, String param2, String param3, boolean param4) {
      // $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: invokespecial java/lang/Object.<init> ()V
      // 04: aload 0
      // 05: new java/util/concurrent/atomic/AtomicReference
      // 08: dup
      // 09: invokespecial java/util/concurrent/atomic/AtomicReference.<init> ()V
      // 0c: putfield com/l7tech/common/mime/MimeHeader.params Ljava/util/concurrent/atomic/AtomicReference;
      // 0f: aload 1
      // 10: ifnull 17
      // 13: aload 2
      // 14: ifnonnull 29
      // 17: new java/lang/IllegalArgumentException
      // 1a: dup
      // 1b: getstatic com/l7tech/common/mime/MimeHeader.p [Ljava/lang/String;
      // 1e: bipush 18
      // 20: aaload
      // 21: invokespecial java/lang/IllegalArgumentException.<init> (Ljava/lang/String;)V
      // 24: athrow
      // 25: invokestatic com/l7tech/common/mime/MimeHeader.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 28: athrow
      // 29: aload 1
      // 2a: invokevirtual java/lang/String.length ()I
      // 2d: bipush 1
      // 2e: if_icmpge 43
      // 31: new java/lang/IllegalArgumentException
      // 34: dup
      // 35: getstatic com/l7tech/common/mime/MimeHeader.p [Ljava/lang/String;
      // 38: bipush 8
      // 3a: aaload
      // 3b: invokespecial java/lang/IllegalArgumentException.<init> (Ljava/lang/String;)V
      // 3e: athrow
      // 3f: invokestatic com/l7tech/common/mime/MimeHeader.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 42: athrow
      // 43: aload 3
      // 44: ifnonnull 64
      // 47: iload 4
      // 49: ifeq 64
      // 4c: goto 53
      // 4f: invokestatic com/l7tech/common/mime/MimeHeader.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 52: athrow
      // 53: new java/lang/IllegalArgumentException
      // 56: dup
      // 57: getstatic com/l7tech/common/mime/MimeHeader.p [Ljava/lang/String;
      // 5a: bipush 1
      // 5b: aaload
      // 5c: invokespecial java/lang/IllegalArgumentException.<init> (Ljava/lang/String;)V
      // 5f: athrow
      // 60: invokestatic com/l7tech/common/mime/MimeHeader.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 63: athrow
      // 64: aload 0
      // 65: aload 1
      // 66: putfield com/l7tech/common/mime/MimeHeader.d Ljava/lang/String;
      // 69: aload 0
      // 6a: aload 2
      // 6b: putfield com/l7tech/common/mime/MimeHeader.e Ljava/lang/String;
      // 6e: aload 0
      // 6f: getfield com/l7tech/common/mime/MimeHeader.params Ljava/util/concurrent/atomic/AtomicReference;
      // 72: aconst_null
      // 73: invokevirtual java/util/concurrent/atomic/AtomicReference.set (Ljava/lang/Object;)V
      // 76: aload 0
      // 77: aload 3
      // 78: ifnull 83
      // 7b: aload 3
      // 7c: goto 84
      // 7f: invokestatic com/l7tech/common/mime/MimeHeader.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 82: athrow
      // 83: aload 2
      // 84: putfield com/l7tech/common/mime/MimeHeader.c Ljava/lang/String;
      // 87: aload 0
      // 88: iload 4
      // 8a: putfield com/l7tech/common/mime/MimeHeader.f Z
      // 8d: return
      // try (9 -> 18): 18 java/lang/IllegalArgumentException
      // try (20 -> 31): 31 java/lang/IllegalArgumentException
      // try (33 -> 37): 38 java/lang/IllegalArgumentException
      // try (35 -> 47): 47 java/lang/IllegalArgumentException
      // try (49 -> 64): 64 java/lang/IllegalArgumentException
   }

   protected MimeHeader(String param1, String param2, Map<String, String> param3, String param4) {
      // $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: invokespecial java/lang/Object.<init> ()V
      // 04: aload 0
      // 05: new java/util/concurrent/atomic/AtomicReference
      // 08: dup
      // 09: invokespecial java/util/concurrent/atomic/AtomicReference.<init> ()V
      // 0c: putfield com/l7tech/common/mime/MimeHeader.params Ljava/util/concurrent/atomic/AtomicReference;
      // 0f: aload 1
      // 10: ifnull 17
      // 13: aload 2
      // 14: ifnonnull 29
      // 17: new java/lang/IllegalArgumentException
      // 1a: dup
      // 1b: getstatic com/l7tech/common/mime/MimeHeader.p [Ljava/lang/String;
      // 1e: bipush 12
      // 20: aaload
      // 21: invokespecial java/lang/IllegalArgumentException.<init> (Ljava/lang/String;)V
      // 24: athrow
      // 25: invokestatic com/l7tech/common/mime/MimeHeader.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 28: athrow
      // 29: aload 1
      // 2a: invokevirtual java/lang/String.length ()I
      // 2d: bipush 1
      // 2e: if_icmpge 43
      // 31: new java/lang/IllegalArgumentException
      // 34: dup
      // 35: getstatic com/l7tech/common/mime/MimeHeader.p [Ljava/lang/String;
      // 38: bipush 14
      // 3a: aaload
      // 3b: invokespecial java/lang/IllegalArgumentException.<init> (Ljava/lang/String;)V
      // 3e: athrow
      // 3f: invokestatic com/l7tech/common/mime/MimeHeader.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 42: athrow
      // 43: aload 0
      // 44: aload 1
      // 45: putfield com/l7tech/common/mime/MimeHeader.d Ljava/lang/String;
      // 48: aload 0
      // 49: aload 2
      // 4a: putfield com/l7tech/common/mime/MimeHeader.e Ljava/lang/String;
      // 4d: aload 0
      // 4e: getfield com/l7tech/common/mime/MimeHeader.params Ljava/util/concurrent/atomic/AtomicReference;
      // 51: aload 3
      // 52: ifnonnull 5f
      // 55: invokestatic java/util/Collections.emptyMap ()Ljava/util/Map;
      // 58: goto 63
      // 5b: invokestatic com/l7tech/common/mime/MimeHeader.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 5e: athrow
      // 5f: aload 3
      // 60: invokestatic java/util/Collections.unmodifiableMap (Ljava/util/Map;)Ljava/util/Map;
      // 63: invokevirtual java/util/concurrent/atomic/AtomicReference.set (Ljava/lang/Object;)V
      // 66: aload 0
      // 67: aload 4
      // 69: putfield com/l7tech/common/mime/MimeHeader.c Ljava/lang/String;
      // 6c: aload 0
      // 6d: aload 3
      // 6e: ifnull 89
      // 71: aload 3
      // 72: invokeinterface java/util/Map.isEmpty ()Z 1
      // 77: ifne 89
      // 7a: goto 81
      // 7d: invokestatic com/l7tech/common/mime/MimeHeader.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 80: athrow
      // 81: bipush 1
      // 82: goto 8a
      // 85: invokestatic com/l7tech/common/mime/MimeHeader.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 88: athrow
      // 89: bipush 0
      // 8a: putfield com/l7tech/common/mime/MimeHeader.f Z
      // 8d: return
      // try (9 -> 18): 18 java/lang/IllegalArgumentException
      // try (20 -> 31): 31 java/lang/IllegalArgumentException
      // try (33 -> 45): 45 java/lang/IllegalArgumentException
      // try (49 -> 59): 60 java/lang/IllegalArgumentException
      // try (56 -> 64): 64 java/lang/IllegalArgumentException
   }

   public static MimeHeader parseValue(String var0, String var1) throws IOException {
      String var2 = var1;

      try {
         if (p[0].equalsIgnoreCase(var0)) {
            return ContentTypeHeader.parseValue(var1);
         }
      } catch (NumberFormatException var7) {
         throw a(var7);
      }

      String[] var4 = p;
      if (var4[4].equalsIgnoreCase(var0)) {
         try {
            var2 = String.valueOf(parseNumericValue(var1));
         } catch (NumberFormatException var6) {
            var4 = p;
            throw new IOException(var4[11] + var2);
         }
      }

      try {
         return new MimeHeader(var0, var2, var1, true);
      } catch (IllegalArgumentException var5) {
         throw new IOException(p[3] + ExceptionUtils.getMessage(var5), var5);
      }
   }

   public static long parseNumericValue(String var0) {
      try {
         if (var0 == null) {
            throw new NullPointerException();
         }
      } catch (NumberFormatException var13) {
         throw a(var13);
      }

      try {
         return Long.parseLong(var0);
      } catch (NumberFormatException var12) {
         NumberFormatException var1 = var12;
         String[] var2 = g.split(var0.trim());

         try {
            if (var2.length < 1) {
               throw var1;
            }
         } catch (NumberFormatException var10) {
            throw a(var10);
         }

         long var3;
         int var5;
         label54: {
            var3 = Long.parseLong(var2[0]);
            if (var2.length > 1) {
               var5 = 1;

               while (true) {
                  try {
                     if (var5 >= var2.length) {
                        break;
                     }

                     if (var3 != Long.parseLong(var2[var5])) {
                        break label54;
                     }
                  } catch (NumberFormatException var11) {
                     throw a(var11);
                  }

                  var5++;
               }
            }

            return var3;
         }

         String var6 = var2[var5];
         long var7 = var3;
         String[] var9 = p;
         throw new NumberFormatException(var9[13] + var7 + var9[2] + var6);
      }
   }

   @Override
   public String getName() {
      return this.d;
   }

   public String getMainValue() {
      return this.e;
   }

   public boolean hasParams() {
      return this.f;
   }

   public String getParam(String var1) {
      return this.getParams().get(var1);
   }

   public Map<String, String> getParams() {
      Map var1 = this.params.get();
      if (var1 == null) {
         try {
            var1 = this.parseParams();
            this.params.set(var1);
         } catch (IOException var3) {
            a.log(Level.FINE, p[17], var3);
            var1 = Collections.emptyMap();
         }
      }

      return var1;
   }

   @Override
   public String toString() {
      PoolByteArrayOutputStream var1 = new PoolByteArrayOutputStream();

      try {
         this.a(var1);
         return var1.toString(MimeUtil.d);
      } catch (IOException var6) {
         throw new RuntimeException(var6);
      } finally {
         var1.close();
      }
   }

   @Override
   public String getFullValue() {
      return this.c;
   }

   byte[] a() {
      PoolByteArrayOutputStream var1 = new PoolByteArrayOutputStream(32);

      byte[] var8;
      try {
         label35: {
            label34: {
               try {
                  if (this.serializedBytes != null) {
                     break label35;
                  }

                  try {
                     this.a(var1);
                     break label34;
                  } catch (IOException var5) {
                     var2 = var5;
                  }
               } catch (IllegalArgumentException var6) {
                  throw a(var6);
               }

               throw new RuntimeException(var2);
            }

            this.serializedBytes = var1.toByteArray();
         }

         var8 = this.serializedBytes;
      } catch (Throwable var7) {
         try {
            var1.close();
         } catch (Throwable var4) {
            var7.addSuppressed(var4);
         }

         throw var7;
      }

      var1.close();
      return var8;
   }

   int b() {
      return this.a().length;
   }

   void a(OutputStream var1) throws IOException {
      try {
         if (this.serializedBytes != null) {
            var1.write(this.serializedBytes);
            return;
         }
      } catch (IOException var2) {
         throw a(var2);
      }

      var1.write(this.getName().getBytes(MimeUtil.d));
      var1.write(COLON);
      this.b(var1);
      var1.write(b);
   }

   void b(OutputStream var1) throws IOException {
      try {
         if (PRESERVE_FORMAT) {
            var1.write(this.c.getBytes(MimeUtil.d));
            return;
         }
      } catch (IOException var6) {
         throw a(var6);
      }

      var1.write(this.getMainValue().getBytes(MimeUtil.d));

      for (Entry var3 : this.getParams().entrySet()) {
         String var4 = (String)var3.getKey();
         String var5 = (String)var3.getValue();
         var1.write(SEMICOLON);
         this.writeParam(var1, var4, var5);
      }
   }

   protected void writeParam(OutputStream var1, String var2, String var3) throws IOException {
      var1.write(var2.getBytes(MimeUtil.d));
      var1.write(61);
      var1.write(MimeUtility.quote(var3, p[16]).getBytes(MimeUtil.d));
   }

   protected Map<String, String> parseParams() throws IOException {
      return Collections.emptyMap();
   }

   static {
      String[] var5 = new String[19];
      int var3 = 0;
      String var2 = "Vv\u001ePP\u001f;8M\tTP/sl\u001cHc\u0010#`|PI@\u0002;5{\u0015\u0004E\u0003 cp\u0014AQQ&s9\u0018EF!.gx\u001dW\u0015\u0018<5m\u0002QP\u000356P\u001b\\w\u0006EY\u0018+5T9ipQ'px\u0014AGQ9tu\u0005A\u000fQ\u000eVv\u001ePP\u001f;8U\u0015JR\u0005'\u0002.9%vv\u001d\nYF;pz\u0018\nV\u001e\"xv\u001e\nX\u0018\"p7\u0000VP\u0002*go\u0015bZ\u0003\"tm\u0002/9\u0016{x\u001dA\u0015\u001c:fmPJZ\u0005ow|PAX\u0001;l%vv\u001d\nYF;pz\u0018\nV\u001e\"xv\u001e\nX\u0018\"p7\u0000VP\u0002*go\u0015bZ\u0003\"tm\u0002\u0018\u0013*\\w\u0006EY\u0018+5T9ipQ\fzw\u0004A[\u0005bY|\u001eCA\u0019o}|\u0011@P\u0003ocx\u001cQPKo\u001f{x\u001dA\u0015\u0010!q9\u0006EY\u0004*5t\u0005WAQ!zmPFPQ!`u\u001c$Xl\u001cP\\\u0001#p9\u0014MF\u0010(g|\u0015M[\u0016o}|\u0011@P\u0003ocx\u001cQP\u0002u5\u0016{x\u001dA\u0015\u001c:fmPJZ\u0005ow|PAX\u0001;l\u0007IjZ\bi\u0002e\u0011=0L\u001au]t/ER-\u0015*\u0012:&M";
      int var4 = "Vv\u001ePP\u001f;8M\tTP/sl\u001cHc\u0010#`|PI@\u0002;5{\u0015\u0004E\u0003 cp\u0014AQQ&s9\u0018EF!.gx\u001dW\u0015\u0018<5m\u0002QP\u000356P\u001b\\w\u0006EY\u0018+5T9ipQ'px\u0014AGQ9tu\u0005A\u000fQ\u000eVv\u001ePP\u001f;8U\u0015JR\u0005'\u0002.9%vv\u001d\nYF;pz\u0018\nV\u001e\"xv\u001e\nX\u0018\"p7\u0000VP\u0002*go\u0015bZ\u0003\"tm\u0002/9\u0016{x\u001dA\u0015\u001c:fmPJZ\u0005ow|PAX\u0001;l%vv\u001d\nYF;pz\u0018\nV\u001e\"xv\u001e\nX\u0018\"p7\u0000VP\u0002*go\u0015bZ\u0003\"tm\u0002\u0018\u0013*\\w\u0006EY\u0018+5T9ipQ\fzw\u0004A[\u0005bY|\u001eCA\u0019o}|\u0011@P\u0003ocx\u001cQPKo\u001f{x\u001dA\u0015\u0010!q9\u0006EY\u0004*5t\u0005WAQ!zmPFPQ!`u\u001c$Xl\u001cP\\\u0001#p9\u0014MF\u0010(g|\u0015M[\u0016o}|\u0011@P\u0003ocx\u001cQP\u0002u5\u0016{x\u001dA\u0015\u001c:fmPJZ\u0005ow|PAX\u0001;l\u0007IjZ\bi\u0002e\u0011=0L\u001au]t/ER-\u0015*\u0012:&M"
         .length();
      char var1 = '\f';
      int var7 = -1;

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

         while (true) {
            String var9 = a(var10000, b(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var9;
                  if ((var7 += var1) >= var4) {
                     p = var5;
                     PROP_PRESERVE_FORMAT = p[9];
                     a = Logger.getLogger(MimeHeader.class.getName());
                     String[] var8 = p;
                     PRESERVE_FORMAT = ConfigFactory.getBooleanProperty(var8[6], true);
                     b = var8[10].getBytes(MimeUtil.d);
                     SEMICOLON = var8[5].getBytes(MimeUtil.d);
                     COLON = var8[7].getBytes(MimeUtil.d);
                     g = Pattern.compile(var8[15]);
                     return;
                  }

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

                  var2 = "Ox\u001eIV\u001b`ny_L_\n`jw\rJW\r`xs\u001cJO\r%:~\u001aJ^\u001b2:p\u0010YW\u001f4:\u007f\f\u000bT\u00114:`\u001eGS\u001a/tw\u0012N\u0016^-{\u007f\u0011}[\u00125\u007f:_JT\u001a`|c\u0013Gl\u001f,os_FO\r4:t\u001a\u000bJ\f/l\u007f\u001bN^";
                  var4 = "Ox\u001eIV\u001b`ny_L_\n`jw\rJW\r`xs\u001cJO\r%:~\u001aJ^\u001b2:p\u0010YW\u001f4:\u007f\f\u000bT\u00114:`\u001eGS\u001a/tw\u0012N\u0016^-{\u007f\u0011}[\u00125\u007f:_JT\u001a`|c\u0013Gl\u001f,os_FO\r4:t\u001a\u000bJ\f/l\u007f\u001bN^"
                     .length();
                  var1 = '7';
                  var7 = -1;
            }

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

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

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

      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 -> 86;
            case 1 -> 90;
            case 2 -> 51;
            case 3 -> 103;
            case 4 -> 118;
            case 5 -> 50;
            default -> 12;
         });
      }

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