/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  com.l7tech.common.http.GenericHttpClientFactory
 *  com.l7tech.common.http.GenericHttpHeader
 *  com.l7tech.common.http.GenericHttpRequestParams
 *  com.l7tech.common.http.HttpConstants
 *  com.l7tech.common.http.HttpHeader
 *  com.l7tech.common.http.HttpMethod
 *  com.l7tech.common.io.ProcUtils
 *  com.l7tech.common.protocol.SecureSpanConstants
 *  com.l7tech.gateway.common.LicenseException
 *  com.l7tech.gateway.common.audit.AuditDetail
 *  com.l7tech.gateway.common.audit.AuditDetailMessage
 *  com.l7tech.gateway.common.audit.ServiceMessages
 *  com.l7tech.gateway.common.cluster.ClusterNodeInfo
 *  com.l7tech.gateway.common.security.rbac.Role
 *  com.l7tech.gateway.common.security.rbac.Role$Tag
 *  com.l7tech.gateway.common.transport.SsgConnector$Endpoint
 *  com.l7tech.identity.BadCredentialsException
 *  com.l7tech.identity.IssuedCertNotPresentedException
 *  com.l7tech.identity.MissingCredentialsException
 *  com.l7tech.identity.User
 *  com.l7tech.objectmodel.FindException
 *  com.l7tech.util.ConfigFactory
 *  com.l7tech.util.ExceptionUtils
 *  com.l7tech.util.FileUtils
 *  com.l7tech.util.IOUtils
 *  com.l7tech.util.ResourceUtils
 *  jakarta.servlet.ServletConfig
 *  jakarta.servlet.ServletContext
 *  jakarta.servlet.ServletException
 *  jakarta.servlet.http.HttpServletRequest
 *  jakarta.servlet.http.HttpServletResponse
 *  org.springframework.context.ApplicationEvent
 *  org.springframework.web.context.WebApplicationContext
 *  org.springframework.web.context.support.WebApplicationContextUtils
 */
package com.l7tech.server;

import com.l7tech.common.http.GenericHttpClientFactory;
import com.l7tech.common.http.GenericHttpHeader;
import com.l7tech.common.http.GenericHttpRequestParams;
import com.l7tech.common.http.HttpConstants;
import com.l7tech.common.http.HttpHeader;
import com.l7tech.common.http.HttpMethod;
import com.l7tech.common.io.ProcUtils;
import com.l7tech.common.protocol.SecureSpanConstants;
import com.l7tech.gateway.common.LicenseException;
import com.l7tech.gateway.common.audit.AuditDetail;
import com.l7tech.gateway.common.audit.AuditDetailMessage;
import com.l7tech.gateway.common.audit.ServiceMessages;
import com.l7tech.gateway.common.cluster.ClusterNodeInfo;
import com.l7tech.gateway.common.security.rbac.Role;
import com.l7tech.gateway.common.transport.SsgConnector;
import com.l7tech.identity.BadCredentialsException;
import com.l7tech.identity.IssuedCertNotPresentedException;
import com.l7tech.identity.MissingCredentialsException;
import com.l7tech.identity.User;
import com.l7tech.objectmodel.FindException;
import com.l7tech.server.AuthenticatableHttpServlet;
import com.l7tech.server.cluster.ClusterInfoManager;
import com.l7tech.server.event.system.BackupEvent;
import com.l7tech.server.g;
import com.l7tech.server.identity.AuthenticationResult;
import com.l7tech.server.security.rbac.RoleManager;
import com.l7tech.server.transport.ListenerException;
import com.l7tech.util.ConfigFactory;
import com.l7tech.util.ExceptionUtils;
import com.l7tech.util.FileUtils;
import com.l7tech.util.IOUtils;
import com.l7tech.util.ResourceUtils;
import jakarta.servlet.ServletConfig;
import jakarta.servlet.ServletContext;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.Closeable;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.PasswordAuthentication;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.springframework.context.ApplicationEvent;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

