// Path: src/main/java/net/eliosoft/elios/main/LoggersManager.java
// public class LoggersManager {
//     private static LoggersManager instance;
// 
//     private HashMap<String, Logger> loggersMap = new HashMap<String, Logger>();
// 
//     private LoggersManager() {
//     }
// 
//     /**
//      * get the singleton instance of the LoggersManager.
//      *
//      * @return the instance
//      */
//     public static LoggersManager getInstance() {
//         if (LoggersManager.instance == null) {
//             LoggersManager.instance = new LoggersManager();
//         }
//         return LoggersManager.instance;
//     }
// 
//     /**
//      * gets the logger with the given name.
//      *
//      * @param loggerName
//      *            the name of the logger to get
//      * @return the logger with the corresponding name
//      */
//     public Logger getLogger(final String loggerName) {
//         if (!loggersMap.containsKey(loggerName)) {
//             this.loggersMap.put(loggerName, Logger.getLogger(loggerName));
//         }
//         return this.loggersMap.get(loggerName);
//     }
// 
//     /**
//      * get all the loggers of the application.
//      *
//      * @return a list containing all the loggers
//      */
//     public List<Logger> getLoggersList() {
//         return new ArrayList<Logger>(this.loggersMap.values());
//     }
// }
// 
// Path: src/main/java/net/eliosoft/elios/server/events/AdditiveModeValueChangedEvent.java
// public class AdditiveModeValueChangedEvent {
//     private boolean additiveModeEnabled;
// 
//     /**
//      * Constructor method to instantiate a new event.
//      *
//      * @param additiveModeEnabled
//      *            the new additive mode status value
//      */
//     public AdditiveModeValueChangedEvent(final boolean additiveModeEnabled) {
//         this.additiveModeEnabled = additiveModeEnabled;
//     }
// 
//     /**
//      * Returns the additive mode status value of the event.
//      *
//      * @return the new additive mode status value
//      */
//     public boolean isAdditiveModeEnabled() {
//         return additiveModeEnabled;
//     }
// }
// 
// Path: src/main/java/net/eliosoft/elios/server/events/SubnetValueChangedEvent.java
// public class SubnetValueChangedEvent {
//     private int subnet;
// 
//     /**
//      * Constructor method to instantiate a new event.
//      *
//      * @param subnet
//      *            the new subnet value
//      */
//     public SubnetValueChangedEvent(final int subnet) {
//         this.subnet = subnet;
//     }
// 
//     /**
//      * Returns the subnet value of the event.
//      *
//      * @return the new subnet value
//      */
//     public int getSubnet() {
//         return subnet;
//     }
// }
// 
// Path: src/main/java/net/eliosoft/elios/server/events/UniverseValueChangedEvent.java
// public class UniverseValueChangedEvent {
//     private int universe;
// 
//     /**
//      * Constructor method to instantiate a new event.
//      *
//      * @param universe
//      *            the new universe value
//      */
//     public UniverseValueChangedEvent(final int universe) {
//         this.universe = universe;
//     }
// 
//     /**
//      * Returns the universe value of the event.
//      *
//      * @return the new universe value
//      */
//     public int getUniverse() {
//         return universe;
//     }
// }
// 
// Path: src/main/java/net/eliosoft/elios/server/listeners/ArtNetServerManagerListener.java
// public interface ArtNetServerManagerListener {
//     /**
//      * This method is called when the value of the subnet has changed.
//      *
//      * @param event
//      *            the event corresponding to the change of the subnet
//      */
//     void subnetValueChanged(SubnetValueChangedEvent event);
// 
//     /**
//      * This method is called when the value of the universe has changed.
//      *
//      * @param event
//      *            the event corresponding to the change of the universe
//      */
//     void universeValueChanged(UniverseValueChangedEvent event);
// 
//     /**
//      * This method is called when the value of the additive mode has changed.
//      *
//      * @param event
//      *            the event corresponding to the change of the additive mode
//      */
//     void additiveModeValueChanged(AdditiveModeValueChangedEvent event);
// }


