/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  com.l7tech.gateway.common.security.rbac.OperationType
 *  com.l7tech.gateway.common.security.rbac.Role
 *  com.l7tech.objectmodel.Entity
 *  com.l7tech.objectmodel.EntityHeader
 *  com.l7tech.objectmodel.EntityManager$UniqueType
 *  com.l7tech.objectmodel.EntityType
 *  com.l7tech.objectmodel.FindException
 *  com.l7tech.objectmodel.Goid
 *  com.l7tech.objectmodel.PersistentEntity
 *  com.l7tech.objectmodel.SaveException
 *  com.l7tech.objectmodel.StaleUpdateException
 *  com.l7tech.objectmodel.UpdateException
 *  com.l7tech.objectmodel.folder.Folder
 *  com.l7tech.objectmodel.folder.FolderHeader
 *  com.l7tech.objectmodel.imp.NamedEntityImp
 *  com.l7tech.util.CollectionUtils$MapBuilder
 *  com.l7tech.util.Config
 *  com.l7tech.util.PathUtils
 *  com.l7tech.util.TextUtils
 *  org.apache.commons.lang3.StringUtils
 *  org.jetbrains.annotations.NotNull
 *  org.jetbrains.annotations.Nullable
 *  org.springframework.transaction.annotation.Propagation
 *  org.springframework.transaction.annotation.Transactional
 */
package com.l7tech.server.folder;

import com.l7tech.gateway.common.security.rbac.OperationType;
import com.l7tech.gateway.common.security.rbac.Role;
import com.l7tech.objectmodel.Entity;
import com.l7tech.objectmodel.EntityHeader;
import com.l7tech.objectmodel.EntityManager;
import com.l7tech.objectmodel.EntityType;
import com.l7tech.objectmodel.FindException;
import com.l7tech.objectmodel.Goid;
import com.l7tech.objectmodel.PersistentEntity;
import com.l7tech.objectmodel.SaveException;
import com.l7tech.objectmodel.StaleUpdateException;
import com.l7tech.objectmodel.UpdateException;
import com.l7tech.objectmodel.folder.Folder;
import com.l7tech.objectmodel.folder.FolderHeader;
import com.l7tech.objectmodel.imp.NamedEntityImp;
import com.l7tech.server.FolderSupportHibernateEntityManager;
import com.l7tech.server.folder.FolderManager;
import com.l7tech.server.security.rbac.RoleManager;
import com.l7tech.util.CollectionUtils;
import com.l7tech.util.Config;
import com.l7tech.util.PathUtils;
import com.l7tech.util.TextUtils;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Pattern;
import org.apache.commons.lang3.StringUtils;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

/*
 * Exception performing whole class analysis ignored.
 */
