/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  com.l7tech.gateway.common.security.rbac.Secured
 *  com.l7tech.policy.assertion.ExtensionInterfaceBinding
 *  com.l7tech.util.ClassUtils
 *  com.l7tech.util.Either
 *  com.l7tech.util.Option
 *  jakarta.inject.Inject
 *  org.aopalliance.intercept.MethodInterceptor
 *  org.jetbrains.annotations.NotNull
 *  org.jetbrains.annotations.Nullable
 *  org.springframework.aop.PointcutAdvisor
 *  org.springframework.context.ApplicationEvent
 *  org.springframework.transaction.PlatformTransactionManager
 *  org.springframework.transaction.annotation.AnnotationTransactionAttributeSource
 *  org.springframework.transaction.interceptor.TransactionAttributeSource
 *  org.springframework.transaction.interceptor.TransactionInterceptor
 */
package com.l7tech.server.admin;

import com.l7tech.gateway.common.security.rbac.Secured;
import com.l7tech.policy.assertion.ExtensionInterfaceBinding;
import com.l7tech.server.admin.e;
import com.l7tech.server.admin.f;
import com.l7tech.server.policy.module.AssertionModuleUnregistrationEvent;
import com.l7tech.server.util.PostStartupApplicationListener;
import com.l7tech.server.util.UnsupportedExceptionsThrowsAdvice;
import com.l7tech.util.ClassUtils;
import com.l7tech.util.Either;
import com.l7tech.util.Option;
import jakarta.inject.Inject;
import java.lang.annotation.Annotation;
import java.lang.ref.Reference;
import java.lang.ref.WeakReference;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
import org.aopalliance.intercept.MethodInterceptor;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.springframework.aop.PointcutAdvisor;
import org.springframework.context.ApplicationEvent;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.AnnotationTransactionAttributeSource;
import org.springframework.transaction.interceptor.TransactionAttributeSource;
import org.springframework.transaction.interceptor.TransactionInterceptor;

/*
 * Exception performing whole class analysis ignored.
 */
