/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  com.l7tech.gateway.common.audit.Audit
 *  com.l7tech.gateway.common.audit.LoggingAudit
 *  com.l7tech.message.Message
 *  com.l7tech.objectmodel.FindException
 *  com.l7tech.objectmodel.Goid
 *  com.l7tech.objectmodel.ObjectNotFoundException
 *  com.l7tech.objectmodel.encass.EncapsulatedAssertionArgumentDescriptor
 *  com.l7tech.objectmodel.encass.EncapsulatedAssertionConfig
 *  com.l7tech.objectmodel.encass.EncapsulatedAssertionResultDescriptor
 *  com.l7tech.objectmodel.polback.BackgroundTask
 *  com.l7tech.objectmodel.polback.PolicyBackedInterfaceIntrospector
 *  com.l7tech.objectmodel.polback.PolicyBackedService
 *  com.l7tech.policy.assertion.AssertionStatus
 *  com.l7tech.policy.variable.DataType
 *  com.l7tech.util.ExceptionUtils
 *  com.l7tech.util.ResourceUtils
 *  jakarta.inject.Inject
 *  jakarta.inject.Named
 *  org.jetbrains.annotations.NotNull
 *  org.jetbrains.annotations.Nullable
 *  org.springframework.beans.factory.InitializingBean
 *  org.springframework.context.ApplicationEvent
 */
package com.l7tech.server.polback;

import com.l7tech.gateway.common.audit.Audit;
import com.l7tech.gateway.common.audit.LoggingAudit;
import com.l7tech.message.Message;
import com.l7tech.objectmodel.FindException;
import com.l7tech.objectmodel.Goid;
import com.l7tech.objectmodel.ObjectNotFoundException;
import com.l7tech.objectmodel.encass.EncapsulatedAssertionArgumentDescriptor;
import com.l7tech.objectmodel.encass.EncapsulatedAssertionConfig;
import com.l7tech.objectmodel.encass.EncapsulatedAssertionResultDescriptor;
import com.l7tech.objectmodel.polback.BackgroundTask;
import com.l7tech.objectmodel.polback.PolicyBackedInterfaceIntrospector;
import com.l7tech.objectmodel.polback.PolicyBackedService;
import com.l7tech.policy.assertion.AssertionStatus;
import com.l7tech.policy.variable.DataType;
import com.l7tech.server.event.EntityInvalidationEvent;
import com.l7tech.server.event.system.Started;
import com.l7tech.server.message.PolicyEnforcementContext;
import com.l7tech.server.message.PolicyEnforcementContextFactory;
import com.l7tech.server.otel.OtelContextFactory;
import com.l7tech.server.polback.PolicyBackedServiceManager;
import com.l7tech.server.polback.b;
import com.l7tech.server.polback.c;
import com.l7tech.server.polback.d;
import com.l7tech.server.policy.PolicyCache;
import com.l7tech.server.policy.ServerPolicyHandle;
import com.l7tech.server.policy.assertion.AssertionStatusException;
import com.l7tech.server.policy.module.AssertionModuleRegistrationEvent;
import com.l7tech.server.policy.module.AssertionModuleUnregistrationEvent;
import com.l7tech.server.util.PostStartupApplicationListener;
import com.l7tech.util.ExceptionUtils;
import com.l7tech.util.ResourceUtils;
import jakarta.inject.Inject;
import jakarta.inject.Named;
import java.io.Closeable;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.ApplicationEvent;

/*
 * Exception performing whole class analysis ignored.
 */
