/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  com.l7tech.policy.assertion.AssertionStatus
 *  com.l7tech.util.Triple
 *  jakarta.servlet.ServletContext
 *  jakarta.servlet.ServletException
 *  jakarta.servlet.ServletRequest
 *  jakarta.servlet.ServletResponse
 *  jakarta.servlet.http.HttpServletRequest
 *  jakarta.servlet.http.HttpServletResponse
 *  jakarta.websocket.server.ServerContainer
 *  jakarta.websocket.server.ServerEndpointConfig
 *  jakarta.websocket.server.ServerEndpointConfig$Configurator
 *  org.apache.commons.lang3.StringUtils
 *  org.apache.tomcat.websocket.server.UpgradeUtil
 *  org.apache.tomcat.websocket.server.WsServerContainer
 *  org.jetbrains.annotations.NotNull
 *  org.jetbrains.annotations.Nullable
 *  org.springframework.context.ApplicationContext
 */
package com.l7tech.server.transport.http.websocket;

import com.l7tech.policy.assertion.AssertionStatus;
import com.l7tech.server.DefaultKey;
import com.l7tech.server.MessageProcessor;
import com.l7tech.server.ServerConfig;
import com.l7tech.server.StashManagerFactory;
import com.l7tech.server.security.keystore.SsgKeyStoreManager;
import com.l7tech.server.tomcat.websocket.SsgServerEndpointConfigurator;
import com.l7tech.server.transport.http.websocket.SsgServerEndpointConfig;
import com.l7tech.server.transport.http.websocket.SsgWebSocketEndpoint;
import com.l7tech.server.transport.http.websocket.SsgWebSocketEndpointHandler;
import com.l7tech.server.transport.http.websocket.SsgWebSocketExpectedRuntimeException;
import com.l7tech.server.transport.http.websocket.SsgWebSocketGlobalSettings;
import com.l7tech.server.transport.http.websocket.SsgWebSocketRuntimeException;
import com.l7tech.util.Triple;
import jakarta.servlet.ServletContext;
import jakarta.servlet.ServletException;
import jakarta.servlet.ServletRequest;
import jakarta.servlet.ServletResponse;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.websocket.server.ServerContainer;
import jakarta.websocket.server.ServerEndpointConfig;
import java.io.IOException;
import java.security.SecureRandom;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.net.ssl.TrustManager;
import org.apache.commons.lang3.StringUtils;
import org.apache.tomcat.websocket.server.UpgradeUtil;
import org.apache.tomcat.websocket.server.WsServerContainer;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.springframework.context.ApplicationContext;

/*
 * Exception performing whole class analysis ignored.
 */
public class SsgWebSocketManager {
    public static final String VARIABLE_NAME_WEBSOCKET_EVENT;
    static final String a;
    static final String b;
    static final String c;
    public static final String VARIABLE_NAME_WEBSOCKET_ON_MESSAGE_CLOSE_SESSION_CODE;
    public static final String VARIABLE_NAME_WEBSOCKET_ON_MESSAGE_CLOSE_SESSION_REASON_PHRASE;
    public static final String VARIABLE_NAME_WEBSOCKET_ON_MESSAGE_DIRECTION;
    public static final String VARIABLE_NAME_WEBSOCKET_ON_MESSAGE_DO_NOT_SEND_RETURN_RESPONSE;
    static final String d;
    static final String e;
    static final String f;
    static final String g;
    static final String h;
    static final String i;
    static final String j;
    static final String k;
    static final String l;
    static final String m;
    static final String n;
    public static final String VARIABLE_NAME_WEBSOCKET_ON_MESSAGE_SAVED_UPGRADE_REQUEST;
    public static final String VARIABLE_NAME_WEBSOCKET_ON_MESSAGE_SAVED_UPGRADE_RESPONSE;
    static final String[] o;
    static final String[] p;
    static final List<String> q;
    private static final Logger r;
    private static final Map<String, Triple<HttpServletRequest, HttpServletResponse, SsgServerEndpointConfig>> s;
    private static final Map<String, SsgServerEndpointConfig> t;
    private static SsgWebSocketManager u;
    private final WsServerContainer v;
    private SsgWebSocketGlobalSettings w;
    private SsgWebSocketEndpointHandler x;
    private static final String[] y;

    public static void initInstance(ServletContext servletContext) {
        u = new SsgWebSocketManager(servletContext);
    }