public class ExtensionInterfaceManager
implements PostStartupApplicationListener {
    private final ReadWriteLock a = new ReentrantReadWriteLock();
    private final Map<String, Reference<Class>> b = new HashMap<String, Reference<Class>>();
    private final Map<f, e> c = new HashMap<f, e>();
    @Nullable
    private final PointcutAdvisor d;
    @Nullable
    private final MethodInterceptor e;
    @Nullable
    private final MethodInterceptor f;
    @Inject
    @Nullable
    private UnsupportedExceptionsThrowsAdvice unsupportedExceptionsThrowsAdvice;
    private static final String[] g;

    public ExtensionInterfaceManager(@Nullable MethodInterceptor methodInterceptor, @Nullable PointcutAdvisor pointcutAdvisor, @Nullable PlatformTransactionManager platformTransactionManager) {
        this.e = methodInterceptor;
        this.d = pointcutAdvisor;
        this.f = platformTransactionManager == null ? null : new TransactionInterceptor(platformTransactionManager, (TransactionAttributeSource)new AnnotationTransactionAttributeSource());
    }

    public <T> void registerInterface(@NotNull ExtensionInterfaceBinding<T> extensionInterfaceBinding) {
        try {
            if (extensionInterfaceBinding == null) {
                ExtensionInterfaceManager.a(0);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw ExtensionInterfaceManager.a(illegalArgumentException);
        }
        this.registerInterface(extensionInterfaceBinding.getInterfaceClass(), extensionInterfaceBinding.getInstanceIdentifier(), extensionInterfaceBinding.getImplementationObject());
    }

    public <T> void registerInterface(@NotNull Class<T> clazz, @Nullable String string, @NotNull T t2) {
        try {
            if (clazz == null) {
                ExtensionInterfaceManager.a(1);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw ExtensionInterfaceManager.a(illegalArgumentException);
        }
        try {
            if (t2 == null) {
                ExtensionInterfaceManager.a(2);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw ExtensionInterfaceManager.a(illegalArgumentException);
        }
        this.registerInterface(clazz, string, t2, false);
    }

    /*
     * WARNING - Removed try catching itself - possible behaviour change.
     */
    public <T> void registerInterface(@NotNull Class<T> clazz, @Nullable String string, @NotNull T t2, boolean bl2) {
        try {
            if (clazz == null) {
                ExtensionInterfaceManager.a(3);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw ExtensionInterfaceManager.a(illegalArgumentException);
        }
        try {
            if (t2 == null) {
                ExtensionInterfaceManager.a(4);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw ExtensionInterfaceManager.a(illegalArgumentException);
        }
        try {
            block21: {
                Class clazz2;
                block20: {
                    try {
                        this.a.writeLock().lock();
                        if (!clazz.isAssignableFrom(t2.getClass())) {
                            throw new IllegalArgumentException(g[1]);
                        }
                    }
                    catch (IllegalArgumentException illegalArgumentException) {
                        throw ExtensionInterfaceManager.a(illegalArgumentException);
                    }
                    this.a(clazz, bl2);
                    clazz2 = this.a(clazz.getName());
                    try {
                        if (clazz2 != null) break block20;
                        this.b.put(clazz.getName(), new WeakReference<Class<T>>(clazz));
                        break block21;
                    }
                    catch (IllegalArgumentException illegalArgumentException) {
                        throw ExtensionInterfaceManager.a(illegalArgumentException);
                    }
                }
                try {
                    if (clazz2 != clazz) {
                        throw new IllegalArgumentException(g[4] + clazz.getName() + g[7]);
                    }
                }
                catch (IllegalArgumentException illegalArgumentException) {
                    throw ExtensionInterfaceManager.a(illegalArgumentException);
                }
            }
            f f2 = new f(clazz, string);
            try {
                if (this.c.containsKey(f2)) {
                    throw new IllegalArgumentException(g[30] + clazz.getName() + g[6] + string + g[10]);
                }
            }
            catch (IllegalArgumentException illegalArgumentException) {
                throw ExtensionInterfaceManager.a(illegalArgumentException);
            }
            this.c.put(f2, new e(f2, t2, t2));
        }
        finally {
            this.a.writeLock().unlock();
        }
    }

    private <T> void a(Class<T> clazz, boolean bl2) {
        try {
            if (!bl2) {
                ExtensionInterfaceManager.a(clazz);
                ExtensionInterfaceManager.b(clazz);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw ExtensionInterfaceManager.a(illegalArgumentException);
        }
    }

    private static <T> void a(Class<T> clazz) {
        ArrayList<Secured> arrayList = new ArrayList<Secured>();
        try {
            ExtensionInterfaceManager.a(clazz, arrayList);
            if (arrayList.size() < 1) {
                throw new IllegalArgumentException(g[2]);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw ExtensionInterfaceManager.a(illegalArgumentException);
        }
    }

    private static <T> void b(Class<T> clazz) {
        Method[] methodArray;
        for (Method method : methodArray = clazz.getMethods()) {
            Annotation[] annotationArray;
            Secured secured = method.getAnnotation(Secured.class);
            try {
                if (secured == null) {
                    throw new IllegalArgumentException(g[19] + ClassUtils.getMethodName((Method)method));
                }
            }
            catch (IllegalArgumentException illegalArgumentException) {
                throw ExtensionInterfaceManager.a(illegalArgumentException);
            }
            int n2 = 0;
            for (Annotation annotation : annotationArray = method.getAnnotations()) {
                try {
                    if (!(annotation instanceof Secured)) continue;
                    ++n2;
                }
                catch (IllegalArgumentException illegalArgumentException) {
                    throw ExtensionInterfaceManager.a(illegalArgumentException);
                }
            }
            try {
                if (n2 < 1) {
                    throw new IllegalArgumentException(g[26] + ClassUtils.getMethodName((Method)method));
                }
            }
            catch (IllegalArgumentException illegalArgumentException) {
                throw ExtensionInterfaceManager.a(illegalArgumentException);
            }
            try {
                if (n2 == true) continue;
                throw new IllegalArgumentException(g[11] + ClassUtils.getMethodName((Method)method));
            }
            catch (IllegalArgumentException illegalArgumentException) {
                throw ExtensionInterfaceManager.a(illegalArgumentException);
            }
        }
    }

    private static void a(Class clazz, List<Secured> list) {
        Secured secured = clazz.getAnnotation(Secured.class);
        try {
            if (secured != null) {
                list.add(secured);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw ExtensionInterfaceManager.a(illegalArgumentException);
        }
        for (Class<?> clazz2 : clazz.getInterfaces()) {
            ExtensionInterfaceManager.a(clazz2, list);
        }
    }

    /*
     * WARNING - Removed try catching itself - possible behaviour change.
     * Loose catch block
     */
    public boolean isInterfaceRegistered(@NotNull String string, @Nullable String string2) {
        try {
            if (string == null) {
                ExtensionInterfaceManager.a(5);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw ExtensionInterfaceManager.a(illegalArgumentException);
        }
        try {
            boolean bl2;
            block11: {
                block10: {
                    this.a.readLock().lock();
                    Class clazz = this.a(string);
                    if (clazz == null) break block10;
                    try {
                        block12: {
                            if (!this.c.containsKey(new f(clazz, string2))) break block10;
                            break block12;
                            catch (IllegalArgumentException illegalArgumentException) {
                                throw ExtensionInterfaceManager.a(illegalArgumentException);
                            }
                        }
                        bl2 = true;
                        break block11;
                    }
                    catch (IllegalArgumentException illegalArgumentException) {
                        throw ExtensionInterfaceManager.a(illegalArgumentException);
                    }
                }
                bl2 = false;
            }
            boolean bl3 = bl2;
            return bl3;
        }
        finally {
            this.a.readLock().unlock();
        }
    }

    /*
     * WARNING - Removed try catching itself - possible behaviour change.
     */
    @NotNull
    public Collection<ExtensionInterfaceBinding<?>> getRegisteredInterfaces() {
        ArrayList<ExtensionInterfaceBinding> arrayList;
        ArrayList<ExtensionInterfaceBinding> arrayList2;
        ArrayList<ExtensionInterfaceBinding> arrayList3 = new ArrayList<ExtensionInterfaceBinding>();
        try {
            this.a.readLock().lock();
            for (e e10 : this.c.values()) {
                arrayList3.add(new ExtensionInterfaceBinding(e10.getKey().getInterfaceClass(), e10.getKey().getInstanceId(), e10.getRawImpl()));
            }
            arrayList2 = arrayList3;
        }
        catch (Throwable throwable) {
            this.a.readLock().unlock();
            throw throwable;
        }
        try {
            this.a.readLock().unlock();
            arrayList = arrayList2;
            if (arrayList == null) {
                ExtensionInterfaceManager.a(6);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw ExtensionInterfaceManager.a(illegalArgumentException);
        }
        return arrayList;
    }

    /*
     * WARNING - Removed try catching itself - possible behaviour change.
     * Loose catch block
     */
    public boolean unRegisterInterface(@NotNull String string, @Nullable String string2) {
        try {
            if (string == null) {
                ExtensionInterfaceManager.a(7);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw ExtensionInterfaceManager.a(illegalArgumentException);
        }
        try {
            boolean bl2;
            block11: {
                block10: {
                    this.a.writeLock().lock();
                    Class clazz = this.a(string);
                    if (clazz == null) break block10;
                    try {
                        block12: {
                            if (this.c.remove(new f(clazz, string2)) == null) break block10;
                            break block12;
                            catch (IllegalArgumentException illegalArgumentException) {
                                throw ExtensionInterfaceManager.a(illegalArgumentException);
                            }
                        }
                        bl2 = true;
                        break block11;
                    }
                    catch (IllegalArgumentException illegalArgumentException) {
                        throw ExtensionInterfaceManager.a(illegalArgumentException);
                    }
                }
                bl2 = false;
            }
            boolean bl3 = bl2;
            return bl3;
        }
        finally {
            this.a.writeLock().unlock();
        }
    }

    /*
     * Exception decompiling
     */
    @NotNull
    public Either<Throwable, Option<Object>> invokeExtensionMethod(@NotNull String var1_1, @Nullable String var2_2, @NotNull String var3_3, @NotNull Class[] var4_4, @Nullable Object[] var5_5) throws ClassNotFoundException, NoSuchMethodException {
        /*
         * This method has failed to decompile.  When submitting a bug report, please provide this stack trace, and (if you hold appropriate legal rights) the relevant class file.
         * 
         * org.benf.cfr.reader.util.ConfusedCFRException: Tried to end blocks [28[CATCHBLOCK]], but top level block is 13[TRYBLOCK]
         *     at org.benf.cfr.reader.bytecode.analysis.opgraph.Op04StructuredStatement.processEndingBlocks(Op04StructuredStatement.java:435)
         *     at org.benf.cfr.reader.bytecode.analysis.opgraph.Op04StructuredStatement.buildNestedBlocks(Op04StructuredStatement.java:484)
         *     at org.benf.cfr.reader.bytecode.analysis.opgraph.Op03SimpleStatement.createInitialStructuredBlock(Op03SimpleStatement.java:736)
         *     at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysisInner(CodeAnalyser.java:850)
         *     at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysisOrWrapFail(CodeAnalyser.java:278)
         *     at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysis(CodeAnalyser.java:201)
         *     at org.benf.cfr.reader.entities.attributes.AttributeCode.analyse(AttributeCode.java:94)
         *     at org.benf.cfr.reader.entities.Method.analyse(Method.java:531)
         *     at org.benf.cfr.reader.entities.ClassFile.analyseMid(ClassFile.java:1055)
         *     at org.benf.cfr.reader.entities.ClassFile.analyseTop(ClassFile.java:942)
         *     at org.benf.cfr.reader.Driver.doJarVersionTypes(Driver.java:257)
         *     at org.benf.cfr.reader.Driver.doJar(Driver.java:139)
         *     at org.benf.cfr.reader.CfrDriverImpl.analyse(CfrDriverImpl.java:76)
         *     at org.benf.cfr.reader.Main.main(Main.java:54)
         */
        throw new IllegalStateException("Decompilation failed");
    }

    public void onApplicationEvent(ApplicationEvent applicationEvent) {
        if (applicationEvent instanceof AssertionModuleUnregistrationEvent) {
            AssertionModuleUnregistrationEvent assertionModuleUnregistrationEvent = (AssertionModuleUnregistrationEvent)applicationEvent;
            this.unregisterAllFromClassLoader(assertionModuleUnregistrationEvent.getModuleClassLoader());
        }
    }

    private Class a(String string) {
        Class clazz;
        Reference<Class> reference = this.b.get(string);
        try {
            clazz = reference == null ? null : reference.get();
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw ExtensionInterfaceManager.a(illegalArgumentException);
        }
        return clazz;
    }

    /*
     * WARNING - Removed try catching itself - possible behaviour change.
     */
    public void unregisterAllFromClassLoader(ClassLoader classLoader) {
        try {
            this.a.writeLock().lock();
            ArrayList<String> arrayList = new ArrayList<String>();
            Iterator<e> iterator = this.c.values().iterator();
            while (iterator.hasNext()) {
                e e10 = iterator.next();
                try {
                    if (e10.getRawImpl().getClass().getClassLoader() != classLoader) continue;
                    iterator.remove();
                    arrayList.add(e10.getKey().getInterfaceClass().getName());
                }
                catch (IllegalArgumentException illegalArgumentException) {
                    throw ExtensionInterfaceManager.a(illegalArgumentException);
                }
            }
            for (String string : arrayList) {
                this.b.remove(string);
            }
        }
        finally {
            this.a.writeLock().unlock();
        }
    }

    /*
     * Exception decompiling
     */
    private static /* synthetic */ void a(int var0) {
        /*
         * This method has failed to decompile.  When submitting a bug report, please provide this stack trace, and (if you hold appropriate legal rights) the relevant class file.
         * 
         * org.benf.cfr.reader.util.ConfusedCFRException: Tried to end blocks [0[TRYBLOCK]], but top level block is 6[SWITCH]
         *     at org.benf.cfr.reader.bytecode.analysis.opgraph.Op04StructuredStatement.processEndingBlocks(Op04StructuredStatement.java:435)
         *     at org.benf.cfr.reader.bytecode.analysis.opgraph.Op04StructuredStatement.buildNestedBlocks(Op04StructuredStatement.java:484)
         *     at org.benf.cfr.reader.bytecode.analysis.opgraph.Op03SimpleStatement.createInitialStructuredBlock(Op03SimpleStatement.java:736)
         *     at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysisInner(CodeAnalyser.java:850)
         *     at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysisOrWrapFail(CodeAnalyser.java:278)
         *     at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysis(CodeAnalyser.java:201)
         *     at org.benf.cfr.reader.entities.attributes.AttributeCode.analyse(AttributeCode.java:94)
         *     at org.benf.cfr.reader.entities.Method.analyse(Method.java:531)
         *     at org.benf.cfr.reader.entities.ClassFile.analyseMid(ClassFile.java:1050)
         *     at org.benf.cfr.reader.entities.ClassFile.analyseTop(ClassFile.java:942)
         *     at org.benf.cfr.reader.Driver.doJarVersionTypes(Driver.java:257)
         *     at org.benf.cfr.reader.Driver.doJar(Driver.java:139)
         *     at org.benf.cfr.reader.CfrDriverImpl.analyse(CfrDriverImpl.java:76)
         *     at org.benf.cfr.reader.Main.main(Main.java:54)
         */
        throw new IllegalStateException("Decompilation failed");
    }

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

    /*
     * Unable to fully structure code
     */
    static {
        block10: {
            block9: {
                var5 = new String[31];
                var3_1 = 0;
                var2_2 = "P%G'0\nq?[!Y/<\ts\\8H70\u000bx\u0012#K)<\u0007b\u0012%Zc7\u000bb\u0012-Gc0\neF-G <DyTl]+<D\u007f\\8L1?\u0005uWlJ/8\u0017e@w4]&7\u0017\u007f]\"\t*7\u0010s@*H <D{G?]c=\u0001u^-[&y\u0007zS?Zn5\u0001`W \t\u0003\n\u0001uG>L'y\u0005x\\#]\"-\ry\\\u0007\u007f)]+6\u00006\u001bsl_&+\u0017\u007f]\"\t,?DbZ)\t*7\u0010s@*H <D\u000e[!Y/<\ts\\8H70\u000bx\u0013\u0012;@71D\u007f\\?]\"7\u0007s\u0012\u0005mc{3\u0012*[,4Dw\u0012(@%?\u0001dW\"]c:\bwA?E,8\u0000s@l@0y\u0005z@)H' DdW+@0-\u0001dW(\u000e[\"]&+\u0002wQ)j/8\u0017e%|#\t&!\u0010s\\?@,7D\u007f\\8L1?\u0005uWlO,+Du^-Z07\u0005{Wl\u0019\u0010l^\"*Dw^>L\"=\u001d6@)N**\u0010s@)Mm>w4]&7\u0017\u007f]\"\t*7\u0010s@*H <D{W8A,=D~S?\t.,\bb[<E&y$EW/\\1<\u00006S\"G,-\u0005b[#G0cD\u0015[\"_,2\u0001SJ8L-*\ry\\\u0001L71\u000br(\u0012%Zc+\u0001q[?]&+\u0001r\u0012;@71D\u007f\\?]\"7\u0007s\u0012%M&7\u0010\u007fT%L1y\u000eB-[\"4\u0001bW>}:)\u0001e\u0015[?`--\u0001dT-J&\u000b\u0001q[?]&+\u0001r\u0011\u0012\"F7y\u0005uQ)Z00\u0006zWv\t1Q#Dl5SbW/Al*\u0001dD)[l8\u0000{[\"\u0006\u0006!\u0010s\\?@,7-xF)[%8\u0007s\u007f-G\">\u0001d1Q#Dl5SbW/Al*\u0001dD)[l8\u0000{[\"\u0006\u0006!\u0010s\\?@,7-xF)[%8\u0007s\u007f-G\">\u0001d6w4]&7\u0017\u007f]\"\t*7\u0010s@*H <D{W8A,=DzS/B0y$EW/\\1<\u00006S\"G,-\u0005b[#Gyy\u0017U)]\u0011<\u0003\u007fA8L1<\u0000_\\8L1?\u0005uW?*r\u0002F7\u0017\u0011z^lD&-\fyVl\f0wAe\u0012!\\0-Dx]8\t1<\u0010c@\"\t-,\bz\u0011@)N**\u0010s@\u0005G7<\u0016pS/L\u0013G\"{&>\reF)[\n7\u0010s@*H <\u0015[\"_,2\u0001SJ8L-*\ry\\\u0001L71\u000br>s>N64\u0001xFlO,+DV|#]\r,\bz\u0012<H18\tsF)[c~Ae\u0015lF%yAe\u001ciZc4\u0011eFlG,-DtWlG65\b>w4]&7\u0017\u007f]\"\t*7\u0010s@*H <D{W8A,=DVa)J6+\u0001r\u0012-G-6\u0010wF%F-y\u0007yG\"]c0\u00176H)[,cD4|#\t&!\u0010s\\?@,7D\u007f\\8L1?\u0005uWl@0y\u0016sU%Z7<\u0016sVl^*-\f6Q H0*\nw_)\t\u0012[\"]&+\u0002wQ)j/8\u0017e\\-D&";
                var4_3 = "P%G'0\nq?[!Y/<\ts\\8H70\u000bx\u0012#K)<\u0007b\u0012%Zc7\u000bb\u0012-Gc0\neF-G <DyTl]+<D\u007f\\8L1?\u0005uWlJ/8\u0017e@w4]&7\u0017\u007f]\"\t*7\u0010s@*H <D{G?]c=\u0001u^-[&y\u0007zS?Zn5\u0001`W \t\u0003\n\u0001uG>L'y\u0005x\\#]\"-\ry\\\u0007\u007f)]+6\u00006\u001bsl_&+\u0017\u007f]\"\t,?DbZ)\t*7\u0010s@*H <D\u000e[!Y/<\ts\\8H70\u000bx\u0013\u0012;@71D\u007f\\?]\"7\u0007s\u0012\u0005mc{3\u0012*[,4Dw\u0012(@%?\u0001dW\"]c:\bwA?E,8\u0000s@l@0y\u0005z@)H' DdW+@0-\u0001dW(\u000e[\"]&+\u0002wQ)j/8\u0017e%|#\t&!\u0010s\\?@,7D\u007f\\8L1?\u0005uWlO,+Du^-Z07\u0005{Wl\u0019\u0010l^\"*Dw^>L\"=\u001d6@)N**\u0010s@)Mm>w4]&7\u0017\u007f]\"\t*7\u0010s@*H <D{W8A,=D~S?\t.,\bb[<E&y$EW/\\1<\u00006S\"G,-\u0005b[#G0cD\u0015[\"_,2\u0001SJ8L-*\ry\\\u0001L71\u000br(\u0012%Zc+\u0001q[?]&+\u0001r\u0012;@71D\u007f\\?]\"7\u0007s\u0012%M&7\u0010\u007fT%L1y\u000eB-[\"4\u0001bW>}:)\u0001e\u0015[?`--\u0001dT-J&\u000b\u0001q[?]&+\u0001r\u0011\u0012\"F7y\u0005uQ)Z00\u0006zWv\t1Q#Dl5SbW/Al*\u0001dD)[l8\u0000{[\"\u0006\u0006!\u0010s\\?@,7-xF)[%8\u0007s\u007f-G\">\u0001d1Q#Dl5SbW/Al*\u0001dD)[l8\u0000{[\"\u0006\u0006!\u0010s\\?@,7-xF)[%8\u0007s\u007f-G\">\u0001d6w4]&7\u0017\u007f]\"\t*7\u0010s@*H <D{W8A,=DzS/B0y$EW/\\1<\u00006S\"G,-\u0005b[#Gyy\u0017U)]\u0011<\u0003\u007fA8L1<\u0000_\\8L1?\u0005uW?*r\u0002F7\u0017\u0011z^lD&-\fyVl\f0wAe\u0012!\\0-Dx]8\t1<\u0010c@\"\t-,\bz\u0011@)N**\u0010s@\u0005G7<\u0016pS/L\u0013G\"{&>\reF)[\n7\u0010s@*H <\u0015[\"_,2\u0001SJ8L-*\ry\\\u0001L71\u000br>s>N64\u0001xFlO,+DV|#]\r,\bz\u0012<H18\tsF)[c~Ae\u0015lF%yAe\u001ciZc4\u0011eFlG,-DtWlG65\b>w4]&7\u0017\u007f]\"\t*7\u0010s@*H <D{W8A,=DVa)J6+\u0001r\u0012-G-6\u0010wF%F-y\u0007yG\"]c0\u00176H)[,cD4|#\t&!\u0010s\\?@,7D\u007f\\8L1?\u0005uWl@0y\u0016sU%Z7<\u0016sVl^*-\f6Q H0*\nw_)\t\u0012[\"]&+\u0002wQ)j/8\u0017e\\-D&".length();
                var1_4 = 7;
                var0_5 = -1;
lbl7:
                // 2 sources

                while (true) {
                    v0 = 51;
                    v1 = ++var0_5;
                    v2 = var2_2.substring(v1, v1 + var1_4);
                    v3 = -1;
                    break block9;
                    break;
                }
lbl13:
                // 1 sources

                while (true) {
                    var5[var3_1++] = ExtensionInterfaceManager.a(v0, ExtensionInterfaceManager.b(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    var2_2 = "\u0016`\u0014b\u007fI\u0011\u001ah\u0005,:%\u0004cvK:\t`\u000e~0D2\u000bi\u0005guC+\u001aq\te~\r0\u001d%\u0014bu\r6\u0015q\u0005xvL<\u001e%";
                    var4_3 = "\u0016`\u0014b\u007fI\u0011\u001ah\u0005,:%\u0004cvK:\t`\u000e~0D2\u000bi\u0005guC+\u001aq\te~\r0\u001d%\u0014bu\r6\u0015q\u0005xvL<\u001e%".length();
                    var1_4 = 10;
                    var0_5 = -1;
lbl22:
                    // 2 sources

                    while (true) {
                        v0 = 122;
                        v4 = ++var0_5;
                        v2 = var2_2.substring(v4, v4 + var1_4);
                        v3 = 0;
                        break block9;
                        break;
                    }
                    break;
                }
lbl28:
                // 1 sources

                while (true) {
                    var5[var3_1++] = ExtensionInterfaceManager.a(v0, ExtensionInterfaceManager.b(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    break block10;
                    break;
                }
            }
            switch (v3) {
                default: {
                    ** continue;
                }
                ** case 0:
lbl39:
                // 1 sources

                ** continue;
            }
        }
        ExtensionInterfaceManager.g = var5;
    }

    private static char[] b(String string) {
        char[] cArray = string.toCharArray();
        if (cArray.length < 2) {
            cArray = cArray;
            cArray[0] = (char)(cArray[0] ^ 0x25);
        }
        return cArray;
    }

    /*
     * Handled impossible loop by duplicating code
     * Enabled aggressive block sorting
     */
    private static String a(int n2, char[] cArray) {
        char[] cArray2;
        block11: {
            int n3;
            int n4;
            int n5;
            block10: {
                n5 = n2;
                cArray2 = cArray;
                n4 = cArray.length;
                n3 = 0;
                if (!true) break block10;
                n4 = n4;
                if (n4 <= n3) break block11;
            }
            do {
                n5 = n5;
                cArray2 = cArray2;
                int n6 = n3;
                cArray2[n6] = (char)(cArray2[n6] ^ (n5 ^ (switch (n3 % 7) {
                    case 0 -> 1;
                    case 1 -> 127;
                    case 2 -> 26;
                    case 3 -> 112;
                    case 4 -> 106;
                    case 5 -> 87;
                    default -> 37;
                })));
                ++n3;
                n4 = n4;
            } while (n4 > n3);
        }
        return new String(cArray2).intern();
    }
}