public class BackupServlet
extends AuthenticatableHttpServlet {
    private static final Logger _logger;
    private WebApplicationContext _webApplicationContext;
    private ClusterInfoManager _clusterInfoManager;
    private RoleManager _roleManager;
    private GenericHttpClientFactory _httpClientFactory;
    static final long serialVersionUID = -5821429193704728158L;
    private static final String[] b;

    @Override
    protected String getFeature() {
        return b[2];
    }

    @Override
    protected SsgConnector.Endpoint getRequiredEndpoint() {
        return SsgConnector.Endpoint.ADMIN_REMOTE_SSM;
    }

    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        try {
            super.init(servletConfig);
            this._webApplicationContext = WebApplicationContextUtils.getWebApplicationContext((ServletContext)this.getServletContext());
            if (this._webApplicationContext == null) {
                throw new ServletException(b[16]);
            }
        }
        catch (ServletException servletException) {
            throw BackupServlet.a((Exception)((Object)servletException));
        }
        String[] stringArray = b;
        this._clusterInfoManager = (ClusterInfoManager)this._webApplicationContext.getBean(stringArray[80]);
        this._roleManager = (RoleManager)this._webApplicationContext.getBean(stringArray[56]);
        this._httpClientFactory = (GenericHttpClientFactory)this._webApplicationContext.getBean(stringArray[88]);
    }

    public void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
        block24: {
            String string;
            User user;
            block25: {
                block23: {
                    AuthenticationResult[] authenticationResultArray;
                    try {
                        if (!httpServletRequest.isSecure()) {
                            this.logAndAudit(this.getOriginalClientAddr(httpServletRequest), null, b[73], (AuditDetailMessage)ServiceMessages.BACKUP_NOT_SSL, null, new String[0]);
                            this.respondError(httpServletResponse, 403, b[45]);
                            return;
                        }
                    }
                    catch (BadCredentialsException badCredentialsException) {
                        throw BackupServlet.a((Exception)((Object)badCredentialsException));
                    }
                    try {
                        if (this.findCredentialsBasic(httpServletRequest) == null) {
                            _logger.fine(b[6]);
                            this.doHttpBasicChallenge(httpServletResponse);
                            return;
                        }
                    }
                    catch (BadCredentialsException badCredentialsException) {
                        throw BackupServlet.a((Exception)((Object)badCredentialsException));
                    }
                    try {
                        authenticationResultArray = this.authenticateRequestBasic(httpServletRequest, true);
                    }
                    catch (BadCredentialsException badCredentialsException) {
                        String[] stringArray = b;
                        this.logAndAudit(this.getOriginalClientAddr(httpServletRequest), null, stringArray[57], (AuditDetailMessage)ServiceMessages.BACKUP_BAD_CREDENTIALS, ExceptionUtils.getDebugException((Throwable)badCredentialsException), new String[0]);
                        this.respondError(httpServletResponse, 403, stringArray[22]);
                        return;
                    }
                    catch (MissingCredentialsException missingCredentialsException) {
                        String[] stringArray = b;
                        this.logAndAudit(this.getOriginalClientAddr(httpServletRequest), null, stringArray[57], (AuditDetailMessage)ServiceMessages.BACKUP_BAD_CREDENTIALS, ExceptionUtils.getDebugException((Throwable)missingCredentialsException), new String[0]);
                        this.respondError(httpServletResponse, 403, stringArray[43]);
                        return;
                    }
                    catch (IssuedCertNotPresentedException issuedCertNotPresentedException) {
                        String[] stringArray = b;
                        this.logAndAudit(this.getOriginalClientAddr(httpServletRequest), null, stringArray[57], (AuditDetailMessage)ServiceMessages.BACKUP_NO_CLIENT_CERT, ExceptionUtils.getDebugException((Throwable)issuedCertNotPresentedException), new String[0]);
                        this.respondError(httpServletResponse, 403, stringArray[32]);
                        return;
                    }
                    catch (LicenseException licenseException) {
                        String[] stringArray = b;
                        this.logAndAudit(this.getOriginalClientAddr(httpServletRequest), null, stringArray[57], (AuditDetailMessage)ServiceMessages.BACKUP_NOT_LICENSED, licenseException, new String[0]);
                        this.respondError(httpServletResponse, 403, stringArray[53]);
                        return;
                    }
                    catch (ListenerException listenerException) {
                        String[] stringArray = b;
                        this.logAndAudit(this.getOriginalClientAddr(httpServletRequest), null, stringArray[57], (AuditDetailMessage)ServiceMessages.BACKUP_BAD_CONNECTOR, listenerException, new String[0]);
                        this.respondError(httpServletResponse, 403, stringArray[39]);
                        return;
                    }
                    try {
                        if (authenticationResultArray.length <= 0) {
                            this.logAndAudit(this.getOriginalClientAddr(httpServletRequest), null, b[57], (AuditDetailMessage)ServiceMessages.BACKUP_NO_AUTHENTICATED_USER, null, new String[0]);
                            this.respondError(httpServletResponse, 403, b[87]);
                            return;
                        }
                    }
                    catch (BadCredentialsException badCredentialsException) {
                        throw BackupServlet.a((Exception)((Object)badCredentialsException));
                    }
                    user = authenticationResultArray[0].getUser();
                    try {
                        boolean bl2 = false;
                        for (Role role : this._roleManager.getAssignedRoles(user)) {
                            if (role.getTag() != Role.Tag.ADMIN) continue;
                            bl2 = true;
                            break;
                        }
                        if (!bl2) {
                            String[] stringArray = b;
                            this.logAndAudit(this.getOriginalClientAddr(httpServletRequest), user, stringArray[57], (AuditDetailMessage)ServiceMessages.BACKUP_NO_PERMISSION, null, user.getName());
                            this.respondError(httpServletResponse, 403, stringArray[24]);
                            return;
                        }
                    }
                    catch (FindException findException) {
                        String[] stringArray = b;
                        this.logAndAudit(this.getOriginalClientAddr(httpServletRequest), user, stringArray[15], (AuditDetailMessage)ServiceMessages.BACKUP_PERMISSION_CHECK_FAILED, findException, new String[0]);
                        this.respondError(httpServletResponse, 500, stringArray[27]);
                        return;
                    }
                    string = httpServletRequest.getParameter(b[48]);
                    try {
                        if (string != null) break block23;
                        this.doMainPage(httpServletResponse);
                        break block24;
                    }
                    catch (BadCredentialsException badCredentialsException) {
                        throw BackupServlet.a((Exception)((Object)badCredentialsException));
                    }
                }
                String string2 = this._clusterInfoManager.getSelfNodeInf().getName();
                try {
                    if (!string.equals(string2)) break block25;
                    this.doBackup(httpServletRequest, httpServletResponse, string2, user);
                    break block24;
                }
                catch (BadCredentialsException badCredentialsException) {
                    throw BackupServlet.a((Exception)((Object)badCredentialsException));
                }
            }
            this.routeBackup(httpServletRequest, httpServletResponse, string, user);
        }
    }

    /*
     * WARNING - Removed try catching itself - possible behaviour change.
     */
    private void doMainPage(HttpServletResponse httpServletResponse) throws IOException {
        Collection<ClusterNodeInfo> collection;
        try {
            collection = this._clusterInfoManager.retrieveClusterStatus();
        }
        catch (FindException findException) {
            String[] stringArray = b;
            _logger.warning(stringArray[12] + findException.toString());
            this.respondError(httpServletResponse, 500, stringArray[8]);
            return;
        }
        String[] stringArray = b;
        httpServletResponse.setContentType(stringArray[35]);
        try (PrintWriter printWriter = httpServletResponse.getWriter();){
            printWriter.println(stringArray[47]);
            printWriter.println(stringArray[69]);
            printWriter.println(stringArray[29]);
            printWriter.println(stringArray[41]);
            printWriter.println(stringArray[51]);
            printWriter.println(stringArray[82]);
            printWriter.println(stringArray[64]);
            printWriter.println(stringArray[25]);
            printWriter.println(stringArray[44]);
            printWriter.println(stringArray[42]);
            printWriter.println(stringArray[59]);
            printWriter.println(stringArray[11]);
            printWriter.println("}");
            printWriter.println(stringArray[70]);
            printWriter.println(stringArray[1]);
            printWriter.println(stringArray[61]);
            printWriter.println(stringArray[66]);
            printWriter.println(stringArray[9]);
            printWriter.println(stringArray[10]);
            printWriter.println(stringArray[52]);
            for (ClusterNodeInfo clusterNodeInfo : collection) {
                stringArray = b;
                printWriter.println(stringArray[67]);
                printWriter.println(stringArray[60]);
                printWriter.println(stringArray[46] + clusterNodeInfo.getName() + stringArray[83]);
                printWriter.println(stringArray[85] + clusterNodeInfo.getName() + stringArray[4]);
                printWriter.println(stringArray[71]);
            }
            stringArray = b;
            printWriter.println(stringArray[20]);
            printWriter.println(stringArray[7]);
        }
    }

    /*
     * WARNING - Removed try catching itself - possible behaviour change.
     * Unable to fully structure code
     */
    private void doBackup(HttpServletRequest var1_1, HttpServletResponse var2_2, String var3_3, User var4_4) throws IOException {
        block44: {
            block43: {
                block41: {
                    block42: {
                        var5_5 = null;
                        try {
                            var23_6 = BackupServlet.b;
                            var5_5 = FileUtils.createTempDirectory((String)var23_6[75], (String)var23_6[33], null, (boolean)false);
                            var6_7 = var23_6[30];
                            var7_9 = ConfigFactory.getProperty((String)var23_6[81]);
                            var8_10 = new File(var7_9, var23_6[77]);
                            try {
                                block40: {
                                    block39: {
                                        var9_11 = var1_1.getParameter(var23_6[74]);
                                        if (var9_11 == null) break block39;
                                        try {
                                            block45: {
                                                if (!var9_11.equalsIgnoreCase(var23_6[23])) break block39;
                                                break block45;
                                                catch (IOException v0) {
                                                    throw BackupServlet.a(v0);
                                                }
                                            }
                                            v1 = true;
                                            break block40;
                                        }
                                        catch (IOException v2) {
                                            throw BackupServlet.a(v2);
                                        }
                                    }
                                    v1 = false;
                                }
                                var10_13 = v1;
                                var11_16 = new ArrayList<String>();
                                try {
                                    var11_16.add(BackupServlet.b[19]);
                                    var11_16.add(new File(var5_5, BackupServlet.b[76]).getCanonicalPath());
                                    if (var10_13) {
                                        var11_16.add(BackupServlet.b[14]);
                                    }
                                }
                                catch (IOException v3) {
                                    throw BackupServlet.a(v3);
                                }
                                var23_6 = BackupServlet.b;
                                var12_17 = ProcUtils.exec((File)var8_10, (File)new File(var8_10, var23_6[54]), (String[])var11_16.toArray(new String[var11_16.size()]), (byte[])null, (boolean)false);
                                this.logger.log(Level.INFO, var23_6[78], new String(var12_17.getOutput()));
                            }
                            catch (IOException var9_12) {
                                var23_6 = BackupServlet.b;
                                this.logAndAudit(this.getOriginalClientAddr(var1_1), var4_4, var23_6[28], (AuditDetailMessage)ServiceMessages.BACKUP_CANT_CREATE_IMAGE, var9_12, new String[]{var3_3});
                                this.respondError(var2_2, 500, var23_6[17]);
                                if (var5_5 != null) {
                                    var10_14 = FileUtils.deleteDir((File)var5_5);
                                    try {
                                        if (!var10_14) {
                                            this.logger.log(Level.WARNING, var23_6[37] + var5_5.getAbsolutePath());
                                        }
                                    }
                                    catch (IOException v4) {
                                        throw BackupServlet.a(v4);
                                    }
                                }
                                return;
                            }
                        }
                        catch (Throwable var18_25) {
                            if (var5_5 != null) {
                                var19_26 = FileUtils.deleteDir(var5_5);
                                try {
                                    if (!var19_26) {
                                        this.logger.log(Level.WARNING, BackupServlet.b[31] + var5_5.getAbsolutePath());
                                    }
                                }
                                catch (IOException v5) {
                                    throw BackupServlet.a(v5);
                                }
                            }
                            throw var18_25;
                        }
                        var9_11 = var5_5.listFiles(new g(this));
                        if (var9_11.length != 0) break block41;
                        var23_6 = BackupServlet.b;
                        this.logAndAudit(this.getOriginalClientAddr(var1_1), var4_4, var23_6[17], (AuditDetailMessage)ServiceMessages.BACKUP_CANNOT_FIND_BACKUP, null, new String[]{var3_3});
                        this.respondError(var2_2, 500, var23_6[17]);
                        if (var5_5 == null) break block42;
                        var10_13 = FileUtils.deleteDir((File)var5_5);
                        try {
                            if (!var10_13) {
                                this.logger.log(Level.WARNING, var23_6[31] + var5_5.getAbsolutePath());
                            }
                        }
                        catch (IOException v6) {
                            throw BackupServlet.a(v6);
                        }
                    }
                    return;
                }
                var10_15 = var9_11[0];
                var23_6 = BackupServlet.b;
                this.logger.log(Level.INFO, var23_6[0], var10_15.getAbsolutePath());
                var11_16 = null;
                var12_17 = null;
                try {
                    var13_18 = var10_15.length();
                    var11_16 = new BufferedInputStream(new FileInputStream(var10_15));
                }
                catch (Exception var15_19) {
                    var23_6 = BackupServlet.b;
                    this.logAndAudit(this.getOriginalClientAddr(var1_1), var4_4, var23_6[17], (AuditDetailMessage)ServiceMessages.BACKUP_CANT_READ_IMAGE, var15_19, new String[]{var3_3});
                    this.respondError(var2_2, 500, var23_6[17]);
                    ResourceUtils.closeQuietly((Closeable[])new Closeable[]{var11_16, var12_17});
                    var10_15.delete();
                    if (var5_5 != null) {
                        var16_21 = FileUtils.deleteDir((File)var5_5);
                        try {
                            if (!var16_21) {
                                this.logger.log(Level.WARNING, var23_6[31] + var5_5.getAbsolutePath());
                            }
                        }
                        catch (IOException v7) {
                            throw BackupServlet.a(v7);
                        }
                    }
                    return;
                }
                var23_6 = BackupServlet.b;
                var15_20 = var3_3 + var23_6[49];
                try {
                    var2_2.setContentType(var23_6[63]);
                    if (var13_18 > 0x7FFFFFFFL) break block43;
                    var2_2.setContentLength((int)var13_18);
                    break block44;
                }
                catch (IOException v8) {
                    throw BackupServlet.a(v8);
                }
            }
            var2_2.addHeader(HttpConstants.HEADER_CONTENT_LENGTH, Long.toString(var13_18));
        }
        var23_6 = BackupServlet.b;
        var20_22 = var13_18;
        var22_23 = var15_20;
        var2_2.setHeader(var23_6[55], var23_6[40] + var22_23 + var23_6[38] + var20_22);
        var2_2.setHeader(var23_6[5], var23_6[58]);
        var12_17 = var2_2.getOutputStream();
        IOUtils.copyStream((InputStream)var11_16, (OutputStream)var12_17);
        {
            catch (Throwable var17_24) {
                ResourceUtils.closeQuietly((Closeable[])new Closeable[]{var11_16, var12_17});
                var10_15.delete();
                throw var17_24;
            }
        }
        ResourceUtils.closeQuietly((Closeable[])new Closeable[]{var11_16, var12_17});
        var10_15.delete();
        ** if (var5_5 == null) goto lbl149
lbl-1000:
        // 1 sources

        {
            var6_8 = FileUtils.deleteDir((File)var5_5);
            try {
                if (var6_8) ** GOTO lbl149
                this.logger.log(Level.WARNING, BackupServlet.b[31] + var5_5.getAbsolutePath());
            }
            catch (IOException v9) {
                throw BackupServlet.a(v9);
            }
        }
        {
        }
lbl149:
        // 3 sources

        this.logAndAudit(this.getOriginalClientAddr(var1_1), var4_4, BackupServlet.b[34], (AuditDetailMessage)ServiceMessages.BACKUP_SUCCESS, null, new String[]{var3_3, var4_4.getName(), this.getOriginalClientHostAndAddr(var1_1)});
    }

    /*
     * WARNING - Removed try catching itself - possible behaviour change.
     * Unable to fully structure code
     * Could not resolve type clashes
     */
    private void routeBackup(HttpServletRequest var1_1, HttpServletResponse var2_2, String var3_3, User var4_4) throws IOException {
        block26: {
            var5_5 = null;
            try {
                var6_6 = this._clusterInfoManager.retrieveClusterStatus();
                for (ClusterNodeInfo var8_9 : var6_6) {
                    if (!var8_9 /* !! */ .getName().equals(var3_3)) continue;
                    var5_5 = var8_9 /* !! */ .getAddress();
                    break;
                }
            }
            catch (FindException var6_7) {
                var21_11 = BackupServlet.b;
                this.logAndAudit(this.getOriginalClientAddr(var1_1), var4_4, var21_11[26], (AuditDetailMessage)ServiceMessages.BACKUP_NO_CLUSTER_INFO, var6_7, new String[0]);
                this.respondError(var2_2, 500, var21_11[62]);
                return;
            }
            try {
                if (var5_5 == null) {
                    this.logAndAudit(this.getOriginalClientAddr(var1_1), var4_4, BackupServlet.b[84], (AuditDetailMessage)ServiceMessages.BACKUP_NO_SUCH_NODE, null, new String[]{var3_3});
                    this.respondError(var2_2, 400, BackupServlet.b[13]);
                    return;
                }
            }
            catch (FindException v0) {
                throw BackupServlet.a((Exception)v0);
            }
            var6_6 = null;
            var7_8 = null;
            try {
                block25: {
                    try {
                        if (BackupServlet._logger.isLoggable(Level.FINE)) {
                            BackupServlet._logger.fine(BackupServlet.b[86] + var3_3 + BackupServlet.b[65] + var5_5);
                        }
                    }
                    catch (FindException v1) {
                        throw BackupServlet.a((Exception)v1);
                    }
                    var8_9 /* !! */  = var1_1.getRequestURI() + "?" + var1_1.getQueryString();
                    var9_14 = new URL(var1_1.getScheme(), var5_5, var1_1.getLocalPort(), (String)var8_9 /* !! */ );
                    var10_15 = new GenericHttpRequestParams(var9_14);
                    var11_16 = this.findCredentialsBasic(var1_1);
                    var10_15.setPasswordAuthentication(new PasswordAuthentication(var11_16.getName(), var11_16.getCredentials()));
                    var10_15.setPreemptiveAuthentication(true);
                    var10_15.addExtraHeader((HttpHeader)new GenericHttpHeader(SecureSpanConstants.HEADER_ORIGINAL_HOST, var1_1.getRemoteHost()));
                    var10_15.addExtraHeader((HttpHeader)new GenericHttpHeader(SecureSpanConstants.HEADER_ORIGINAL_ADDR, var1_1.getRemoteAddr()));
                    var6_6 = this._httpClientFactory.createHttpClient().createRequest(HttpMethod.GET, var10_15);
                    var7_8 = var6_6.getResponse();
                    for (HttpHeader var15_23 : var7_8.getHeaders().toArray()) {
                        try {
                            var2_2.addHeader(var15_23.getName(), var15_23.getFullValue());
                            if (!BackupServlet._logger.isLoggable(Level.FINEST)) continue;
                            BackupServlet._logger.finest(BackupServlet.b[18] + var15_23.getName() + "=" + var15_23.getFullValue());
                        }
                        catch (FindException v2) {
                            throw BackupServlet.a((Exception)v2);
                        }
                    }
                    var12_18 = 0;
                    var13_20 = null;
                    var14_22 = null;
                    try {
                        var13_20 = new BufferedInputStream(var7_8.getInputStream());
                        var14_22 = new BufferedOutputStream((OutputStream)var2_2.getOutputStream());
                        while (true) lbl-1000:
                        // 2 sources

                        {
                            var15_24 = var13_20.read();
                            try {
                                if (var15_24 != -1) {
                                    var14_22.write(var15_24);
                                    continue;
                                }
                                break block25;
                            }
                            catch (FindException v3) {
                                throw BackupServlet.a((Exception)v3);
                            }
                            break;
                        }
                    }
                    catch (Throwable var16_25) {
                        ResourceUtils.closeQuietly(var13_20);
                        ResourceUtils.closeQuietly(var14_22);
                        throw var16_25;
                    }
                    {
                        ** while (true)
                    }
                }
                ResourceUtils.closeQuietly((Closeable)var13_20);
                ResourceUtils.closeQuietly((Closeable)var14_22);
                if (BackupServlet._logger.isLoggable(Level.FINE)) {
                    var18_26 = var12_18;
                    var19_27 = var5_5;
                    var20_28 = var3_3;
                    var21_12 = BackupServlet.b;
                    BackupServlet._logger.fine(var21_12[21] + var20_28 + var21_12[79] + var19_27 + var21_12[68] + var18_26 + var21_12[50]);
                }
                ResourceUtils.closeQuietly((Closeable)var6_6);
            }
            catch (IOException var8_10) {
                var21_13 = BackupServlet.b;
                this.logAndAudit(this.getOriginalClientAddr(var1_1), var4_4, var21_13[84], (AuditDetailMessage)ServiceMessages.BACKUP_ROUTING_IO_ERROR_INFO, null, new String[]{ExceptionUtils.getMessage((Throwable)var8_10)});
                this.respondError(var2_2, 500, var21_13[72]);
                break block26;
            }
            finally {
                ResourceUtils.closeQuietly(var6_6);
                ResourceUtils.closeQuietly(var7_8);
            }
            ResourceUtils.closeQuietly((Closeable)var7_8);
        }
    }

    private void respondError(HttpServletResponse httpServletResponse, int n2, String string) throws IOException {
        httpServletResponse.setStatus(n2);
        httpServletResponse.setContentType(b[3]);
        PrintWriter printWriter = httpServletResponse.getWriter();
        printWriter.print(n2);
        printWriter.print(" ");
        printWriter.print(string);
        printWriter.close();
    }

    private void logAndAudit(String string, User user, String string2, AuditDetailMessage auditDetailMessage, Throwable throwable, String ... stringArray) {
        BackupEvent backupEvent = new BackupEvent((Object)this, auditDetailMessage.getLevel(), string2, string, user);
        backupEvent.setAuditDetails(Arrays.asList(new AuditDetail(auditDetailMessage, stringArray, throwable)));
        this._webApplicationContext.publishEvent((ApplicationEvent)backupEvent);
    }

    private String getOriginalClientHost(HttpServletRequest httpServletRequest) {
        String string = httpServletRequest.getHeader(SecureSpanConstants.HEADER_ORIGINAL_HOST);
        if (string == null) {
            string = httpServletRequest.getRemoteHost();
        }
        return string;
    }

    private String getOriginalClientAddr(HttpServletRequest httpServletRequest) {
        String string = httpServletRequest.getHeader(SecureSpanConstants.HEADER_ORIGINAL_ADDR);
        if (string == null) {
            string = httpServletRequest.getRemoteAddr();
        }
        return string;
    }

    private String getOriginalClientHostAndAddr(HttpServletRequest httpServletRequest) {
        String string = this.getOriginalClientHost(httpServletRequest);
        String string2 = this.getOriginalClientAddr(httpServletRequest);
        if (string2.equals(string)) {
            return string2;
        }
        return string + b[36] + string2 + ")";
    }

    /*
     * Unable to fully structure code
     */
    static {
        block10: {
            block9: {
                var5 = new String[89];
                var3_1 = 0;
                var2_2 = "\u001eP\u0019\u001b\\P\"5\\\u001b\u0017L\u0000a.T\u001b\u0004LD\"=_\u001ePOOw2U@P#[2!-=\u001f\u0018\u0005]Tm2\u000b\u0012\u001f_Ep|JZ\u0012HCi;C\u0015\u0005GD/?^\u0016\u001f[\u001a\"\u007fuJ4\u0019d2g\u0011\u0007\u0018/T\b\u0006@Cgf|\u001f\u0003ZAe9a\b\u001fJEq/^\b\n(T\u0002\u0004\u0006Pn=X\u0014\u0004~\u0011UN\r\u001dR\u0019\u0015YT/\u000eP\u0014\u0017LSA\u000fT\u0014\u0014@Ne|R\u0012\u0011ELg2V\u001fP[Eq,^\u0014\u0003L\u0000v3\u0011\u0018\u0011JKw,\u0011\b\u0015XUg/EZ\u0007@Tj3D\u000ePJRg8T\u0014\u0004@An/\u001f\u0007`\u001e\u0012\u0004DL<\u000e\u0015_\u000e\u0015[Nc0\u0011\u001f\u0002[Op\u0006`S\u0015\u0014P\u001e\u001f`YKNnAv9F\u001b\t\tbc?Z\u000f\u0000\tsg.G\u0013\u0013L\u001c-4\u0000D\u001d|\u0011ZPYAf8X\u0014\u0017\u0013\u00000,IZFYX\"nA\u0002P\u001fPzg+\u001aP\u0013\u001cLD\"(^Z\u001fKTc5_Z\u0013EUq(T\bPGOf9\u0011\u0013\u001eOOp1P\u000e\u0019FN8|\f\u0012^Z\u0003\\Cj|_\u0015\u0014L\u0003qX\u001b(\u001eP\u0019\u001b\\P\".T\u000b\u0005LSv|A\u001f\u0002DIq/X\u0015\u001e\tCj9R\u0011\u0015M\u0000d=X\u0016\u0015M6\u001f^\u0014\u0016@Gw.P\u000e\u0019FN\"9C\b\u001f[\u001b\"?^\u000f\u001cM\u0000l3EZ\u0017LT\"=A\n\u001c@Cc(X\u0015\u001e\tCm2E\u001f\b]\r\u001eP\u0019\u001b\\P\":P\u0013\u001cLD5\u001f^\n\u0019LD\"3G\u001f\u0002\thV\baZ\u0018LAf9CZ\u0016[Oo|C\u0015\u0005]Ef|S\u001b\u0013BUr|C\u001f\u0003YOl/T@P\u0006qX\u0017\u0011NE\u0007`\u001e\u0018\u001fMY<\u001c\u000e^\u000f\u0004LD\">P\u0019\u001b\\P\".T\t\u0000FNq9\u0011\u001c\u0002FM\"\u000f\u001eP\u001ePJRg8T\u0014\u0004@An/\u0004(C\u000f\u0015\r\u0012^\u000ePYEp1X\u000e\u0004LD\u001c|\u0011ZPKOp8T\bJ\t\u0012r$\u0011\u0015\u0005]Sg(\u0011\u001d\u0002HY9\u001d\u001eP\u0019\u001b\\P\".T\u000b\u0005LSv|C\u0015\u0005]Il;\u0011\u001c\u0011@Lg8\u0017\fT\b\u001d@Sq5^\u0014PJHg?ZZ\u0016HIn9U\r\u001eP\u0019\u001b\\P\":P\u0013\u001cLD%`E\u0013\u0004EE<\u001bP\u000e\u0015^A{|s\u001b\u0013BUr|b\u001f\u0002_Ia9\rU\u0004@Tn9\u000f\t5\\\u001b\u0017L\u000ex5A\u001b\u001f^\u000f\u001cM\u0000l3EZ\u0014LLg(TZ\u0014@Rg?E\u0015\u0002P\u0000\u0015\u0012^Z\u0013EIg2EZ\u0013LRv5W\u0013\u0013HTg\u0003(\\\n\u0011\u001eP\u0019\u001b\\P\"8^\r\u001eEOc8T\u001e\t(T\u0002\u0004\u0006Hv1]\u0002|\u0019\u001b\u001f^\u000f\u001cM\u0000l3EZ\u0014LLg(TZ\u0014@Rg?E\u0015\u0002P\u0000\b~\nZ\u0003@Zga\u0015\u001f^\u0014\u001eLCv3CZ\u001eFT\"9_\u001b\u0012EEf\u0016=E\u000e\u0011JHo9_\u000eK\tFk0T\u0014\u0011DE?~E`]\u0013\u001eB\u0000p9]GR@Cm2\u0013Z\u0004PPga\u0013\u0013\u001dHGgsA\u0014\u0017\u000b\u0000j.T\u001cM\u000b\u000fq/VU\u0007LBc8\\\u0013\u001e\u0006Fc*X\u0019\u001fG\u000ek?^XP\u0006\u001e\u0016|\u0011ZPOOl(\u001c\r\u0015@Gj(\u000bZ\u0012FLfg\u0013\u0011X\t\u0003@Ne|R\b\u0015MEl(X\u001b\u001cZ\u001c|\u0011ZPOOl(\u001c\u001c\u0011DIn%\u000bZ\u0003HNqqB\u001f\u0002@F9\f\u000fb6P[Es)X\b\u0015M(`X\u0014\u0000\\T\"(H\n\u0015\u0014\u0002j5U\u001e\u0015G\u0002\"2P\u0017\u0015\u0014\u0002l3U\u001fR\tVc0D\u001fM\u000b\u0006`Y\u000e\u001dE\u001e\u00042^\u001e\u0015\u0004rK\u0013\u0000\u000e|S\u0003\u0004LS\"5_Z\u0012FD{\u0017`B\u000e\tEE\"(H\n\u0015\u0014\u0002v9I\u000e_JSq~\u000f/`AD EEc/TZ\u0003LLg?EZ\u0011\tgc(T\r\u0011P\u0000l3U\u001fP]O\">P\u0019\u001b\tUrf\rU\u0000\u0017\n\t_\u0016\u0019JEl/T\u001e\f/B\u001d\u0012HCi)AT\u0003A\u0013\u001f^\u0014\u0004LNvqu\u0013\u0003YOq5E\u0013\u001fG\u000b.^\u0016\u0015dAl=V\u001f\u0002\u0016\u001eP\u0019\u001b\\P\".T\u000b\u0005LSv|S\u0016\u001fJKg8\u00042^\u0014\u0015\u0014|\u0011ZPDIlqF\u0013\u0014]H8|\u0006J\u0000Q\u001bH`X\u0014\u0000\\T\"(H\n\u0015\u0014\u0002a4T\u0019\u001bKOz~\u0011\u0014\u0011DE?~P\u000f\u0014@Tq~\u0011\f\u0011EUga\u0013\u000e\u0002\\E bx\u0014\u0013EUf9\u0011;\u0005MIv/\rU\u0019GPw(\u000f\b`\u001e\t\u0004PLgb\u0010\u001fP\u0014\u001eFT\":X\u0014\u0014\tNm8T\u000f=A\n\u001c@Cc(X\u0015\u001e\u0006Zk,\u001e|\u0011ZPKAa7V\b\u001f\\NfqR\u0015\u001cFR8|\u0012?Hl\u0018Gd\n\u0004|P\u000eP\u0007`\u001e\u0012\u0015HD<(`W\u0015\u0002D\u0000c?E\u0013\u001fG\u001d sB\t\u0017\u0006Bc?Z\u000f\u0000\u000b\u0000o9E\u0012\u001fM\u001d ;T\u000eR\u0017\u0002f\u0011\u0006`Y\u001f\u0011M\u001ei=\u001f\u0018\u0005]Tm2\u000b\u0016\u0019GK.|PT\u0012\\Tv3_@\u0006@Sk(T\u001e\\\tA,>D\u000e\u0004FN84^\f\u0015[\f\"=\u001f\u0018\u0005]Tm2\u000b\u001b\u0013]It9\u0011\u0001PJOn3C@PKLc?ZAP]Ez(\u001c\u001e\u0015JOp=E\u0013\u001fG\u001a\"2^\u0014\u0015\u0012\u0000\u007f\u000b`\u001e\u001c\u001f[M<`S\bN\u000e\u000e^\u000f\u0004@Ne|W\u001b\u0019EEf\u0016\u001eP\u0019\u001b\\P\".T\u000b\u0005LSv|S\u0016\u001fJKg8\u0006=D\u001e\u0019]S\u0012/B\u001d/KAa7D\n/[Eq(^\b\u0015\t5\\\u001b\u0017L\u000ex5A\u0013r\u001fU^\u0007\u000fa3_\u001c\u0019N\u000f`=R\u0011\u0005Y\"\u001eP\u0019\u001b\\P\"?^\u0017\u0000EEv9UZ\u0007@Tj|^\u000f\u0004YUvf\u0011p\u000b\u0019]\u0004|P\u000eP\u0012?]\u000f\u0003]Ep\u0015_\u001c\u001fdAl=V\u001f\u0002\u0016?^\u0017^E\u0017v9R\u0012^ZEp*T\b^AOo9\n=\u001f\u0018\u0005]Tm2\u0011\u0001\u0004~\u0011UN\u001d\u001eP\u0019\u001b\\P\".T\u000b\u0005LSv|C\u0015\u0005]Il;\u0011\u001c\u0011@Lg8\u001c`X\u0014\u0000\\T\"(H\n\u0015\u0014\u0002q)S\u0017\u0019]\u0002\"*P\u0016\u0005L\u001d \u001a\u000e^\u000f\u0004@Ne|S\u001b\u0013BUr|C\u001f\u0001\\Eq(\u0011\u000e\u001f\t";
                var4_3 = "\u001eP\u0019\u001b\\P\"5\\\u001b\u0017L\u0000a.T\u001b\u0004LD\"=_\u001ePOOw2U@P#[2!-=\u001f\u0018\u0005]Tm2\u000b\u0012\u001f_Ep|JZ\u0012HCi;C\u0015\u0005GD/?^\u0016\u001f[\u001a\"\u007fuJ4\u0019d2g\u0011\u0007\u0018/T\b\u0006@Cgf|\u001f\u0003ZAe9a\b\u001fJEq/^\b\n(T\u0002\u0004\u0006Pn=X\u0014\u0004~\u0011UN\r\u001dR\u0019\u0015YT/\u000eP\u0014\u0017LSA\u000fT\u0014\u0014@Ne|R\u0012\u0011ELg2V\u001fP[Eq,^\u0014\u0003L\u0000v3\u0011\u0018\u0011JKw,\u0011\b\u0015XUg/EZ\u0007@Tj3D\u000ePJRg8T\u0014\u0004@An/\u001f\u0007`\u001e\u0012\u0004DL<\u000e\u0015_\u000e\u0015[Nc0\u0011\u001f\u0002[Op\u0006`S\u0015\u0014P\u001e\u001f`YKNnAv9F\u001b\t\tbc?Z\u000f\u0000\tsg.G\u0013\u0013L\u001c-4\u0000D\u001d|\u0011ZPYAf8X\u0014\u0017\u0013\u00000,IZFYX\"nA\u0002P\u001fPzg+\u001aP\u0013\u001cLD\"(^Z\u001fKTc5_Z\u0013EUq(T\bPGOf9\u0011\u0013\u001eOOp1P\u000e\u0019FN8|\f\u0012^Z\u0003\\Cj|_\u0015\u0014L\u0003qX\u001b(\u001eP\u0019\u001b\\P\".T\u000b\u0005LSv|A\u001f\u0002DIq/X\u0015\u001e\tCj9R\u0011\u0015M\u0000d=X\u0016\u0015M6\u001f^\u0014\u0016@Gw.P\u000e\u0019FN\"9C\b\u001f[\u001b\"?^\u000f\u001cM\u0000l3EZ\u0017LT\"=A\n\u001c@Cc(X\u0015\u001e\tCm2E\u001f\b]\r\u001eP\u0019\u001b\\P\":P\u0013\u001cLD5\u001f^\n\u0019LD\"3G\u001f\u0002\thV\baZ\u0018LAf9CZ\u0016[Oo|C\u0015\u0005]Ef|S\u001b\u0013BUr|C\u001f\u0003YOl/T@P\u0006qX\u0017\u0011NE\u0007`\u001e\u0018\u001fMY<\u001c\u000e^\u000f\u0004LD\">P\u0019\u001b\\P\".T\t\u0000FNq9\u0011\u001c\u0002FM\"\u000f\u001eP\u001ePJRg8T\u0014\u0004@An/\u0004(C\u000f\u0015\r\u0012^\u000ePYEp1X\u000e\u0004LD\u001c|\u0011ZPKOp8T\bJ\t\u0012r$\u0011\u0015\u0005]Sg(\u0011\u001d\u0002HY9\u001d\u001eP\u0019\u001b\\P\".T\u000b\u0005LSv|C\u0015\u0005]Il;\u0011\u001c\u0011@Lg8\u0017\fT\b\u001d@Sq5^\u0014PJHg?ZZ\u0016HIn9U\r\u001eP\u0019\u001b\\P\":P\u0013\u001cLD%`E\u0013\u0004EE<\u001bP\u000e\u0015^A{|s\u001b\u0013BUr|b\u001f\u0002_Ia9\rU\u0004@Tn9\u000f\t5\\\u001b\u0017L\u000ex5A\u001b\u001f^\u000f\u001cM\u0000l3EZ\u0014LLg(TZ\u0014@Rg?E\u0015\u0002P\u0000\u0015\u0012^Z\u0013EIg2EZ\u0013LRv5W\u0013\u0013HTg\u0003(\\\n\u0011\u001eP\u0019\u001b\\P\"8^\r\u001eEOc8T\u001e\t(T\u0002\u0004\u0006Hv1]\u0002|\u0019\u001b\u001f^\u000f\u001cM\u0000l3EZ\u0014LLg(TZ\u0014@Rg?E\u0015\u0002P\u0000\b~\nZ\u0003@Zga\u0015\u001f^\u0014\u001eLCv3CZ\u001eFT\"9_\u001b\u0012EEf\u0016=E\u000e\u0011JHo9_\u000eK\tFk0T\u0014\u0011DE?~E`]\u0013\u001eB\u0000p9]GR@Cm2\u0013Z\u0004PPga\u0013\u0013\u001dHGgsA\u0014\u0017\u000b\u0000j.T\u001cM\u000b\u000fq/VU\u0007LBc8\\\u0013\u001e\u0006Fc*X\u0019\u001fG\u000ek?^XP\u0006\u001e\u0016|\u0011ZPOOl(\u001c\r\u0015@Gj(\u000bZ\u0012FLfg\u0013\u0011X\t\u0003@Ne|R\b\u0015MEl(X\u001b\u001cZ\u001c|\u0011ZPOOl(\u001c\u001c\u0011DIn%\u000bZ\u0003HNqqB\u001f\u0002@F9\f\u000fb6P[Es)X\b\u0015M(`X\u0014\u0000\\T\"(H\n\u0015\u0014\u0002j5U\u001e\u0015G\u0002\"2P\u0017\u0015\u0014\u0002l3U\u001fR\tVc0D\u001fM\u000b\u0006`Y\u000e\u001dE\u001e\u00042^\u001e\u0015\u0004rK\u0013\u0000\u000e|S\u0003\u0004LS\"5_Z\u0012FD{\u0017`B\u000e\tEE\"(H\n\u0015\u0014\u0002v9I\u000e_JSq~\u000f/`AD EEc/TZ\u0003LLg?EZ\u0011\tgc(T\r\u0011P\u0000l3U\u001fP]O\">P\u0019\u001b\tUrf\rU\u0000\u0017\n\t_\u0016\u0019JEl/T\u001e\f/B\u001d\u0012HCi)AT\u0003A\u0013\u001f^\u0014\u0004LNvqu\u0013\u0003YOq5E\u0013\u001fG\u000b.^\u0016\u0015dAl=V\u001f\u0002\u0016\u001eP\u0019\u001b\\P\".T\u000b\u0005LSv|S\u0016\u001fJKg8\u00042^\u0014\u0015\u0014|\u0011ZPDIlqF\u0013\u0014]H8|\u0006J\u0000Q\u001bH`X\u0014\u0000\\T\"(H\n\u0015\u0014\u0002a4T\u0019\u001bKOz~\u0011\u0014\u0011DE?~P\u000f\u0014@Tq~\u0011\f\u0011EUga\u0013\u000e\u0002\\E bx\u0014\u0013EUf9\u0011;\u0005MIv/\rU\u0019GPw(\u000f\b`\u001e\t\u0004PLgb\u0010\u001fP\u0014\u001eFT\":X\u0014\u0014\tNm8T\u000f=A\n\u001c@Cc(X\u0015\u001e\u0006Zk,\u001e|\u0011ZPKAa7V\b\u001f\\NfqR\u0015\u001cFR8|\u0012?Hl\u0018Gd\n\u0004|P\u000eP\u0007`\u001e\u0012\u0015HD<(`W\u0015\u0002D\u0000c?E\u0013\u001fG\u001d sB\t\u0017\u0006Bc?Z\u000f\u0000\u000b\u0000o9E\u0012\u001fM\u001d ;T\u000eR\u0017\u0002f\u0011\u0006`Y\u001f\u0011M\u001ei=\u001f\u0018\u0005]Tm2\u000b\u0016\u0019GK.|PT\u0012\\Tv3_@\u0006@Sk(T\u001e\\\tA,>D\u000e\u0004FN84^\f\u0015[\f\"=\u001f\u0018\u0005]Tm2\u000b\u001b\u0013]It9\u0011\u0001PJOn3C@PKLc?ZAP]Ez(\u001c\u001e\u0015JOp=E\u0013\u001fG\u001a\"2^\u0014\u0015\u0012\u0000\u007f\u000b`\u001e\u001c\u001f[M<`S\bN\u000e\u000e^\u000f\u0004@Ne|W\u001b\u0019EEf\u0016\u001eP\u0019\u001b\\P\".T\u000b\u0005LSv|S\u0016\u001fJKg8\u0006=D\u001e\u0019]S\u0012/B\u001d/KAa7D\n/[Eq(^\b\u0015\t5\\\u001b\u0017L\u000ex5A\u0013r\u001fU^\u0007\u000fa3_\u001c\u0019N\u000f`=R\u0011\u0005Y\"\u001eP\u0019\u001b\\P\"?^\u0017\u0000EEv9UZ\u0007@Tj|^\u000f\u0004YUvf\u0011p\u000b\u0019]\u0004|P\u000eP\u0012?]\u000f\u0003]Ep\u0015_\u001c\u001fdAl=V\u001f\u0002\u0016?^\u0017^E\u0017v9R\u0012^ZEp*T\b^AOo9\n=\u001f\u0018\u0005]Tm2\u0011\u0001\u0004~\u0011UN\u001d\u001eP\u0019\u001b\\P\".T\u000b\u0005LSv|C\u0015\u0005]Il;\u0011\u001c\u0011@Lg8\u001c`X\u0014\u0000\\T\"(H\n\u0015\u0014\u0002q)S\u0017\u0019]\u0002\"*P\u0016\u0005L\u001d \u001a\u000e^\u000f\u0004@Ne|S\u001b\u0013BUr|C\u001f\u0001\\Eq(\u0011\u000e\u001f\t".length();
                var1_4 = 36;
                var0_5 = -1;
lbl7:
                // 2 sources

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

                while (true) {
                    var5[var3_1++] = BackupServlet.b(v0, BackupServlet.b(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    var2_2 = "w!e{#6\u0019L;mm6*\u0019F\u001aK!pk%0\u0013F*Lz#.?N&a`#\u0018\u001dA;k|.";
                    var4_3 = "w!e{#6\u0019L;mm6*\u0019F\u001aK!pk%0\u0013F*Lz#.?N&a`#\u0018\u001dA;k|.".length();
                    var1_4 = 15;
                    var0_5 = -1;
lbl22:
                    // 2 sources

                    while (true) {
                        v0 = 61;
                        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++] = BackupServlet.b(v0, BackupServlet.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;
            }
        }
        BackupServlet.b = var5;
        BackupServlet._logger = Logger.getLogger(BackupServlet.class.getName());
    }

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

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

    /*
     * Handled impossible loop by duplicating code
     * Enabled aggressive block sorting
     */
    private static String b(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 -> 31;
                    case 1 -> 114;
                    case 2 -> 57;
                    case 3 -> 51;
                    case 4 -> 106;
                    case 5 -> 99;
                    default -> 65;
                })));
                ++n3;
                n4 = n4;
            } while (n4 > n3);
        }
        return new String(cArray2).intern();
    }
}