public class PolicyBackedServiceRegistry
implements PostStartupApplicationListener,
InitializingBean {
    private static final Logger a;
    @Inject
    @Named(value="policyCache")
    PolicyCache policyCache;
    @Inject
    @Named(value="otelContextFactory")
    OtelContextFactory otelContextFactory;
    @Inject
    @Named(value="policyBackedServiceManager")
    PolicyBackedServiceManager policyBackedServiceManager;
    private final ReadWriteLock b = new ReentrantReadWriteLock();
    private final Map<String, d> c = new HashMap<String, d>();
    private final Map<String, Set<PolicyBackedService>> d = new HashMap<String, Set<PolicyBackedService>>();
    private static final String[] e;

    /*
     * WARNING - Removed try catching itself - possible behaviour change.
     */
    public boolean registerPolicyBackedServiceTemplate(@NotNull Class<?> clazz) {
        try {
            if (clazz == null) {
                PolicyBackedServiceRegistry.a(0);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw PolicyBackedServiceRegistry.a(illegalArgumentException);
        }
        this.b.writeLock().lock();
        try {
            String string = clazz.getName();
            if (this.c.keySet().contains(string)) {
                boolean bl2 = false;
                return bl2;
            }
            EncapsulatedAssertionConfig[] encapsulatedAssertionConfigArray = new PolicyBackedInterfaceIntrospector().getInterfaceDescription(clazz);
            this.c.put(string, new d(clazz, encapsulatedAssertionConfigArray));
            boolean bl3 = true;
            return bl3;
        }
        finally {
            this.b.writeLock().unlock();
        }
    }

    /*
     * WARNING - Removed try catching itself - possible behaviour change.
     */
    public boolean unregisterPolicyBackedServiceTemplate(@NotNull Class<?> clazz) {
        try {
            if (clazz == null) {
                PolicyBackedServiceRegistry.a(1);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw PolicyBackedServiceRegistry.a(illegalArgumentException);
        }
        this.b.writeLock().lock();
        try {
            String string = clazz.getName();
            if (!this.c.keySet().contains(string)) {
                boolean bl2 = false;
                return bl2;
            }
            this.c.remove(string);
            boolean bl3 = true;
            return bl3;
        }
        finally {
            this.b.writeLock().unlock();
        }
    }

    @NotNull
    public Set<String> getPolicyBackedServiceTemplates() {
        HashSet<String> hashSet;
        HashSet<String> hashSet2;
        this.b.readLock().lock();
        try {
            hashSet2 = new HashSet<String>(this.c.keySet());
        }
        catch (Throwable throwable) {
            this.b.readLock().unlock();
            throw throwable;
        }
        try {
            this.b.readLock().unlock();
            hashSet = hashSet2;
            if (hashSet == null) {
                PolicyBackedServiceRegistry.a(2);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw PolicyBackedServiceRegistry.a(illegalArgumentException);
        }
        return hashSet;
    }

    /*
     * WARNING - Removed try catching itself - possible behaviour change.
     */
    @NotNull
    public List<EncapsulatedAssertionConfig> getTemplateOperations(@NotNull String string) throws ObjectNotFoundException {
        List<EncapsulatedAssertionConfig> list;
        List<EncapsulatedAssertionConfig> list2;
        try {
            if (string == null) {
                PolicyBackedServiceRegistry.a(3);
            }
        }
        catch (ObjectNotFoundException objectNotFoundException) {
            throw PolicyBackedServiceRegistry.a(objectNotFoundException);
        }
        this.b.readLock().lock();
        try {
            d d10 = this.c.get(string);
            try {
                if (null == d10) {
                    throw new ObjectNotFoundException(e[44] + string);
                }
            }
            catch (ObjectNotFoundException objectNotFoundException) {
                throw PolicyBackedServiceRegistry.a(objectNotFoundException);
            }
            list2 = Arrays.asList(d10.b);
        }
        catch (Throwable throwable) {
            this.b.readLock().unlock();
            throw throwable;
        }
        try {
            this.b.readLock().unlock();
            list = list2;
            if (list == null) {
                PolicyBackedServiceRegistry.a(4);
            }
        }
        catch (ObjectNotFoundException objectNotFoundException) {
            throw PolicyBackedServiceRegistry.a(objectNotFoundException);
        }
        return list;
    }

    /*
     * WARNING - Removed try catching itself - possible behaviour change.
     */
    void a(@NotNull String string, @NotNull PolicyBackedService policyBackedService) {
        try {
            if (string == null) {
                PolicyBackedServiceRegistry.a(5);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw PolicyBackedServiceRegistry.a(illegalArgumentException);
        }
        try {
            if (policyBackedService == null) {
                PolicyBackedServiceRegistry.a(6);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw PolicyBackedServiceRegistry.a(illegalArgumentException);
        }
        this.b.writeLock().lock();
        try {
            d d10 = this.c.get(string);
            try {
                if (null == d10) {
                    throw new IllegalArgumentException(e[44] + string);
                }
            }
            catch (IllegalArgumentException illegalArgumentException) {
                throw PolicyBackedServiceRegistry.a(illegalArgumentException);
            }
            Set set = policyBackedService.getOperations();
            for (Object object : set) {
                Goid goid = object.getPolicyGoid();
                try {
                    if (goid != null) continue;
                    throw new IllegalArgumentException(e[13] + object.getName() + e[47]);
                }
                catch (IllegalArgumentException illegalArgumentException) {
                    throw PolicyBackedServiceRegistry.a(illegalArgumentException);
                }
            }
            Set<PolicyBackedService> set2 = this.d.get(string);
            if (set2 == null) {
                set2 = new HashSet<PolicyBackedService>();
                this.d.put(string, set2);
            }
            for (PolicyBackedService policyBackedService2 : set2) {
                try {
                    if (!Goid.equals((Goid)policyBackedService2.getGoid(), (Goid)policyBackedService.getGoid())) continue;
                    throw new IllegalArgumentException(e[20] + string + e[67] + String.valueOf(policyBackedService.getGoid()) + e[0]);
                }
                catch (IllegalArgumentException illegalArgumentException) {
                    throw PolicyBackedServiceRegistry.a(illegalArgumentException);
                }
            }
            set2.add(policyBackedService);
        }
        finally {
            this.b.writeLock().unlock();
        }
    }

    /*
     * WARNING - Removed try catching itself - possible behaviour change.
     */
    @NotNull
    public <T> T getImplementationProxyForSingleMethod(@NotNull Method method, @NotNull Goid goid, @Nullable PolicyEnforcementContext policyEnforcementContext) {
        Object object;
        d d10;
        String string;
        try {
            if (method == null) {
                PolicyBackedServiceRegistry.a(7);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw PolicyBackedServiceRegistry.a(illegalArgumentException);
        }
        try {
            if (goid == null) {
                PolicyBackedServiceRegistry.a(8);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw PolicyBackedServiceRegistry.a(illegalArgumentException);
        }
        this.b.readLock().lock();
        try {
            string = method.getDeclaringClass().getName();
            d10 = this.c.get(string);
            try {
                if (null == d10) {
                    throw new IllegalArgumentException(e[48] + string);
                }
            }
            catch (IllegalArgumentException illegalArgumentException) {
                throw PolicyBackedServiceRegistry.a(illegalArgumentException);
            }
            try {
                if (d10.a != method.getDeclaringClass()) {
                    throw new IllegalArgumentException(e[43] + string + e[35]);
                }
            }
            catch (IllegalArgumentException illegalArgumentException) {
                throw PolicyBackedServiceRegistry.a(illegalArgumentException);
            }
        }
        finally {
            this.b.readLock().unlock();
        }
        string = new PolicyBackedInterfaceIntrospector().getMethodDescription(method);
        try {
            object = Proxy.newProxyInstance(d10.a.getClassLoader(), new Class[]{d10.a}, (InvocationHandler)new b(this, method, goid, (EncapsulatedAssertionConfig)string, policyEnforcementContext));
            if (object == null) {
                PolicyBackedServiceRegistry.a(9);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw PolicyBackedServiceRegistry.a(illegalArgumentException);
        }
        return (T)object;
    }

    /*
     * WARNING - Removed try catching itself - possible behaviour change.
     * Loose catch block
     */
    @NotNull
    public <T> T getImplementationProxy(@NotNull Class<T> clazz, @Nullable Goid goid) {
        Object object;
        d d10;
        String string;
        PolicyBackedService policyBackedService;
        block28: {
            try {
                if (clazz == null) {
                    PolicyBackedServiceRegistry.a(10);
                }
            }
            catch (IllegalArgumentException illegalArgumentException) {
                throw PolicyBackedServiceRegistry.a(illegalArgumentException);
            }
            this.b.readLock().lock();
            policyBackedService = null;
            try {
                block29: {
                    block30: {
                        string = clazz.getName();
                        d10 = this.c.get(string);
                        try {
                            if (null == d10) {
                                throw new IllegalArgumentException(e[44] + string);
                            }
                        }
                        catch (IllegalArgumentException illegalArgumentException) {
                            throw PolicyBackedServiceRegistry.a(illegalArgumentException);
                        }
                        try {
                            if (d10.a != clazz) {
                                throw new IllegalArgumentException(e[27] + string + e[37]);
                            }
                        }
                        catch (IllegalArgumentException illegalArgumentException) {
                            throw PolicyBackedServiceRegistry.a(illegalArgumentException);
                        }
                        Set<PolicyBackedService> set = this.d.get(string);
                        if (set == null) break block30;
                        for (PolicyBackedService policyBackedService2 : set) {
                            block26: {
                                block27: {
                                    block31: {
                                        if (goid != null) break block26;
                                        if (!policyBackedService2.getServiceInterfaceName().equals(string)) break block26;
                                        break block31;
                                        catch (IllegalArgumentException illegalArgumentException) {
                                            throw PolicyBackedServiceRegistry.a(illegalArgumentException);
                                        }
                                    }
                                    try {
                                        block32: {
                                            if (policyBackedService == null) break block27;
                                            break block32;
                                            catch (IllegalArgumentException illegalArgumentException) {
                                                throw PolicyBackedServiceRegistry.a(illegalArgumentException);
                                            }
                                        }
                                        throw new IllegalStateException(e[5] + string + e[29]);
                                    }
                                    catch (IllegalArgumentException illegalArgumentException) {
                                        throw PolicyBackedServiceRegistry.a(illegalArgumentException);
                                    }
                                }
                                policyBackedService = policyBackedService2;
                                continue;
                            }
                            if (!Goid.equals((Goid)policyBackedService2.getGoid(), (Goid)goid)) continue;
                            policyBackedService = policyBackedService2;
                            break;
                        }
                    }
                    if (null != policyBackedService) break block28;
                    try {
                        block33: {
                            if (goid != null) break block29;
                            break block33;
                            catch (IllegalArgumentException illegalArgumentException) {
                                throw PolicyBackedServiceRegistry.a(illegalArgumentException);
                            }
                        }
                        throw new IllegalArgumentException(e[68] + string + e[23]);
                    }
                    catch (IllegalArgumentException illegalArgumentException) {
                        throw PolicyBackedServiceRegistry.a(illegalArgumentException);
                    }
                }
                String[] stringArray = e;
                throw new IllegalArgumentException(stringArray[31] + string + stringArray[32] + String.valueOf(goid) + stringArray[49]);
            }
            finally {
                this.b.readLock().unlock();
            }
        }
        string = policyBackedService;
        try {
            object = Proxy.newProxyInstance(clazz.getClassLoader(), new Class[]{clazz}, (InvocationHandler)new c(this, (PolicyBackedService)string, d10));
            if (object == null) {
                PolicyBackedServiceRegistry.a(11);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw PolicyBackedServiceRegistry.a(illegalArgumentException);
        }
        return (T)object;
    }

    /*
     * WARNING - Removed try catching itself - possible behaviour change.
     */
    private Object a(@NotNull Method method, @Nullable Object[] objectArray, @NotNull Goid goid, @NotNull String string, @NotNull Set<EncapsulatedAssertionArgumentDescriptor> set, @NotNull Set<EncapsulatedAssertionResultDescriptor> set2, @Nullable PolicyEnforcementContext policyEnforcementContext) {
        Object object;
        Map<String, Object> map;
        block24: {
            Object object2;
            block23: {
                Object encapsulatedAssertionResultDescriptor;
                try {
                    if (method == null) {
                        PolicyBackedServiceRegistry.a(12);
                    }
                }
                catch (IllegalArgumentException illegalArgumentException) {
                    throw PolicyBackedServiceRegistry.a(illegalArgumentException);
                }
                try {
                    if (goid == null) {
                        PolicyBackedServiceRegistry.a(13);
                    }
                }
                catch (IllegalArgumentException illegalArgumentException) {
                    throw PolicyBackedServiceRegistry.a(illegalArgumentException);
                }
                try {
                    if (string == null) {
                        PolicyBackedServiceRegistry.a(14);
                    }
                }
                catch (IllegalArgumentException illegalArgumentException) {
                    throw PolicyBackedServiceRegistry.a(illegalArgumentException);
                }
                try {
                    if (set == null) {
                        PolicyBackedServiceRegistry.a(15);
                    }
                }
                catch (IllegalArgumentException illegalArgumentException) {
                    throw PolicyBackedServiceRegistry.a(illegalArgumentException);
                }
                try {
                    if (set2 == null) {
                        PolicyBackedServiceRegistry.a(16);
                    }
                }
                catch (IllegalArgumentException illegalArgumentException) {
                    throw PolicyBackedServiceRegistry.a(illegalArgumentException);
                }
                TreeMap<String, Object> treeMap = new TreeMap<String, Object>(String.CASE_INSENSITIVE_ORDER);
                for (EncapsulatedAssertionArgumentDescriptor object3 : set) {
                    map = object3.getArgumentName();
                    int encapsulatedAssertionResultDescriptor2 = object3.getOrdinal() - 1;
                    object2 = objectArray[encapsulatedAssertionResultDescriptor2];
                    Class<?> clazz = method.getParameterTypes()[encapsulatedAssertionResultDescriptor2];
                    Object object4 = this.a(clazz, object2, object3.getArgumentType());
                    treeMap.put((String)((Object)map), object4);
                }
                object = null;
                try {
                    if (policyEnforcementContext != null) {
                        object = PolicyEnforcementContextFactory.createPolicyEnforcementContext(policyEnforcementContext);
                    } else {
                        object = PolicyEnforcementContextFactory.createPolicyEnforcementContext(new Message(), new Message());
                        object.setOtelContext(this.otelContextFactory.create());
                    }
                    this.a((PolicyEnforcementContext)object, goid, string, treeMap);
                    ArrayList<Object> arrayList = new ArrayList<Object>();
                    for (EncapsulatedAssertionResultDescriptor encapsulatedAssertionResultDescriptor3 : set2) {
                        object2 = encapsulatedAssertionResultDescriptor3.getResultName();
                        arrayList.add(object2);
                    }
                    map = object.getVariableMap(arrayList.toArray(new String[arrayList.size()]), (Audit)new LoggingAudit(a));
                    if (set2.size() != 0) break block23;
                    encapsulatedAssertionResultDescriptor = null;
                }
                catch (Throwable throwable) {
                    ResourceUtils.closeQuietly(object);
                    throw throwable;
                }
                ResourceUtils.closeQuietly((Closeable)object);
                return encapsulatedAssertionResultDescriptor;
            }
            if (set2.size() != 1) break block24;
            EncapsulatedAssertionResultDescriptor map2 = set2.iterator().next();
            object2 = this.a(map.get(map2.getResultName()), map2.getResultType(), method.getReturnType());
            ResourceUtils.closeQuietly((Closeable)object);
            return object2;
        }
        Map<String, Object> map2 = map;
        ResourceUtils.closeQuietly((Closeable)object);
        return map2;
    }

    @Nullable
    private Object a(@Nullable Object object, @NotNull String string, @NotNull Class<?> clazz) {
        try {
            if (string == null) {
                PolicyBackedServiceRegistry.a(17);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw PolicyBackedServiceRegistry.a(illegalArgumentException);
        }
        try {
            if (clazz == null) {
                PolicyBackedServiceRegistry.a(18);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw PolicyBackedServiceRegistry.a(illegalArgumentException);
        }
        return object;
    }

    @Nullable
    private Object a(@NotNull Class<?> clazz, @Nullable Object object, @NotNull String string) {
        Class[] classArray;
        DataType dataType;
        block22: {
            block21: {
                try {
                    if (clazz == null) {
                        PolicyBackedServiceRegistry.a(19);
                    }
                }
                catch (IllegalArgumentException illegalArgumentException) {
                    throw PolicyBackedServiceRegistry.a(illegalArgumentException);
                }
                try {
                    if (string == null) {
                        PolicyBackedServiceRegistry.a(20);
                    }
                }
                catch (IllegalArgumentException illegalArgumentException) {
                    throw PolicyBackedServiceRegistry.a(illegalArgumentException);
                }
                dataType = DataType.forName((String)string);
                try {
                    try {
                        if (null != dataType && !DataType.UNKNOWN.equals(dataType)) break block21;
                    }
                    catch (IllegalArgumentException illegalArgumentException) {
                        throw PolicyBackedServiceRegistry.a(illegalArgumentException);
                    }
                    throw new IllegalArgumentException(e[62] + string);
                }
                catch (IllegalArgumentException illegalArgumentException) {
                    throw PolicyBackedServiceRegistry.a(illegalArgumentException);
                }
            }
            try {
                try {
                    if (object != null && !clazz.isAssignableFrom(object.getClass())) {
                    }
                    break block22;
                }
                catch (IllegalArgumentException illegalArgumentException) {
                    throw PolicyBackedServiceRegistry.a(illegalArgumentException);
                }
                throw new IllegalArgumentException(e[60] + String.valueOf(object.getClass()) + e[70] + String.valueOf(clazz));
            }
            catch (IllegalArgumentException illegalArgumentException) {
                throw PolicyBackedServiceRegistry.a(illegalArgumentException);
            }
        }
        for (Class clazz2 : classArray = dataType.getValueClasses()) {
            try {
                if (!clazz2.isAssignableFrom(clazz)) continue;
                return object;
            }
            catch (IllegalArgumentException illegalArgumentException) {
                throw PolicyBackedServiceRegistry.a(illegalArgumentException);
            }
        }
        try {
            if (object == null) {
                throw new IllegalArgumentException(e[46] + String.valueOf(clazz) + e[63] + string);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw PolicyBackedServiceRegistry.a(illegalArgumentException);
        }
        String[] stringArray = e;
        throw new IllegalArgumentException(stringArray[69] + String.valueOf(object.getClass()) + stringArray[21] + string);
    }

    private void a(@NotNull PolicyEnforcementContext policyEnforcementContext, @NotNull Goid goid, @NotNull String string, @NotNull Map<String, Object> map) {
        try {
            if (policyEnforcementContext == null) {
                PolicyBackedServiceRegistry.a(21);
            }
        }
        catch (Throwable throwable) {
            throw PolicyBackedServiceRegistry.a(throwable);
        }
        try {
            if (goid == null) {
                PolicyBackedServiceRegistry.a(22);
            }
        }
        catch (Throwable throwable) {
            throw PolicyBackedServiceRegistry.a(throwable);
        }
        try {
            if (string == null) {
                PolicyBackedServiceRegistry.a(23);
            }
        }
        catch (Throwable throwable) {
            throw PolicyBackedServiceRegistry.a(throwable);
        }
        try {
            if (map == null) {
                PolicyBackedServiceRegistry.a(24);
            }
        }
        catch (Throwable throwable) {
            throw PolicyBackedServiceRegistry.a(throwable);
        }
        try {
            ServerPolicyHandle serverPolicyHandle = this.policyCache.getServerPolicy(goid);
            try {
                try {
                    if (serverPolicyHandle == null) {
                        throw new UnsupportedOperationException(MessageFormat.format(e[66], string, goid));
                    }
                }
                catch (Throwable throwable) {
                    throw PolicyBackedServiceRegistry.a(throwable);
                }
                for (Map.Entry<String, Object> entry : map.entrySet()) {
                    policyEnforcementContext.setVariable(entry.getKey(), entry.getValue());
                }
                AssertionStatus assertionStatus = serverPolicyHandle.checkRequest(policyEnforcementContext);
                try {
                    if (!AssertionStatus.NONE.equals(assertionStatus)) {
                        throw new AssertionStatusException(assertionStatus, e[14] + string + e[28] + String.valueOf(assertionStatus));
                    }
                }
                catch (Throwable throwable) {
                    throw PolicyBackedServiceRegistry.a(throwable);
                }
            }
            catch (Throwable throwable) {
                if (serverPolicyHandle != null) {
                    try {
                        serverPolicyHandle.close();
                    }
                    catch (Throwable throwable2) {
                        throwable.addSuppressed(throwable2);
                    }
                }
                throw throwable;
            }
            try {
                if (serverPolicyHandle != null) {
                    serverPolicyHandle.close();
                }
            }
            catch (Throwable throwable) {
                throw PolicyBackedServiceRegistry.a(throwable);
            }
        }
        catch (RuntimeException runtimeException) {
            throw runtimeException;
        }
        catch (Exception exception) {
            String[] stringArray = e;
            throw new RuntimeException(stringArray[34] + string + stringArray[45] + ExceptionUtils.getMessage((Throwable)exception), exception);
        }
    }

    /*
     * Enabled force condition propagation
     * Lifted jumps to return sites
     */
    public void onApplicationEvent(ApplicationEvent applicationEvent) {
        if (applicationEvent instanceof EntityInvalidationEvent) {
            EntityInvalidationEvent entityInvalidationEvent = (EntityInvalidationEvent)applicationEvent;
            try {
                if (PolicyBackedService.class != entityInvalidationEvent.getEntityClass()) return;
                this.a();
                return;
            }
            catch (IllegalArgumentException illegalArgumentException) {
                throw PolicyBackedServiceRegistry.a(illegalArgumentException);
            }
        }
        try {
            block9: {
                try {
                    try {
                        if (applicationEvent instanceof Started || applicationEvent instanceof AssertionModuleRegistrationEvent) break block9;
                    }
                    catch (IllegalArgumentException illegalArgumentException) {
                        throw PolicyBackedServiceRegistry.a(illegalArgumentException);
                    }
                    if (!(applicationEvent instanceof AssertionModuleUnregistrationEvent)) return;
                }
                catch (IllegalArgumentException illegalArgumentException) {
                    throw PolicyBackedServiceRegistry.a(illegalArgumentException);
                }
            }
            this.a();
            return;
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw PolicyBackedServiceRegistry.a(illegalArgumentException);
        }
    }

    /*
     * WARNING - Removed try catching itself - possible behaviour change.
     */
    private void a() {
        Collection collection;
        try {
            collection = this.policyBackedServiceManager.findAll();
        }
        catch (FindException findException) {
            String[] stringArray = e;
            a.log(Level.SEVERE, stringArray[3] + ExceptionUtils.getMessage((Throwable)findException), findException);
            return;
        }
        this.b.writeLock().lock();
        try {
            this.d.clear();
            for (PolicyBackedService policyBackedService : collection) {
                String[] stringArray;
                String string = policyBackedService.getServiceInterfaceName();
                d d10 = this.c.get(string);
                if (d10 == null) {
                    String string2 = string;
                    String string3 = String.valueOf(policyBackedService.getGoid());
                    String string4 = policyBackedService.getName();
                    stringArray = e;
                    a.log(Level.INFO, stringArray[64] + string4 + stringArray[19] + string3 + stringArray[65] + string2);
                    continue;
                }
                try {
                    this.a(string, policyBackedService);
                }
                catch (Exception exception) {
                    String string5 = ExceptionUtils.getMessage((Throwable)exception);
                    String string6 = string;
                    String string7 = String.valueOf(policyBackedService.getGoid());
                    String string8 = policyBackedService.getName();
                    stringArray = e;
                    a.log(Level.WARNING, stringArray[1] + string8 + stringArray[53] + string7 + stringArray[17] + string6 + stringArray[25] + string5, ExceptionUtils.getDebugException((Throwable)exception));
                }
            }
        }
        finally {
            this.b.writeLock().unlock();
        }
    }

    public void afterPropertiesSet() throws Exception {
        this.b();
    }

    private void b() {
        this.registerPolicyBackedServiceTemplate(BackgroundTask.class);
    }

    /*
     * Unable to fully structure code
     */
    static {
        block10: {
            block9: {
                var5 = new String[71];
                var3_1 = 0;
                var2_2 = "\u0000\u007f\f\u0003\u000bVLEw\u001bZJH[G\u007f\fW\u000fH[D(ed\rL\u0018\u001aLEq\u0016P\u001e_LIx\u0018\u0003\u001aURIu\u0006\u000e\b[]Ks\u001b\u0003\u0019_LV\u007f\u001cFJ\u0015Gs\u000bw\u000fWNLw\u000bF%J[Rw\u000bJ\u0005TM'ux\u001eA\u0006_\u001eTy_O\u0005[Z\u0000f\u0010O\u0003YG\u0000t\u001e@\u0001_Z\u0000e\u001aQ\u001cS]EeE\u0003\nPy\u0013J\tCyO\u007f\u001b*my\rFJNVAx_L\u0004_\u001eI{\u000fO\u000fW[Nb\u001eW\u0003UP\u0000y\u0019\u0003\u0003TJEd\u0019B\t_\u001e\u0012Ax\u0011L\u001e[JEr6M\u001e_LFw\u001cF5Cy\u0012\f\u0006\rJEu\u0017\f\u0019_LVs\r\f\u001aURBw\u001cHEjQL\u007f\u001cZ([]Ks\u001bp\u000fHHIu\u001aq\u000f]WSb\rZ\u0007Oc\u000bS\u001fNM\nRs\u000bV\u0018TjYf\u001a\u0015Cy\u0011W\u000fBJvw\rJ\u000bXRE_\u0011S\u001fNM\u0016Ty<L\u0004N[Xb)B\u0018S_Bz\u001au\u000bVKE\rOf\u001aQ\u000bNWOx1B\u0007_\nOf\u001aQ\u000bNWOx_+bw\u001cH\u0003TY\u0000f\u0010O\u0003YG\u0000p\u0010QJJQL\u007f\u001cZGX_C}\u001aGJUNEd\u001eW\u0003UP\u0000\u0006Ms\u000bK\u0005^\fAd\u0018V\u0007_PTB\u0006S\u000f\u0018\t6_B\u0019\u001aWMf\u0013F\u0007_PTw\u000bJ\u0005T\u001eOp_\u000eIx\u000bF\u0018\\_Cs<O\u000bIM\u0005\u0000>\u0016GW\u001fax_J\u0007JRE{\u001aM\u001e[JIy\u0011\u0003\u0005\\\u001eIx\u000bF\u0018\\_Cs_3\u0000\u007f\f\u0003\u0004UJ\u0000w_U\u000bVWD6\rF\u001aH[Ss\u0011W\u000bNWOx_L\f\u001aNOz\u0016@\u0013\u001aZAb\u001e\u0003\u001eCNE6\u0011Ix\tL\u0001_nRy\u0007Z'_JHy\u001b\u000f\u0000w\rFJH[G\u007f\fW\u000fH[D%Ux\rF\rSMTs\rs\u0005VWCo=B\tQ[DE\u001aQ\u001cS]EB\u001aN\u001aV_Ts\u0002\u001a6*`X\u0010W$ORL6\u0012F\u001eRQD6ZPD\u001fM\u0000{\nP\u001e\u001aPOb_Q\u000fNKRx_M\u001fVR\u001frs\u0018J\u0019N[Rs\u001b\u0003\u0003TJEd\u0019B\t_\u001eW\u007f\u000bKJT_Ms_\u001e\u0000p\u001eJ\u0006_Z\u0000a\u0016W\u0002\u001a_Se\u001aQ\u001eSQN6\fW\u000bNKS60\u0000\u007f\f\u0003\u0018_YIe\u000bF\u0018_Z\u001b6\u0012V\u0019N\u001eSf\u001a@\u0003\\G\u0000\u007f\u0012S\u0006_SEx\u000bB\u001eSQN68L\u0003^\u0007Cy\u0011W\u000fBJ\u001fny_J\u0007JRE{\u001aM\u001e[JIy\u0011\u0003\u0005\\\u001eIx\u000bF\u0018\\_Cs_\u001f\u0000a\u0016W\u0002\u001aNOz\u0016@\u0013\u001a\\Au\u0014F\u000e\u001aMEd\tJ\t_\u001eIr_\u0012Ix\u000bF\u0018\\_Cs<O\u000bIMnw\u0012F-en\u001cF\u001aNWOx_J\u0004\u001aNOz\u0016@\u0013\u001a\\Au\u0014F\u000e\u001aMEd\tJ\t_\u001eOf\u001aQ\u000bNWOx_@\u0000\u007f\f\u0003\fHQM6\u001e\u0003\u000eSXFs\rF\u0004N\u001eCz\u001eP\u0019\u001aROw\u001bF\u0018\u001aJHw\u0011\u0003\u0018_OUs\fW\u000f^\u001eIx\u000bF\u0018\\_Cs_@\u0006[MS\u0018Fd\u0010N)UPTs\u0007W<[LIw\u001dO\u000fl_Lc\u001a@\u0000\u007f\f\u0003\fHQM6\u001e\u0003\u000eSXFs\rF\u0004N\u001eCz\u001eP\u0019\u001aROw\u001bF\u0018\u001aJHw\u0011\u0003\u0018_OUs\fW\u000f^\u001eIx\u000bF\u0018\\_Cs_@\u0006[MS\u000ePy\u0013J\tCzAb\u001ew\u0013J[\u0016Gs\u000bj\u0007JRE{\u001aM\u001e[JIy\u0011s\u0018UFY\bAd\u0018`\u0006[MS\u001bIx\tL\u0001_nOz\u0016@\u0013x_C}\u001aG%J[Rw\u000bJ\u0005T5Cy\u0012\f\u0006\rJEu\u0017\f\u0019_LVs\r\f\u001aURBw\u001cHEjQL\u007f\u001cZ([]Ks\u001bp\u000fHHIu\u001aq\u000f]WSb\rZ\u001frs\u0018J\u0019N[Rs\u001b\u0003\u0003TJEd\u0019B\t_\u001eW\u007f\u000bKJT_Ms_)ny_J\u0004N[Rp\u001e@\u000f\u001aLEq\u0016P\u001e_LEr_T\u0003NV\u0000u\u0013B\u0019I\u001eNw\u0012FP\u001a\u0002\u001a6%Nc\u0013OJL_Lc\u001a\u0003\fUL\u0000p\u0010Q\u0007[R\u0000f\u001eQ\u000bW[Ts\r\u0003\u001eCNE6)\u0000\u007f\f\u0003\u0004UJ\u0000t\u0010V\u0004^\u001eTy_B\u0004\u001aWMf\u0013F\u0007_PTw\u000bJ\u0005T\u001ePy\u0013J\tC)ny_J\u0004N[Rp\u001e@\u000f\u001aLEq\u0016P\u001e_LEr_T\u0003NV\u0000u\u0013B\u0019I\u001eNw\u0012FP\u001a\u000e\u0000\u007f\f\u0003\u0018_YIe\u000bF\u0018_Z#Rs\u0018J\u0019N[RF\u0010O\u0003YGbw\u001cH\u000f^mEd\tJ\t_jE{\u000fO\u000bN[\u0013Py\u0013J\tC|Au\u0014F\u000ei[R`\u0016@\u000f\u001fGs\u000bs\u0005VWCo=B\tQ[DE\u001aQ\u001cS]EB\u001aN\u001aV_Ts\f\u0005\u0000>\u0016GW\u0015Gs\u000bw\u000fWNLw\u000bF%J[Rw\u000bJ\u0005TM\u0006Ix\u000fV\u001eI>ad\u0018V\u0007_PT6\u0019L\u0018\u001a~ny\u000bm\u001fVR\u0000f\u001eQ\u000bW[Ts\r\u0003M\u001fM\u00076\u0010EJ\u001fM\u000e3\f\u0003\u0007OMT6\u0011L\u001e\u001a\\E6\u0011V\u0006V%Gs\u000bj\u0007JRE{\u001aM\u001e[JIy\u0011s\u0018UFYP\u0010Q9SPGz\u001an\u000fNVOr%Gs\u000bj\u0007JRE{\u001aM\u001e[JIy\u0011s\u0018UFYP\u0010Q9SPGz\u001an\u000fNVOr\u0016Rs\u0018J\u0019N[R_\u0012S\u0006_SEx\u000bB\u001eSQN\u0018au\u000bV\u000bV\u001eAd\u0018V\u0007_PT6\u0010EJNGPs_\u0016Gs\u000bj\u0007JRE{\u001aM\u001e[JIy\u0011s\u0018UFY\u001dux\rF\tUYN\u007f\u0005F\u000e\u001aZAb\u001e\u0003\u001eCNE6\u0011B\u0007_\u0004\u00003\u0000\u007f\f\u0003\u0004UJ\u0000w_U\u000bVWD6\rF\u001aH[Ss\u0011W\u000bNWOx_L\f\u001aNOz\u0016@\u0013\u001aZAb\u001e\u0003\u001eCNE6\u001fiq\u0011L\u0018SPG6\u000fL\u0006S]Y;\u001dB\tQ[D6\fF\u0018LWCs_F\t6\u001dF\t[KSs_M\u0005\u001aJE{\u000fO\u000bN[\u0000\u007f\u0011W\u000fHXAu\u001a\u0003\u0003I\u001eRs\u0018J\u0019N[Rs\u001b\u0003\fUL\u0000\u007f\u000bPJSPTs\rE\u000bY[\u0000u\u0013B\u0019I\u001ezux\u001eA\u0006_\u001eTy_J\u0004LQKs_S\u0005VWCo_A\u000bYUEr_P\u000fHHIu\u001a\u0003\u0005J[Rw\u000bJ\u0005T\u001e[&\u0002\u0003G\u0017\u001eNy_S\u0005VWCo_T\u0003NV\u0000_;\u0003\u0011\u000bC\u0000\u007f\f\u0003\u001aH[Ss\u0011WJSP\u0000f\u0010O\u0003YG\u0000u\u001e@\u0002_\u001e\b\u007f\u0011U\u000bVWD6\u000fL\u0006S]Y)V\u001f\u0000a\u0016W\u0002\u001aNOz\u0016@\u0013\u001a\\Au\u0014F\u000e\u001aMEd\tJ\t_\u001eIr_ ny_J\u0007JRE{\u001aM\u001e[JIy\u0011PJUX\u0000\u007f\u0011W\u000fHXAu\u001a\u0003";
                var4_3 = "\u0000\u007f\f\u0003\u000bVLEw\u001bZJH[G\u007f\fW\u000fH[D(ed\rL\u0018\u001aLEq\u0016P\u001e_LIx\u0018\u0003\u001aURIu\u0006\u000e\b[]Ks\u001b\u0003\u0019_LV\u007f\u001cFJ\u0015Gs\u000bw\u000fWNLw\u000bF%J[Rw\u000bJ\u0005TM'ux\u001eA\u0006_\u001eTy_O\u0005[Z\u0000f\u0010O\u0003YG\u0000t\u001e@\u0001_Z\u0000e\u001aQ\u001cS]EeE\u0003\nPy\u0013J\tCyO\u007f\u001b*my\rFJNVAx_L\u0004_\u001eI{\u000fO\u000fW[Nb\u001eW\u0003UP\u0000y\u0019\u0003\u0003TJEd\u0019B\t_\u001e\u0012Ax\u0011L\u001e[JEr6M\u001e_LFw\u001cF5Cy\u0012\f\u0006\rJEu\u0017\f\u0019_LVs\r\f\u001aURBw\u001cHEjQL\u007f\u001cZ([]Ks\u001bp\u000fHHIu\u001aq\u000f]WSb\rZ\u0007Oc\u000bS\u001fNM\nRs\u000bV\u0018TjYf\u001a\u0015Cy\u0011W\u000fBJvw\rJ\u000bXRE_\u0011S\u001fNM\u0016Ty<L\u0004N[Xb)B\u0018S_Bz\u001au\u000bVKE\rOf\u001aQ\u000bNWOx1B\u0007_\nOf\u001aQ\u000bNWOx_+bw\u001cH\u0003TY\u0000f\u0010O\u0003YG\u0000p\u0010QJJQL\u007f\u001cZGX_C}\u001aGJUNEd\u001eW\u0003UP\u0000\u0006Ms\u000bK\u0005^\fAd\u0018V\u0007_PTB\u0006S\u000f\u0018\t6_B\u0019\u001aWMf\u0013F\u0007_PTw\u000bJ\u0005T\u001eOp_\u000eIx\u000bF\u0018\\_Cs<O\u000bIM\u0005\u0000>\u0016GW\u001fax_J\u0007JRE{\u001aM\u001e[JIy\u0011\u0003\u0005\\\u001eIx\u000bF\u0018\\_Cs_3\u0000\u007f\f\u0003\u0004UJ\u0000w_U\u000bVWD6\rF\u001aH[Ss\u0011W\u000bNWOx_L\f\u001aNOz\u0016@\u0013\u001aZAb\u001e\u0003\u001eCNE6\u0011Ix\tL\u0001_nRy\u0007Z'_JHy\u001b\u000f\u0000w\rFJH[G\u007f\fW\u000fH[D%Ux\rF\rSMTs\rs\u0005VWCo=B\tQ[DE\u001aQ\u001cS]EB\u001aN\u001aV_Ts\u0002\u001a6*`X\u0010W$ORL6\u0012F\u001eRQD6ZPD\u001fM\u0000{\nP\u001e\u001aPOb_Q\u000fNKRx_M\u001fVR\u001frs\u0018J\u0019N[Rs\u001b\u0003\u0003TJEd\u0019B\t_\u001eW\u007f\u000bKJT_Ms_\u001e\u0000p\u001eJ\u0006_Z\u0000a\u0016W\u0002\u001a_Se\u001aQ\u001eSQN6\fW\u000bNKS60\u0000\u007f\f\u0003\u0018_YIe\u000bF\u0018_Z\u001b6\u0012V\u0019N\u001eSf\u001a@\u0003\\G\u0000\u007f\u0012S\u0006_SEx\u000bB\u001eSQN68L\u0003^\u0007Cy\u0011W\u000fBJ\u001fny_J\u0007JRE{\u001aM\u001e[JIy\u0011\u0003\u0005\\\u001eIx\u000bF\u0018\\_Cs_\u001f\u0000a\u0016W\u0002\u001aNOz\u0016@\u0013\u001a\\Au\u0014F\u000e\u001aMEd\tJ\t_\u001eIr_\u0012Ix\u000bF\u0018\\_Cs<O\u000bIMnw\u0012F-en\u001cF\u001aNWOx_J\u0004\u001aNOz\u0016@\u0013\u001a\\Au\u0014F\u000e\u001aMEd\tJ\t_\u001eOf\u001aQ\u000bNWOx_@\u0000\u007f\f\u0003\fHQM6\u001e\u0003\u000eSXFs\rF\u0004N\u001eCz\u001eP\u0019\u001aROw\u001bF\u0018\u001aJHw\u0011\u0003\u0018_OUs\fW\u000f^\u001eIx\u000bF\u0018\\_Cs_@\u0006[MS\u0018Fd\u0010N)UPTs\u0007W<[LIw\u001dO\u000fl_Lc\u001a@\u0000\u007f\f\u0003\fHQM6\u001e\u0003\u000eSXFs\rF\u0004N\u001eCz\u001eP\u0019\u001aROw\u001bF\u0018\u001aJHw\u0011\u0003\u0018_OUs\fW\u000f^\u001eIx\u000bF\u0018\\_Cs_@\u0006[MS\u000ePy\u0013J\tCzAb\u001ew\u0013J[\u0016Gs\u000bj\u0007JRE{\u001aM\u001e[JIy\u0011s\u0018UFY\bAd\u0018`\u0006[MS\u001bIx\tL\u0001_nOz\u0016@\u0013x_C}\u001aG%J[Rw\u000bJ\u0005T5Cy\u0012\f\u0006\rJEu\u0017\f\u0019_LVs\r\f\u001aURBw\u001cHEjQL\u007f\u001cZ([]Ks\u001bp\u000fHHIu\u001aq\u000f]WSb\rZ\u001frs\u0018J\u0019N[Rs\u001b\u0003\u0003TJEd\u0019B\t_\u001eW\u007f\u000bKJT_Ms_)ny_J\u0004N[Rp\u001e@\u000f\u001aLEq\u0016P\u001e_LEr_T\u0003NV\u0000u\u0013B\u0019I\u001eNw\u0012FP\u001a\u0002\u001a6%Nc\u0013OJL_Lc\u001a\u0003\fUL\u0000p\u0010Q\u0007[R\u0000f\u001eQ\u000bW[Ts\r\u0003\u001eCNE6)\u0000\u007f\f\u0003\u0004UJ\u0000t\u0010V\u0004^\u001eTy_B\u0004\u001aWMf\u0013F\u0007_PTw\u000bJ\u0005T\u001ePy\u0013J\tC)ny_J\u0004N[Rp\u001e@\u000f\u001aLEq\u0016P\u001e_LEr_T\u0003NV\u0000u\u0013B\u0019I\u001eNw\u0012FP\u001a\u000e\u0000\u007f\f\u0003\u0018_YIe\u000bF\u0018_Z#Rs\u0018J\u0019N[RF\u0010O\u0003YGbw\u001cH\u000f^mEd\tJ\t_jE{\u000fO\u000bN[\u0013Py\u0013J\tC|Au\u0014F\u000ei[R`\u0016@\u000f\u001fGs\u000bs\u0005VWCo=B\tQ[DE\u001aQ\u001cS]EB\u001aN\u001aV_Ts\f\u0005\u0000>\u0016GW\u0015Gs\u000bw\u000fWNLw\u000bF%J[Rw\u000bJ\u0005TM\u0006Ix\u000fV\u001eI>ad\u0018V\u0007_PT6\u0019L\u0018\u001a~ny\u000bm\u001fVR\u0000f\u001eQ\u000bW[Ts\r\u0003M\u001fM\u00076\u0010EJ\u001fM\u000e3\f\u0003\u0007OMT6\u0011L\u001e\u001a\\E6\u0011V\u0006V%Gs\u000bj\u0007JRE{\u001aM\u001e[JIy\u0011s\u0018UFYP\u0010Q9SPGz\u001an\u000fNVOr%Gs\u000bj\u0007JRE{\u001aM\u001e[JIy\u0011s\u0018UFYP\u0010Q9SPGz\u001an\u000fNVOr\u0016Rs\u0018J\u0019N[R_\u0012S\u0006_SEx\u000bB\u001eSQN\u0018au\u000bV\u000bV\u001eAd\u0018V\u0007_PT6\u0010EJNGPs_\u0016Gs\u000bj\u0007JRE{\u001aM\u001e[JIy\u0011s\u0018UFY\u001dux\rF\tUYN\u007f\u0005F\u000e\u001aZAb\u001e\u0003\u001eCNE6\u0011B\u0007_\u0004\u00003\u0000\u007f\f\u0003\u0004UJ\u0000w_U\u000bVWD6\rF\u001aH[Ss\u0011W\u000bNWOx_L\f\u001aNOz\u0016@\u0013\u001aZAb\u001e\u0003\u001eCNE6\u001fiq\u0011L\u0018SPG6\u000fL\u0006S]Y;\u001dB\tQ[D6\fF\u0018LWCs_F\t6\u001dF\t[KSs_M\u0005\u001aJE{\u000fO\u000bN[\u0000\u007f\u0011W\u000fHXAu\u001a\u0003\u0003I\u001eRs\u0018J\u0019N[Rs\u001b\u0003\fUL\u0000\u007f\u000bPJSPTs\rE\u000bY[\u0000u\u0013B\u0019I\u001ezux\u001eA\u0006_\u001eTy_J\u0004LQKs_S\u0005VWCo_A\u000bYUEr_P\u000fHHIu\u001a\u0003\u0005J[Rw\u000bJ\u0005T\u001e[&\u0002\u0003G\u0017\u001eNy_S\u0005VWCo_T\u0003NV\u0000_;\u0003\u0011\u000bC\u0000\u007f\f\u0003\u001aH[Ss\u0011WJSP\u0000f\u0010O\u0003YG\u0000u\u001e@\u0002_\u001e\b\u007f\u0011U\u000bVWD6\u000fL\u0006S]Y)V\u001f\u0000a\u0016W\u0002\u001aNOz\u0016@\u0013\u001a\\Au\u0014F\u000e\u001aMEd\tJ\t_\u001eIr_ ny_J\u0007JRE{\u001aM\u001e[JIy\u0011PJUX\u0000\u007f\u0011W\u000fHXAu\u001a\u0003".length();
                var1_4 = 22;
                var0_5 = -1;
lbl7:
                // 2 sources

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

                while (true) {
                    var5[var3_1++] = PolicyBackedServiceRegistry.a(v0, PolicyBackedServiceRegistry.a(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    var2_2 = "4 ^\u0003^\u0003K\u00141M\u0003R\n\u0005\u0001cE\u0010\u001f\u001b\u0012\u0005&\n,U*YVQ\u0000\u001fU\"Y\u0005V\b\u0005\u0014!F\u0013\u001f\u001b\u0004U%E\u0004R\u000e\u0007U3K\u0004^\u0002\u000e\u0001&XVK\u0016\u001b\u0010c";
                    var4_3 = "4 ^\u0003^\u0003K\u00141M\u0003R\n\u0005\u0001cE\u0010\u001f\u001b\u0012\u0005&\n,U*YVQ\u0000\u001fU\"Y\u0005V\b\u0005\u0014!F\u0013\u001f\u001b\u0004U%E\u0004R\u000e\u0007U3K\u0004^\u0002\u000e\u0001&XVK\u0016\u001b\u0010c".length();
                    var1_4 = 24;
                    var0_5 = -1;
lbl22:
                    // 2 sources

                    while (true) {
                        v0 = 28;
                        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++] = PolicyBackedServiceRegistry.a(v0, PolicyBackedServiceRegistry.a(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;
            }
        }
        PolicyBackedServiceRegistry.e = var5;
        PolicyBackedServiceRegistry.a = Logger.getLogger(PolicyBackedServiceRegistry.class.getName());
    }

    /*
     * 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 Throwable a(Throwable throwable) {
        return throwable;
    }

    private static char[] a(String string) {
        char[] cArray = string.toCharArray();
        if (cArray.length < 2) {
            cArray = cArray;
            cArray[0] = (char)(cArray[0] ^ 0x77);
        }
        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 -> 105;
                    case 1 -> 95;
                    case 2 -> 54;
                    case 3 -> 106;
                    case 4 -> 35;
                    case 5 -> 115;
                    default -> 119;
                })));
                ++n3;
                n4 = n4;
            } while (n4 > n3);
        }
        return new String(cArray2).intern();
    }
}