    public static void postInitInstance(ApplicationContext applicationContext) {
        try {
            if (u == null) {
                return;
            }
        }
        catch (IllegalStateException illegalStateException) {
            throw SsgWebSocketManager.a(illegalStateException);
        }
        String[] stringArray = y;
        u.a((ServerConfig)applicationContext.getBean(stringArray[10], ServerConfig.class), (MessageProcessor)((Object)applicationContext.getBean(stringArray[38], MessageProcessor.class)), (SsgKeyStoreManager)applicationContext.getBean(stringArray[15], SsgKeyStoreManager.class), (TrustManager)applicationContext.getBean(stringArray[27], TrustManager.class), (SecureRandom)applicationContext.getBean(stringArray[7], SecureRandom.class), (DefaultKey)applicationContext.getBean(stringArray[58], DefaultKey.class), (StashManagerFactory)applicationContext.getBean(stringArray[37], StashManagerFactory.class));
    }

    public static SsgWebSocketManager getInstance() {
        return u;
    }

    private SsgWebSocketManager(ServletContext servletContext) {
        this.v = this.a(servletContext);
    }

    private void a(ServerConfig serverConfig, MessageProcessor messageProcessor, SsgKeyStoreManager ssgKeyStoreManager, TrustManager trustManager, SecureRandom secureRandom, DefaultKey defaultKey, StashManagerFactory stashManagerFactory) {
        this.w = new SsgWebSocketGlobalSettings(serverConfig);
        this.x = new SsgWebSocketEndpointHandler(defaultKey, messageProcessor, secureRandom, ssgKeyStoreManager, stashManagerFactory, trustManager);
        this.w.a(() -> {
            r.log(Level.INFO, y[16]);
            this.a();
        });
        this.a();
    }

    private void a() {
        this.v.setAsyncSendTimeout((long)this.w.a());
        this.v.setDefaultMaxSessionIdleTimeout((long)this.w.b());
        this.v.setDefaultMaxTextMessageBufferSize(this.w.c());
        this.v.setDefaultMaxBinaryMessageBufferSize(this.w.d());
    }

    private WsServerContainer a(ServletContext servletContext) {
        WsServerContainer wsServerContainer = (WsServerContainer)servletContext.getAttribute(ServerContainer.class.getName());
        try {
            if (wsServerContainer != null) {
                return wsServerContainer;
            }
        }
        catch (IllegalStateException illegalStateException) {
            throw SsgWebSocketManager.a(illegalStateException);
        }
        throw new IllegalStateException(y[39]);
    }

    public WsServerContainer getServerContainer() {
        return this.v;
    }

    public SsgWebSocketEndpointHandler getEndpointHandler() {
        return this.x;
    }

