// Path: honeybadger-java/src/main/java/io/honeybadger/reporter/config/ConfigContext.java
// public interface ConfigContext {
//     /** @return name of environment */
//     String getEnvironment();
// 
//     /** @return Honeybadger URL to use */
//     URI getHoneybadgerUrl();
// 
//     /** @return Honeybadger API key to use */
//     String getApiKey();
// 
//     /** @return Set of system properties to not include */
//     Set<String> getExcludedSysProps();
// 
//     /** @return Set of parameters to not include */
//     Set<String> getExcludedParams();
// 
//     /** @return Set of exception classes to ignore */
//     Set<String> getExcludedClasses();
// 
//     /** @return String that maps a package to an application */
//     String getApplicationPackage();
// 
//     /** @return Honeybadger Read API key */
//     String getHoneybadgerReadApiKey();
// 
//     /** @return Do we display the feedback form? */
//     Boolean isFeedbackFormDisplayed();
// 
//     /** @return The path to the feedback form template */
//     String getFeedbackFormPath();
// 
//     /** @return Host of proxy server to send traffic through */
//     String getHttpProxyHost();
// 
//     /** @return Port of proxy server to send traffic through */
//     Integer getHttpProxyPort();
// 
//     /** @return Optional configuration parameter to adjust number of attempts to retry sending an error
//      * report in the event of a network timeout or other transmission exception. Defaults to 3. */
//     Integer getMaximumErrorReportingRetries();
// 
//     /** @return Timeout for socket connection within HTTP client */
//     Integer getSocketTimeout();
// 
//     /** @return Timeout for initial connect within HTTP client */
//     Integer getConnectTimeout();
// }
// 
// Path: honeybadger-java/src/main/java/io/honeybadger/reporter/config/SystemSettingsConfigContext.java
// public class SystemSettingsConfigContext extends BaseChainedConfigContext {
//     /**
//      * Populate configuration from defaults, environment variables and system
//      * properties.
//      */
//     public SystemSettingsConfigContext() {
//         // load defaults
//         super();
//         // overwrite with environment variables
//         overwriteWithContext(new MapConfigContext(System.getenv()));
//         // overwrite with system properties
//         overwriteWithContext(new MapConfigContext(System.getProperties()));
//     }
// 
//     /**
//      * Populate configuration from defaults, environment variables, system
//      * properties and an addition context passed in.
//      *
//      * @param context additional context to layer on top
//      */
//     public SystemSettingsConfigContext(final ConfigContext context) {
//         // load all of the chained defaults
//         this();
//         // now load in an additional context
//         overwriteWithContext(context);
//     }
// }


import io.honeybadger.reporter.config.ConfigContext;
import io.honeybadger.reporter.config.SystemSettingsConfigContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
package io.honeybadger.reporter;


/**
 * Exception handler class that sends errors to Honey Badger by default.
 *
 * @author <a href="https://github.com/dekobon">Elijah Zupancic</a>
 * @since 1.0.0
 */
public class HoneybadgerUncaughtExceptionHandler implements Thread.UncaughtExceptionHandler {
    private ConfigContext config;
    private NoticeReporter reporter;
    private Logger logger = LoggerFactory.getLogger(getClass());

    public HoneybadgerUncaughtExceptionHandler() {
// Path: honeybadger-java/src/main/java/io/honeybadger/reporter/config/ConfigContext.java
// public interface ConfigContext {
//     /** @return name of environment */
//     String getEnvironment();
// 
//     /** @return Honeybadger URL to use */
//     URI getHoneybadgerUrl();
// 
//     /** @return Honeybadger API key to use */
//     String getApiKey();
// 
//     /** @return Set of system properties to not include */
//     Set<String> getExcludedSysProps();
// 
//     /** @return Set of parameters to not include */
//     Set<String> getExcludedParams();
// 
//     /** @return Set of exception classes to ignore */
//     Set<String> getExcludedClasses();
// 
//     /** @return String that maps a package to an application */
//     String getApplicationPackage();
// 
//     /** @return Honeybadger Read API key */
//     String getHoneybadgerReadApiKey();
// 
//     /** @return Do we display the feedback form? */
//     Boolean isFeedbackFormDisplayed();
// 
//     /** @return The path to the feedback form template */
//     String getFeedbackFormPath();
// 
//     /** @return Host of proxy server to send traffic through */
//     String getHttpProxyHost();
// 
//     /** @return Port of proxy server to send traffic through */
//     Integer getHttpProxyPort();
// 
//     /** @return Optional configuration parameter to adjust number of attempts to retry sending an error
//      * report in the event of a network timeout or other transmission exception. Defaults to 3. */
//     Integer getMaximumErrorReportingRetries();
// 
//     /** @return Timeout for socket connection within HTTP client */
//     Integer getSocketTimeout();
// 
//     /** @return Timeout for initial connect within HTTP client */
//     Integer getConnectTimeout();
// }
// 
// Path: honeybadger-java/src/main/java/io/honeybadger/reporter/config/SystemSettingsConfigContext.java
// public class SystemSettingsConfigContext extends BaseChainedConfigContext {
//     /**
//      * Populate configuration from defaults, environment variables and system
//      * properties.
//      */
//     public SystemSettingsConfigContext() {
//         // load defaults
//         super();
//         // overwrite with environment variables
//         overwriteWithContext(new MapConfigContext(System.getenv()));
//         // overwrite with system properties
//         overwriteWithContext(new MapConfigContext(System.getProperties()));
//     }
// 
//     /**
//      * Populate configuration from defaults, environment variables, system
//      * properties and an addition context passed in.
//      *
//      * @param context additional context to layer on top
//      */
//     public SystemSettingsConfigContext(final ConfigContext context) {
//         // load all of the chained defaults
//         this();
//         // now load in an additional context
//         overwriteWithContext(context);
//     }
// }


// Path: honeybadger-java/src/main/java/io/honeybadger/reporter/HoneybadgerUncaughtExceptionHandler.java
import io.honeybadger.reporter.config.ConfigContext;
import io.honeybadger.reporter.config.SystemSettingsConfigContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

package io.honeybadger.reporter;


/**
 * Exception handler class that sends errors to Honey Badger by default.
 *
 * @author <a href="https://github.com/dekobon">Elijah Zupancic</a>
 * @since 1.0.0
 */
public class HoneybadgerUncaughtExceptionHandler implements Thread.UncaughtExceptionHandler {
    private ConfigContext config;
    private NoticeReporter reporter;
    private Logger logger = LoggerFactory.getLogger(getClass());

    public HoneybadgerUncaughtExceptionHandler() {
        this(new SystemSettingsConfigContext());