// Path: wava-client/src/main/java/org/brutusin/wava/io/Event.java
// public enum Event {
// 
//     id,
//     queued,
//     priority,
//     running,
//     niceness,
//     retcode,
//     cancelled,
//     ping,
//     error,
//     exceed_tree,
//     shutdown,
//     maxrss,
//     maxswap,
//     starvation_relaunch,
//     starvation_stop;
// }
// 
// Path: wava-client/src/main/java/org/brutusin/wava/input/Input.java
// public class Input {
// 
//     private final int clientPid = Utils.getJVMPid();
// 
//     public int getClientPid() {
//         return clientPid;
//     }
// }
// 
// Path: wava-client/src/main/java/org/brutusin/wava/io/NamedPipe.java
// public enum NamedPipe {
// 
//     events,
//     stdin,
//     stdout,
//     stderr
// }
// 
// Path: wava-core/src/main/java/org/brutusin/wava/utils/ANSICode.java
// public enum ANSICode {
// 
//     BLACK("\u001B[30m"),
//     RED("\u001B[31m"),
//     GREEN("\u001B[32m"),
//     YELLOW("\u001B[33m"),
//     BLUE("\u001B[34m"),
//     PURPLE("\u001B[35m"),
//     CYAN("\u001B[36m"),
//     WHITE("\u001B[37m"),
//     BG_GREEN("\u001b[42m"),
//     BG_BLACK("\u001b[40m"),
//     BG_RED("\u001b[41m"),
//     BG_YELLOW("\u001b[43m"),
//     BG_BLUE("\u001b[44m"),
//     BG_MAGENTA("\u001b[45m"),
//     BG_CYAN("\u001b[46m"),
//     BG_WHITE("\u001b[47m"),
//     RESET("\u001B[0m"),
//     BOLD("\u001b[1m"),
//     UNDERLINED("\u001b[4m"),
//     BLINK("\u001b[5m"),
//     REVERSED("\u001b[7m"),
//     INVISIBLE("\u001b[8m"),
//     END_OF_LINE("\u001b[K"),
//     MOVE_TO_TOP("\u001b[0;0f"),
//     NO_WRAP("\u001b[?7l"),
//     WRAP("\u001b[?7h"),
//     CLEAR("\u001b[2J");
// 
//     private final String code;
// 
//     private static final ThreadLocal<Boolean> ACTIVE = new ThreadLocal<Boolean>() {
// 
//         @Override
//         protected Boolean initialValue() {
//             return Config.getInstance().getuICfg().isAnsiColors();
//         }
// 
//     };
// 
//     ANSICode(String code) {
//         this.code = code;
//     }
// 
//     public static void setActive(boolean active) {
//         ACTIVE.set(active && Config.getInstance().getuICfg().isAnsiColors());
//     }
// 
//     public static boolean isActive() {
//         return ACTIVE.get();
//     }
// 
//     public String getCode() {
//         if (isActive()) {
//             return code;
//         } else {
//             return "";
//         }
//     }
// 
//     @Override
//     public String toString() {
//         return getCode();
//     }
// }


