Обновление Сервиса

parent 3f583117
...@@ -2,12 +2,12 @@ ...@@ -2,12 +2,12 @@
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using NLog.Extensions.Logging; using NLog.Extensions.Logging;
using ProfitGroup.SampleNotifyService.Core.Auth; using ProfitGroup.NotifyService.Core.Auth;
using ProfitGroup.SampleNotifyService.Core.Handlers; using ProfitGroup.NotifyService.Core.Handlers;
using ProfitGroup.SampleNotifyService.Data.Core.Data.Entities; using ProfitGroup.NotifyService.Data.Core.Data.Entities;
using ProfitGroup.SampleNotifyService.Services; using ProfitGroup.NotifyService.Services;
namespace ProfitGroup.SampleNotifyService.Core.Application namespace ProfitGroup.NotifyService.Core.Application
{ {
public static class Extensions public static class Extensions
{ {
...@@ -39,7 +39,7 @@ namespace ProfitGroup.SampleNotifyService.Core.Application ...@@ -39,7 +39,7 @@ namespace ProfitGroup.SampleNotifyService.Core.Application
(options => options.UseSqlServer(builder.Configuration.GetConnectionString("RnDConnection"))); (options => options.UseSqlServer(builder.Configuration.GetConnectionString("RnDConnection")));
builder.Services.AddTransient<Handlers.RouteHandler>(); builder.Services.AddTransient<Handlers.RouteHandler>();
builder.Services.AddTransient<INotifyService, NotifyService>(); builder.Services.AddTransient<INotifyService, Services.NotifyService>();
builder.Services.AddAuthorization(); builder.Services.AddAuthorization();
......
...@@ -13,7 +13,7 @@ namespace ProfitGroup.SampleNotifyService.Core.Auth ...@@ -13,7 +13,7 @@ namespace ProfitGroup.SampleNotifyService.Core.Auth
public BasicAuthenticationHandler(IOptionsMonitor<AuthenticationSchemeOptions> options, ILoggerFactory logger, UrlEncoder encoder, ISystemClock clock) : base(options, logger, encoder, clock) public BasicAuthenticationHandler(IOptionsMonitor<AuthenticationSchemeOptions> options, ILoggerFactory logger, UrlEncoder encoder, ISystemClock clock) : base(options, logger, encoder, clock)
{ {
this._logger = logger.CreateLogger<BasicAuthenticationHandler>(); _logger = logger.CreateLogger<BasicAuthenticationHandler>();
} }
protected override Task<AuthenticateResult> HandleAuthenticateAsync() protected override Task<AuthenticateResult> HandleAuthenticateAsync()
...@@ -32,10 +32,10 @@ namespace ProfitGroup.SampleNotifyService.Core.Auth ...@@ -32,10 +32,10 @@ namespace ProfitGroup.SampleNotifyService.Core.Auth
var username = credentials[0]; var username = credentials[0];
var password = credentials[1]; var password = credentials[1];
_logger.LogInformation($"Login: {username}, Password: {password}");
if (IsValidUser(username, password)) if (IsValidUser(username, password))
{ {
_logger.LogInformation("Успешная авторизация");
var claims = new[] { new Claim(ClaimTypes.Name, username) }; var claims = new[] { new Claim(ClaimTypes.Name, username) };
var identity = new ClaimsIdentity(claims, Scheme.Name); var identity = new ClaimsIdentity(claims, Scheme.Name);
var principal = new ClaimsPrincipal(identity); var principal = new ClaimsPrincipal(identity);
...@@ -43,10 +43,9 @@ namespace ProfitGroup.SampleNotifyService.Core.Auth ...@@ -43,10 +43,9 @@ namespace ProfitGroup.SampleNotifyService.Core.Auth
return Task.FromResult(AuthenticateResult.Success(ticket)); return Task.FromResult(AuthenticateResult.Success(ticket));
} }
else
{ _logger.LogInformation($"Произошла ошибка при авторизации. Указан неверный логин или пароль");
return Task.FromResult(AuthenticateResult.Fail("Incorrect login or password")); return Task.FromResult(AuthenticateResult.Fail("Incorrect login or password"));
}
} }
catch (Exception ex) catch (Exception ex)
{ {
...@@ -56,11 +55,13 @@ namespace ProfitGroup.SampleNotifyService.Core.Auth ...@@ -56,11 +55,13 @@ namespace ProfitGroup.SampleNotifyService.Core.Auth
private bool IsValidUser(string username, string password) private bool IsValidUser(string username, string password)
{ {
#if DEBUG // ToDo: Сменить пароль при переносе решения
return username == "S4test" && password == "ST6aAFw10";
#endif // APP02
return username == "S4test" && password == "lMxeTqMIH04R8mCE";
return username == "S4test" && password == "ST6aAFw10";
// Productive
// return username == "S4test" && password == "lMxeTqMIH04R8mCE";
} }
} }
} }
using ProfitGroup.SampleNotifyService.Models; using ProfitGroup.NotifyService.Models;
namespace ProfitGroup.SampleNotifyService.Core.Configs namespace ProfitGroup.NotifyService.Core.Configs
{ {
public class Config public class Config
{ {
......
...@@ -2,11 +2,11 @@ ...@@ -2,11 +2,11 @@
using Microsoft.EntityFrameworkCore.Metadata.Builders; using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using ProfitGroup.SampleNotifyService.Data.Core.Data.Entities; using ProfitGroup.NotifyService.Data.Core.Data.Entities;
using System.Collections.Generic; using System.Collections.Generic;
using System; using System;
namespace ProfitGroup.SampleNotifyService.Data.Core.Data.Entities.Configurations namespace ProfitGroup.NotifyService.Data.Core.Data.Entities.Configurations
{ {
public partial class ProfITS4MtLogConfiguration : IEntityTypeConfiguration<ProfITS4MtLog> public partial class ProfITS4MtLogConfiguration : IEntityTypeConfiguration<ProfITS4MtLog>
{ {
......
...@@ -2,11 +2,11 @@ ...@@ -2,11 +2,11 @@
using Microsoft.EntityFrameworkCore.Metadata.Builders; using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using ProfitGroup.SampleNotifyService.Data.Core.Data.Entities; using ProfitGroup.NotifyService.Data.Core.Data.Entities;
using System.Collections.Generic; using System.Collections.Generic;
using System; using System;
namespace ProfitGroup.SampleNotifyService.Data.Core.Data.Entities.Configurations namespace ProfitGroup.NotifyService.Data.Core.Data.Entities.Configurations
{ {
public partial class ProfITS4PrLogConfiguration : IEntityTypeConfiguration<ProfITS4PrLog> public partial class ProfITS4PrLogConfiguration : IEntityTypeConfiguration<ProfITS4PrLog>
{ {
......
...@@ -2,11 +2,11 @@ ...@@ -2,11 +2,11 @@
using Microsoft.EntityFrameworkCore.Metadata.Builders; using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using ProfitGroup.SampleNotifyService.Data.Core.Data.Entities; using ProfitGroup.NotifyService.Data.Core.Data.Entities;
using System.Collections.Generic; using System.Collections.Generic;
using System; using System;
namespace ProfitGroup.SampleNotifyService.Data.Core.Data.Entities.Configurations namespace ProfitGroup.NotifyService.Data.Core.Data.Entities.Configurations
{ {
public partial class RndtAuConfiguration : IEntityTypeConfiguration<RndtAu> public partial class RndtAuConfiguration : IEntityTypeConfiguration<RndtAu>
{ {
......
...@@ -2,11 +2,11 @@ ...@@ -2,11 +2,11 @@
using Microsoft.EntityFrameworkCore.Metadata.Builders; using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using ProfitGroup.SampleNotifyService.Data.Core.Data.Entities; using ProfitGroup.NotifyService.Data.Core.Data.Entities;
using System.Collections.Generic; using System.Collections.Generic;
using System; using System;
namespace ProfitGroup.SampleNotifyService.Data.Core.Data.Entities.Configurations namespace ProfitGroup.NotifyService.Data.Core.Data.Entities.Configurations
{ {
public partial class RndtBomHeaderConfiguration : IEntityTypeConfiguration<RndtBomHeader> public partial class RndtBomHeaderConfiguration : IEntityTypeConfiguration<RndtBomHeader>
{ {
......
...@@ -2,11 +2,11 @@ ...@@ -2,11 +2,11 @@
using Microsoft.EntityFrameworkCore.Metadata.Builders; using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using ProfitGroup.SampleNotifyService.Data.Core.Data.Entities; using ProfitGroup.NotifyService.Data.Core.Data.Entities;
using System.Collections.Generic; using System.Collections.Generic;
using System; using System;
namespace ProfitGroup.SampleNotifyService.Data.Core.Data.Entities.Configurations namespace ProfitGroup.NotifyService.Data.Core.Data.Entities.Configurations
{ {
public partial class RndtScConfiguration : IEntityTypeConfiguration<RndtSc> public partial class RndtScConfiguration : IEntityTypeConfiguration<RndtSc>
{ {
......
...@@ -2,11 +2,11 @@ ...@@ -2,11 +2,11 @@
using Microsoft.EntityFrameworkCore.Metadata.Builders; using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using ProfitGroup.SampleNotifyService.Data.Core.Data.Entities; using ProfitGroup.NotifyService.Data.Core.Data.Entities;
using System.Collections.Generic; using System.Collections.Generic;
using System; using System;
namespace ProfitGroup.SampleNotifyService.Data.Core.Data.Entities.Configurations namespace ProfitGroup.NotifyService.Data.Core.Data.Entities.Configurations
{ {
public partial class RndtScIcConfiguration : IEntityTypeConfiguration<RndtScIc> public partial class RndtScIcConfiguration : IEntityTypeConfiguration<RndtScIc>
{ {
......
...@@ -2,11 +2,11 @@ ...@@ -2,11 +2,11 @@
using Microsoft.EntityFrameworkCore.Metadata.Builders; using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using ProfitGroup.SampleNotifyService.Data.Core.Data.Entities; using ProfitGroup.NotifyService.Data.Core.Data.Entities;
using System.Collections.Generic; using System.Collections.Generic;
using System; using System;
namespace ProfitGroup.SampleNotifyService.Data.Core.Data.Entities.Configurations namespace ProfitGroup.NotifyService.Data.Core.Data.Entities.Configurations
{ {
public partial class RndtScIiConfiguration : IEntityTypeConfiguration<RndtScIi> public partial class RndtScIiConfiguration : IEntityTypeConfiguration<RndtScIi>
{ {
......
...@@ -2,11 +2,11 @@ ...@@ -2,11 +2,11 @@
using Microsoft.EntityFrameworkCore.Metadata.Builders; using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using ProfitGroup.SampleNotifyService.Data.Core.Data.Entities; using ProfitGroup.NotifyService.Data.Core.Data.Entities;
using System.Collections.Generic; using System.Collections.Generic;
using System; using System;
namespace ProfitGroup.SampleNotifyService.Data.Core.Data.Entities.Configurations namespace ProfitGroup.NotifyService.Data.Core.Data.Entities.Configurations
{ {
public partial class RndtSpAuConfiguration : IEntityTypeConfiguration<RndtSpAu> public partial class RndtSpAuConfiguration : IEntityTypeConfiguration<RndtSpAu>
{ {
......
...@@ -2,11 +2,11 @@ ...@@ -2,11 +2,11 @@
using Microsoft.EntityFrameworkCore.Metadata.Builders; using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using ProfitGroup.SampleNotifyService.Data.Core.Data.Entities; using ProfitGroup.NotifyService.Data.Core.Data.Entities;
using System.Collections.Generic; using System.Collections.Generic;
using System; using System;
namespace ProfitGroup.SampleNotifyService.Data.Core.Data.Entities.Configurations namespace ProfitGroup.NotifyService.Data.Core.Data.Entities.Configurations
{ {
public partial class RndtSpConfiguration : IEntityTypeConfiguration<RndtSp> public partial class RndtSpConfiguration : IEntityTypeConfiguration<RndtSp>
{ {
......
...@@ -2,11 +2,11 @@ ...@@ -2,11 +2,11 @@
using Microsoft.EntityFrameworkCore.Metadata.Builders; using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using ProfitGroup.SampleNotifyService.Data.Core.Data.Entities; using ProfitGroup.NotifyService.Data.Core.Data.Entities;
using System.Collections.Generic; using System.Collections.Generic;
using System; using System;
namespace ProfitGroup.SampleNotifyService.Data.Core.Data.Entities.Configurations namespace ProfitGroup.NotifyService.Data.Core.Data.Entities.Configurations
{ {
public partial class RndtSpIcConfiguration : IEntityTypeConfiguration<RndtSpIc> public partial class RndtSpIcConfiguration : IEntityTypeConfiguration<RndtSpIc>
{ {
......
...@@ -2,11 +2,11 @@ ...@@ -2,11 +2,11 @@
using Microsoft.EntityFrameworkCore.Metadata.Builders; using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using ProfitGroup.SampleNotifyService.Data.Core.Data.Entities; using ProfitGroup.NotifyService.Data.Core.Data.Entities;
using System.Collections.Generic; using System.Collections.Generic;
using System; using System;
namespace ProfitGroup.SampleNotifyService.Data.Core.Data.Entities.Configurations namespace ProfitGroup.NotifyService.Data.Core.Data.Entities.Configurations
{ {
public partial class RndtSpIiConfiguration : IEntityTypeConfiguration<RndtSpIi> public partial class RndtSpIiConfiguration : IEntityTypeConfiguration<RndtSpIi>
{ {
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
namespace ProfitGroup.SampleNotifyService.Data.Core.Data.Entities namespace ProfitGroup.NotifyService.Data.Core.Data.Entities
{ {
public partial class ProfITS4MtLog public partial class ProfITS4MtLog
{ {
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
namespace ProfitGroup.SampleNotifyService.Data.Core.Data.Entities namespace ProfitGroup.NotifyService.Data.Core.Data.Entities
{ {
public partial class ProfITS4PrLog public partial class ProfITS4PrLog
{ {
......
// <auto-generated> This file has been auto generated by EF Core Power Tools. </auto-generated> // <auto-generated> This file has been auto generated by EF Core Power Tools. </auto-generated>
using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using ProfitGroup.SampleNotifyService.Data.Core.Data.Entities.Configurations; using ProfitGroup.NotifyService.Data.Core.Data.Entities.Configurations;
using System.Collections.Generic; using System.Collections.Generic;
using System; using System;
#nullable disable #nullable disable
namespace ProfitGroup.SampleNotifyService.Data.Core.Data.Entities namespace ProfitGroup.NotifyService.Data.Core.Data.Entities
{ {
public partial class RDnLDatabaseContext : DbContext public partial class RDnLDatabaseContext : DbContext
{ {
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
namespace ProfitGroup.SampleNotifyService.Data.Core.Data.Entities namespace ProfitGroup.NotifyService.Data.Core.Data.Entities
{ {
public partial class RndtAu public partial class RndtAu
{ {
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
namespace ProfitGroup.SampleNotifyService.Data.Core.Data.Entities namespace ProfitGroup.NotifyService.Data.Core.Data.Entities
{ {
public partial class RndtBomHeader public partial class RndtBomHeader
{ {
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
namespace ProfitGroup.SampleNotifyService.Data.Core.Data.Entities namespace ProfitGroup.NotifyService.Data.Core.Data.Entities
{ {
public partial class RndtSc public partial class RndtSc
{ {
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
namespace ProfitGroup.SampleNotifyService.Data.Core.Data.Entities namespace ProfitGroup.NotifyService.Data.Core.Data.Entities
{ {
public partial class RndtScIc public partial class RndtScIc
{ {
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
namespace ProfitGroup.SampleNotifyService.Data.Core.Data.Entities namespace ProfitGroup.NotifyService.Data.Core.Data.Entities
{ {
public partial class RndtScIi public partial class RndtScIi
{ {
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
namespace ProfitGroup.SampleNotifyService.Data.Core.Data.Entities namespace ProfitGroup.NotifyService.Data.Core.Data.Entities
{ {
public partial class RndtSp public partial class RndtSp
{ {
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
namespace ProfitGroup.SampleNotifyService.Data.Core.Data.Entities namespace ProfitGroup.NotifyService.Data.Core.Data.Entities
{ {
public partial class RndtSpAu public partial class RndtSpAu
{ {
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
namespace ProfitGroup.SampleNotifyService.Data.Core.Data.Entities namespace ProfitGroup.NotifyService.Data.Core.Data.Entities
{ {
public partial class RndtSpIc public partial class RndtSpIc
{ {
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
namespace ProfitGroup.SampleNotifyService.Data.Core.Data.Entities namespace ProfitGroup.NotifyService.Data.Core.Data.Entities
{ {
public partial class RndtSpIi public partial class RndtSpIi
{ {
......
using System.Text; using System.Text;
namespace ProfitGroup.SampleNotifyService.Core.Handlers namespace ProfitGroup.NotifyService.Core.Handlers
{ {
public static class BodyParser public static class BodyParser
{ {
......
using System.Xml.Serialization; using System.Xml.Serialization;
namespace ProfitGroup.SampleNotifyService.Core.Handlers namespace ProfitGroup.NotifyService.Core.Handlers
{ {
public static class ContentDeserializer public static class ContentDeserializer
{ {
......
namespace ProfitGroup.SampleNotifyService.Core.Handlers; namespace ProfitGroup.NotifyService.Core.Handlers;
public class RequestScopedLoggerMiddleware public class RequestScopedLoggerMiddleware
{ {
......
using ProfitGroup.SampleNotifyService.Core.Configs; using System.Text;
using ProfitGroup.SampleNotifyService.Models;
using ProfitGroup.SampleNotifyService.Services;
using System.Text;
using System.Xml.Serialization; using System.Xml.Serialization;
using ProfitGroup.SampleNotifyService.Data.Core.Data.Entities; using ProfitGroup.NotifyService.Core.Configs;
using ProfitGroup.NotifyService.Models;
using ProfitGroup.NotifyService.Services;
using ProfitGroup.NotifyService.Data.Core.Data.Entities;
namespace ProfitGroup.SampleNotifyService.Core.Handlers namespace ProfitGroup.NotifyService.Core.Handlers
{ {
public class RouteHandler public class RouteHandler
{ {
...@@ -73,7 +73,7 @@ namespace ProfitGroup.SampleNotifyService.Core.Handlers ...@@ -73,7 +73,7 @@ namespace ProfitGroup.SampleNotifyService.Core.Handlers
{ {
var confirmation = model.Body.MTConfirmation.Confirmation; var confirmation = model.Body.MTConfirmation.Confirmation;
var isSuccess = await _notifyService.SaveParameterLog(confirmation.ID, confirmation.Version, confirmation.StatusCode, confirmation.StatusText); var isSuccess = await _notifyService.SaveParameterLog(confirmation.ID, Convert.ToInt32(confirmation.Version), confirmation.StatusCode, confirmation.StatusText);
if (!isSuccess) if (!isSuccess)
{ {
...@@ -92,7 +92,7 @@ namespace ProfitGroup.SampleNotifyService.Core.Handlers ...@@ -92,7 +92,7 @@ namespace ProfitGroup.SampleNotifyService.Core.Handlers
{ {
var confirmation = model.Body.MTConfirmation.Confirmation; var confirmation = model.Body.MTConfirmation.Confirmation;
var isSuccess = await _notifyService.SaveMethodLog(confirmation.ID, confirmation.Version, confirmation.StatusCode, confirmation.StatusText); var isSuccess = await _notifyService.SaveMethodLog(confirmation.ID, Convert.ToInt32(confirmation.Version), confirmation.StatusCode, confirmation.StatusText);
if (!isSuccess) if (!isSuccess)
{ {
...@@ -121,7 +121,7 @@ namespace ProfitGroup.SampleNotifyService.Core.Handlers ...@@ -121,7 +121,7 @@ namespace ProfitGroup.SampleNotifyService.Core.Handlers
return Results.NotFound(errorText); return Results.NotFound(errorText);
} }
var infoCard = await _notifyService.GetSampleInfoCardAsync(confirmation.ID); var infoCard = await _notifyService.GetSampleInfoCardAsync((int)sample.SC);
if (infoCard == null) if (infoCard == null)
{ {
...@@ -160,10 +160,10 @@ namespace ProfitGroup.SampleNotifyService.Core.Handlers ...@@ -160,10 +160,10 @@ namespace ProfitGroup.SampleNotifyService.Core.Handlers
{ {
var errorText = $"Полученое неверное значение локации. Полученное значение: \"{locate}\""; var errorText = $"Полученое неверное значение локации. Полученное значение: \"{locate}\"";
_logger.LogError(errorText); _logger.LogError(errorText);
return Results.BadRequest($""); return Results.BadRequest(errorText);
} }
var specification = await _notifyService.GetSpecificationAsync(confirmation.ID, confirmation.Version); var specification = await _notifyService.GetSpecificationAsync(confirmation.ID, Convert.ToInt32(confirmation.Version));
if (specification == null) if (specification == null)
{ {
...@@ -174,7 +174,7 @@ namespace ProfitGroup.SampleNotifyService.Core.Handlers ...@@ -174,7 +174,7 @@ namespace ProfitGroup.SampleNotifyService.Core.Handlers
} }
var infoCard = var infoCard =
await _notifyService.GetSpecificationInfoCardAsync(confirmation.ID, confirmation.Version, locate); await _notifyService.GetSpecificationInfoCardAsync((int)specification.SP, Convert.ToInt32(confirmation.Version), locate);
if (infoCard == null) if (infoCard == null)
{ {
......
namespace ProfitGroup.SampleNotifyService.Models namespace ProfitGroup.NotifyService.Models
{ {
public enum AttributeSaveAction public enum AttributeSaveAction
{ {
......
using System.Xml.Serialization; using System.Xml.Serialization;
namespace ProfitGroup.SampleNotifyService.Models namespace ProfitGroup.NotifyService.Models
{ {
[XmlRoot(ElementName = "Confirmation", Namespace = "")] [XmlRoot(ElementName = "Confirmation", Namespace = "")]
public class Confirmation public class Confirmation
...@@ -16,7 +16,7 @@ namespace ProfitGroup.SampleNotifyService.Models ...@@ -16,7 +16,7 @@ namespace ProfitGroup.SampleNotifyService.Models
public int ID { get; set; } public int ID { get; set; }
[XmlAttribute(AttributeName = "Version", Namespace = "")] [XmlAttribute(AttributeName = "Version", Namespace = "")]
public int Version { get; set; } public string Version { get; set; }
[XmlAttribute(AttributeName = "StatusCode", Namespace = "")] [XmlAttribute(AttributeName = "StatusCode", Namespace = "")]
public string StatusCode { get; set; } public string StatusCode { get; set; }
......
namespace ProfitGroup.SampleNotifyService.Models namespace ProfitGroup.NotifyService.Models
{ {
public enum ObjectTypes public enum ObjectTypes
{ {
......
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
</PackageReference> </PackageReference>
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="7.0.0" /> <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="7.0.0" />
<PackageReference Include="NLog.Extensions.Logging" Version="5.3.4" /> <PackageReference Include="NLog.Extensions.Logging" Version="5.3.4" />
<PackageReference Include="NLog.Web" Version="5.3.5" /> <PackageReference Include="NLog.Web" Version="5.3.3" />
<PackageReference Include="NLog.Web.AspNetCore" Version="5.3.4" /> <PackageReference Include="NLog.Web.AspNetCore" Version="5.3.4" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.4.0" /> <PackageReference Include="Swashbuckle.AspNetCore" Version="6.4.0" />
</ItemGroup> </ItemGroup>
......
using ProfitGroup.SampleNotifyService.Core.Application; using ProfitGroup.NotifyService.Core.Application;
WebApplication WebApplication
.CreateBuilder(args) .CreateBuilder(args)
......
using ProfitGroup.SampleNotifyService.Data.Core.Data.Entities; using ProfitGroup.NotifyService.Data.Core.Data.Entities;
namespace ProfitGroup.SampleNotifyService.Services; namespace ProfitGroup.NotifyService.Services;
public interface INotifyService public interface INotifyService
{ {
......
using Microsoft.Data.SqlClient; using Microsoft.Data.SqlClient;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using ProfitGroup.SampleNotifyService.Core.Configs; using ProfitGroup.NotifyService.Core.Configs;
using ProfitGroup.SampleNotifyService.Data.Core.Data.Entities; using ProfitGroup.NotifyService.Data.Core.Data.Entities;
namespace ProfitGroup.SampleNotifyService.Services; namespace ProfitGroup.NotifyService.Services;
public class NotifyService : INotifyService public class NotifyService : INotifyService
{ {
...@@ -234,9 +234,9 @@ public class NotifyService : INotifyService ...@@ -234,9 +234,9 @@ public class NotifyService : INotifyService
}; };
await _context.Database.ExecuteSqlRawAsync( await _context.Database.ExecuteSqlRawAsync(
"UPDATE ProfITS4MtLog " + "UPDATE [RndSuite].[ProfITS4MtLog] " +
"SET S4Status = @StatusCode, S4StatusText = @StatusText, S4StatusDate = @StatusDate " + "SET [S4Status] = @StatusCode, [S4StatusText] = @StatusText, [S4StatusDate] = @StatusDate " +
"WHERE MT = @MethodId AND MT_VERSION = @MethodVersion", parameters); "WHERE [MT] = @MethodId AND [MT_VERSION] = @MethodVersion", parameters);
// await _context.SaveChangesAsync(); // await _context.SaveChangesAsync();
return true; return true;
} }
...@@ -275,9 +275,9 @@ public class NotifyService : INotifyService ...@@ -275,9 +275,9 @@ public class NotifyService : INotifyService
}; };
var affectedRows = await _context.Database.ExecuteSqlRawAsync( var affectedRows = await _context.Database.ExecuteSqlRawAsync(
"UPDATE ProfITS4PrLog " + "UPDATE [RndSuite].[ProfITS4PrLog] " +
"SET S4Status = @StatusCode, S4StatusText = @StatusText, S4StatusDate = @StatusDate " + "SET [S4Status] = @StatusCode, [S4StatusText] = @StatusText, [S4StatusDate] = @StatusDate " +
"WHERE PR = @ParameterId AND PR_VERSION = @ParameterVersion", parameters); "WHERE [PR] = @ParameterId AND [PR_VERSION] = @ParameterVersion", parameters);
// await _context.SaveChangesAsync(); // await _context.SaveChangesAsync();
return true; return true;
......
using System;
using System.Collections.Concurrent;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Threading.Tasks;
using System.Threading;
using Newtonsoft.Json;
using NLog;
using NLog.Config;
using ProfitGroup.Rdnl.Extensions;
using ProfitGroup.SampleService.Models;
using RnD.API;
using System.Management.Instrumentation;
namespace ProfitGroup.SampleService.Core.Services
{
public class QueueHandler
{
private ILogger Logger
{
get
{
var loggerConfig = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "nlog.config");
LogManager.Setup().LoadConfigurationFromFile(loggerConfig);
LogManager.Configuration = new XmlLoggingConfiguration(loggerConfig);
return LogManager.GetCurrentClassLogger();
}
}
private readonly ConcurrentQueue<MT_InspLot> _queue;
private readonly CancellationTokenSource _cancellationTokenSource;
private readonly RDnLManager _manager;
private readonly KsssInfoService _ksssInfoService;
private readonly SampleService _sampleService;
private readonly API _api;
private readonly Appsettings _appSettings;
public QueueHandler(RDnLManager manager,
ConcurrentQueue<MT_InspLot> queue,
API api)
{
_queue = queue;
_cancellationTokenSource = new CancellationTokenSource();
var loggerConfig = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "nlog.config");
LogManager.Setup().LoadConfigurationFromFile(loggerConfig);
LogManager.Configuration = new XmlLoggingConfiguration(loggerConfig);
_manager = manager;
_queue = queue;
_ksssInfoService = new KsssInfoService(manager, api);
_sampleService = new Core.Services.SampleService(manager, api, new SampleConfirmationService(manager, api));
_api = api;
var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "appsettings.json");
_appSettings = JsonConvert.DeserializeObject<Appsettings>(File.ReadAllText(path));
}
public void StartProcessing()
{
Task.Run(async () =>
{
while (!_cancellationTokenSource.Token.IsCancellationRequested)
{
MT_InspLot item;
while (_queue.TryDequeue(out item))
{
await Process(item);
}
Underload();
}
}, _cancellationTokenSource.Token);
}
public void StopProcessing()
{
_cancellationTokenSource.Cancel();
}
private async Task Process(MT_InspLot request)
{
if (request.Document == null)
{
return;
}
try
{
PushLogSeparator();
#region 1. Проверка данных
#region 1.1 Проверка на то, что пришли необходимые данные
if (string.IsNullOrEmpty(request.Document.Plant))
{
const string message = "В полученном пакете данных отсутствует параметр Plant (Площадка)";
Logger.Error($"[{request.GuigMsgOutb}]" + message);
throw new Exception(message);
}
if (string.IsNullOrEmpty(request.Document.InspectonType))
{
const string message = "В полученном пакете данных отсутствует параметр ControlType (Вид контроля)";
Logger.Error($"[{request.GuigMsgOutb}]" + message);
throw new Exception(message);
}
if (string.IsNullOrEmpty(request.Document.Material))
{
const string message =
"В полученном пакете данных отсутствует параметр ksss (Код KSSS), параметр Material";
Logger.Error($"[{request.GuigMsgOutb}]" + message);
throw new Exception(message);
}
var customSampleCreateDto = new CustomSampleCreateDto
{
PlantName = request.Document.Plant
};
#endregion
#region 1.2 Проверки на верность полученных данных
//var plant = await _ksssInfoService.GetPlantByName(request.Document.Plant);
decimal plantId = 0;
if (string.IsNullOrEmpty(request.Document.Plant) ||
decimal.TryParse(request.Document.Plant, out plantId) == false)
{
var message =
$"Не удалось считать идентификатор площадки из полученного пакета данных, полученное значение: '{request.Document.Plant}'";
Logger.Error($"[{request.GuigMsgOutb}]" + message);
throw new Exception(message);
}
var plant = await _ksssInfoService.GetPlantById(plantId);
if (plant == null)
{
var message =
$"Не удалось определить площадку с полученным идентификатором: '{request.Document.Plant}'";
Logger.Error($"[{request.GuigMsgOutb}]" + message);
throw new Exception(message);
}
#endregion
#endregion
#region 2. Поиск инфополя, со значением, соответствующему полученному KSSS коду
if (ulong.TryParse(request.Document.Material, out ulong materialId) == false)
{
var message = $"Не удалось привести значение идентификатора в число: '{request.Document.Material}'";
Logger.Error($"[{request.GuigMsgOutb}]" + message);
throw new Exception(message);
}
var ksssCodeInfoFields = await _ksssInfoService.GetInfoFieldsByKSSSCode(materialId.ToString());
var specificationsIDs = ksssCodeInfoFields.Select(c => c.SP).Distinct().ToList();
var activeSpecifications = await _ksssInfoService.GetActiveSpecificationsFromRange(specificationsIDs);
if (activeSpecifications.Count == 0)
{
var message = $"Отсутствует спецификация с кодом KSSS: '{request.Document.Material}'";
Logger.Error([{ request.GuigMsgOutb}]" + message);
throw new Exception(message);
}
if (activeSpecifications.Count > 1)
{
var message = $"Нашлось более одной спецификации с кодом KSSS: '{request.Document.Material}'";
Logger.Error($"[{request.GuigMsgOutb}]" + message);
throw new Exception(message);
}
#endregion
#region 3. Получение спецификации
var specification = await _ksssInfoService.FindActiveSpecificationById(activeSpecifications[0].SP,
activeSpecifications[0].SP_VERSION);
if (specification == null)
{
var message =
$"Не удалось найти активную спецификацию по коду KSSS: {ksssCodeInfoFields[0].IIVALUE}";
Logger.Error($"[{request.GuigMsgOutb}]" + message);
throw new Exception(message);
}
#endregion
#region 4. Получение Product Code из спецификации
customSampleCreateDto.ProductCode =
_ksssInfoService.GetProductCodeFromSpecificationKSSS(specification, out decimal? frameId);
//ToDO: Проверить, что для данного продукт кода существует активная спецификация
if (string.IsNullOrEmpty(customSampleCreateDto.ProductCode))
{
var message = $"Не удалось определить код продукта у спецификации";
Logger.Error($"[{request.GuigMsgOutb}]" + message);
throw new Exception(message);
}
#endregion
#region 5. Маппинг вида контроля в формате OpcenterRdnL
var mappedControl =
await _ksssInfoService.MapOperationControl(plant.LO, frameId, request.Document.InspectonType);
if (mappedControl == null)
{
var message =
$"Не удалось определить вид контроля: Локация: {plant.LO} / {plant.SHORT_DESC}, InspectonType: {request?.Document?.InspectonType}, FrameId: {frameId}";
Logger.Error($"[{request.GuigMsgOutb}]" + message);
throw new Exception(message);
}
var controlType = await _ksssInfoService.GetControlTypeByCode(mappedControl.ControlTypeCode);
if (controlType == null)
{
var message =
$"В таблице видов контроля отсутствует вид с кодом: '{mappedControl.ControlTypeCode}'";
Logger.Error($"[{request.GuigMsgOutb}]" + message);
throw new Exception(message);
}
customSampleCreateDto.OperationControlName = controlType.NAME_RU;
#endregion
#region 6. Определение упаковки (Вида тары), у объектов, которые не имеют стадии
// customSampleCreateDto.OperationControl != OperationControl.InputControl
// Таблица: OpcenterRDnL.RndSuite.SiemtControlTypes
// Если не входной контроль
if (controlType.CODE != "IC" && string.IsNullOrEmpty(mappedControl.Stage))
{
//Обработка частного случая, в котором определяется упаковка, в зависимости от объема партии
if (request.Document.InspectonType == "L010")
{
if (decimal.TryParse(request.Document.InspLotSize, out var lotSize))
{
if (request.Document.InspectonType == "L010")
{
customSampleCreateDto.Package =
DetectPackageServiceByRangeValue.Detect("А/Ц", "В/Ц", 50_000, lotSize);
}
}
else
{
var message =
$@"Для вида контроля S4 ""{request.Document.InspectonType}"" не удалось определить упаковку, т.к. не удалось получить числовое значение InspLotSize, ожидалось число с плавающей точкой, фактическое значение: '{request?.Document?.InspLotSize}'";
Logger.Error($"[{request.GuigMsgOutb}]" + message);
throw new Exception(message);
}
}
else
{
customSampleCreateDto.Package =
_ksssInfoService.GetPackageNameFromSpecificationKSSS(specification);
}
if (_ksssInfoService.CheckAndMapPackageName(customSampleCreateDto.Package, plant.LO,
out string opCenterPackageName) || !string.IsNullOrEmpty(opCenterPackageName))
{
customSampleCreateDto.Package = opCenterPackageName;
}
else
{
throw new Exception(
$"Не удалось сопоставить наименование упаковки \"{customSampleCreateDto.Package}\" и локацией \"{plant.LO}\" ни с одной из упаковок в Opcenter!");
}
if (string.IsNullOrEmpty(customSampleCreateDto.Package) && specification.FrameId != 30)
{
var message = $"У инфокарты спецификации не заполнено инфополе: KD_Pack";
Logger.Error($"[{request.GuigMsgOutb}]" + message);
throw new Exception(message);
}
}
#endregion
#region 7. Определение SampleType
customSampleCreateDto.SampleType = _ksssInfoService.GetSampleType(
customSampleCreateDto.ProductCode,
customSampleCreateDto.OperationControlName,
customSampleCreateDto.Package,
mappedControl.Stage,
plant.LO
);
if (customSampleCreateDto.SampleType == null)
{
var message =
$"Не удалось определить SampleType, ProductCode: {customSampleCreateDto.ProductCode}, OperationControlName: {customSampleCreateDto.OperationControlName}, Упаковка: \"{customSampleCreateDto.Package}\", Стадия: \"{mappedControl.Stage}\", возможно отсутствует ";
Logger.Error($"[{request.GuigMsgOutb}]" + message);
throw new Exception(message);
}
var sampleType =
_manager.EventAwareObjectFactory.SampleType.GetFull(customSampleCreateDto.SampleType.ST,
customSampleCreateDto.SampleType.VERSION);
if (sampleType.InfoProfiles.All(c => c.ShortDescription != "S4Integration_Probe"))
{
var message =
$"SampleType в Opcenter настроен неверно, отсутствует инфокарта S4Integration_Probe, необходимая для интеграции";
Logger.Error($"[{request.GuigMsgOutb}]" + message);
throw new Exception(message);
}
#endregion
#region 8. Определение ключей создания пробы + заполнение
var taskFilterDtos = _sampleService
.GetTaskKeys(plant.SHORT_DESC,
customSampleCreateDto.OperationControlName,
customSampleCreateDto.Package ?? mappedControl.Stage
)
.ToList();
if (taskFilterDtos.Count == 0)
{
var message =
$"Не было задано ни одного ключа создания объекта, либо не удалось определить контекстные ключи";
Logger.Error($"[{request.GuigMsgOutb}]" + message);
throw new Exception(message);
}
// Получаем только незаполненные параметры
foreach (var taskFilter in taskFilterDtos.Where(taskFilter => string.IsNullOrEmpty(taskFilter.Value)))
{
switch (taskFilter.Field)
{
case "SHORT_DESC@RndvSt":
taskFilter.Value = customSampleCreateDto.SampleType.SHORT_DESC;
break;
case "43@RndvStAu": // Упаковка
taskFilter.Value = customSampleCreateDto.Package.Replace(",", ".");
break;
case "38@RndvStAu": // Стадия
taskFilter.Value = mappedControl.Stage;
break;
default:
break;
}
//taskFilter.Value = taskFilter.Field switch
//{
// // Краткое описание
// "SHORT_DESC@RndvSt" => customSampleCreateDto.SampleType.SHORT_DESC,
// // Упаковка
// "43@RndvStAu" => customSampleCreateDto.Package.Replace(",", "."),
// // Стадия
// "38@RndvStAu" => mappedControl.Stage,
// // Возвращаем значение
// _ => taskFilter.Value
//};
}
#endregion
#region 9. Создание пробы
var sampleFullDto = _manager.EventAwareObjectFactory.Sample.Create(
customSampleCreateDto.SampleType.ST,
customSampleCreateDto.SampleType.VERSION,
taskFilterDtos);
_manager.EventAwareObjectFactory.SaveChanges();
#endregion
#region 10. Заполнение инфокарт
foreach (InfoCardSetting card in _appSettings.InfoCardSettings)
{
var parameter = GetPropertyValue(request.Document, card.Name);
if (parameter != null)
{
card.Value = parameter.ToString();
}
else
{
Logger.Warn($"[{request.GuigMsgOutb}]" +
$"В полученном запросе отсутствует параметр: \"{card.Name}\". Локация: \"{card.Plant}\". Полученный запрос не имеет соответствующего поля/значения для записи");
}
}
_sampleService.FillSampleInfoCards(Convert.ToDecimal(sampleFullDto.ID), _appSettings.InfoCardSettings,
plant.DESCRIPTION);
#endregion
#region 11. Отправка Confirmation
await _sampleService.SendConfirmation(request, sampleFullDto);
#endregion
#region 12. Возврат ответа на запрос
var requestMessage = $"Запрос с Message Guid: {request.GuigMsgOutb} был успешно обработан";
Logger.Log(LogLevel.Info, $"[{request.GuigMsgOutb}]" + requestMessage);
#endregion
}
catch (Exception ex)
{
Logger.Error($"[{request.GuigMsgOutb}]" + ex.Message + "\n\n" + ex.StackTrace);
await _sampleService.SendConfirmation(request, null, ex.Message);
}
}
private void Underload()
{
Thread.Sleep(1000);
}
#region Приватные методы
private void PushLogSeparator(int newLineCount = 0)
{
Logger.Info($"{new string('=', 100)}{new string('\n', newLineCount)}");
}
private object GetPropertyValue(object objectDocument, string propertyName)
{
Type type = objectDocument.GetType();
PropertyInfo propertyInfo = type.GetProperty(propertyName, BindingFlags.Public | BindingFlags.Instance);
if (propertyInfo != null)
return propertyInfo.GetValue(objectDocument, null);
else
return null;
}
#endregion
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace ProfitGroup.SampleService.Models.Entities
{
public partial class Rndtpack
{
public Nullable<int> lo { get; set; }
public string control { get; set; }
public string pack { get; set; }
public string pack_KSSS { get; set; }
public string pack_en { get; set; }
public string pack_cn { get; set; }
public string pack_au { get; set; }
public string pack_id { get; set; }
public int id { get; set; }
}
public class RndtpackMapObject
{
public decimal Id { get; set; }
public string Pack { get; set; }
public string PackKSSS { get; set; }
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Web;
namespace ProfitGroup.SampleService.Models
{
public class StringWriterUTF8 : StringWriter
{
public override Encoding Encoding => Encoding.UTF8;
}
}
\ No newline at end of file
{\rtf1\adeflang1025\ansi\ansicpg1251\uc1\adeff0\deff0\stshfdbch31505\stshfloch31506\stshfhich31506\stshfbi0\deflang1049\deflangfe1049\themelang1049\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset204\fprq2{\*\panose 02020603050405020304}Times New Roman;}
{\f34\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}Cambria Math;}{\f37\fbidi \fswiss\fcharset204\fprq2{\*\panose 020f0502020204030204}Calibri;}
{\flomajor\f31500\fbidi \froman\fcharset204\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fdbmajor\f31501\fbidi \froman\fcharset204\fprq2{\*\panose 02020603050405020304}Times New Roman;}
{\fhimajor\f31502\fbidi \fswiss\fcharset204\fprq2{\*\panose 020f0302020204030204}Calibri Light;}{\fbimajor\f31503\fbidi \froman\fcharset204\fprq2{\*\panose 02020603050405020304}Times New Roman;}
{\flominor\f31504\fbidi \froman\fcharset204\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fdbminor\f31505\fbidi \froman\fcharset204\fprq2{\*\panose 02020603050405020304}Times New Roman;}
{\fhiminor\f31506\fbidi \fswiss\fcharset204\fprq2{\*\panose 020f0502020204030204}Calibri;}{\fbiminor\f31507\fbidi \froman\fcharset204\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f46\fbidi \froman\fcharset0\fprq2 Times New Roman;}
{\f44\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\f47\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f48\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f49\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
{\f50\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f51\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f52\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f386\fbidi \froman\fcharset0\fprq2 Cambria Math;}
{\f384\fbidi \froman\fcharset238\fprq2 Cambria Math CE;}{\f387\fbidi \froman\fcharset161\fprq2 Cambria Math Greek;}{\f388\fbidi \froman\fcharset162\fprq2 Cambria Math Tur;}{\f391\fbidi \froman\fcharset186\fprq2 Cambria Math Baltic;}
{\f392\fbidi \froman\fcharset163\fprq2 Cambria Math (Vietnamese);}{\f416\fbidi \fswiss\fcharset0\fprq2 Calibri;}{\f414\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\f417\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}
{\f418\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}{\f419\fbidi \fswiss\fcharset177\fprq2 Calibri (Hebrew);}{\f420\fbidi \fswiss\fcharset178\fprq2 Calibri (Arabic);}{\f421\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}
{\f422\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\flomajor\f31510\fbidi \froman\fcharset0\fprq2 Times New Roman;}{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
{\fdbmajor\f31520\fbidi \froman\fcharset0\fprq2 Times New Roman;}{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbmajor\f31521\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}
{\fdbmajor\f31522\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbmajor\f31523\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbmajor\f31524\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
{\fdbmajor\f31525\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbmajor\f31526\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhimajor\f31530\fbidi \fswiss\fcharset0\fprq2 Calibri Light;}
{\fhimajor\f31528\fbidi \fswiss\fcharset238\fprq2 Calibri Light CE;}{\fhimajor\f31531\fbidi \fswiss\fcharset161\fprq2 Calibri Light Greek;}{\fhimajor\f31532\fbidi \fswiss\fcharset162\fprq2 Calibri Light Tur;}
{\fhimajor\f31533\fbidi \fswiss\fcharset177\fprq2 Calibri Light (Hebrew);}{\fhimajor\f31534\fbidi \fswiss\fcharset178\fprq2 Calibri Light (Arabic);}{\fhimajor\f31535\fbidi \fswiss\fcharset186\fprq2 Calibri Light Baltic;}
{\fhimajor\f31536\fbidi \fswiss\fcharset163\fprq2 Calibri Light (Vietnamese);}{\fbimajor\f31540\fbidi \froman\fcharset0\fprq2 Times New Roman;}{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
{\flominor\f31550\fbidi \froman\fcharset0\fprq2 Times New Roman;}{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}
{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbminor\f31560\fbidi \froman\fcharset0\fprq2 Times New Roman;}
{\fdbminor\f31558\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbminor\f31561\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbminor\f31562\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
{\fdbminor\f31563\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbminor\f31564\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbminor\f31565\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
{\fdbminor\f31566\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhiminor\f31570\fbidi \fswiss\fcharset0\fprq2 Calibri;}{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}
{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}{\fhiminor\f31573\fbidi \fswiss\fcharset177\fprq2 Calibri (Hebrew);}
{\fhiminor\f31574\fbidi \fswiss\fcharset178\fprq2 Calibri (Arabic);}{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}{\fhiminor\f31576\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}
{\fbiminor\f31580\fbidi \froman\fcharset0\fprq2 Times New Roman;}{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}
{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;
\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;
\red192\green192\blue192;\red0\green0\blue0;\red0\green0\blue0;}{\*\defchp \fs22\loch\af31506\hich\af31506\dbch\af31505 }{\*\defpap \ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }
\noqfpromote {\stylesheet{\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0
\fs22\lang1049\langfe1049\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1049\langfenp1049 \snext0 \sqformat \spriority0 Normal;}{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\*
\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\sa160\sl259\slmult1
\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1049\langfe1049\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1049\langfenp1049 \snext11 \ssemihidden \sunhideused
Normal Table;}}{\*\rsidtbl \rsid614733\rsid1983824\rsid2368657\rsid2885165\rsid4077054\rsid5319063\rsid5471255\rsid5525943\rsid8725323\rsid11086383\rsid11404482\rsid12386552\rsid13657442\rsid15598962\rsid16285460}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0
\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\operator \'d2\'e5\'f0\'e5\'ed\'f2\'fc\'e5\'e2 \'c0\'ed\'f2\'ee\'ed \'c0\'eb\'e5\'ea\'f1\'e5\'e5\'e2\'e8\'f7}{\creatim\yr2023\mo12\dy13\hr10\min42}
{\revtim\yr2023\mo12\dy14\hr16\min30}{\version15}{\edmins18}{\nofpages3}{\nofwords581}{\nofchars3312}{\nofcharsws3886}{\vern81}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}
\paperw12240\paperh15840\margl1701\margr850\margt1134\margb1134\gutter0\ltrsect
\widowctrl\ftnbj\aenddoc\trackmoves0\trackformatting1\donotembedsysfont0\relyonvml0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\horzdoc\dghspace120\dgvspace120\dghorigin1701
\dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind1\viewscale150\rsidroot13657442 \nouicompat \fet0{\*\wgrffmtfilter 2450}\nofeaturethrottle1\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\*\pnseclvl1
\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5
\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang
{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0
\fs22\lang1049\langfe1049\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp1049\langfenp1049 {\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460 \hich\af37\dbch\af31505\loch\f37 \hich\f37 0. \'c8\'e7\'ec\'e5\'ed\'e8\'f2\'fc\loch\f37 \hich\f37 \'e4\'e0
\'ed\'ed\'fb\'e5\loch\f37 \hich\f37 \'e4\'eb\'ff\loch\f37 \hich\f37 \'e0\'e2\'f2\'ee\'f0\'e8\'e0\'e7\'f6\'e8\'e8\loch\f37 Core\\Middlewares\\BasicAuthMiddleware.cs}{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\lang9\langfe1049\langnp9\insrsid16285460
\par }{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460\charrsid13657442 \hich\af37\dbch\af31505\loch\f37 1. }{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460 \loch\af37\dbch\af31505\hich\f37 \'ce\'ef\'f3\'e1\'eb\'e8\'ea\'ee\'e2\'e0\'f2\'fc\loch\f37
\hich\f37 \'e2\loch\f37 \hich\f37 \'ef\'e0\'ef\'ea\'f3
\par \hich\af37\dbch\af31505\loch\f37 \hich\f37 2. \'d1\'ea\'ee\'ef\'e8\'f0\'ee\'e2\'e0\'f2\'fc\loch\f37 \hich\f37 \'f4\'e0\'e9\'eb\loch\f37 }{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\lang1033\langfe1049\langnp1033\insrsid16285460 \hich\af37\dbch\af31505\loch\f37
nlog}{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460\charrsid13657442 .}{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\lang1033\langfe1049\langnp1033\insrsid16285460 \hich\af37\dbch\af31505\loch\f37 config}{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460
\hich\af37\dbch\af31505\loch\f37 \hich\f37 \'e2\loch\f37 \hich\f37 \'ea\'ee\'f0\'e5\'ed\'fc\loch\f37 \hich\f37 \'f1\'e0\'e9\'f2\'e0\loch\f37 \hich\f37 , \'e5\'f1\'eb\'e8\loch\f37 \hich\f37 \'fd\'f2\'ee\loch\f37 \hich\f37 \'ed\'e5\loch\f37 \hich\f37
\'ef\loch\af37\dbch\af31505\hich\f37 \'f0\'ee\'e8\'e7\'ee\'f8\'eb\'ee\loch\f37 \hich\f37 \'e0\'e2\'f2\'ee\'ec\'e0\'f2\'e8\'f7\'e5\'f1\'ea\'e8
\par }{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460\charrsid13657442 \hich\af37\dbch\af31505\loch\f37 3. }{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460 \loch\af37\dbch\af31505\hich\f37 \'d1\'ea\'ee\'ef\'e8\'f0\'ee\'e2\'e0\'f2\'fc\loch\f37
\hich\f37 \'ef\'e0\'ef\'ea\'f3\loch\f37 BusinessLayerIoCSupport}{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460\charrsid13657442 \hich\af37\dbch\af31505\loch\f37 }{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460 \loch\af37\dbch\af31505\hich\f37
\'e2\loch\f37 \hich\f37 \'ea\'ee\'f0\'e5\'ed\'fc\loch\f37 \hich\f37 \'f1\'e0\'e9\'f2\'e0\loch\f37 \hich\f37 , \'e5\'f1\'eb\'e8\loch\f37 \hich\f37 \'fd\'f2\'ee\loch\f37 \hich\f37 \'ed\'e5\loch\f37 \hich\f37 \'ef\'f0\'ee\'e8\'e7\'ee\'f8\'eb\'ee
\loch\f37 \hich\f37 \'e0\'e2\'f2\'ee\'ec\'e0\'f2\'e8\'f7\'e5\'f1\'ea\'e8
\par \hich\af37\dbch\af31505\loch\f37 \hich\f37 4. \'d1\'ea\'ee\'ef\'e8\'f0\'ee\'e2\'e0\'f2\'fc\loch\f37 \hich\f37 \'ef\'e0\'ef\'ea\'f3\loch\f37 \hich\f37 \'e2\~\loch\f37 BusinessLayerIoCSupport}{\rtlch\fcs1 \af37 \ltrch\fcs0
\f37\insrsid16285460\charrsid13657442 \hich\af37\dbch\af31505\loch\f37 }{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460 \loch\af37\dbch\af31505\hich\f37 \'e2\loch\f37 \hich\f37 \'ef\'e0\'ef\'ea\'f3\loch\f37 }{\rtlch\fcs1 \af37 \ltrch\fcs0
\f37\lang1033\langfe1049\langnp1033\insrsid16285460 \hich\af37\dbch\af31505\loch\f37 Bin}{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460 \hich\af37\dbch\af31505\loch\f37 \hich\f37 , \'e5\'f1\'eb\'e8\loch\f37 \hich\f37 \'fd\'f2\'ee\loch\f37 \hich\f37
\'ed\'e5\loch\f37 \hich\f37 \'ef\'f0\'ee\'e8\'e7\'ee\'f8\'eb\'ee\loch\f37 \hich\f37 \'e0\'e2\'f2\'ee\'ec\'e0\'f2\'e8\'f7\'e5\'f1\'ea\'e8
\par \hich\af37\dbch\af31505\loch\f37 \hich\f37 5. \'ce\'f2\'f0\'e5\'e4\'e0\'ea\'f2\'e8\'f0\'ee\'e2\'e0\'f2\'fc\loch\f37 \hich\f37 appsettings.json, \'e2\loch\f37 \hich\f37 \'ea\loch\af37\dbch\af31505\hich\f37 \'ee\'f2\'ee\'f0\'ee\'ec\loch\f37 \hich\f37
\'e8\'e7\'ec\'e5\'ed\'e8\'f2\'fc\loch\f37 }{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\lang1033\langfe1049\langnp1033\insrsid16285460 \hich\af37\dbch\af31505\loch\f37 url}{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460\charrsid13657442
\hich\af37\dbch\af31505\loch\f37 }{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460 \loch\af37\dbch\af31505\hich\f37 \'e0\'e4\'f0\'e5\'f1\loch\f37 \hich\f37 , \'ef\'ee\loch\f37 \hich\f37 \'ea\'ee\'f2\'ee\'f0\'ee\'ec\'f3\loch\f37 \hich\f37 \'ef\'f0
\'ee\'e8\'f5\'ee\'e4\'e8\'f2\loch\f37 \hich\f37 \'ee\'e1\'f0\'e0\'f9\'e0\'e5\'ed\'e8\'e5\loch\f37 \hich\f37 \'ea\loch\f37 }{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\lang1033\langfe1049\langnp1033\insrsid16285460 \hich\af37\dbch\af31505\loch\f37 API}{
\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460\charrsid13657442 \hich\af37\dbch\af31505\loch\f37 }{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\lang1033\langfe1049\langnp1033\insrsid16285460 \hich\af37\dbch\af31505\loch\f37 Endpoint}{\rtlch\fcs1 \af37
\ltrch\fcs0 \f37\insrsid16285460\charrsid13657442 \hich\af37\dbch\af31505\loch\f37 '}{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460 \loch\af37\dbch\af31505\hich\f37 \'f3\loch\f37 \hich\f37 \'eb\'f3\'ea\'ee\'e9\'eb\'e0}{\rtlch\fcs1 \af37 \ltrch\fcs0
\f37\insrsid11404482 \hich\af37\dbch\af31505\loch\f37 \hich\f37 , \'e0\loch\f37 \hich\f37 \'f2\'e0\'ea\loch\f37 \hich\f37 \'e6\'e5\loch\f37 \hich\f37 \'e4\'e0\'ed\'ed\'fb\'e5\loch\f37 \hich\f37 \'e4\'eb\'ff\loch\f37 \hich\f37 \'e0\'f3\'f2\'e5\'ed\'f2
\'e8\'f4\'e8\'ea\'e0\'f6\'e8\'e8\loch\f37 \hich\f37 \'e2\loch\f37 \hich\f37 \'e7\'e0\'e2\'e8\'f1\'e8\'ec\'ee\'f1\'f2\'e8\loch\f37 \hich\f37 \'ee\'f2\loch\f37 }{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid5525943 \loch\af37\dbch\af31505\hich\f37 \'ea}{
\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid11404482 \loch\af37\dbch\af31505\hich\f37 \'ee\'ed\'f4\loch\f37 \hich\f37 \'f3\'f0\'ee\'e2\'ed\'ff}{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460 \hich\af37\dbch\af31505\loch\f37 \hich\f37 , \'ef\'f0\'e8
\loch\f37 \hich\f37 \'ed\'e5\'ee\'e1\'f5\'ee\'e4\'e8\'ec\'ee\'f1\'f2\'e8\loch\f37 \hich\f37 \'e8\'e7\'ec\'e5\'ed\'e8\'f2\'fc\loch\f37 \hich\f37 \'ed\'e0\'f1\'f2\'f0\'ee\'e9\'ea\'e8\loch\f37 \hich\f37 \'e8\'ed\'f4\'ee\'ea\'e0\'f0\'f2\loch\f37
\hich\f37 \'c3\'e4\'e5\loch\f37 }{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\lang1033\langfe1049\langnp1033\insrsid16285460 \hich\af37\dbch\af31505\loch\f37 Name}{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460\charrsid13657442
\hich\af37\dbch\af31505\loch\f37 = }{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460 \loch\af37\dbch\af31505\hich\f37 \'ed\'e0\'e8\'ec\'e5\'ed\'ee\'e2\'e0\'ed\'e8\'e5\loch\f37 \hich\f37 \'ef\'e5\'f0\'e5\'e4\'e0\'e2\'e0\'e5\'ec\'ee\'e3\'ee\loch\f37
\hich\f37 \'e2\loch\f37 }{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\lang1033\langfe1049\langnp1033\insrsid16285460 \hich\af37\dbch\af31505\loch\f37 Confirmation}{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460\charrsid13657442
\hich\af37\dbch\af31505\loch\f37 }{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460 \loch\af37\dbch\af31505\hich\f37 \'f1}{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid15598962 \loch\af37\dbch\af31505\hich\f37 \'e2}{\rtlch\fcs1 \af37 \ltrch\fcs0
\f37\insrsid16285460 \loch\af37\dbch\af31505\hich\f37 \'ee\'e9\'f1\'f2\loch\af37\dbch\af31505\hich\f37 \'e2\'e0\loch\f37 \hich\f37 , \'e0\loch\f37 }{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\lang1033\langfe1049\langnp1033\insrsid16285460
\hich\af37\dbch\af31505\loch\f37 infoCard}{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460\charrsid13657442 \hich\af37\dbch\af31505\loch\f37 }{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460 \loch\af37\dbch\af31505\hich\f37 \'e8\loch\f37 }{
\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\lang1033\langfe1049\langnp1033\insrsid16285460 \hich\af37\dbch\af31505\loch\f37 InfoField}{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460\charrsid13657442 \hich\af37\dbch\af31505\loch\f37 }{\rtlch\fcs1 \af37
\ltrch\fcs0 \f37\insrsid16285460 \hich\af37\dbch\af31505\loch\f37 \hich\f37 - \'fd\'f2\'ee\loch\f37 \hich\f37 \'ec\'e5\'f1\'f2\'ee\loch\f37 \hich\f37 \'ea\'f3\'e4\'e0\loch\f37 \hich\f37 \'ed\'f3\'e6\'ed\'ee\loch\f37 \hich\f37 \'e7\'e0\'ef\'e8\'f1\'e0
\'f2\'fc\loch\f37 \hich\f37 \'e7\'ed\'e0\'f7\'e5\'ed\'e8\'e5
\par \hich\af37\dbch\af31505\loch\f37 \hich\f37 6. \'ce\'f2\'f0\'e5\'e4\'e0\'ea\'f2\'e8\'f0\'ee\'e2\'e0\'f2\'fc\loch\f37 \hich\f37 \'f4\'e0\'e9\'eb\loch\f37 \hich\f37 nlog.config, \'e2\loch\f37 \hich\f37 \'ea\'ee\'f2\'f0\'ee\'ec\loch\f37 \hich\f37 \'ed\'f3
\'e6\'ed\'ee\loch\f37 \hich\f37 \'e8\'e7\'ec\'e5\'ed\'e8\'f2\'fc\loch\f37 \hich\f37 \'ef\'e0\'ef\'ea\'f3\loch\f37 \hich\f37 \'ea\loch\f37 \hich\f37 \'eb\'ee\'e3\'e0\'ec
\par \hich\af37\dbch\af31505\loch\f37 \hich\f37 7. \'ce\'f2\'f0\'e5\'e4\'e0\'ea\'f2\'e8\'f0\'ee\'e2\'e0\'f2\'fc\loch\f37 \hich\f37 \'f4\'e0\'e9\'eb\loch\f37 \hich\f37 Web.config, \'e8\'e7\'ec\'e5\'ed\'e8\'f2\'fc\loch\f37 \hich\f37 \'f3\'f7\'e5\'f2\'ed\'fb
\'e5\loch\f37 \hich\f37 \'e4\'e0\'ed\'ed\'fb\'e5}{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460\charrsid13657442 \hich\af37\dbch\af31505\loch\f37 }{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\lang1033\langfe1049\langnp1033\insrsid16285460
\hich\af37\dbch\af31505\loch\f37 ConnectionString}{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460 \hich\af37\dbch\af31505\loch\f37 \hich\f37 OpcenterRDnL, \'f2\'e0\'ea\loch\f37 \hich\f37 \'e6\'e5\loch\f37 \hich\f37 \'e8\'e7\'ec\'e5\'ed\'e8\'f2\'fc
\loch\f37 addres\hich\af37\dbch\af31505\loch\f37 s}{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460\charrsid13657442 \hich\af37\dbch\af31505\loch\f37 }{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460 \loch\af37\dbch\af31505\hich\f37 \'e4\'eb\'ff
\loch\f37 \hich\f37 \'f1\'e5\'f0\'e2\'e8\'f1\'ee\'e2\loch\f37 \hich\f37 \'c7\'e0\'ec\'e5\'ed\'e8\'f2\'fc\loch\f37 "}{\rtlch\fcs1 \ab\af37 \ltrch\fcs0 \b\f37\insrsid16285460 \hich\af37\dbch\af31505\loch\f37 LLK-DEV}{\rtlch\fcs1 \af37 \ltrch\fcs0
\f37\insrsid16285460 \hich\af37\dbch\af31505\loch\f37 \hich\f37 " \'ed\'e0\loch\f37 }{\rtlch\fcs1 \ab\af37 \ltrch\fcs0 \b\f37\insrsid16285460 \loch\af37\dbch\af31505\hich\f37 \'cd\'e0\'e7\'e2\'e0\'ed\'e8\'e5\loch\f37 \hich\f37 \'f1\'e5\'f0\'e2\'e5\'f0
\'e0}{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460 \line }{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460\charrsid13657442 \hich\af37\dbch\af31505\loch\f37 <}{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\lang1033\langfe1049\langnp1033\insrsid16285460
\hich\af37\dbch\af31505\loch\f37 system}{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460\charrsid13657442 .}{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\lang1033\langfe1049\langnp1033\insrsid16285460 \hich\af37\dbch\af31505\loch\f37 serviceModel}{\rtlch\fcs1
\af37 \ltrch\fcs0 \f37\insrsid16285460\charrsid13657442 \hich\af37\dbch\af31505\loch\f37 >
\par }{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\lang1033\langfe1049\langnp1033\insrsid16285460\charrsid11404482 ..
\par }{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\lang1033\langfe1049\langnp1033\insrsid16285460 \hich\af37\dbch\af31505\loch\f37 <client>
\par \hich\af37\dbch\af31505\loch\f37 <endpoint }{\rtlch\fcs1 \ab\af37 \ltrch\fcs0 \b\f37\cf6\lang1033\langfe1049\langnp1033\insrsid16285460 \hich\af37\dbch\af31505\loch\f37 address}{\rtlch\fcs1 \af37 \ltrch\fcs0
\f37\lang1033\langfe1049\langnp1033\insrsid16285460 \hich\af37\dbch\af31505\loch\f37 ... />
\par \hich\af37\dbch\af31505\loch\f37 </client>
\par \hich\af37\dbch\af31505\loch\f37 </system.serviceModel>
\par }{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid1983824 \hich\af37\dbch\af31505\loch\f37 \hich\f37 8. \'cf\'e5\'f0\'e5\'ed\'e5\'f1\'f2\'e8\loch\f37 \hich\f37 \'f4\'e0\'e9\'eb\loch\f37 }{\rtlch\fcs1 \af37 \ltrch\fcs0
\f37\lang1033\langfe1049\langnp1033\insrsid1983824 \hich\af37\dbch\af31505\loch\f37 appsettings}{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid1983824\charrsid12386552 .}{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\lang1033\langfe1049\langnp1033\insrsid1983824
\hich\af37\dbch\af31505\loch\f37 json}{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid1983824 \hich\af37\dbch\af31505\loch\f37 \hich\f37 , \'e5\'f1\'eb\'e8\loch\f37 \hich\f37 \'fd\'f2\'ee\loch\f37 \hich\f37 \'ed\'e5\loch\f37 \hich\f37 \'ef\'f0\'ee\'e8\'e7
\'ee\'f8\'eb\'ee\loch\f37 \hich\f37 \'e0\'e2\'f2\'ee\'ec\'e0\'f2\'e8\'f7\'e5\'f1\'ea\'e8}{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid1983824\charrsid1983824
\par }{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460\charrsid1983824
\par }{\rtlch\fcs1 \ab\af37\afs32 \ltrch\fcs0 \b\f37\fs32\insrsid16285460\charrsid1983824
\par }{\rtlch\fcs1 \ab\af37\afs32 \ltrch\fcs0 \b\f37\fs32\insrsid16285460 \loch\af37\dbch\af31505\hich\f37 \'c2\'ee\'e7\'ec\'ee\'e6\'ed\'fb\'e5}{\rtlch\fcs1 \ab\af37\afs32 \ltrch\fcs0 \b\f37\fs32\lang1033\langfe1049\langnp1033\insrsid16285460\charrsid13657442
\hich\af37\dbch\af31505\loch\f37 }{\rtlch\fcs1 \ab\af37\afs32 \ltrch\fcs0 \b\f37\fs32\insrsid16285460 \loch\af37\dbch\af31505\hich\f37 \'ee\'f8\'e8\'e1\'ea\'e8}{\rtlch\fcs1 \ab\af37\afs32 \ltrch\fcs0
\b\f37\fs32\lang1033\langfe1049\langnp1033\insrsid16285460\charrsid13657442 \hich\af37\dbch\af31505\loch\f37 }{\rtlch\fcs1 \ab\af37\afs32 \ltrch\fcs0 \b\f37\fs32\insrsid16285460 \loch\af37\dbch\af31505\hich\f37 \'e8}{\rtlch\fcs1 \ab\af37\afs32
\ltrch\fcs0 \b\f37\fs32\lang1033\langfe1049\langnp1033\insrsid16285460\charrsid13657442 \hich\af37\dbch\af31505\loch\f37 }{\rtlch\fcs1 \ab\af37\afs32 \ltrch\fcs0 \b\f37\fs32\insrsid16285460 \loch\af37\dbch\af31505\hich\f37 \'e8\'f5}{\rtlch\fcs1
\ab\af37\afs32 \ltrch\fcs0 \b\f37\fs32\lang1033\langfe1049\langnp1033\insrsid16285460\charrsid13657442 \hich\af37\dbch\af31505\loch\f37 }{\rtlch\fcs1 \ab\af37\afs32 \ltrch\fcs0 \b\f37\fs32\insrsid16285460 \loch\af37\dbch\af31505\hich\f37 \'f0\'e5\'f8\'e5
\'ed\'e8\loch\af37\dbch\af31505\hich\f37 \'ff}{\rtlch\fcs1 \ab\af37\afs32 \ltrch\fcs0 \b\f37\fs32\lang1033\langfe1049\langnp1033\insrsid16285460\charrsid13657442
\par }{\rtlch\fcs1 \ab\af37 \ltrch\fcs0 \b\f37\insrsid16285460 \loch\af37\dbch\af31505\hich\f37 \'ce\'f8\'e8\'e1\'ea\'e0}{\rtlch\fcs1 \ab\af37 \ltrch\fcs0 \b\f37\lang1033\langfe1049\langnp1033\insrsid16285460\charrsid13657442 \hich\af37\dbch\af31505\loch\f37
: Exception Details: }{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\lang1033\langfe1049\langnp1033\insrsid16285460\charrsid13657442 \hich\af37\dbch\af31505\loch\f37 RnD.Common.Exceptions.BusinessException: Database login on 'LLK-DEV}{\field{\*\fldinst {\rtlch\fcs1
\af37 \ltrch\fcs0 \f37\lang1033\langfe1049\langnp1033\insrsid16285460\charrsid13657442 \hich\af37\dbch\af31505\loch\f37 HYPERLINK "\\\\\\\\OpcenterRDnL'"}{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid13657442 {\*\datafield
00d0c9ea79f9bace118c8200aa004ba90b0200000003010000100000005c005c004f007000630065006e00740065007200520044006e004c0027000000000000}}}{\fldrslt {\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\lang1033\langfe1049\langnp1033\insrsid16285460\charrsid13657442 \\\\
\hich\af37\dbch\af31505\loch\f37 OpcenterRDnL'}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\lang1033\langfe1049\langnp1033\insrsid16285460\charrsid13657442 \hich\af37\dbch\af31505\loch\f37 failed for user ''!}{
\rtlch\fcs1 \ab\af37 \ltrch\fcs0 \b\f37\lang1033\langfe1049\langnp1033\insrsid16285460\charrsid13657442
\par }{\rtlch\fcs1 \ab\af37 \ltrch\fcs0 \b\f37\insrsid16285460 \loch\af37\dbch\af31505\hich\f37 \'d0\'e5\'f8\'e5\'ed\'e8\'e5\loch\f37 1: }{\rtlch\fcs1 \ab\af37 \ltrch\fcs0 \b\f37\insrsid16285460\charrsid13657442 \hich\af37\dbch\af31505\loch\f37 }{
\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460 \loch\af37\dbch\af31505\hich\f37 \'c8\'f1\'ea\'e0\'f2\'fc\loch\f37 \hich\f37 \'ee\'f8\'e8\'e1\'ea\loch\af37\dbch\af31505\hich\f37 \'f3\loch\f37 \hich\f37 \'e2\loch\f37 \hich\f37 \'f1\'f2\'f0\'ee\'ea
\'e5\loch\f37 \hich\f37 \'ef\'ee\'e4\'ea\'eb\'fe\'f7\'e5\'ed\'e8\'ff\loch\f37 \hich\f37 \'c1\'e0\'e7\'fb\loch\f37 \hich\f37 \'e4\'e0\'ed\'ed\'fb\'f5\loch\f37 \hich\f37 . \'ce\'f8\'e8\'e1\'ea\'e0\loch\f37 \hich\f37 \'ee\'e7\'ed\'e0\'f7\'e0\'e5\'f2
\loch\f37 \hich\f37 , \'f7\'f2\'ee\loch\f37 \hich\f37 \'e2\'e2\'e5\'e4\'e5\'ed\loch\f37 \hich\f37 \'ed\'e5\'ef\'f0\'e0\'e2\'e8\'eb\'fc\'ed\'fb\'e9\loch\f37 \hich\f37 \'eb\'ee\'e3\'e8\'ed\loch\f37 \hich\f37 \'e8\'eb\'e8\loch\f37 \hich\f37 \'ef\'e0\'f0
\'ee\'eb}{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid11086383 \loch\af37\dbch\af31505\hich\f37 \'fc}{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460 \hich\af37\dbch\af31505\loch\f37 .
\par }{\rtlch\fcs1 \ab\af37 \ltrch\fcs0 \b\f37\insrsid16285460 \loch\af37\dbch\af31505\hich\f37 \'d0\'e5\'f8\'e5\'ed\'e8\'e5\loch\f37 2:}{\rtlch\fcs1 \ab\af37 \ltrch\fcs0 \b\f37\insrsid16285460\charrsid13657442 \hich\af37\dbch\af31505\loch\f37 }{\rtlch\fcs1
\af37 \ltrch\fcs0 \f37\insrsid16285460 \loch\af37\dbch\af31505\hich\f37 \'cf\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'fc\loch\f37 \hich\f37 \'f1\loch\f37 \hich\f37 \'f3\'ea\'e0\'e7\'e0\'ed\'ed\'fb\'ec\'e8\loch\f37 \hich\f37 \'e0\'f3\'f2\'e5\'ed\'f2\'e8
\'f4\'e8\'ea\'e0\'f6\'e8\'ee\'ed\'ed\'fb\'ec\'e8\loch\f37 \hich\f37 \'e4\'e0\'ed\'ed\'fb\'ec\'e8\loch\f37 \hich\f37 \'ed\'e5\loch\f37 \hich\f37 \'e8\'ec\'e5\'e5\'f2\loch\f37 \hich\f37 \'ef\'f0\'e0\'e2\loch\f37 \hich\f37 \'ed\'e0\loch\f37 \hich\f37
\'ef\'f0\'ee\'f1\'ec\'ee\'f2\'f0\loch\f37 \hich\f37 \'e8\loch\f37 \hich\f37 \'e8\'ed\'e8\'f6\'e8\'e0\'eb\'e8\'e7\'e0\'f6\'e8\'fe\loch\f37 \hich\f37 \'e2\'fb\'e1\'f0\'e0\'ed\'ed\'ee\'e9\loch\f37 \hich\f37 \'e1\'e0\'e7\'fb\loch\f37 \hich\f37 \'e4\'e0
\'ed\'ed\'fb\'f5
\par }{\rtlch\fcs1 \ab\af37 \ltrch\fcs0 \b\f37\insrsid16285460 \loch\af37\dbch\af31505\hich\f37 \'d0\'e5\'f8\'e5\'ed\'e8\'e5\loch\f37 3: }{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460 \loch\af37\dbch\af31505\hich\f37 \'ce\'f8\'e8\'e1\'ea\'e0\loch\f37
\hich\f37 , \'ef\'ee\'eb\'f3\'f7\'e5\'ed\'ed\'e0\'ff\loch\f37 \hich\f37 \'e2\hich\af37\dbch\af31505\loch\f37 \hich\f37 \'f0\'e5\'e7\'f3\'eb\'fc\'f2\'e0\'f2\'e5\loch\f37 \hich\f37 \'e8\'ed\'e8\'f6\'e8\'e0\'eb\'e8\'e7\'e0\'f6\'e8\'e8\loch\f37 \hich\f37
\'ea\'ee\'eb\'e8\'f7\'e5\'f1\'f2\'e2\'e0\loch\f37 \hich\f37 \'eb\'e8\'f6\'e5\'ed\'e7\'e8\'e9\loch\f37 \hich\f37 . \'c4\'eb\'ff\loch\f37 }{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\lang1033\langfe1049\langnp1033\insrsid16285460 \hich\af37\dbch\af31505\loch\f37
LLK}{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460\charrsid13657442 -}{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\lang1033\langfe1049\langnp1033\insrsid16285460 \hich\af37\dbch\af31505\loch\f37 DEV}{\rtlch\fcs1 \af37 \ltrch\fcs0
\f37\insrsid16285460\charrsid13657442 \hich\af37\dbch\af31505\loch\f37 }{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460 \loch\af37\dbch\af31505\hich\f37 \'ed\'e5\'ee\'e1\'f5\'ee\'e4\'e8\'ec\'ee\loch\f37 \hich\f37 \'f3\'ea\'e0\'e7\'fb\'e2\'e0\'f2\'fc
\loch\f37 \hich\f37 \'e2\loch\f37 \hich\f37 \'ea\'e0\'f7\'e5\'f1\'f2\'e2\'e5\loch\f37 \hich\f37 \'f1\'e5\'f0\'e2\'e5\'f0\'e0\loch\f37 : "}{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\lang1033\langfe1049\langnp1033\insrsid16285460
\hich\af37\dbch\af31505\loch\f37 LLK}{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460\charrsid13657442 -}{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\lang1033\langfe1049\langnp1033\insrsid16285460 \hich\af37\dbch\af31505\loch\f37 DEV}{\rtlch\fcs1 \af37
\ltrch\fcs0 \f37\insrsid16285460 \\\hich\af37\dbch\af31505\loch\f37 \hich\f37 ", \'e0\loch\f37 \hich\f37 \'ed\'e5\loch\f37 }{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460\charrsid13657442 \hich\af37\dbch\af31505\loch\f37 "}{\rtlch\fcs1 \af37
\ltrch\fcs0 \f37\lang1033\langfe1049\langnp1033\insrsid16285460 \hich\af37\dbch\af31505\loch\f37 LLK}{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460\charrsid13657442 -}{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\lang1033\langfe1049\langnp1033\insrsid16285460
\hich\af37\dbch\af31505\loch\f37 DEV}{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460\charrsid13657442 \hich\af37\dbch\af31505\loch\f37 "}{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460 \hich\af37\dbch\af31505\loch\f37 \hich\f37 (\'ee\'f1\'ee\'e1
\'e5\'ed\'ed\'ee\'f1\'f2\'e8\loch\f37 \hich\f37 \'f1\'e8\'f1\'f2\'e5\'ec\'fb\loch\f37 )
\par
\par
\par }{\rtlch\fcs1 \ab\af37 \ltrch\fcs0 \b\f37\insrsid16285460 \loch\af37\dbch\af31505\hich\f37 \'ce\'f8\'e8\'e1\'ea\'e0}{\rtlch\fcs1 \ab\af37 \ltrch\fcs0 \b\f37\lang1033\langfe1049\langnp1033\insrsid16285460\charrsid13657442 \hich\af37\dbch\af31505\loch\f37
: }{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\lang1033\langfe1049\langnp1033\insrsid16285460\charrsid13657442 \hich\af37\dbch\af31505\loch\f37 Ninject.ActivationException: Error activating ICustomizationObjectFactory
\par \hich\af37\dbch\af31505\loch\f37 No matching bindings ar\hich\af37\dbch\af31505\loch\f37 e available, and the type is not self-bindable.
\par \hich\af37\dbch\af31505\loch\f37 Activation path: Request for ICustomizationObjectFactory
\par \hich\af37\dbch\af31505\loch\f37 Suggestions:
\par \hich\af37\dbch\af31505\loch\f37 1) Ensure that you have defined a binding for ICustomizationObjectFactory.
\par \hich\af37\dbch\af31505\loch\f37 2) If the binding was defined in a module, ensure that the \hich\af37\dbch\af31505\loch\f37 module has been loaded into the kernel.
\par \hich\af37\dbch\af31505\loch\f37 3) Ensure you have not accidentally created more than one kernel.
\par \hich\af37\dbch\af31505\loch\f37 4) If you are using constructor arguments, ensure that the parameter name matches the constructors parameter name.
\par \hich\af37\dbch\af31505\loch\f37 5) If you are using automatic module loading, ensure the search path and filters are correct.
\par }{\rtlch\fcs1 \ab\af37 \ltrch\fcs0 \b\f37\insrsid16285460 \loch\af37\dbch\af31505\hich\f37 \'cf\'f0\'e8\'f7\'e8\'ed\'e0\loch\f37 : }{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460 \loch\af37\dbch\af31505\hich\f37 \'cd\'e5\loch\f37 \hich\f37 \'f3\'e4
\'e0\'eb\'ee\'f1\'fc\loch\f37 \hich\f37 \'f1\'ee\'e7\'e4\'e0\'f2\'fc\loch\f37 \hich\f37 \'fd\'ea\'e7\'e5\'ec\'ef\'eb\'ff\'f0\loch\f37 }{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\lang1033\langfe1049\langnp1033\insrsid16285460 \hich\af37\dbch\af31505\loch\f37
API}{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460\charrsid13657442 .}{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460 \hich\af37\dbch\af31505\loch\f37 \line }{\rtlch\fcs1 \ab\af37 \ltrch\fcs0 \b\f37\insrsid16285460
\loch\af37\dbch\af31505\hich\f37 \'d0\'e5\'f8\'e5\'ed\'e8\'e5\loch\f37 : }{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460 \loch\af37\dbch\af31505\hich\f37 \'cf\'e5\'f0\'e5\'ed\'e5\'f1\'f2\'e8\loch\f37 \hich\f37 \'ef\'e0\'ef\'ea\'f3\loch\f37
BusinessLayerIoCSupport}{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460\charrsid13657442 \hich\af37\dbch\af31505\loch\f37 }{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460 \loch\af37\dbch\af31505\hich\f37 \'e2\loch\f37 \hich\f37 \'ea\'ee\'f0\'e5
\'ed\'fc\loch\f37 \hich\f37 \'f1\'e0\'e9\'f2\'e0\loch\f37 \hich\f37 , \'e0\loch\f37 \hich\f37 \'f2\'e0\'ea\loch\f37 \hich\f37 \'e6\'e5\loch\f37 \hich\f37 \'e2\loch\f37 \hich\f37 \'ef\'e0\'ef\'ea\'f3\loch\f37 }{\rtlch\fcs1 \af37 \ltrch\fcs0
\f37\lang1033\langfe1049\langnp1033\insrsid16285460 \hich\af37\dbch\af31505\loch\f37 bin}{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460\charrsid13657442 \hich\af37\dbch\af31505\loch\f37 }{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460
\loch\af37\dbch\af31505\hich\f37 \'f1\'e0\'e9\'f2\'e0\loch\f37 \hich\f37 , \'e2\loch\f37 }{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\lang1033\langfe1049\langnp1033\insrsid16285460 \hich\af37\dbch\af31505\loch\f37 IIS}{\rtlch\fcs1 \af37 \ltrch\fcs0
\f37\insrsid16285460\charrsid13657442 \hich\af37\dbch\af31505\loch\f37 }{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460 \loch\af37\dbch\af31505\hich\f37 \'f1\'e5\'f0\'e2\'e5\'f0\'e5
\par }{\rtlch\fcs1 \ab\af37 \ltrch\fcs0 \b\f37\insrsid16285460 \loch\af37\dbch\af31505\hich\f37 \'d1\'ee\'e4\'e5\'f0\'e6\'e8\'ec\'ee\loch\af37\dbch\af31505\hich\f37 \'e5\loch\f37 \hich\f37 \'ef\'e0\'ef\'ea\'e8\loch\f37 :\line \hich\f37 \'d4\'e0\'e9\'eb
\loch\f37 \hich\f37 : serviceLocatorConfiguration.xml, \'f1\'ee\loch\f37 \hich\f37 \'f1\'eb\'e5\'e4\'f3\'fe\'f9\'e8\'ec\loch\f37 \hich\f37 \'f1\'ee\'e4\'e5\'f0\'e6\'e8\'ec\'fb\'ec\loch\f37 :
\par }{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\lang1033\langfe1049\langnp1033\insrsid16285460\charrsid13657442 \hich\af37\dbch\af31505\loch\f37 <?xml version="1.0" encoding="utf-8"?>
\par \hich\af37\dbch\af31505\loch\f37 <module name="NewGeneration">
\par \tab \hich\af37\dbch\af31505\loch\f37 <bind name="FactoryObject"
\par \tab \tab \hich\af37\dbch\af31505\loch\f37 service="RnD.BusinessLayer.Interfaces.Factory.IEventAwareObjectFactory, RnD.Busine\hich\af37\dbch\af31505\loch\f37 ssLayer.Interfaces"
\par \tab \tab \hich\af37\dbch\af31505\loch\f37 to="RnD.BusinessLayer.EF.Factory.EventAwareObjectFactory, RnD.BusinessLayer.EF" />
\par \tab \hich\af37\dbch\af31505\loch\f37 <bind name="TransactionalFactoryObject"
\par \tab \tab \hich\af37\dbch\af31505\loch\f37 service="RnD.BusinessLayer.Interfaces.Factory.ITransactionalObjectFactory, RnD.BusinessLayer.Interfaces"
\par \tab \tab \hich\af37\dbch\af31505\loch\f37 to="RnD.BusinessLayer.EF.Factory.TransactionalObjectFactory, RnD.BusinessLayer.EF" />
\par \tab \hich\af37\dbch\af31505\loch\f37 <bind name="CustomizationFactory"
\par \tab \tab \hich\af37\dbch\af31505\loch\f37 service="RnD.ICustomizationObjectFactory, RnD.Customizations.Interfaces"
\par \tab \tab \hich\af37\dbch\af31505\loch\f37 to="RnD.CustomizationObjectFactory, RnD.Customiza\hich\af37\dbch\af31505\loch\f37 tions.API" />
\par \tab \hich\af37\dbch\af31505\loch\f37 <bind name="InterspecBusinessObjectFactory"
\par \tab \tab \hich\af37\dbch\af31505\loch\f37 service="RnD.BusinessLayer.Interfaces.Interspec.IInterspecBusinessObjectFactory, RnD.BusinessLayer.Interfaces"
\par \tab \tab \hich\af37\dbch\af31505\loch\f37 to="RnD.Interspec.EF.InterspecBusinessObjectFactory, RnD.Interspec.EF" />
\par
\par \tab \hich\af37\dbch\af31505\loch\f37 <b\hich\af37\dbch\af31505\loch\f37 ind name="FWBBusinessObjectFactory" service="RnD.BusinessLayer.Interfaces.FWB.Factory.IFWBBusinessObjectFactory, RnD.BusinessLayer.Interfaces"
\par \tab \tab \hich\af37\dbch\af31505\loch\f37 to="RnD.FormulaWorkbench.EF.Factory.FWBBusinessObjectFactory, RnD.FormulaWorkbench.EF"/>
\par }{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid16285460 \hich\af37\dbch\af31505\loch\f37 </module>\line }{\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\lang9\langfe1049\langnp9\insrsid16285460
\par }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a
9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad
5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6
b01d583deee5f99824e290b4ba3f364eac4a430883b3c092d4eca8f946c916422ecab927f52ea42b89a1cd59c254f919b0e85e6535d135a8de20f20b8c12c3b0
0c895fcf6720192de6bf3b9e89ecdbd6596cbcdd8eb28e7c365ecc4ec1ff1460f53fe813d3cc7f5b7f020000ffff0300504b030414000600080000002100a5d6
a7e7c0000000360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4f
c7060abb0884a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b6309512
0f88d94fbc52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462
a1a82fe353bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f746865
6d652f7468656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b
4b0d592c9c070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b
4757e8d3f729e245eb2b260a0238fd010000ffff0300504b030414000600080000002100507a8df2be070000fc200000160000007468656d652f7468656d652f
7468656d65312e786d6cec595f8f1bb7117f2f90efb0d87759ff76f5e760399056922ff69d6d58b2833cf2246a973eee5258527716020381f39497040192a00f
0dd0f6a50f41d103ea2241d1a05fe1f2190cd868d30fd12177a52525cabe3bb88051dc1d70b74bfd66f8e3cc706644defcf0694c9d139c72c2928e5bbd51711d
9c4cd8942461c77d341e965aaec3054aa688b20477dc25e6ee87b73ef8cd4db427221c6307e413be873a6e24c47caf5ce6131846fc069be3043e9bb13446025e
d3b03c4dd129e88d69b956a934ca312289eb242806b5e77f3cffdbf93fcecf9cfbb3199960f7d64aff80c22489e0726042d391d48e57427ff8e5f9f9d9f9cfe7
2fcecf7ef90c9e7f86ff5f29d9e971554af0250f68ea9c20da7161ea293b1de3a7c27528e2023ee8b815f5e3966fdd2ca3bd5c888a1db29adc50fde472b9c0f4
b8a6e64cc3a3f5a49ee77b8dee5abf0250b18d1b34078d4163ad4f01d064022bcfb8983a9bb5c0cbb11a287bb4e8ee37fbf5aa81d7f4d7b738777df96be01528
d3ef6de187c300ac68e01528c3fb5b78bfd7eef54dfd0a94e11b5bf866a5dbf79a867e058a28498eb7d015bf510f56ab5d43668cee5be16ddf1b366bb9f20205
d1b08e3639c58c25e2a2b117a3272c1d828014a44890c411cb399ea109047a8028394a897340c20802718e12c661b852ab0c2b75f82b7f3df5a43c8cf630d2a4
254f60c6b786243f874f5232171df70e687535c8ab9f7e7af9fcc5cbe73fbefcfcf397cfff92cfad541972fb280975b95ffff4f57fbeffccf9f75f7fffeb37df
66536fe2b98e7ffde72f5efffd9f6f520f2b2e4cf1eabbb3d72fce5efdf6cb7ffdf08d457b3745473a7c4c62cc9d7bf8d479c86258a0853f3e4a2f27318e10d1
25ba49c85182e42c16fd031119e87b4b449105d7c3a61d1fa7907a6cc0db8b2706e151942e04b168bc1bc506f09031da63a9d50a77e55c9a99c78b24b44f9e2e
74dc43844e6c73072831bc3c58cc2107139bca20c206cd071425028538c1c2919fb1638c2dabfb8410c3ae87649232ce66c2f984383d44ac26199323239a0aa1
7d12835f963682e06fc336878f9d1ea3b655f7f1898984bd81a885fc1853c38cb7d142a0d8a6728c62aa1bfc0089c84672b44c273a6ec005783ac494398329e6
dc26733f85f56a4ebf0b69c6eef643ba8c4d642ac8b14de701624c47f6d97110a1786ec38e4812e9d88ff8318428721e3061831f327387c877f0034a76bafb31
c186bbdf9e0d1e4186d5291501223f59a4165fdec6cc88dfd192ce10b6a59a6e1a1b29b69b126b74f416a111da071853748aa6183b8f3eb230e8b1b961f382f4
9d08b2ca3eb605d61d64c6aa7c4f30c78e6a76b6f3e401e146c88e70c876f0395c6e249e254a6294eed27c0fbcaedb7c00a52eb605c07d3a39d681f708b48910
2f56a3dce7a0430bee9d5a1f44c82860f29ddbe375991afebbc81e837df9c4a071817d0932f8d23290d8759937da668ca83141113063045d862ddd8288e1fe42
44165725b6b0cacdcc4d5bb801ba25a3e98949f2d60e68a3f7f1ff77bd0f7418af7ef7bd65b3bd9b7ec7aed8485697ec74762593fd8dfe66176eb3ab09583a25
ef7f53d3478be401863ab29db1ae7b9aeb9ec6fdbfef6976ede7eb4e6657bf71ddc9b8d0615c7732f9e1cabbe9648ae605fa1a79e0911dfca863a0f8c2a74033
42e9482c293ee0ea2088c3f79be91006a51e75488ad7a784f3081e65d983090d5c982225e3a44c7c4c44348ad01c4e8baaae5412f25c75c89d39e37088a486ad
ba259e2ee24336cd0e43ab5579f099555a8e44315ef1d7e37070253274a3591cf0add52bb6a13a985d1190b29721a14d6692a85b48345783d248ea18188c6621
a156f64e58b42d2c5a52fdca555b2c80dada2bf005dc81afed1dd7f7400484e07c0e9af5a9f453e6ea95779533dfa5a77719d3880068b857115078ba2db9ee5c
9e5c5d166a17f0b441420b379384b28c6af878045f8bf3e894a317a171595fb70b971af4a429d47c105a058d66eb4d2caeea6b90dbcc0d34d133054d9cd38edb
a8fb10321334efb833384486c7780eb1c3e577304443b8ac998834dbf057c92cf3948b3ee25166709574b26c101381538792b8e3cae5afdd4013954314b76a0d
12c27b4bae0d69e57d23074e379d8c67333c11badbb51169e9ec15327c962bac9f2af1ab83a5245b80bb47d1f4d439a28bf4218210f39b5569c029e1709750cd
ac39257059b64e6445fc6d14a63cedeab7552a86b27144e711ca2b8a9ecc33b84ae56b3aea6d6d03ed2d5f33185433495e088f42596075a31ad5745d35320e3b
abeedb85a4e5b4a459d44c23abc8aa69cf62c60cab32b061cbab15798dd5cac490d3f40a9fa5eecd94db5ee5ba8d3e615d25c0e06bfb59aaee050a8246ad98cc
a026196fa76199b3f351b376ac16f8166a1729125ad66facd46ed86d5d23acd3c1e0952a3fc86d462d0ccd567da6b2b4ba68d72fc2d9d113481e7de87a175470
e54ab8d64e11344423d593646903b6c853916f0d78721629e9b89f56fcae17d4fca05469f9839257f72aa596dfad97babe5faf0efc6aa5dfab3d83c222a2b8ea
6797fc43b8d0a0cbfcaa5f8d6f5df7c7ab3b9b1b13169799bac52f2be2eababf5a33aefbb35b7e672c2ff35d8740d2f9b4511bb6ebed5ea3d4ae778725afdf6b
95da41a357ea3782667fd80ffc567bf8cc754e14d8ebd603af3168951ad52028798d8aa4df6a979a5eadd6f59addd6c0eb3ecbdb185879963e725b807915af5b
ff050000ffff0300504b0304140006000800000021000dd1909fb60000001b010000270000007468656d652f7468656d652f5f72656c732f7468656d654d616e
616765722e786d6c2e72656c73848f4d0ac2301484f78277086f6fd3ba109126dd88d0add40384e4350d363f2451eced0dae2c082e8761be9969bb979dc91363
32de3168aa1a083ae995719ac16db8ec8e4052164e89d93b64b060828e6f37ed1567914b284d262452282e3198720e274a939cd08a54f980ae38a38f56e422a3
a641c8bbd048f7757da0f19b017cc524bd62107bd5001996509affb3fd381a89672f1f165dfe514173d9850528a2c6cce0239baa4c04ca5bbabac4df000000ff
ff0300504b01022d0014000600080000002100e9de0fbfff0000001c0200001300000000000000000000000000000000005b436f6e74656e745f54797065735d
2e786d6c504b01022d0014000600080000002100a5d6a7e7c0000000360100000b00000000000000000000000000300100005f72656c732f2e72656c73504b01
022d00140006000800000021006b799616830000008a0000001c00000000000000000000000000190200007468656d652f7468656d652f7468656d654d616e61
6765722e786d6c504b01022d0014000600080000002100507a8df2be070000fc2000001600000000000000000000000000d60200007468656d652f7468656d65
2f7468656d65312e786d6c504b01022d00140006000800000021000dd1909fb60000001b0100002700000000000000000000000000c80a00007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d010000c30b00000000}
{\*\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d
617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169
6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363
656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e}
{\*\latentstyles\lsdstimax375\lsdlockeddef0\lsdsemihiddendef0\lsdunhideuseddef0\lsdqformatdef0\lsdprioritydef99{\lsdlockedexcept \lsdqformat1 \lsdpriority0 \lsdlocked0 Normal;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 1;
\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 2;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 3;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 4;
\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 5;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 6;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 7;
\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 8;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 1;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 5;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 6;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 9;
\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 1;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 2;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 3;
\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 4;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 5;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 6;
\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 7;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 8;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal Indent;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 header;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footer;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index heading;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority35 \lsdlocked0 caption;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of figures;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope address;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope return;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation reference;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 line number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 page number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote text;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of authorities;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 macro;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 toa heading;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 3;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 3;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 3;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 5;\lsdqformat1 \lsdpriority10 \lsdlocked0 Title;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Closing;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Signature;\lsdsemihidden1 \lsdunhideused1 \lsdpriority1 \lsdlocked0 Default Paragraph Font;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 4;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Message Header;\lsdqformat1 \lsdpriority11 \lsdlocked0 Subtitle;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Salutation;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Date;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Note Heading;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 3;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Block Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Hyperlink;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 FollowedHyperlink;\lsdqformat1 \lsdpriority22 \lsdlocked0 Strong;
\lsdqformat1 \lsdpriority20 \lsdlocked0 Emphasis;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Document Map;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Plain Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 E-mail Signature;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Top of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Bottom of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal (Web);\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Acronym;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Address;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Cite;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Code;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Definition;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Keyboard;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Preformatted;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Sample;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Typewriter;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Variable;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation subject;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 No List;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 1;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Balloon Text;\lsdpriority39 \lsdlocked0 Table Grid;
\lsdsemihidden1 \lsdlocked0 Placeholder Text;\lsdqformat1 \lsdpriority1 \lsdlocked0 No Spacing;\lsdpriority60 \lsdlocked0 Light Shading;\lsdpriority61 \lsdlocked0 Light List;\lsdpriority62 \lsdlocked0 Light Grid;
\lsdpriority63 \lsdlocked0 Medium Shading 1;\lsdpriority64 \lsdlocked0 Medium Shading 2;\lsdpriority65 \lsdlocked0 Medium List 1;\lsdpriority66 \lsdlocked0 Medium List 2;\lsdpriority67 \lsdlocked0 Medium Grid 1;\lsdpriority68 \lsdlocked0 Medium Grid 2;
\lsdpriority69 \lsdlocked0 Medium Grid 3;\lsdpriority70 \lsdlocked0 Dark List;\lsdpriority71 \lsdlocked0 Colorful Shading;\lsdpriority72 \lsdlocked0 Colorful List;\lsdpriority73 \lsdlocked0 Colorful Grid;\lsdpriority60 \lsdlocked0 Light Shading Accent 1;
\lsdpriority61 \lsdlocked0 Light List Accent 1;\lsdpriority62 \lsdlocked0 Light Grid Accent 1;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 1;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 1;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 1;
\lsdsemihidden1 \lsdlocked0 Revision;\lsdqformat1 \lsdpriority34 \lsdlocked0 List Paragraph;\lsdqformat1 \lsdpriority29 \lsdlocked0 Quote;\lsdqformat1 \lsdpriority30 \lsdlocked0 Intense Quote;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 1;
\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 1;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 1;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 1;\lsdpriority70 \lsdlocked0 Dark List Accent 1;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 1;
\lsdpriority72 \lsdlocked0 Colorful List Accent 1;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 1;\lsdpriority60 \lsdlocked0 Light Shading Accent 2;\lsdpriority61 \lsdlocked0 Light List Accent 2;\lsdpriority62 \lsdlocked0 Light Grid Accent 2;
\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 2;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 2;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 2;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 2;
\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 2;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 2;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 2;\lsdpriority70 \lsdlocked0 Dark List Accent 2;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 2;
\lsdpriority72 \lsdlocked0 Colorful List Accent 2;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 2;\lsdpriority60 \lsdlocked0 Light Shading Accent 3;\lsdpriority61 \lsdlocked0 Light List Accent 3;\lsdpriority62 \lsdlocked0 Light Grid Accent 3;
\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 3;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 3;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 3;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 3;
\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 3;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 3;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 3;\lsdpriority70 \lsdlocked0 Dark List Accent 3;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 3;
\lsdpriority72 \lsdlocked0 Colorful List Accent 3;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 3;\lsdpriority60 \lsdlocked0 Light Shading Accent 4;\lsdpriority61 \lsdlocked0 Light List Accent 4;\lsdpriority62 \lsdlocked0 Light Grid Accent 4;
\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 4;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 4;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 4;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 4;
\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 4;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 4;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 4;\lsdpriority70 \lsdlocked0 Dark List Accent 4;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 4;
\lsdpriority72 \lsdlocked0 Colorful List Accent 4;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 4;\lsdpriority60 \lsdlocked0 Light Shading Accent 5;\lsdpriority61 \lsdlocked0 Light List Accent 5;\lsdpriority62 \lsdlocked0 Light Grid Accent 5;
\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 5;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 5;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 5;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 5;
\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 5;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 5;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 5;\lsdpriority70 \lsdlocked0 Dark List Accent 5;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 5;
\lsdpriority72 \lsdlocked0 Colorful List Accent 5;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 5;\lsdpriority60 \lsdlocked0 Light Shading Accent 6;\lsdpriority61 \lsdlocked0 Light List Accent 6;\lsdpriority62 \lsdlocked0 Light Grid Accent 6;
\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 6;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 6;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 6;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 6;
\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 6;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 6;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 6;\lsdpriority70 \lsdlocked0 Dark List Accent 6;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 6;
\lsdpriority72 \lsdlocked0 Colorful List Accent 6;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 6;\lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis;\lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis;
\lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference;\lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference;\lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdsemihidden1 \lsdunhideused1 \lsdpriority37 \lsdlocked0 Bibliography;
\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;\lsdpriority41 \lsdlocked0 Plain Table 1;\lsdpriority42 \lsdlocked0 Plain Table 2;\lsdpriority43 \lsdlocked0 Plain Table 3;\lsdpriority44 \lsdlocked0 Plain Table 4;
\lsdpriority45 \lsdlocked0 Plain Table 5;\lsdpriority40 \lsdlocked0 Grid Table Light;\lsdpriority46 \lsdlocked0 Grid Table 1 Light;\lsdpriority47 \lsdlocked0 Grid Table 2;\lsdpriority48 \lsdlocked0 Grid Table 3;\lsdpriority49 \lsdlocked0 Grid Table 4;
\lsdpriority50 \lsdlocked0 Grid Table 5 Dark;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 1;
\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 1;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 1;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 1;
\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 1;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 2;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 2;
\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 2;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 2;
\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 3;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 3;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 3;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 3;
\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 3;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 4;
\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 4;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 4;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 4;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 4;
\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 4;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 5;
\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 5;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 5;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 5;
\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 5;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 6;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 6;
\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 6;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 6;
\lsdpriority46 \lsdlocked0 List Table 1 Light;\lsdpriority47 \lsdlocked0 List Table 2;\lsdpriority48 \lsdlocked0 List Table 3;\lsdpriority49 \lsdlocked0 List Table 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark;
\lsdpriority51 \lsdlocked0 List Table 6 Colorful;\lsdpriority52 \lsdlocked0 List Table 7 Colorful;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 List Table 2 Accent 1;\lsdpriority48 \lsdlocked0 List Table 3 Accent 1;
\lsdpriority49 \lsdlocked0 List Table 4 Accent 1;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 1;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 1;
\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 List Table 2 Accent 2;\lsdpriority48 \lsdlocked0 List Table 3 Accent 2;\lsdpriority49 \lsdlocked0 List Table 4 Accent 2;
\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 2;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 3;
\lsdpriority47 \lsdlocked0 List Table 2 Accent 3;\lsdpriority48 \lsdlocked0 List Table 3 Accent 3;\lsdpriority49 \lsdlocked0 List Table 4 Accent 3;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 3;
\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 4;\lsdpriority47 \lsdlocked0 List Table 2 Accent 4;
\lsdpriority48 \lsdlocked0 List Table 3 Accent 4;\lsdpriority49 \lsdlocked0 List Table 4 Accent 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 4;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 4;
\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 List Table 2 Accent 5;\lsdpriority48 \lsdlocked0 List Table 3 Accent 5;
\lsdpriority49 \lsdlocked0 List Table 4 Accent 5;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 5;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 5;
\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 List Table 2 Accent 6;\lsdpriority48 \lsdlocked0 List Table 3 Accent 6;\lsdpriority49 \lsdlocked0 List Table 4 Accent 6;
\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 6;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Mention;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Smart Hyperlink;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Hashtag;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Unresolved Mention;}}{\*\datastore 010500000200000018000000
4d73786d6c322e534158584d4c5265616465722e362e3000000000000000000000060000
d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
fffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e5000000000000000000000000d0c2
87a3912eda01feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000105000000000000}}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment