Return-Path: Delivered-To: apmail-logging-log4net-user-archive@www.apache.org Received: (qmail 38853 invoked from network); 15 Sep 2010 15:04:15 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 15 Sep 2010 15:04:15 -0000 Received: (qmail 30009 invoked by uid 500); 15 Sep 2010 15:04:15 -0000 Delivered-To: apmail-logging-log4net-user-archive@logging.apache.org Received: (qmail 29737 invoked by uid 500); 15 Sep 2010 15:04:12 -0000 Mailing-List: contact log4net-user-help@logging.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: Reply-To: "Log4NET User" List-Id: Delivered-To: mailing list log4net-user@logging.apache.org Received: (qmail 29726 invoked by uid 99); 15 Sep 2010 15:04:11 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 15 Sep 2010 15:04:11 +0000 X-ASF-Spam-Status: No, hits=2.2 required=10.0 tests=FREEMAIL_FROM,HTML_MESSAGE,RCVD_IN_DNSWL_NONE,SPF_PASS,T_TO_NO_BRKTS_FREEMAIL X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of macarthur.work@gmail.com designates 209.85.213.47 as permitted sender) Received: from [209.85.213.47] (HELO mail-yw0-f47.google.com) (209.85.213.47) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 15 Sep 2010 15:04:05 +0000 Received: by ywa8 with SMTP id 8so117018ywa.34 for ; Wed, 15 Sep 2010 08:03:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:date:message-id :subject:from:to:content-type; bh=82bmi1geK0Drovd4p60KF/FVIoDUZ0VxxV6bSOYvN/U=; b=gf8sr15xNcOKRBP2qKbAjNXE+/HQkm8IqG5MJLMBkOnKaVaqoW7aTFKd5a/9Y1+YIU KCGWdQt+Opi09W5Ww6mtVXU/uWXZKyWTFRQ4VpXdfhy2KHpuy3LKXUU6a4NYKM76PYTB 2ZOzk/sCj0QmPZdVW+GeNtR3oKP4QUoFPx0Zc= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=Df7I6EyyRYcXukw9ep2p4BtUXJjN0k1H2XbiCnfUYne2ViCMIWbrnuL9+vBJXeFT/e XS+yd1zj3zVcshran8ObfuAnSnshGefrNEV0FucO74YlVdi5Y3RGmtVn+bxNw0p8Pk4A Gxmtu7esSVrEDENs4oUX/9EGQOMk2LJcJfzrI= MIME-Version: 1.0 Received: by 10.150.190.17 with SMTP id n17mr2221022ybf.19.1284563024328; Wed, 15 Sep 2010 08:03:44 -0700 (PDT) Received: by 10.231.119.30 with HTTP; Wed, 15 Sep 2010 08:03:44 -0700 (PDT) Date: Wed, 15 Sep 2010 17:03:44 +0200 Message-ID: Subject: Problem with eventlog and source ? From: Macarthur Work To: log4net-user@logging.apache.org Content-Type: multipart/alternative; boundary=000e0cd6ac70c1b95204904da2df --000e0cd6ac70c1b95204904da2df Content-Type: text/plain; charset=ISO-8859-1 I'm using log4net without config file. When I want add log by System.Diagnostics.EventLog everything goes ok: if (!EventLog.SourceExists("TestSource")) { EventLog.CreateEventSource("TestSource", TestLog"); } System.Diagnostics.EventLog.WriteEntry("TestSource", "someMessage", eventType); But the same action when I using log4net doesn't work: var log4net = new Log4NetEventLogger("TestSource"); log4net.AddEntry("TestSource", "TestLog", new Exception(), "additionalMesage", System.Diagnostics.EventLogEntryType.Error); public class MyLog4NetEventLogger { #region Declaration private readonly string _loggerName; private ILog _logger; private bool _clientHasOwnConfiguration; #endregion Declarations #region constructor public MyLog4NetEventLogger(string logerName) { _loggerName = logerName; _logger = LogManager.GetLogger(_loggerName); if (_logger.Logger.Repository.GetAppenders().Where(a => a.Name == "EventLogAppender").Count() == 0) { log4net.Config.BasicConfigurator.Configure(); AddAppender(logerName, CreateEventLogAppender()); } } #endregion constructor private static void AddAppender(string loggerName, IAppender appender) { ILog log = LogManager.GetLogger(loggerName); var l = (log4net.Repository.Hierarchy.Logger)log.Logger; l.AddAppender(appender); } public void AddEntry(string sourceApplicationName, string logName, Exception ex, string additionalMessage, EventLogEntryType eventType) { SetEventLogAppender(sourceApplicationName, logName); if (_logger.Logger.Repository.GetAppenders().Where(a => a.Name == "EventLogAppender").Count() == 0) { throw new NotSupportedException(); } var smth = _logger.Logger.Repository.GetAppenders(); switch (eventType) { case EventLogEntryType.Error: _logger.Error(additionalMessage, ex); break; case EventLogEntryType.Warning: _logger.Warn(additionalMessage, ex); break; case EventLogEntryType.Information: _logger.Info(additionalMessage, ex); break; case EventLogEntryType.SuccessAudit: case EventLogEntryType.FailureAudit: throw new NotImplementedException(); default: throw new ArgumentOutOfRangeException("eventType"); } } private static void SetEventLogAppender(string applicationName, string logName) { if (!EventLog.SourceExists(applicationName)) { EventLog.CreateEventSource(applicationName, logName); } var eventLogAppender = LogManager.GetRepository().GetAppenders() .Where(appender => appender.Name == "EventLogAppender").FirstOrDefault() as EventLogAppender; if (eventLogAppender != null) { eventLogAppender.LogName = logName; eventLogAppender.ApplicationName = applicationName; eventLogAppender.ActivateOptions(); } } private static IAppender CreateEventLogAppender() { var appender = new EventLogAppender { Name = "EventLogAppender", ApplicationName = "CMNLibrary" }; var layout = new log4net.Layout.PatternLayout { ConversionPattern = "%d [%t] %-5p %c [%x] - %m%n" }; layout.ActivateOptions(); var filter = new log4net.Filter.LoggerMatchFilter { AcceptOnMatch = true }; var filterDeny = new log4net.Filter.DenyAllFilter(); var filterErrorType = new log4net.Filter.LevelRangeFilter { AcceptOnMatch = true, LevelMin = Level.Error }; appender.AddFilter(filter); appender.AddFilter(filterDeny); appender.AddFilter(filterErrorType); appender.ActivateOptions(); appender.Layout = layout; appender.ActivateOptions(); return appender; } } Thanks & Regards, --000e0cd6ac70c1b95204904da2df Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: base64 PGJyPkkmIzM5O20gdXNpbmcgbG9nNG5ldCB3aXRob3V0IGNvbmZpZyBmaWxlLjxicj48YnI+V2hl biBJIHdhbnQgYWRkIGxvZyBieSBTeXN0ZW0uRGlhZ25vc3RpY3MuRXZlbnRMb2cgZXZlcnl0aGlu ZyBnb2VzIG9rOjxicj48YnI+PGJyPqCgoCBpZiAoIUV2ZW50TG9nLlNvdXJjZUV4aXN0cygmcXVv dDtUZXN0U291cmNlJnF1b3Q7KSk8YnI+oKCgoKCgoKCgoKCgoKCgIHs8YnI+oKCgoKCgoKCgoKCg oKCgoKCgoCBFdmVudExvZy5DcmVhdGVFdmVudFNvdXJjZSgmcXVvdDtUZXN0U291cmNlJnF1b3Q7 LCBUZXN0TG9nJnF1b3Q7KTs8YnI+CqCgoKCgoKCgoKCgoKCgoCB9PGJyPqCgoCA8YnI+oKCgIFN5 c3RlbS5EaWFnbm9zdGljcy5FdmVudExvZy5Xcml0ZUVudHJ5KCZxdW90O1Rlc3RTb3VyY2UmcXVv dDssICZxdW90O3NvbWVNZXNzYWdlJnF1b3Q7LCBldmVudFR5cGUpOzxicj48YnI+QnV0IHRoZSBz YW1lIGFjdGlvbiB3aGVuIEkgdXNpbmcgbG9nNG5ldCBkb2VzbiYjMzk7dCB3b3JrOjxicj48YnI+ oDxicj48YnI+oKCgoCB2YXIgbG9nNG5ldCA9IG5ldyBMb2c0TmV0RXZlbnRMb2dnZXIoJnF1b3Q7 VGVzdFNvdXJjZSZxdW90Oyk7PGJyPgqgoKCgoKCgoKCgoKCgoKAgbG9nNG5ldC5BZGRFbnRyeSgm cXVvdDtUZXN0U291cmNlJnF1b3Q7LCAmcXVvdDtUZXN0TG9nJnF1b3Q7LCBuZXcgRXhjZXB0aW9u KCksICZxdW90O2FkZGl0aW9uYWxNZXNhZ2UmcXVvdDssIFN5c3RlbS5EaWFnbm9zdGljcy5FdmVu dExvZ0VudHJ5VHlwZS5FcnJvcik7PGJyPqCgoCA8YnI+oKCgIDxicj6goKAgPGJyPqCgoCA8YnI+ oKCgIHB1YmxpYyBjbGFzcyBNeUxvZzROZXRFdmVudExvZ2dlcjxicj4KoKCgoKCgoCB7PGJyPqCg oKCgoKCgoKCgICNyZWdpb24gRGVjbGFyYXRpb248YnI+oKCgIDxicj6goKCgoKCgoKCgoCBwcml2 YXRlIHJlYWRvbmx5IHN0cmluZyBfbG9nZ2VyTmFtZTs8YnI+oKCgoKCgoKCgoKAgcHJpdmF0ZSBJ TG9nIF9sb2dnZXI7PGJyPqCgoKCgoKCgoKCgIHByaXZhdGUgYm9vbCBfY2xpZW50SGFzT3duQ29u ZmlndXJhdGlvbjs8YnI+oKCgIDxicj6goKCgoKCgoKCgoCAjZW5kcmVnaW9uIERlY2xhcmF0aW9u czxicj4KoKCgIDxicj6goKCgoKCgoKCgoCAjcmVnaW9uIGNvbnN0cnVjdG9yPGJyPqCgoKCgoKCg oKCgIHB1YmxpYyBNeUxvZzROZXRFdmVudExvZ2dlcihzdHJpbmcgbG9nZXJOYW1lKTxicj6goKCg oKCgoKCgoCB7PGJyPqCgoKCgoKCgoKCgoKCgoCBfbG9nZ2VyTmFtZSA9IGxvZ2VyTmFtZTs8YnI+ oKCgIDxicj6goKCgoKCgoKCgoKCgoKAgX2xvZ2dlciA9IExvZ01hbmFnZXIuR2V0TG9nZ2VyKF9s b2dnZXJOYW1lKTs8YnI+CqCgoCA8YnI+oKCgoKCgoKCgoKCgoKAgaWYgKF9sb2dnZXIuTG9nZ2Vy LlJlcG9zaXRvcnkuR2V0QXBwZW5kZXJzKCkuV2hlcmUoYSA9Jmd0OyBhLk5hbWUgPT0gJnF1b3Q7 RXZlbnRMb2dBcHBlbmRlciZxdW90OykuQ291bnQoKSA9PSAwKTxicj6goKCgoKCgoKCgoKCgoKCg oKCgIHs8YnI+oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKAgbG9nNG5ldC5Db25maWcuQmFzaWNDb25m aWd1cmF0b3IuQ29uZmlndXJlKCk7PGJyPgqgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoCBBZGRBcHBl bmRlcihsb2dlck5hbWUsIENyZWF0ZUV2ZW50TG9nQXBwZW5kZXIoKSk7PGJyPqCgoKCgoKCgoKCg oKCgoKCgoKCgoKAgPGJyPqCgoKCgoKCgoKCgoKCgoKCgoKAgfTxicj6goKCgoKCgoKCgoKCgoCA8 YnI+oKCgoKCgoKCgoKAgfTxicj6goKCgoKCgoKCgoCAjZW5kcmVnaW9uIGNvbnN0cnVjdG9yPGJy PqCgoKCgoKCgoKCgIHByaXZhdGUgc3RhdGljIHZvaWQgQWRkQXBwZW5kZXIoc3RyaW5nIGxvZ2dl ck5hbWUsIElBcHBlbmRlciBhcHBlbmRlcik8YnI+CqCgoKCgoKCgoKCgIHs8YnI+oKCgoKCgoKCg oKCgoKCgIElMb2cgbG9nID0gTG9nTWFuYWdlci5HZXRMb2dnZXIobG9nZ2VyTmFtZSk7PGJyPqCg oKCgoKCgoKCgoKCgoCB2YXIgbCA9IChsb2c0bmV0LlJlcG9zaXRvcnkuSGllcmFyY2h5LkxvZ2dl cilsb2cuTG9nZ2VyOzxicj6goKAgPGJyPqCgoKCgoKCgoKCgoKCgoCBsLkFkZEFwcGVuZGVyKGFw cGVuZGVyKTs8YnI+oKCgoKCgoKCgoKAgfTxicj4KoKCgoKCgoKCgoCA8YnI+oKCgoKCgoKAgPGJy PqCgoKCgoKCgoKCgIHB1YmxpYyB2b2lkIEFkZEVudHJ5KHN0cmluZyBzb3VyY2VBcHBsaWNhdGlv bk5hbWUsIHN0cmluZyBsb2dOYW1lLCBFeGNlcHRpb24gZXgsIHN0cmluZyBhZGRpdGlvbmFsTWVz c2FnZSwgRXZlbnRMb2dFbnRyeVR5cGUgZXZlbnRUeXBlKTxicj6goKCgoKCgoKCgoCB7PGJyPqCg oKCgoKCgoKCgoKCgoCBTZXRFdmVudExvZ0FwcGVuZGVyKHNvdXJjZUFwcGxpY2F0aW9uTmFtZSwg bG9nTmFtZSk7PGJyPgqgoKAgPGJyPqCgoKCgoKCgoKCgoKCgoCBpZiAoX2xvZ2dlci5Mb2dnZXIu UmVwb3NpdG9yeS5HZXRBcHBlbmRlcnMoKS5XaGVyZShhID0mZ3Q7IGEuTmFtZSA9PSAmcXVvdDtF dmVudExvZ0FwcGVuZGVyJnF1b3Q7KS5Db3VudCgpID09IDApPGJyPqCgoKCgoKCgoKCgoKCgoCB7 PGJyPqCgoKCgoKCgoKCgoKCgoKCgoKAgdGhyb3cgbmV3IE5vdFN1cHBvcnRlZEV4Y2VwdGlvbigp Ozxicj6goKCgoKCgoKCgoKCgoKAgfTxicj4KoKCgIDxicj6goKAgPGJyPqCgoKCgoKCgoKCgoKCg oCB2YXIgc210aCA9IF9sb2dnZXIuTG9nZ2VyLlJlcG9zaXRvcnkuR2V0QXBwZW5kZXJzKCk7PGJy PqCgoKCgoKCgoKCgoKCgoCBzd2l0Y2ggKGV2ZW50VHlwZSk8YnI+oKCgoKCgoKCgoKCgoKCgIHs8 YnI+oKCgoKCgoKCgoKCgoKCgoKCgoCBjYXNlIEV2ZW50TG9nRW50cnlUeXBlLkVycm9yOjxicj6g oKCgoKCgoKCgoKCgoKCgoKCgoKCgoCBfbG9nZ2VyLkVycm9yKGFkZGl0aW9uYWxNZXNzYWdlLCBl eCk7PGJyPgqgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoCBicmVhazs8YnI+oKCgoKCgoKCgoKCgoKCg oKCgoCBjYXNlIEV2ZW50TG9nRW50cnlUeXBlLldhcm5pbmc6PGJyPqCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgIF9sb2dnZXIuV2FybihhZGRpdGlvbmFsTWVzc2FnZSwgZXgpOzxicj6goKCgoKCgoKCg oKCgoKCgoKCgoKCgoCBicmVhazs8YnI+oKCgoKCgoKCgoKCgoKCgoKCgoCBjYXNlIEV2ZW50TG9n RW50cnlUeXBlLkluZm9ybWF0aW9uOjxicj4KoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKAgX2xvZ2dl ci5JbmZvKGFkZGl0aW9uYWxNZXNzYWdlLCBleCk7PGJyPqCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg IGJyZWFrOzxicj6goKCgoKCgoKCgoKCgoKCgoKCgIGNhc2UgRXZlbnRMb2dFbnRyeVR5cGUuU3Vj Y2Vzc0F1ZGl0Ojxicj6goKCgoKCgoKCgoKCgoKCgoKCgIGNhc2UgRXZlbnRMb2dFbnRyeVR5cGUu RmFpbHVyZUF1ZGl0Ojxicj6goKCgoKCgoKCgoKCgoKCgoKCgoKCgoCB0aHJvdyBuZXcgTm90SW1w bGVtZW50ZWRFeGNlcHRpb24oKTs8YnI+CqCgoKCgoKCgoKCgoKCgoKCgoKAgZGVmYXVsdDo8YnI+ oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKAgdGhyb3cgbmV3IEFyZ3VtZW50T3V0T2ZSYW5nZUV4Y2Vw dGlvbigmcXVvdDtldmVudFR5cGUmcXVvdDspOzxicj6goKCgoKCgoKCgoKCgoKAgfTxicj6goKCg oKCgoKCgoCB9PGJyPqCgoCA8YnI+oKCgoKCgoKCgoKAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBTZXRF dmVudExvZ0FwcGVuZGVyKHN0cmluZyBhcHBsaWNhdGlvbk5hbWUsIHN0cmluZyBsb2dOYW1lKTxi cj4KoKCgoKCgoKCgoKAgezxicj6goKCgoKCgoKCgoKCgoKAgaWYgKCFFdmVudExvZy5Tb3VyY2VF eGlzdHMoYXBwbGljYXRpb25OYW1lKSk8YnI+oKCgoKCgoKCgoKCgoKCgIHs8YnI+oKCgoKCgoKCg oKCgoKCgoKCgoCBFdmVudExvZy5DcmVhdGVFdmVudFNvdXJjZShhcHBsaWNhdGlvbk5hbWUsIGxv Z05hbWUpOzxicj6goKCgoKCgoKCgoKCgoKAgfTxicj6goKCgoKCgoKCgoKAgPGJyPqCgoKCgoKCg oKCgoKCgoCB2YXIgZXZlbnRMb2dBcHBlbmRlciA9PGJyPgqgoKCgoKCgoKCgoKCgoKCgoKCgoKAg TG9nTWFuYWdlci5HZXRSZXBvc2l0b3J5KCkuR2V0QXBwZW5kZXJzKCk8YnI+oKCgoKCgoKCgoKCg oKCgoKCgoKCgoKCgoCAuV2hlcmUoYXBwZW5kZXIgPSZndDsgYXBwZW5kZXIuTmFtZSA9PTxicj6g oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoCAmcXVvdDtFdmVudExv Z0FwcGVuZGVyJnF1b3Q7KS5GaXJzdE9yRGVmYXVsdCgpIGFzIEV2ZW50TG9nQXBwZW5kZXI7PGJy PgqgoKAgPGJyPqCgoKCgoKCgoKCgoKCgoCBpZiAoZXZlbnRMb2dBcHBlbmRlciAhPSBudWxsKTxi cj6goKCgoKCgoKCgoKCgoKAgezxicj6goKAgPGJyPqCgoKCgoKCgoKCgoKCgoKCgoKAgZXZlbnRM b2dBcHBlbmRlci5Mb2dOYW1lID0gbG9nTmFtZTs8YnI+oKCgoKCgoKCgoKCgoKCgoKCgoCBldmVu dExvZ0FwcGVuZGVyLkFwcGxpY2F0aW9uTmFtZSA9IGFwcGxpY2F0aW9uTmFtZTs8YnI+oKCgoKCg oKCgoKCgoKCgoKCgoCBldmVudExvZ0FwcGVuZGVyLkFjdGl2YXRlT3B0aW9ucygpOzxicj4KoKCg oKCgoKCgoKCgoKCgIH08YnI+oKCgoKCgoKCgoKAgfTxicj6goKCgoKCgoKCgoKCgoKCgoCA8YnI+ oKCgoKCgoKCgoKAgcHJpdmF0ZSBzdGF0aWMgSUFwcGVuZGVyIENyZWF0ZUV2ZW50TG9nQXBwZW5k ZXIoKTxicj6goKCgoKCgoKCgoCB7PGJyPqCgoCA8YnI+oKCgoKCgoKCgoKCgoKCgIHZhciBhcHBl bmRlciA9IG5ldyBFdmVudExvZ0FwcGVuZGVyIHsgTmFtZSA9ICZxdW90O0V2ZW50TG9nQXBwZW5k ZXImcXVvdDssIEFwcGxpY2F0aW9uTmFtZSA9ICZxdW90O0NNTkxpYnJhcnkmcXVvdDsgfTs8YnI+ CqCgoCA8YnI+oKCgIDxicj6goKCgoKCgoKCgoKCgoKAgdmFyIGxheW91dCA9IG5ldyBsb2c0bmV0 LkxheW91dC5QYXR0ZXJuTGF5b3V0PGJyPqCgoKCgoKCgoKCgoKCgoCB7PGJyPqCgoKCgoKCgoKCg oKCgoKCgoKAgQ29udmVyc2lvblBhdHRlcm4gPSAmcXVvdDslZCBbJXRdICUtNXAgJWMgWyV4XSAt ICVtJW4mcXVvdDs8YnI+oKCgoKCgoKCgoKCgoKCgIH07PGJyPqCgoCA8YnI+oKCgoKCgoKCgoKCg oKCgIGxheW91dC5BY3RpdmF0ZU9wdGlvbnMoKTs8YnI+CqCgoCA8YnI+oKCgIDxicj6goKCgoKCg oKCgoKCgoKAgdmFyIGZpbHRlciA9IG5ldyBsb2c0bmV0LkZpbHRlci5Mb2dnZXJNYXRjaEZpbHRl ciB7IEFjY2VwdE9uTWF0Y2ggPSB0cnVlIH07PGJyPqCgoKCgoKCgoKCgoKCgoCB2YXIgZmlsdGVy RGVueSA9IG5ldyBsb2c0bmV0LkZpbHRlci5EZW55QWxsRmlsdGVyKCk7PGJyPqCgoKCgoKCgoKCg oKCgoCB2YXIgZmlsdGVyRXJyb3JUeXBlID0gbmV3IGxvZzRuZXQuRmlsdGVyLkxldmVsUmFuZ2VG aWx0ZXIgeyBBY2NlcHRPbk1hdGNoID0gdHJ1ZSwgTGV2ZWxNaW4gPSBMZXZlbC5FcnJvciB9Ozxi cj4KoKCgIDxicj6goKCgoKCgoKCgoKCgoKAgYXBwZW5kZXIuQWRkRmlsdGVyKGZpbHRlcik7PGJy PqCgoKCgoKCgoKCgoKCgoCBhcHBlbmRlci5BZGRGaWx0ZXIoZmlsdGVyRGVueSk7PGJyPqCgoKCg oKCgoKCgoKCgoCBhcHBlbmRlci5BZGRGaWx0ZXIoZmlsdGVyRXJyb3JUeXBlKTs8YnI+oKCgIDxi cj6goKCgoKCgoKCgoKCgoKAgYXBwZW5kZXIuQWN0aXZhdGVPcHRpb25zKCk7PGJyPqCgoCA8YnI+ CqCgoKCgoKCgoKCgoKCgoCBhcHBlbmRlci5MYXlvdXQgPSBsYXlvdXQ7PGJyPqCgoKCgoKCgoKCg oKCgoCBhcHBlbmRlci5BY3RpdmF0ZU9wdGlvbnMoKTs8YnI+oKCgIDxicj6goKAgPGJyPqCgoCA8 YnI+oKCgoKCgoKCgoKCgoKCgIHJldHVybiBhcHBlbmRlcjs8YnI+oKCgoKCgoKCgoKAgfTxicj6g oKCgoKCgIH08YnI+PGRpdiBjbGFzcz0iZ21haWxfcXVvdGUiPjxzcGFuIHN0eWxlPSJib3JkZXIt Y29sbGFwc2U6IHNlcGFyYXRlOyBjb2xvcjogcmdiKDAsIDAsIDApOyBmb250LWZhbWlseTogJiMz OTtUaW1lcyBOZXcgUm9tYW4mIzM5OzsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQ6 IG5vcm1hbDsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgbGlu ZS1oZWlnaHQ6IG5vcm1hbDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7 IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtc3BhY2luZzogMHB4OyBmb250LXNpemU6IG1lZGl1 bTsiPjxzcGFuIHN0eWxlPSJjb2xvcjogcmdiKDY2LCA2NiwgNjYpOyBmb250LWZhbWlseTogYXJp YWw7IGZvbnQtc2l6ZTogMTFweDsiPjx0YWJsZSB2YWxpZ249InRvcCIgc3R5bGU9ImZvbnQtZmFt aWx5OiBhcmlhbDsgZm9udC1zaXplOiAxMXB4OyBtYXJnaW46IDBweDsgY29sb3I6IHJnYig2Niwg NjYsIDY2KTsiIGFsaWduPSJsZWZ0IiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3Bh Y2luZz0iMCIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSI+Cjx0Ym9keT48dHIgc3R5bGU9ImZv bnQtZmFtaWx5OiBhcmlhbDsgZm9udC1zaXplOiAxMXB4OyBtYXJnaW46IDBweDsgY29sb3I6IHJn Yig2NiwgNjYsIDY2KTsiPjx0ZCBzdHlsZT0iZm9udC1mYW1pbHk6IGFyaWFsOyBmb250LXNpemU6 IDExcHg7IG1hcmdpbjogMHB4OyBjb2xvcjogcmdiKDY2LCA2NiwgNjYpOyIgYWxpZ249ImxlZnQi IHZhbGlnbj0idG9wIiB3aWR0aD0iMTAwJSI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTJweDsg Zm9udC1mYW1pbHk6IEFyaWFsOyBjb2xvcjogcmdiKDY0LCA2MywgNjMpOyI+PHAgc3R5bGU9ImZv bnQtZmFtaWx5OiBhcmlhbDsgZm9udC1zaXplOiAxMXB4OyBjb2xvcjogcmdiKDY2LCA2NiwgNjYp OyI+Cgo8c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMnB4OyBmb250LWZhbWlseTogQXJpYWw7IGNv bG9yOiByZ2IoNjQsIDYzLCA2Myk7Ij5UaGFua3MgJmFtcDsgUmVnYXJkcyw8L3NwYW4+PC9wPjwv c3Bhbj48L3RkPjwvdHI+PC90Ym9keT48L3RhYmxlPjwvc3Bhbj48L3NwYW4+CjwvZGl2Pjxicj4K --000e0cd6ac70c1b95204904da2df--