import org.brutusin.wava.io.Event;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.brutusin.commons.Bean;
import org.brutusin.commons.utils.Miscellaneous;
import org.brutusin.wava.input.Input;
import org.brutusin.wava.io.NamedPipe;
import org.brutusin.wava.utils.ANSICode;

            // Peer closed
            return false;
        }
    }

    public String getUser() {
        return user;
    }

    public OutputStream getEventsOs() {
        return eventsOs;
    }

    public OutputStream getStdoutOs() {
        return stdoutOs;
    }

    public OutputStream getStderrOs() {
        return stderrOs;
    }

    public InputStream getStdinIs() {
        return stdinIs;
    }

    public synchronized boolean sendMessage(ANSICode color, String message) {
        if (closed) {
            return false;
        }
        if (color == null) {

// Path: wava-client/src/main/java/org/brutusin/wava/io/Event.java
// public enum Event {
// 
//     id,
//     queued,
//     priority,
//     running,
//     niceness,
//     retcode,
//     cancelled,
//     ping,
//     error,
//     exceed_tree,
//     shutdown,
//     maxrss,
//     maxswap,
//     starvation_relaunch,
//     starvation_stop;
// }
// 
// Path: wava-client/src/main/java/org/brutusin/wava/input/Input.java
// public class Input {
// 
//     private final int clientPid = Utils.getJVMPid();
// 
//     public int getClientPid() {
//         return clientPid;
//     }
// }
// 
// Path: wava-client/src/main/java/org/brutusin/wava/io/NamedPipe.java
// public enum NamedPipe {
// 
//     events,
//     stdin,
//     stdout,
//     stderr
// }
// 
// Path: wava-core/src/main/java/org/brutusin/wava/utils/ANSICode.java
// public enum ANSICode {
// 
//     BLACK("\u001B[30m"),
//     RED("\u001B[31m"),
//     GREEN("\u001B[32m"),
//     YELLOW("\u001B[33m"),
//     BLUE("\u001B[34m"),
//     PURPLE("\u001B[35m"),
//     CYAN("\u001B[36m"),
//     WHITE("\u001B[37m"),
//     BG_GREEN("\u001b[42m"),
//     BG_BLACK("\u001b[40m"),
//     BG_RED("\u001b[41m"),
//     BG_YELLOW("\u001b[43m"),
//     BG_BLUE("\u001b[44m"),
//     BG_MAGENTA("\u001b[45m"),
//     BG_CYAN("\u001b[46m"),
//     BG_WHITE("\u001b[47m"),
//     RESET("\u001B[0m"),
//     BOLD("\u001b[1m"),
//     UNDERLINED("\u001b[4m"),
//     BLINK("\u001b[5m"),
//     REVERSED("\u001b[7m"),
//     INVISIBLE("\u001b[8m"),
//     END_OF_LINE("\u001b[K"),
//     MOVE_TO_TOP("\u001b[0;0f"),
//     NO_WRAP("\u001b[?7l"),
//     WRAP("\u001b[?7h"),
//     CLEAR("\u001b[2J");
// 
//     private final String code;
// 
//     private static final ThreadLocal<Boolean> ACTIVE = new ThreadLocal<Boolean>() {
// 
//         @Override
//         protected Boolean initialValue() {
//             return Config.getInstance().getuICfg().isAnsiColors();
//         }
// 
//     };
// 
//     ANSICode(String code) {
//         this.code = code;
//     }
// 
//     public static void setActive(boolean active) {
//         ACTIVE.set(active && Config.getInstance().getuICfg().isAnsiColors());
//     }
// 
//     public static boolean isActive() {
//         return ACTIVE.get();
//     }
// 
//     public String getCode() {
//         if (isActive()) {
//             return code;
//         } else {
//             return "";
//         }
//     }
// 
//     @Override
//     public String toString() {
//         return getCode();
//     }
// }


// Path: wava-core/src/main/java/org/brutusin/wava/core/io/PeerChannel.java
import org.brutusin.wava.io.Event;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.brutusin.commons.Bean;
import org.brutusin.commons.utils.Miscellaneous;
import org.brutusin.wava.input.Input;
import org.brutusin.wava.io.NamedPipe;
import org.brutusin.wava.utils.ANSICode;

            // Peer closed
            return false;
        }
    }

    public String getUser() {
        return user;
    }

    public OutputStream getEventsOs() {
        return eventsOs;
    }

    public OutputStream getStdoutOs() {
        return stdoutOs;
    }

    public OutputStream getStderrOs() {
        return stderrOs;
    }

    public InputStream getStdinIs() {
        return stdinIs;
    }

    public synchronized boolean sendMessage(ANSICode color, String message) {
        if (closed) {
            return false;
        }
        if (color == null) {

            color = ANSICode.RESET;