import java.net.SocketException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map.Entry;
import java.util.logging.Logger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import net.eliosoft.elios.main.LoggersManager;
import net.eliosoft.elios.server.events.AdditiveModeValueChangedEvent;
import net.eliosoft.elios.server.events.SubnetValueChangedEvent;
import net.eliosoft.elios.server.events.UniverseValueChangedEvent;
import net.eliosoft.elios.server.listeners.ArtNetServerManagerListener;
import artnet4j.ArtNetException;
import artnet4j.ArtNetServer;
import artnet4j.events.ArtNetServerListener;
import artnet4j.packets.ArtDmxPacket;
import artnet4j.packets.ArtNetPacket;
     * @return the status of additive mode
     */
    public boolean isAdditiveModeEnabled() {
        return this.additiveModeEnabled;
    }

    /**
     * Adds an element to the list of listener of the artnet server manager.
     *
     * @param listener
     *            the listener to add
     */
    public void addArtNetServerManagerChangedListener(
            final ArtNetServerManagerListener listener) {
        this.artnetServerManagerChangedListeners.add(listener);
    }

    /**
     * Removes an element to the list of listener of the artnet server manager.
     *
     * @param listener
     *            the listener to remove
     */
    public void removeArtNetServerManagerChangedListener(
            final ArtNetServerManagerListener listener) {
        this.artnetServerManagerChangedListeners.remove(listener);
    }

    private void fireSubnetValueChanged() {
        for (ArtNetServerManagerListener listener : this.artnetServerManagerChangedListeners) {
// Path: src/main/java/net/eliosoft/elios/main/LoggersManager.java
// public class LoggersManager {
//     private static LoggersManager instance;
// 
//     private HashMap<String, Logger> loggersMap = new HashMap<String, Logger>();
// 
//     private LoggersManager() {
//     }
// 
//     /**
//      * get the singleton instance of the LoggersManager.
//      *
//      * @return the instance
//      */
//     public static LoggersManager getInstance() {
//         if (LoggersManager.instance == null) {
//             LoggersManager.instance = new LoggersManager();
//         }
//         return LoggersManager.instance;
//     }
// 
//     /**
//      * gets the logger with the given name.
//      *
//      * @param loggerName
//      *            the name of the logger to get
//      * @return the logger with the corresponding name
//      */
//     public Logger getLogger(final String loggerName) {
//         if (!loggersMap.containsKey(loggerName)) {
//             this.loggersMap.put(loggerName, Logger.getLogger(loggerName));
//         }
//         return this.loggersMap.get(loggerName);
//     }
// 
//     /**
//      * get all the loggers of the application.
//      *
//      * @return a list containing all the loggers
//      */
//     public List<Logger> getLoggersList() {
//         return new ArrayList<Logger>(this.loggersMap.values());
//     }
// }
// 
// Path: src/main/java/net/eliosoft/elios/server/events/AdditiveModeValueChangedEvent.java
// public class AdditiveModeValueChangedEvent {
//     private boolean additiveModeEnabled;
// 
//     /**
//      * Constructor method to instantiate a new event.
//      *
//      * @param additiveModeEnabled
//      *            the new additive mode status value
//      */
//     public AdditiveModeValueChangedEvent(final boolean additiveModeEnabled) {
//         this.additiveModeEnabled = additiveModeEnabled;
//     }
// 
//     /**
//      * Returns the additive mode status value of the event.
//      *
//      * @return the new additive mode status value
//      */
//     public boolean isAdditiveModeEnabled() {
//         return additiveModeEnabled;
//     }
// }
// 
// Path: src/main/java/net/eliosoft/elios/server/events/SubnetValueChangedEvent.java
// public class SubnetValueChangedEvent {
//     private int subnet;
// 
//     /**
//      * Constructor method to instantiate a new event.
//      *
//      * @param subnet
//      *            the new subnet value
//      */
//     public SubnetValueChangedEvent(final int subnet) {
//         this.subnet = subnet;
//     }
// 
//     /**
//      * Returns the subnet value of the event.
//      *
//      * @return the new subnet value
//      */
//     public int getSubnet() {
//         return subnet;
//     }
// }
// 
// Path: src/main/java/net/eliosoft/elios/server/events/UniverseValueChangedEvent.java
// public class UniverseValueChangedEvent {
//     private int universe;
// 
//     /**
//      * Constructor method to instantiate a new event.
//      *
//      * @param universe
//      *            the new universe value
//      */
//     public UniverseValueChangedEvent(final int universe) {
//         this.universe = universe;
//     }
// 
//     /**
//      * Returns the universe value of the event.
//      *
//      * @return the new universe value
//      */
//     public int getUniverse() {
//         return universe;
//     }
// }
// 
// Path: src/main/java/net/eliosoft/elios/server/listeners/ArtNetServerManagerListener.java
// public interface ArtNetServerManagerListener {
//     /**
//      * This method is called when the value of the subnet has changed.
//      *
//      * @param event
//      *            the event corresponding to the change of the subnet
//      */
//     void subnetValueChanged(SubnetValueChangedEvent event);
// 
//     /**
//      * This method is called when the value of the universe has changed.
//      *
//      * @param event
//      *            the event corresponding to the change of the universe
//      */
//     void universeValueChanged(UniverseValueChangedEvent event);
// 
//     /**
//      * This method is called when the value of the additive mode has changed.
//      *
//      * @param event
//      *            the event corresponding to the change of the additive mode
//      */
//     void additiveModeValueChanged(AdditiveModeValueChangedEvent event);
// }


// Path: src/main/java/net/eliosoft/elios/server/ArtNetServerManager.java
import java.net.SocketException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map.Entry;
import java.util.logging.Logger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import net.eliosoft.elios.main.LoggersManager;
import net.eliosoft.elios.server.events.AdditiveModeValueChangedEvent;
import net.eliosoft.elios.server.events.SubnetValueChangedEvent;
import net.eliosoft.elios.server.events.UniverseValueChangedEvent;
import net.eliosoft.elios.server.listeners.ArtNetServerManagerListener;
import artnet4j.ArtNetException;
import artnet4j.ArtNetServer;
import artnet4j.events.ArtNetServerListener;
import artnet4j.packets.ArtDmxPacket;
import artnet4j.packets.ArtNetPacket;

     * @return the status of additive mode
     */
    public boolean isAdditiveModeEnabled() {
        return this.additiveModeEnabled;
    }

    /**
     * Adds an element to the list of listener of the artnet server manager.
     *
     * @param listener
     *            the listener to add
     */
    public void addArtNetServerManagerChangedListener(
            final ArtNetServerManagerListener listener) {
        this.artnetServerManagerChangedListeners.add(listener);
    }

    /**
     * Removes an element to the list of listener of the artnet server manager.
     *
     * @param listener
     *            the listener to remove
     */
    public void removeArtNetServerManagerChangedListener(
            final ArtNetServerManagerListener listener) {
        this.artnetServerManagerChangedListeners.remove(listener);
    }

    private void fireSubnetValueChanged() {
        for (ArtNetServerManagerListener listener : this.artnetServerManagerChangedListeners) {
            SubnetValueChangedEvent e = new SubnetValueChangedEvent(