    public boolean isWebSocketUpgradeRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) {
        return UpgradeUtil.isWebSocketUpgradeRequest((ServletRequest)httpServletRequest, (ServletResponse)httpServletResponse);
    }

    public void doWebSocketUpgrade(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
        String[] stringArray = y;
        String string = httpServletRequest.getHeader(stringArray[24]);
        try {
            if (StringUtils.isBlank((CharSequence)string)) {
                r.log(Level.WARNING, stringArray[4], httpServletRequest.getRequestURI());
                httpServletResponse.sendError(400, stringArray[32]);
                return;
            }
        }
        catch (Exception exception) {
            throw SsgWebSocketManager.a(exception);
        }
        SsgServerEndpointConfig ssgServerEndpointConfig = this.a(httpServletRequest.getRequestURI());
        if (ssgServerEndpointConfig == null) {
            ssgServerEndpointConfig = new SsgServerEndpointConfig(SsgWebSocketEndpoint.class, (ServerEndpointConfig.Configurator)new SsgServerEndpointConfigurator());
        }
        s.put(string, (Triple<HttpServletRequest, HttpServletResponse, SsgServerEndpointConfig>)Triple.triple((Object)httpServletRequest, (Object)httpServletResponse, (Object)ssgServerEndpointConfig));
        try {
            if (r.isLoggable(Level.FINE)) {
                r.fine(y[22]);
            }
            UpgradeUtil.doUpgrade((WsServerContainer)SsgWebSocketManager.getInstance().getServerContainer(), (HttpServletRequest)httpServletRequest, (HttpServletResponse)httpServletResponse, (ServerEndpointConfig)ssgServerEndpointConfig, Collections.emptyMap());
        }
        catch (Exception exception) {
            s.remove(string);
            throw exception;
        }
        try {
            if (ssgServerEndpointConfig.getPath() != null) {
                t.put(ssgServerEndpointConfig.getPath(), ssgServerEndpointConfig);
            }
        }
        catch (Exception exception) {
            throw SsgWebSocketManager.a(exception);
        }
    }

    public HttpServletRequest getHandshakeRequest(@NotNull String string) {
        HttpServletRequest httpServletRequest;
        try {
            if (string == null) {
                SsgWebSocketManager.a(0);
            }
        }
        catch (IllegalStateException illegalStateException) {
            throw SsgWebSocketManager.a(illegalStateException);
        }
        Triple<HttpServletRequest, HttpServletResponse, SsgServerEndpointConfig> triple = s.get(string);
        try {
            httpServletRequest = triple != null ? (HttpServletRequest)triple.left : null;
        }
        catch (IllegalStateException illegalStateException) {
            throw SsgWebSocketManager.a(illegalStateException);
        }
        return httpServletRequest;
    }

    public HttpServletResponse getHandshakeResponse(@NotNull String string) {
        HttpServletResponse httpServletResponse;
        try {
            if (string == null) {
                SsgWebSocketManager.a(1);
            }
        }
        catch (IllegalStateException illegalStateException) {
            throw SsgWebSocketManager.a(illegalStateException);
        }
        Triple<HttpServletRequest, HttpServletResponse, SsgServerEndpointConfig> triple = s.get(string);
        try {
            httpServletResponse = triple != null ? (HttpServletResponse)triple.middle : null;
        }
        catch (IllegalStateException illegalStateException) {
            throw SsgWebSocketManager.a(illegalStateException);
        }
        return httpServletResponse;
    }

    public SsgServerEndpointConfig getHandshakeSsgServerEndpointConfig(@NotNull String string) {
        SsgServerEndpointConfig ssgServerEndpointConfig;
        try {
            if (string == null) {
                SsgWebSocketManager.a(2);
            }
        }
        catch (IllegalStateException illegalStateException) {
            throw SsgWebSocketManager.a(illegalStateException);
        }
        Triple<HttpServletRequest, HttpServletResponse, SsgServerEndpointConfig> triple = s.get(string);
        try {
            ssgServerEndpointConfig = triple != null ? (SsgServerEndpointConfig)triple.right : null;
        }
        catch (IllegalStateException illegalStateException) {
            throw SsgWebSocketManager.a(illegalStateException);
        }
        return ssgServerEndpointConfig;
    }

    public void removeHandshake(@NotNull String string) {
        try {
            if (string == null) {
                SsgWebSocketManager.a(3);
            }
        }
        catch (IllegalStateException illegalStateException) {
            throw SsgWebSocketManager.a(illegalStateException);
        }
        s.remove(string);
    }

    SsgServerEndpointConfig a(String string) {
        return t.get(string);
    }

    public void removeSsgServerEndpointConfig(String string) {
        t.remove(string);
    }

    public void checkAssertionStatus(@NotNull AssertionStatus assertionStatus, @Nullable String string) {
        block13: {
            block16: {
                block15: {
                    try {
                        if (assertionStatus == null) {
                            SsgWebSocketManager.a(4);
                        }
                    }
                    catch (IllegalStateException illegalStateException) {
                        throw SsgWebSocketManager.a(illegalStateException);
                    }
                    try {
                        block14: {
                            try {
                                try {
                                    if (AssertionStatus.NONE.equals(assertionStatus)) break block13;
                                    if (AssertionStatus.SERVER_ERROR.equals(assertionStatus)) break block14;
                                }
                                catch (IllegalStateException illegalStateException) {
                                    throw SsgWebSocketManager.a(illegalStateException);
                                }
                                if (!AssertionStatus.FAILED.equals(assertionStatus)) break block15;
                            }
                            catch (IllegalStateException illegalStateException) {
                                throw SsgWebSocketManager.a(illegalStateException);
                            }
                        }
                        throw new SsgWebSocketRuntimeException(y[14] + assertionStatus.getMessage());
                    }
                    catch (IllegalStateException illegalStateException) {
                        throw SsgWebSocketManager.a(illegalStateException);
                    }
                }
                try {
                    try {
                        if (!AssertionStatus.SERVICE_NOT_FOUND.equals(assertionStatus) || string == null) break block16;
                    }
                    catch (IllegalStateException illegalStateException) {
                        throw SsgWebSocketManager.a(illegalStateException);
                    }
                    this.removeSsgServerEndpointConfig(string);
                }
                catch (IllegalStateException illegalStateException) {
                    throw SsgWebSocketManager.a(illegalStateException);
                }
            }
            throw new SsgWebSocketExpectedRuntimeException();
        }
    }

    /*
     * Unable to fully structure code
     */
    static {
        block10: {
            block9: {
                var5 = new String[60];
                var3_1 = 0;
                var2_2 = "Y\u0002BbwOW\u0007Y\u0002BbwOV7z+sg)\u0002\u000fh:?{(,\u0001~=ps#O\u0000b\u0000~`\u0015\u0004\ni\u001ct`3\u0013\n_+bd)\u000f\u0017h\f~p?5\u000bN\"xq(\u0015\u0013j+e\\'\u000f\u0000~&p\u007f#3\u0001|;tg2OD gu*\b\u0000-9tv5\u000e\u0007f+e4%\u000e\nc+r`/\u000e\n-;as4\u0000\u0000hncq7\u0014\u0001~:=45\u0004\u0007 9tv5\u000e\u0007f+e9-\u0004\u001d-'b4+\b\u0017~'\u007fsjA\u001f=3'z+sg)\u0002\u000fh:?{(,\u0001~=ps#O\u0014l=b@.\u0013\u000bx)y@)2\u0001\u007f8tf\nn!\u007fz#\u0002\u0010d!\u007f\f~+ra4\u00046l u{+\u0014n&tw- \u0017~+c`/\u000e\n^:p`3\u0012\u0014~+r91\u0004\u0006~!r\u007f#\u0015Il-rq6\u0015\f~+cb#\u0013'b w}!\u0007Y\u0002BbwOW(z+sg)\u0002\u000fh:?{(,\u0001~=ps#O\u0017l8tp\u0013\u0011\u0003\u007f/uq\u0014\u0004\u0017}!\u007fg#\u0016~+r91\u0004\u0006~!r\u007f#\u0015I}<~`)\u0002\u000ba7X tl6\u0004\u0007y+u4#\u0013\u0016b<=4%\u000e\u0011a*1z)\u0015D}<~w#\u0012\u0017-\u0019tv\u0015\u000e\u0007f+e44\u0004\u0015x+b`jA\u0012~=v_#\u00187y!cq\u000b\u0000\nl)tf0L>ax?\b\njn\u007fq1A\u0017h:e}(\u0006\u0017-:~42\t\u0001-\u0019tv\u0015\u000e\u0007f+e4%\u000e\ny/xz#\u0013/z+sg)\u0002\u000fh:?{(4\u0014j<pp#O\u0007b \u007fq%\u00150b\u001dtf0\u0004\u0016Y\"bD4\u000e\u0010b-~x53z+sg)\u0002\u000fh:?{(\"\bb=t:%\r\u000b~+Cq'\u0012\u000bc\u001eyf'\u0012\u0001Y!Bq4\u0017\u0001\u007f\u0001gq4\u0013\ri+\u001dz+sg)\u0002\u000fh:?{(4\u0014j<pp#O\u0000d<tw2\b\u000bc\u000fz+sg)\u0002\u000fh:?q0\u0004\nyEz+sg)\u0002\u000fh:?{(4\u0014j<pp#O\u0007b \u007fq%\u00150b\u001dtf0\u0004\u0016X=tW*\b\u0001c:Rq4\u0015\rk'ru2\u0004%x:yq(\u0015\rn/e})\u000f\u0010Y!|w'\u0015Dx>vf'\u0005\rc)2z+sg)\u0002\u000fh:?{(4\u0014j<pp#O\u0007b \u007fq%\u00150b\u001dtf0\u0004\u0016Y\"bW/\u0011\fh<Ba/\u0015\u0001~\u0011^+r9\u0011\u0004\u0006^!r\u007f#\u0015IF+h\u0007x>vf'\u0005\u0001\u001dz+sg)\u0002\u000fh:?{(,\u0001~=ps#O\u0000d<tw2\b\u000bc\u001b\u007f!d`/\u000f\u0003H6eq(\u0005\u0001i\u001aca5\u0015)l ps#\u0013\f}!}}%\u00186h=dx2%z+sg)\u0002\u000fh:?{(,\u0001~=ps#O\u0007a!bq\u0015\u0004\u0017~'~zh\u0002\u000bi+!z+sg)\u0002\u000fh:?{(4\u0014j<pp#O\fh/uq4\u00120b\u0001|}2\u0005Y\u0002BbwJD gu*\b\u0000-9tv5\u000e\u0007f+e4%\u000e\nc+r`/\u000e\n-;as4\u0000\u0000hncq7\u0014\u0001~:=45\u0004\u0007 9tv5\u000e\u0007f+e9-\u0004\u001d-'b4+\b\u0017~'\u007fs\u001fz+sg)\u0002\u000fh:?{(\"\bb=t:#\u0019\u0001n;eq\u0016\u000e\bd-h+z+sg)\u0002\u000fh:?{(\"\bb=t:%\r\u000b~+R{\"\u00040b\u001dtf0\u0004\u0016B8tf4\b\u0000hTz+sg)\u0002\u000fh:?{(4\u0014j<pp#O\u0007b \u007fq%\u00150b\u001dtf0\u0004\u0016X=tW*\b\u0001c:Rq4\u0015\rk'ru2\u0004%x:yq(\u0015\rn/e})\u000f4\u007f'gu2\u0004/h7Px/\u0000\u0017Xz+sg)\u0002\u000fh:?{(4\u0014j<pp#O\u0007b \u007fq%\u00150b\u001dtf0\u0004\u0016X=tW*\b\u0001c:Rq4\u0015\rk'ru2\u0004%x:yq(\u0015\rn/e})\u000f4\u007f+wq4\u0013\u0001i\u0005tm\u0015\u0015\u000b\u007f+Xp\u0013~:pg.,\u0005c/vq4'\u0005n:~f?\u0010`+bg'\u0006\u0001]<~w#\u0012\u0017b<lZ+sG)\u0002\u000fh:1G#\u0013\u0012h<1W)\u000f\u0010l'\u007fq4A\u0017e!dx\"A\fl8t4$\u0004\u0001cnxz/\u0015\rl\"xn#\u0005Do+w{4\u0004Dy&t4!\u0000\u0010h9pmf6\u0001o\u001d~w-\u0004\u0010-\u0003pz'\u0006\u0001\u007fnxgf\b\nd:xu*\b\u001eh*?\u0015~+r91\u0004\u0006~!r\u007f#\u0015I{+cg/\u000e\n'z+sg)\u0002\u000fh:?{(,\u0001~=ps#O\u0017l8tp\u0013\u0011\u0003\u007f/uq\u0014\u0004\u0015x+b`>n!|;*V\u0010h-y;5\u0004\u0016{+c;2\u0013\u0005c=a{4\u0015Ke:edi\u0016\u0001o=~w-\u0004\u0010\"\u001dbs\u0011\u0004\u0006^!r\u007f#\u0015)l ps#\u0013\u0006b<xs/\u000f\u0011~+r91\u0004\u0006~!r\u007f#\u0015If+h\u0018~+r91\u0004\u0006~!r\u007f#\u0015Ih6eq(\u0012\rb b-z+sg)\u0002\u000fh:?{(,\u0001~=ps#O\u0007a!bq\u0015\u0004\u0017~'~zh\u0013\u0001l=~z\u0016\t\u0016l=t&z+sg)\u0002\u000fh:?{(4\u0014j<pp#O\u0007b \u007fq%\u00150b\u001dtf0\u0004\u0016X<x\u0007Y\u0002BbwOU\u0002d*)z+sg)\u0002\u000fh:?{(,\u0001~=ps#O\u0014l=b@.\u0013\u000bx)yR4\u000e\t^+cb#\u0013\u0004e!b`>L<va+\u0004\nynw{4A$C!eZ3\r\b->pf'\f\u0001y+c4aD\u0017*n~rfD\u0017#kb4+\u0014\u0017yn\u007f{2A\u0006hn\u007fa*\r0z+sg)\u0002\u000fh:?{(4\u0014j<pp#O\u0007x=e{+\b\u001eh\u001ctg6\u000e\n~+Wf)\f#l:tc'\u0018\u0007Y\u0002BbwOV\u000f\u007f+|{0\u0004,l ug.\u0000\u000fh\u0003j+e\u0014j+e\\'\u000f\u0000~&p\u007f#3\u0001~>~z5\u0004";
                var4_3 = "Y\u0002BbwOW\u0007Y\u0002BbwOV7z+sg)\u0002\u000fh:?{(,\u0001~=ps#O\u0000b\u0000~`\u0015\u0004\ni\u001ct`3\u0013\n_+bd)\u000f\u0017h\f~p?5\u000bN\"xq(\u0015\u0013j+e\\'\u000f\u0000~&p\u007f#3\u0001|;tg2OD gu*\b\u0000-9tv5\u000e\u0007f+e4%\u000e\nc+r`/\u000e\n-;as4\u0000\u0000hncq7\u0014\u0001~:=45\u0004\u0007 9tv5\u000e\u0007f+e9-\u0004\u001d-'b4+\b\u0017~'\u007fsjA\u001f=3'z+sg)\u0002\u000fh:?{(,\u0001~=ps#O\u0014l=b@.\u0013\u000bx)y@)2\u0001\u007f8tf\nn!\u007fz#\u0002\u0010d!\u007f\f~+ra4\u00046l u{+\u0014n&tw- \u0017~+c`/\u000e\n^:p`3\u0012\u0014~+r91\u0004\u0006~!r\u007f#\u0015Il-rq6\u0015\f~+cb#\u0013'b w}!\u0007Y\u0002BbwOW(z+sg)\u0002\u000fh:?{(,\u0001~=ps#O\u0017l8tp\u0013\u0011\u0003\u007f/uq\u0014\u0004\u0017}!\u007fg#\u0016~+r91\u0004\u0006~!r\u007f#\u0015I}<~`)\u0002\u000ba7X tl6\u0004\u0007y+u4#\u0013\u0016b<=4%\u000e\u0011a*1z)\u0015D}<~w#\u0012\u0017-\u0019tv\u0015\u000e\u0007f+e44\u0004\u0015x+b`jA\u0012~=v_#\u00187y!cq\u000b\u0000\nl)tf0L>ax?\b\njn\u007fq1A\u0017h:e}(\u0006\u0017-:~42\t\u0001-\u0019tv\u0015\u000e\u0007f+e4%\u000e\ny/xz#\u0013/z+sg)\u0002\u000fh:?{(4\u0014j<pp#O\u0007b \u007fq%\u00150b\u001dtf0\u0004\u0016Y\"bD4\u000e\u0010b-~x53z+sg)\u0002\u000fh:?{(\"\bb=t:%\r\u000b~+Cq'\u0012\u000bc\u001eyf'\u0012\u0001Y!Bq4\u0017\u0001\u007f\u0001gq4\u0013\ri+\u001dz+sg)\u0002\u000fh:?{(4\u0014j<pp#O\u0000d<tw2\b\u000bc\u000fz+sg)\u0002\u000fh:?q0\u0004\nyEz+sg)\u0002\u000fh:?{(4\u0014j<pp#O\u0007b \u007fq%\u00150b\u001dtf0\u0004\u0016X=tW*\b\u0001c:Rq4\u0015\rk'ru2\u0004%x:yq(\u0015\rn/e})\u000f\u0010Y!|w'\u0015Dx>vf'\u0005\rc)2z+sg)\u0002\u000fh:?{(4\u0014j<pp#O\u0007b \u007fq%\u00150b\u001dtf0\u0004\u0016Y\"bW/\u0011\fh<Ba/\u0015\u0001~\u0011^+r9\u0011\u0004\u0006^!r\u007f#\u0015IF+h\u0007x>vf'\u0005\u0001\u001dz+sg)\u0002\u000fh:?{(,\u0001~=ps#O\u0000d<tw2\b\u000bc\u001b\u007f!d`/\u000f\u0003H6eq(\u0005\u0001i\u001aca5\u0015)l ps#\u0013\f}!}}%\u00186h=dx2%z+sg)\u0002\u000fh:?{(,\u0001~=ps#O\u0007a!bq\u0015\u0004\u0017~'~zh\u0002\u000bi+!z+sg)\u0002\u000fh:?{(4\u0014j<pp#O\fh/uq4\u00120b\u0001|}2\u0005Y\u0002BbwJD gu*\b\u0000-9tv5\u000e\u0007f+e4%\u000e\nc+r`/\u000e\n-;as4\u0000\u0000hncq7\u0014\u0001~:=45\u0004\u0007 9tv5\u000e\u0007f+e9-\u0004\u001d-'b4+\b\u0017~'\u007fs\u001fz+sg)\u0002\u000fh:?{(\"\bb=t:#\u0019\u0001n;eq\u0016\u000e\bd-h+z+sg)\u0002\u000fh:?{(\"\bb=t:%\r\u000b~+R{\"\u00040b\u001dtf0\u0004\u0016B8tf4\b\u0000hTz+sg)\u0002\u000fh:?{(4\u0014j<pp#O\u0007b \u007fq%\u00150b\u001dtf0\u0004\u0016X=tW*\b\u0001c:Rq4\u0015\rk'ru2\u0004%x:yq(\u0015\rn/e})\u000f4\u007f'gu2\u0004/h7Px/\u0000\u0017Xz+sg)\u0002\u000fh:?{(4\u0014j<pp#O\u0007b \u007fq%\u00150b\u001dtf0\u0004\u0016X=tW*\b\u0001c:Rq4\u0015\rk'ru2\u0004%x:yq(\u0015\rn/e})\u000f4\u007f+wq4\u0013\u0001i\u0005tm\u0015\u0015\u000b\u007f+Xp\u0013~:pg.,\u0005c/vq4'\u0005n:~f?\u0010`+bg'\u0006\u0001]<~w#\u0012\u0017b<lZ+sG)\u0002\u000fh:1G#\u0013\u0012h<1W)\u000f\u0010l'\u007fq4A\u0017e!dx\"A\fl8t4$\u0004\u0001cnxz/\u0015\rl\"xn#\u0005Do+w{4\u0004Dy&t4!\u0000\u0010h9pmf6\u0001o\u001d~w-\u0004\u0010-\u0003pz'\u0006\u0001\u007fnxgf\b\nd:xu*\b\u001eh*?\u0015~+r91\u0004\u0006~!r\u007f#\u0015I{+cg/\u000e\n'z+sg)\u0002\u000fh:?{(,\u0001~=ps#O\u0017l8tp\u0013\u0011\u0003\u007f/uq\u0014\u0004\u0015x+b`>n!|;*V\u0010h-y;5\u0004\u0016{+c;2\u0013\u0005c=a{4\u0015Ke:edi\u0016\u0001o=~w-\u0004\u0010\"\u001dbs\u0011\u0004\u0006^!r\u007f#\u0015)l ps#\u0013\u0006b<xs/\u000f\u0011~+r91\u0004\u0006~!r\u007f#\u0015If+h\u0018~+r91\u0004\u0006~!r\u007f#\u0015Ih6eq(\u0012\rb b-z+sg)\u0002\u000fh:?{(,\u0001~=ps#O\u0007a!bq\u0015\u0004\u0017~'~zh\u0013\u0001l=~z\u0016\t\u0016l=t&z+sg)\u0002\u000fh:?{(4\u0014j<pp#O\u0007b \u007fq%\u00150b\u001dtf0\u0004\u0016X<x\u0007Y\u0002BbwOU\u0002d*)z+sg)\u0002\u000fh:?{(,\u0001~=ps#O\u0014l=b@.\u0013\u000bx)yR4\u000e\t^+cb#\u0013\u0004e!b`>L<va+\u0004\nynw{4A$C!eZ3\r\b->pf'\f\u0001y+c4aD\u0017*n~rfD\u0017#kb4+\u0014\u0017yn\u007f{2A\u0006hn\u007fa*\r0z+sg)\u0002\u000fh:?{(4\u0014j<pp#O\u0007x=e{+\b\u001eh\u001ctg6\u000e\n~+Wf)\f#l:tc'\u0018\u0007Y\u0002BbwOV\u000f\u007f+|{0\u0004,l ug.\u0000\u000fh\u0003j+e\u0014j+e\\'\u000f\u0000~&p\u007f#3\u0001~>~z5\u0004".length();
                var1_4 = 7;
                var0_5 = -1;
lbl7:
                // 2 sources

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

                while (true) {
                    var5[var3_1++] = SsgWebSocketManager.a(v0, SsgWebSocketManager.b(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    var2_2 = "b |~8\u0006\u001bM c#a nW,\u0004\u000bu-{t(9\u001ca\u0016\u007fm;\u000f\u001dC+~o\"\u0003\u0001r\u0006uq+\u0003\b";
                    var4_3 = "b |~8\u0006\u001bM c#a nW,\u0004\u000bu-{t(9\u001ca\u0016\u007fm;\u000f\u001dC+~o\"\u0003\u0001r\u0006uq+\u0003\b".length();
                    var1_4 = 10;
                    var0_5 = -1;
lbl22:
                    // 2 sources

                    while (true) {
                        v0 = 56;
                        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++] = SsgWebSocketManager.a(v0, SsgWebSocketManager.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;
            }
        }
        SsgWebSocketManager.y = var5;
        SsgWebSocketManager.c = SsgWebSocketManager.y[33];
        SsgWebSocketManager.b = SsgWebSocketManager.y[18];
        SsgWebSocketManager.VARIABLE_NAME_WEBSOCKET_EVENT = SsgWebSocketManager.y[20];
        SsgWebSocketManager.g = SsgWebSocketManager.y[17];
        SsgWebSocketManager.VARIABLE_NAME_WEBSOCKET_ON_MESSAGE_DO_NOT_SEND_RETURN_RESPONSE = SsgWebSocketManager.y[2];
        SsgWebSocketManager.k = SsgWebSocketManager.y[36];
        SsgWebSocketManager.m = SsgWebSocketManager.y[19];
        SsgWebSocketManager.VARIABLE_NAME_WEBSOCKET_ON_MESSAGE_SAVED_UPGRADE_RESPONSE = SsgWebSocketManager.y[12];
        SsgWebSocketManager.h = SsgWebSocketManager.y[47];
        SsgWebSocketManager.d = SsgWebSocketManager.y[50];
        SsgWebSocketManager.f = SsgWebSocketManager.y[23];
        SsgWebSocketManager.i = SsgWebSocketManager.y[21];
        SsgWebSocketManager.VARIABLE_NAME_WEBSOCKET_ON_MESSAGE_CLOSE_SESSION_REASON_PHRASE = SsgWebSocketManager.y[46];
        SsgWebSocketManager.VARIABLE_NAME_WEBSOCKET_ON_MESSAGE_DIRECTION = SsgWebSocketManager.y[26];
        SsgWebSocketManager.l = SsgWebSocketManager.y[53];
        SsgWebSocketManager.a = SsgWebSocketManager.y[34];
        SsgWebSocketManager.j = SsgWebSocketManager.y[35];
        SsgWebSocketManager.e = SsgWebSocketManager.y[5];
        SsgWebSocketManager.VARIABLE_NAME_WEBSOCKET_ON_MESSAGE_SAVED_UPGRADE_REQUEST = SsgWebSocketManager.y[41];
        SsgWebSocketManager.VARIABLE_NAME_WEBSOCKET_ON_MESSAGE_CLOSE_SESSION_CODE = SsgWebSocketManager.y[29];
        SsgWebSocketManager.n = SsgWebSocketManager.y[30];
        v5 = new String[2];
        var0_6 = SsgWebSocketManager.y;
        v5[0] = var0_6[0];
        v5[1] = var0_6[54];
        SsgWebSocketManager.o = v5;
        SsgWebSocketManager.p = new String[]{var0_6[11], var0_6[1], var0_6[48], var0_6[31]};
        SsgWebSocketManager.q = Arrays.asList(new String[]{var0_6[56], var0_6[43], var0_6[6], var0_6[44], var0_6[25], var0_6[51], var0_6[40], var0_6[45], var0_6[13], var0_6[9]});
        SsgWebSocketManager.r = Logger.getLogger(SsgWebSocketManager.class.getName());
        SsgWebSocketManager.s = new ConcurrentHashMap<String, Triple<HttpServletRequest, HttpServletResponse, SsgServerEndpointConfig>>();
        SsgWebSocketManager.t = new ConcurrentHashMap<String, SsgServerEndpointConfig>();
    }

    /*
     * 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 2[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[] b(String string) {
        char[] cArray = string.toCharArray();
        if (cArray.length < 2) {
            cArray = cArray;
            cArray[0] = (char)(cArray[0] ^ 0x57);
        }
        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 -> 62;
                    case 1 -> 125;
                    case 2 -> 34;
                    case 3 -> 39;
                    case 4 -> 117;
                    case 5 -> 82;
                    default -> 87;
                })));
                ++n3;
                n4 = n4;
            } while (n4 > n3);
        }
        return new String(cArray2).intern();
    }
}