@Transactional(propagation=Propagation.REQUIRED, rollbackFor={Throwable.class})
public class FolderManagerImpl
extends FolderSupportHibernateEntityManager<Folder, FolderHeader>
implements FolderManager {
    private static final Logger n;
    private static final String o;
    private static final String p;
    private static final String q;
    private static final Pattern r;
    static final String s;
    static final String t;
    private final RoleManager u;
    private final Config v;
    private static final String[] w;

    public FolderManagerImpl(RoleManager roleManager, @NotNull Config config) {
        if (config == null) {
            FolderManagerImpl.c(0);
        }
        this.u = roleManager;
        this.v = config;
    }

    @Transactional(propagation=Propagation.SUPPORTS)
    public Class<? extends Entity> getImpClass() {
        return Folder.class;
    }

    @Override
    @Transactional(propagation=Propagation.SUPPORTS)
    public Class<? extends Entity> getInterfaceClass() {
        return Folder.class;
    }

    @Override
    @Transactional(propagation=Propagation.SUPPORTS)
    public String getTableName() {
        return w[43];
    }

    @Override
    protected FolderHeader newHeader(Folder folder) {
        return new FolderHeader(folder);
    }

    @Override
    protected EntityManager.UniqueType getUniqueType() {
        return EntityManager.UniqueType.OTHER;
    }

    @Override
    protected Collection<Map<String, Object>> getUniqueConstraints(Folder folder) {
        HashMap<String, Object> hashMap = new HashMap<String, Object>();
        String[] stringArray = w;
        hashMap.put(stringArray[13], folder.getFolder());
        hashMap.put(stringArray[17], folder.getName());
        return Arrays.asList(hashMap);
    }

    @Override
    public Folder findByHeader(EntityHeader entityHeader) throws FindException {
        Folder folder = (Folder)super.findByHeader(entityHeader);
        try {
            if (folder != null) {
                return folder;
            }
        }
        catch (FindException findException) {
            throw FolderManagerImpl.a((Exception)((Object)findException));
        }
        return this.a(entityHeader);
    }

    private Folder a(EntityHeader entityHeader) throws FindException {
        String[] stringArray;
        String string;
        try {
            string = entityHeader == null ? null : entityHeader.getDescription();
        }
        catch (FindException findException) {
            throw FolderManagerImpl.a((Exception)((Object)findException));
        }
        String string2 = string;
        try {
            if (string2 == null) {
                return null;
            }
        }
        catch (FindException findException) {
            throw FolderManagerImpl.a((Exception)((Object)findException));
        }
        Folder folder = this.findRootFolder();
        try {
            if ("/".equals(string2)) {
                return folder;
            }
        }
        catch (FindException findException) {
            throw FolderManagerImpl.a((Exception)((Object)findException));
        }
        HashMap<String, Object> hashMap = new HashMap<String, Object>();
        Folder folder2 = folder;
        for (String string3 : stringArray = string2.split("/")) {
            List list;
            block16: {
                try {
                    if ("".equals(string3)) {
                        continue;
                    }
                }
                catch (FindException findException) {
                    throw FolderManagerImpl.a((Exception)((Object)findException));
                }
                String[] stringArray2 = w;
                hashMap.put(stringArray2[42], folder2);
                hashMap.put(stringArray2[10], string3);
                list = this.findMatching(Arrays.asList(hashMap));
                try {
                    try {
                        if (list != null && list.size() == 1) break block16;
                    }
                    catch (FindException findException) {
                        throw FolderManagerImpl.a((Exception)((Object)findException));
                    }
                    return null;
                }
                catch (FindException findException) {
                    throw FolderManagerImpl.a((Exception)((Object)findException));
                }
            }
            folder2 = (Folder)list.get(0);
        }
        return folder2;
    }

    @Override
    public void update(Folder folder) throws UpdateException {
        try {
            Folder folder2 = (Folder)this.findByPrimaryKey(folder.getGoid());
            if (folder2 == null) {
                String[] stringArray = w;
                String string = stringArray[36];
                n.info(stringArray[15] + folder.getName() + stringArray[20]);
                throw new StaleUpdateException(string);
            }
            if (folder2.getVersion() != folder.getVersion()) {
                String[] stringArray = w;
                String string = stringArray[11];
                n.info(stringArray[4] + folder.getName() + stringArray[27]);
                throw new StaleUpdateException(string);
            }
        }
        catch (FindException findException) {
            throw new UpdateException(w[30]);
        }
        super.update(folder);
    }

    public void updateFolder(Goid goid, Folder folder) throws UpdateException {
        this.setParentFolderForEntity(goid, folder);
    }

    public void updateFolder(Folder folder, Folder folder2) throws UpdateException {
        try {
            if (folder == null) {
                throw new UpdateException(w[21]);
            }
        }
        catch (UpdateException updateException) {
            throw FolderManagerImpl.a((Exception)((Object)updateException));
        }
        this.setParentFolderForEntity(folder.getGoid(), folder2);
    }

    @Override
    public Folder findRootFolder() throws FindException {
        Collection collection = super.findAll();
        for (Folder folder : collection) {
            try {
                if (folder.getFolder() != null) continue;
                return folder;
            }
            catch (FindException findException) {
                throw FolderManagerImpl.a((Exception)((Object)findException));
            }
        }
        throw new FindException(w[9]);
    }

    @Override
    @Nullable
    public Folder findByPath(@Nullable String string) throws FindException {
        Object object;
        try {
            if (StringUtils.isBlank((CharSequence)string)) {
                return null;
            }
        }
        catch (FindException findException) {
            throw FolderManagerImpl.a((Exception)((Object)findException));
        }
        try {
            if (string.equals("/")) {
                return this.findRootFolder();
            }
        }
        catch (FindException findException) {
            throw FolderManagerImpl.a((Exception)((Object)findException));
        }
        try {
            object = string.startsWith("/") ? string : "/" + string;
        }
        catch (FindException findException) {
            throw FolderManagerImpl.a((Exception)((Object)findException));
        }
        Object object2 = object;
        String[] stringArray = PathUtils.getPathElements((String)object2);
        int n2 = stringArray.length;
        if (n2 > 0) {
            String string2 = PathUtils.getEscapedPathString((String[])stringArray);
            String string3 = stringArray[n2 - 1];
            List<Folder> list = this.a(string3);
            for (Folder folder : list) {
                String string4 = this.a(folder);
                try {
                    if (!string2.equals(string4)) continue;
                    return folder;
                }
                catch (FindException findException) {
                    throw FolderManagerImpl.a((Exception)((Object)findException));
                }
            }
        } else {
            n.log(Level.WARNING, w[33] + string);
        }
        return null;
    }

    @NotNull
    List<Folder> a(@NotNull String string) throws FindException {
        List<Folder> list;
        try {
            if (string == null) {
                FolderManagerImpl.c(1);
            }
        }
        catch (FindException findException) {
            throw FolderManagerImpl.a((Exception)((Object)findException));
        }
        try {
            list = this.findMatching(Arrays.asList(CollectionUtils.MapBuilder.builder().put((Object)w[10], (Object)string).map()));
            if (list == null) {
                FolderManagerImpl.c(2);
            }
        }
        catch (FindException findException) {
            throw FolderManagerImpl.a((Exception)((Object)findException));
        }
        return list;
    }

    @Nullable
    private String a(@NotNull Folder folder) throws FindException {
        try {
            if (folder == null) {
                FolderManagerImpl.c(3);
            }
        }
        catch (FindException findException) {
            throw FolderManagerImpl.a((Exception)((Object)findException));
        }
        try {
            if (this.b(folder)) {
                return "/";
            }
        }
        catch (FindException findException) {
            throw FolderManagerImpl.a((Exception)((Object)findException));
        }
        ArrayList<String> arrayList = new ArrayList<String>();
        arrayList.add(folder.getName());
        for (Folder folder2 = folder.getFolder(); folder2 != null; folder2 = folder2.getFolder()) {
            folder2 = (Folder)this.findByPrimaryKey(folder2.getGoid());
            try {
                if (this.b(folder2)) continue;
                arrayList.add(0, folder2.getName());
                continue;
            }
            catch (FindException findException) {
                throw FolderManagerImpl.a((Exception)((Object)findException));
            }
        }
        return PathUtils.getEscapedPathString((String[])arrayList.toArray(new String[arrayList.size()]));
    }

    private boolean b(@NotNull Folder folder) {
        try {
            if (folder == null) {
                FolderManagerImpl.c(4);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw FolderManagerImpl.a(illegalArgumentException);
        }
        return Folder.ROOT_FOLDER_ID.equals((Object)folder.getGoid());
    }

    @Override
    @Nullable
    public Folder createPath(@NotNull String string) throws FindException, SaveException {
        Folder folder;
        Object object;
        try {
            if (string == null) {
                FolderManagerImpl.c(5);
            }
        }
        catch (FindException findException) {
            throw FolderManagerImpl.a((Exception)((Object)findException));
        }
        try {
            if (StringUtils.isBlank((CharSequence)string)) {
                throw new IllegalArgumentException(w[38]);
            }
        }
        catch (FindException findException) {
            throw FolderManagerImpl.a((Exception)((Object)findException));
        }
        try {
            object = string.startsWith("/") ? string : "/" + string;
        }
        catch (FindException findException) {
            throw FolderManagerImpl.a((Exception)((Object)findException));
        }
        Object object2 = object;
        List list = PathUtils.getPaths((String)object2);
        String[] stringArray = PathUtils.getPathElements((String)object2);
        Folder folder2 = this.findRootFolder();
        Folder folder3 = null;
        for (int i2 = 0; i2 < list.size(); ++i2) {
            Folder folder4 = this.findByPath((String)list.get(i2));
            if (folder4 == null) {
                folder3 = new Folder(stringArray[i2], folder2);
                this.save(folder3);
                folder2 = folder3;
                continue;
            }
            folder2 = folder4;
        }
        try {
            folder = folder3 == null ? folder2 : folder3;
        }
        catch (FindException findException) {
            throw FolderManagerImpl.a((Exception)((Object)findException));
        }
        return folder;
    }

    public void createRoles(Folder folder) throws SaveException {
        try {
            if (this.v.getBooleanProperty(w[26], true)) {
                this.addReadonlyFolderRole(folder);
            }
        }
        catch (SaveException saveException) {
            throw FolderManagerImpl.a((Exception)((Object)saveException));
        }
        try {
            if (this.v.getBooleanProperty(w[41], true)) {
                this.addManageFolderRole(folder);
            }
        }
        catch (SaveException saveException) {
            throw FolderManagerImpl.a((Exception)((Object)saveException));
        }
    }

    public void updateRoles(Folder folder) throws UpdateException {
        try {
            this.u.renameEntitySpecificRoles(EntityType.FOLDER, (NamedEntityImp)folder, r);
        }
        catch (FindException findException) {
            throw new UpdateException(w[35], (Throwable)findException);
        }
    }

    @Override
    public void addManageFolderRole(Folder folder) throws SaveException {
        String string = TextUtils.truncStringMiddle((String)folder.getName(), (int)50);
        String[] stringArray = w;
        String string2 = MessageFormat.format(stringArray[28], string, folder.getGoid());
        n.info(stringArray[0] + string2);
        Role role = new Role();
        role.setName(string2);
        role.addEntityPermission(OperationType.READ, EntityType.FOLDER, folder.getId());
        role.addFolderPermission(OperationType.READ, EntityType.SERVICE, folder, true);
        role.addFolderPermission(OperationType.UPDATE, EntityType.SERVICE, folder, true);
        role.addFolderPermission(OperationType.DELETE, EntityType.SERVICE, folder, true);
        role.addFolderPermission(OperationType.READ, EntityType.POLICY, folder, true);
        role.addFolderPermission(OperationType.UPDATE, EntityType.POLICY, folder, true);
        role.addFolderPermission(OperationType.DELETE, EntityType.POLICY, folder, true);
        role.addFolderPermission(OperationType.READ, EntityType.SERVICE_ALIAS, folder, true);
        role.addFolderPermission(OperationType.DELETE, EntityType.SERVICE_ALIAS, folder, true);
        role.addFolderPermission(OperationType.READ, EntityType.POLICY_ALIAS, folder, true);
        role.addFolderPermission(OperationType.DELETE, EntityType.POLICY_ALIAS, folder, true);
        role.addFolderPermission(OperationType.READ, EntityType.FOLDER, folder, true);
        role.addEntityPermission(OperationType.READ, EntityType.ID_PROVIDER_CONFIG, null);
        role.addEntityPermission(OperationType.READ, EntityType.USER, null);
        role.addEntityPermission(OperationType.READ, EntityType.GROUP, null);
        role.addEntityPermission(OperationType.READ, EntityType.JMS_CONNECTION, null);
        role.addEntityPermission(OperationType.READ, EntityType.JMS_ENDPOINT, null);
        role.addEntityFolderAncestryPermission(EntityType.FOLDER, folder.getGoid());
        role.addEntityPermission(OperationType.READ, EntityType.SERVICE_TEMPLATE, null);
        role.addEntityPermission(OperationType.READ, EntityType.JDBC_CONNECTION, null);
        role.addEntityPermission(OperationType.READ, EntityType.SSG_ACTIVE_CONNECTOR, null);
        role.addEntityPermission(OperationType.READ, EntityType.ENCAPSULATED_ASSERTION, null);
        role.addEntityPermission(OperationType.READ, EntityType.ASSERTION_ACCESS, null);
        role.setEntityType(EntityType.FOLDER);
        role.setEntityGoid(folder.getGoid());
        role.setDescription(stringArray[25]);
        this.u.save((PersistentEntity)role);
    }

    @Override
    public void addReadonlyFolderRole(Folder folder) throws SaveException {
        String string = TextUtils.truncStringMiddle((String)folder.getName(), (int)50);
        String[] stringArray = w;
        String string2 = MessageFormat.format(stringArray[24], string, folder.getGoid());
        n.info(stringArray[7] + string2);
        Role role = new Role();
        role.setName(string2);
        role.addEntityPermission(OperationType.READ, EntityType.FOLDER, folder.getId());
        role.addFolderPermission(OperationType.READ, EntityType.SERVICE, folder, true);
        role.addFolderPermission(OperationType.READ, EntityType.POLICY, folder, true);
        role.addFolderPermission(OperationType.READ, EntityType.SERVICE_ALIAS, folder, true);
        role.addFolderPermission(OperationType.READ, EntityType.POLICY_ALIAS, folder, true);
        role.addFolderPermission(OperationType.READ, EntityType.FOLDER, folder, true);
        role.addEntityPermission(OperationType.READ, EntityType.ID_PROVIDER_CONFIG, null);
        role.addEntityPermission(OperationType.READ, EntityType.USER, null);
        role.addEntityPermission(OperationType.READ, EntityType.GROUP, null);
        role.addEntityPermission(OperationType.READ, EntityType.JMS_CONNECTION, null);
        role.addEntityPermission(OperationType.READ, EntityType.JMS_ENDPOINT, null);
        role.addEntityFolderAncestryPermission(EntityType.FOLDER, folder.getGoid());
        role.addEntityPermission(OperationType.READ, EntityType.SERVICE_TEMPLATE, null);
        role.addEntityPermission(OperationType.READ, EntityType.ENCAPSULATED_ASSERTION, null);
        role.addEntityPermission(OperationType.READ, EntityType.ASSERTION_ACCESS, null);
        role.setEntityType(EntityType.FOLDER);
        role.setEntityGoid(folder.getGoid());
        role.setDescription(stringArray[39]);
        this.u.save((PersistentEntity)role);
    }

    /*
     * Unable to fully structure code
     */
    static {
        block10: {
            block9: {
                var5 = new String[45];
                var3_1 = 0;
                var2_2 = "p\u001eP\u0018}\u000e\u0007TL[\u001c~G;\\\u0000PC)\fZ\u001fg\u0016f\u0013/\\\u0000Q\u001c{\u0007T\tA)h\u0013\u0001=\u001bS\tDW;\u001e\u0014\u0017\u0012H%V[\u000bKH^)NG\u0019S\u001dF4G\u0012\u0003\u0011\u0015%!D2o\bn%mKIn\u0010n8$=\b\u001e\u0016\u0005T0:4\u00190\u001c] \u0007u\u0003Y\u001dl\u0015I\nU\u0005[\u001dK\u001e'R\u0001P\u0006P\u0003[\u001f`\u0000\u0013p\u001eP\u0018}\u000e\u0007TL[\u001c~G;\\\u0000PC)#A\u000eT\u001a'\u0006\u001cG\u0003g\u0016e\u0002GE\u0005P\u000eO\b\u0005W\tGWh\u0012\u001d\\/G\u001ch\u0013\f\u0010}\u0003\u0015\u000bf\b\u001d\u0013\nZ\u0015m\u0002\u001b\u0012M\u0004]\rX\u001cuf\u0002T\u001be\u0002IG\u0003\u0015\nh\u0011\f\u0013\nZ\u0015m\u0002\u001b\u0013\u000eP\u001ah\u0012\u001aVLA\u0011lG\u000f\\\u0000Q\u001c{G\u001eR\u001f\u0015\u001cm\u000e\u001dV\b\u0015\u001bpG\b]\u0003A\u0011l\u0015IF\u001fP\u000b'mIc\u0000P\u0018z\u0002IA\tS\u000bl\u0014\u0001\u0013\u0018]\u001c)\u0013\u001bV\t\u0015\u001ff\u0015IR\u0002\u0015\fy\u0003\bG\tQY\u007f\u0002\u001b@\u0005Z\u0017'*s\"Z\rG\u0012\u0005_LX\u001c}\u000f\u0006WL\u0010\n'B\u001a\u0013\u0001@\n}G\u0007\\\u0018\u0015\u000bl\u0013\u001cA\u0002\u0015\u0017|\u000b\u0005\u0006U\u0003Y\u001dl\u0015\nP\u001eP\u0018}\u00029R\u0018]\u001ep\r[\u0017f\u0013IF\u001cQ\u0018}\u0002IQ\tV\u0018|\u0014\f\u0013\nZ\u0015m\u0002\u001b\u0013K>r\u001eR\fd\u0002\u0007GLS\u0016{G)}\u0003A7|\u000b\u0005\u0013\u001cT\u000bh\n\fG\tGY.B\u001a\u0014LZ\u001f)B\u001a\u001dIFYd\u0012\u001aGL[\u0016}G\u000bVL[\fe\u000b\u0004]\rX\u001c%A\u000eT\u001a'\u0006\u001cG\u0003g\u0016e\u0002G^\r[\u0018n\u0002/\\\u0000Q\u001c{I\bF\u0018Z:{\u0002\bG\t\u0018~\r[\u0018n\u0002IH\\HYO\b\u0005W\tGY!D\u0012\u0002\u0011\u001c\r\u0014LB\u0018zG\rV\u0000P\rl\u0003\u001fu\u0003Y\u001dl\u0015IZ\u001f\u0015\u000bl\u0016\u001cZ\u001eP\u001d)\u0005\u001cGLX\u0010z\u0014\u0000]\u000b\u001b\u0016e\u0005P\u000e)\u001cYNLs\u0016e\u0003\fAL\u001dZrV\u0014\u001a*P\u0003XVeP\u001dV\u000f]Vz\u0002\u001bE\tGVo\b\u0005W\tGVO\b\u0005W\tG4h\t\bT\tG0d\u0017\u0005\u0016e\u0005P\u000e)\u001cYNLs\u0016e\u0003\fAL\u001dZrV\u0014\u001awf\u001fP\u000bzG\b@\u001f\\\u001eg\u0002\r\u0013\u0018ZY}\u000f\f\u0013\u0017\u0005\u0004)\u0015\u0006_\t\u0015\u0011h\u0011\f\u0013\u0018]\u001c)\u0006\u000bZ\u0000\\\rpG\u001d\\LC\u0010l\u0010E\u0013\u0019E\u001dh\u0013\f\u0013\r[\u001d)\u0003\f_\tA\u001c)\u0014\fA\u001a\\\u001al\u0014IR\u0002QYy\b\u0005Z\u000f\\\u001czG\u001eZ\u0018]\u0010gG\u001d[\t\u0015\u00028\u001aIU\u0003Y\u001dl\u0015G#A\u000eT\u001a'\u0006\u001cG\u0003g\u0016e\u0002GE\u0005P\u000eO\b\u0005W\tGWh\u0012\u001d\\/G\u001ch\u0013\f\u0012\u0014LC\u001c{\u0014\u0000\\\u0002\u0015\u0014`\u0014\u0004R\u0018V\u0011\u0018~\r[\u0018n\u0002IH\\HYO\b\u0005W\tGY!D\u0012\u0002\u0011\u001c*P\u0003XVeP\u001dV\u000f]Vz\u0002\u001bE\tGVo\b\u0005W\tGVO\b\u0005W\tG4h\t\bT\tG0d\u0017\u0005?p\u0003@\u0015m\tNGLS\u0010g\u0003IC\u001eP\u000f`\b\u001c@LC\u001c{\u0014\u0000\\\u0002\u001d\n G\u001d\\LV\u0011l\u0004\u0002\u0013\nZ\u000b)\u0004\u0000A\u000f@\u0015h\u0015IU\u0003Y\u001dl\u0015\u001a\u0006\u000f\u0005[\u0010}Y\u0006u\u0003Y\u001dl\u0015\u0016f\u0002T\u001be\u0002IG\u0003\u0015\th\u0015\u001aVLE\u0018}\u000fS\u0013\nU\u0003Y\u001dl\u00159R\u0018]\u001cp\u0003@\u0015m\tNGLS\u0010g\u0003Ia\u0003Y\u001c)\u0013\u0006\u0013\u001eP\u0017h\n\fuf\u0002T\u001be\u0002IG\u0003\u0015\nh\u0011\f\u0013\nZ\u0015m\u0002\u001b\u0013\u000eP\u001ah\u0012\u001aVLA\u0011lG\u000f\\\u0000Q\u001c{G\u001eR\u001f\u0015\u001dl\u000b\fG\tQYk\u001eIR\u0002Z\ra\u0002\u001b\u0013\u0019F\u001c{Icc\u0000P\u0018z\u0002IA\tS\u000bl\u0014\u0001\u0013\u0018]\u001c)\u0013\u001bV\t\u0015\u001ff\u0015IR\u0002\u0015\fy\u0003\bG\tQY\u007f\u0002\u001b@\u0005Z\u0017'\u0006u\u0003Y\u001dl\u0015!g\u0004PYo\b\u0005W\tGYy\u0006\u001d[L\\\n)\t\u0006GLF\tl\u0004\u0000U\u0005P\u001d'df\u001fP\u000bzG\b@\u001f\\\u001eg\u0002\r\u0013\u0018ZY}\u000f\f\u0013\u0017\u0005\u0004)\u0015\u0006_\t\u0015\u0011h\u0011\f\u0013\u0018]\u001c)\u0006\u000bZ\u0000\\\rpG\u001d\\LC\u0010l\u0010I@\tG\u000f`\u0004\f@LT\u0017mG\u0019\\\u0000\\\u001a`\u0002\u001a\u0013\u001b\\\ra\u000e\u0007\u0013\u0018]\u001c)\u001cXNLS\u0016e\u0003\fAB\nU\u0005[\u001dK\u001e'R\u0001P%A\u000eT\u001a'\u0006\u001cG\u0003g\u0016e\u0002G^\r[\u0018n\u0002/\\\u0000Q\u001c{I\bF\u0018Z:{\u0002\bG\t\u0006U\u0003Y\u001dl\u0015";
                var4_3 = "p\u001eP\u0018}\u000e\u0007TL[\u001c~G;\\\u0000PC)\fZ\u001fg\u0016f\u0013/\\\u0000Q\u001c{\u0007T\tA)h\u0013\u0001=\u001bS\tDW;\u001e\u0014\u0017\u0012H%V[\u000bKH^)NG\u0019S\u001dF4G\u0012\u0003\u0011\u0015%!D2o\bn%mKIn\u0010n8$=\b\u001e\u0016\u0005T0:4\u00190\u001c] \u0007u\u0003Y\u001dl\u0015I\nU\u0005[\u001dK\u001e'R\u0001P\u0006P\u0003[\u001f`\u0000\u0013p\u001eP\u0018}\u000e\u0007TL[\u001c~G;\\\u0000PC)#A\u000eT\u001a'\u0006\u001cG\u0003g\u0016e\u0002GE\u0005P\u000eO\b\u0005W\tGWh\u0012\u001d\\/G\u001ch\u0013\f\u0010}\u0003\u0015\u000bf\b\u001d\u0013\nZ\u0015m\u0002\u001b\u0012M\u0004]\rX\u001cuf\u0002T\u001be\u0002IG\u0003\u0015\nh\u0011\f\u0013\nZ\u0015m\u0002\u001b\u0013\u000eP\u001ah\u0012\u001aVLA\u0011lG\u000f\\\u0000Q\u001c{G\u001eR\u001f\u0015\u001cm\u000e\u001dV\b\u0015\u001bpG\b]\u0003A\u0011l\u0015IF\u001fP\u000b'mIc\u0000P\u0018z\u0002IA\tS\u000bl\u0014\u0001\u0013\u0018]\u001c)\u0013\u001bV\t\u0015\u001ff\u0015IR\u0002\u0015\fy\u0003\bG\tQY\u007f\u0002\u001b@\u0005Z\u0017'*s\"Z\rG\u0012\u0005_LX\u001c}\u000f\u0006WL\u0010\n'B\u001a\u0013\u0001@\n}G\u0007\\\u0018\u0015\u000bl\u0013\u001cA\u0002\u0015\u0017|\u000b\u0005\u0006U\u0003Y\u001dl\u0015\nP\u001eP\u0018}\u00029R\u0018]\u001ep\r[\u0017f\u0013IF\u001cQ\u0018}\u0002IQ\tV\u0018|\u0014\f\u0013\nZ\u0015m\u0002\u001b\u0013K>r\u001eR\fd\u0002\u0007GLS\u0016{G)}\u0003A7|\u000b\u0005\u0013\u001cT\u000bh\n\fG\tGY.B\u001a\u0014LZ\u001f)B\u001a\u001dIFYd\u0012\u001aGL[\u0016}G\u000bVL[\fe\u000b\u0004]\rX\u001c%A\u000eT\u001a'\u0006\u001cG\u0003g\u0016e\u0002G^\r[\u0018n\u0002/\\\u0000Q\u001c{I\bF\u0018Z:{\u0002\bG\t\u0018~\r[\u0018n\u0002IH\\HYO\b\u0005W\tGY!D\u0012\u0002\u0011\u001c\r\u0014LB\u0018zG\rV\u0000P\rl\u0003\u001fu\u0003Y\u001dl\u0015IZ\u001f\u0015\u000bl\u0016\u001cZ\u001eP\u001d)\u0005\u001cGLX\u0010z\u0014\u0000]\u000b\u001b\u0016e\u0005P\u000e)\u001cYNLs\u0016e\u0003\fAL\u001dZrV\u0014\u001a*P\u0003XVeP\u001dV\u000f]Vz\u0002\u001bE\tGVo\b\u0005W\tGVO\b\u0005W\tG4h\t\bT\tG0d\u0017\u0005\u0016e\u0005P\u000e)\u001cYNLs\u0016e\u0003\fAL\u001dZrV\u0014\u001awf\u001fP\u000bzG\b@\u001f\\\u001eg\u0002\r\u0013\u0018ZY}\u000f\f\u0013\u0017\u0005\u0004)\u0015\u0006_\t\u0015\u0011h\u0011\f\u0013\u0018]\u001c)\u0006\u000bZ\u0000\\\rpG\u001d\\LC\u0010l\u0010E\u0013\u0019E\u001dh\u0013\f\u0013\r[\u001d)\u0003\f_\tA\u001c)\u0014\fA\u001a\\\u001al\u0014IR\u0002QYy\b\u0005Z\u000f\\\u001czG\u001eZ\u0018]\u0010gG\u001d[\t\u0015\u00028\u001aIU\u0003Y\u001dl\u0015G#A\u000eT\u001a'\u0006\u001cG\u0003g\u0016e\u0002GE\u0005P\u000eO\b\u0005W\tGWh\u0012\u001d\\/G\u001ch\u0013\f\u0012\u0014LC\u001c{\u0014\u0000\\\u0002\u0015\u0014`\u0014\u0004R\u0018V\u0011\u0018~\r[\u0018n\u0002IH\\HYO\b\u0005W\tGY!D\u0012\u0002\u0011\u001c*P\u0003XVeP\u001dV\u000f]Vz\u0002\u001bE\tGVo\b\u0005W\tGVO\b\u0005W\tG4h\t\bT\tG0d\u0017\u0005?p\u0003@\u0015m\tNGLS\u0010g\u0003IC\u001eP\u000f`\b\u001c@LC\u001c{\u0014\u0000\\\u0002\u001d\n G\u001d\\LV\u0011l\u0004\u0002\u0013\nZ\u000b)\u0004\u0000A\u000f@\u0015h\u0015IU\u0003Y\u001dl\u0015\u001a\u0006\u000f\u0005[\u0010}Y\u0006u\u0003Y\u001dl\u0015\u0016f\u0002T\u001be\u0002IG\u0003\u0015\th\u0015\u001aVLE\u0018}\u000fS\u0013\nU\u0003Y\u001dl\u00159R\u0018]\u001cp\u0003@\u0015m\tNGLS\u0010g\u0003Ia\u0003Y\u001c)\u0013\u0006\u0013\u001eP\u0017h\n\fuf\u0002T\u001be\u0002IG\u0003\u0015\nh\u0011\f\u0013\nZ\u0015m\u0002\u001b\u0013\u000eP\u001ah\u0012\u001aVLA\u0011lG\u000f\\\u0000Q\u001c{G\u001eR\u001f\u0015\u001dl\u000b\fG\tQYk\u001eIR\u0002Z\ra\u0002\u001b\u0013\u0019F\u001c{Icc\u0000P\u0018z\u0002IA\tS\u000bl\u0014\u0001\u0013\u0018]\u001c)\u0013\u001bV\t\u0015\u001ff\u0015IR\u0002\u0015\fy\u0003\bG\tQY\u007f\u0002\u001b@\u0005Z\u0017'\u0006u\u0003Y\u001dl\u0015!g\u0004PYo\b\u0005W\tGYy\u0006\u001d[L\\\n)\t\u0006GLF\tl\u0004\u0000U\u0005P\u001d'df\u001fP\u000bzG\b@\u001f\\\u001eg\u0002\r\u0013\u0018ZY}\u000f\f\u0013\u0017\u0005\u0004)\u0015\u0006_\t\u0015\u0011h\u0011\f\u0013\u0018]\u001c)\u0006\u000bZ\u0000\\\rpG\u001d\\LC\u0010l\u0010I@\tG\u000f`\u0004\f@LT\u0017mG\u0019\\\u0000\\\u001a`\u0002\u001a\u0013\u001b\\\ra\u000e\u0007\u0013\u0018]\u001c)\u001cXNLS\u0016e\u0003\fAB\nU\u0005[\u001dK\u001e'R\u0001P%A\u000eT\u001a'\u0006\u001cG\u0003g\u0016e\u0002G^\r[\u0018n\u0002/\\\u0000Q\u001c{I\bF\u0018Z:{\u0002\bG\t\u0006U\u0003Y\u001dl\u0015".length();
                var1_4 = 19;
                var0_5 = -1;
lbl7:
                // 2 sources

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

                while (true) {
                    var5[var3_1++] = FolderManagerImpl.c(v0, FolderManagerImpl.d(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    var2_2 = "I\tS\u001a`\u0014<_\tS\u0017f\u001f\n_\tS\u0017f\u001f-X\u000bZ";
                    var4_3 = "I\tS\u001a`\u0014<_\tS\u0017f\u001f\n_\tS\u0017f\u001f-X\u000bZ".length();
                    var1_4 = 13;
                    var0_5 = -1;
lbl22:
                    // 2 sources

                    while (true) {
                        v0 = 6;
                        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++] = FolderManagerImpl.c(v0, FolderManagerImpl.d(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;
            }
        }
        FolderManagerImpl.w = var5;
        FolderManagerImpl.o = FolderManagerImpl.w[37];
        FolderManagerImpl.q = FolderManagerImpl.w[22];
        FolderManagerImpl.s = FolderManagerImpl.w[8];
        FolderManagerImpl.p = FolderManagerImpl.w[19];
        FolderManagerImpl.t = FolderManagerImpl.w[18];
        FolderManagerImpl.n = Logger.getLogger(FolderManagerImpl.class.getName());
        var0_6 = FolderManagerImpl.w;
        FolderManagerImpl.r = Pattern.compile(MessageFormat.format(var0_6[3], new Object[]{var0_6[32]}));
    }

    /*
     * Exception decompiling
     */
    private static /* synthetic */ void c(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;
    }

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

    /*
     * Handled impossible loop by duplicating code
     * Enabled aggressive block sorting
     */
    private static String c(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 -> 63;
                    case 1 -> 96;
                    case 2 -> 57;
                    case 3 -> 117;
                    case 4 -> 5;
                    case 5 -> 107;
                    default -> 101;
                })));
                ++n3;
                n4 = n4;
            } while (n4 > n3);
        }
        return new String(cArray2).intern();
    }
}

