Initial commit of mostly working desktop portT

This commit is contained in:
Matt Nadareski
2016-03-18 01:17:39 -07:00
commit 88635341aa
102 changed files with 293238 additions and 0 deletions

4
.gitignore vendored Normal file
View File

@@ -0,0 +1,4 @@
.vs
basetables
DATabase\bin
DATabase\obj

22
DATabase.sln Normal file
View File

@@ -0,0 +1,22 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.23107.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DATabase", "DATabase\DATabase.csproj", "{3B615702-1866-4D7B-8AF1-7B43FD0CC1D0}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{3B615702-1866-4D7B-8AF1-7B43FD0CC1D0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3B615702-1866-4D7B-8AF1-7B43FD0CC1D0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3B615702-1866-4D7B-8AF1-7B43FD0CC1D0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3B615702-1866-4D7B-8AF1-7B43FD0CC1D0}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

27
DATabase/App.config Normal file
View File

@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v12.0" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
</providers>
</entityFramework>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite.EF6" />
<add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".NET Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" />
<remove invariant="System.Data.SQLite" /><add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".NET Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" /></DbProviderFactories>
</system.data>
</configuration>

95
DATabase/DATabase.csproj Normal file
View File

@@ -0,0 +1,95 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{3B615702-1866-4D7B-8AF1-7B43FD0CC1D0}</ProjectGuid>
<OutputType>Exe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>DATabase</RootNamespace>
<AssemblyName>DATabase</AssemblyName>
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>..\packages\EntityFramework.6.0.0\lib\net45\EntityFramework.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>..\packages\EntityFramework.6.0.0\lib\net45\EntityFramework.SqlServer.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System" />
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.Core" />
<Reference Include="System.Data.SQLite, Version=1.0.99.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
<HintPath>..\packages\System.Data.SQLite.Core.1.0.99.0\lib\net451\System.Data.SQLite.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System.Data.SQLite.EF6, Version=1.0.99.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
<HintPath>..\packages\System.Data.SQLite.EF6.1.0.99.0\lib\net451\System.Data.SQLite.EF6.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System.Data.SQLite.Linq, Version=1.0.99.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
<HintPath>..\packages\System.Data.SQLite.Linq.1.0.99.0\lib\net451\System.Data.SQLite.Linq.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System.Web" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Generate.cs" />
<Compile Include="Importer.cs" />
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Remapping.cs" />
<Compile Include="Style.cs" />
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="..\packages\System.Data.SQLite.Core.1.0.99.0\build\net451\System.Data.SQLite.Core.targets" Condition="Exists('..\packages\System.Data.SQLite.Core.1.0.99.0\build\net451\System.Data.SQLite.Core.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\System.Data.SQLite.Core.1.0.99.0\build\net451\System.Data.SQLite.Core.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\System.Data.SQLite.Core.1.0.99.0\build\net451\System.Data.SQLite.Core.targets'))" />
</Target>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

331
DATabase/Generate.cs Normal file
View File

@@ -0,0 +1,331 @@
using System;
using System.Collections.Generic;
using System.Data.SQLite;
using System.IO;
using System.Text.RegularExpressions;
using System.Web;
namespace DATabase
{
class Generate
{
// Private instance variables
private int _system;
private int _source;
private string _connectionString;
private bool _old;
// Private required variables
private Dictionary<int, string> _headers;
// Public instance variables
public int System
{
get { return _system; }
}
public int Source
{
get { return _source; }
}
public Generate(int system, int source, string connectionString, bool old = false)
{
_system = system;
_source = source;
_connectionString = connectionString;
_old = old;
_headers = new Dictionary<int, string>();
_headers.Add(25, "a7800.xml");
_headers.Add(228, "fds.xml");
_headers.Add(31, "lynx.xml");
_headers.Add(0, "mega.xml"); // Merged version of all other headers
_headers.Add(234, "n64.xml");
_headers.Add(238, "nes.xml");
_headers.Add(241, "snes.xml"); // Self-created to deal with various headers
}
public bool Export()
{
// Get the system name, if applicable
string systemname = "ALL";
if (_system != -1)
{
string query = "SELECT manufacturer, system FROM systems WHERE id=" + _system;
using (SQLiteConnection dbc = new SQLiteConnection(_connectionString))
{
dbc.Open();
using (SQLiteCommand slc = new SQLiteCommand(query, dbc))
{
using (SQLiteDataReader sldr = slc.ExecuteReader())
{
// If there are no games for this combination, return nothing
if (!sldr.HasRows)
{
Console.WriteLine("No system could be found with id " + _system + ". Please check and try again.");
return false;
}
// Retieve and build the system name
sldr.Read();
systemname = sldr.GetString(0) + " - " + sldr.GetString(1);
}
}
}
}
string sourcename = "Merged";
if (_source != -1)
{
string query = "SELECT name FROM sources WHERE id=" + _source;
using (SQLiteConnection dbc = new SQLiteConnection(_connectionString))
{
dbc.Open();
using (SQLiteCommand slc = new SQLiteCommand(query, dbc))
{
using (SQLiteDataReader sldr = slc.ExecuteReader())
{
// If there are no games for this combination, return nothing
if (!sldr.HasRows)
{
Console.WriteLine("No source could be found with id " + _source + ". Please check and try again.");
return false;
}
// Retieve and build the system name
sldr.Read();
sourcename = sldr.GetString(0);
}
}
}
}
// Retrieve the list of processed roms
List<RomData> roms = ProcessRoms();
// Create a name for the file based on the retrieved information
string version = DateTime.Now.ToString("yyyyMMddHHmmss");
string datname = systemname + " (" + sourcename + " " + version + ")";
// Create and open an output file for writing (currently uses current time, change to "last updated time"
Console.WriteLine("Opening file for writing: " + datname + (_old ? ".dat" : ".xml"));
try
{
FileStream fs = File.Create(datname + (_old ? ".dat" : ".xml"));
StreamWriter sw = new StreamWriter(fs);
// Temporarilly set _system if we're in MEGAMERGED mode to get the right header skip XML
if (_system == -1 && _source == -1)
{
_system = 0;
}
string header_old = "clrmamepro (\n" +
"\tname \"" + HttpUtility.HtmlEncode(datname) + "\"\n" +
"\tdescription \"" + HttpUtility.HtmlEncode(datname) + "\"\n" +
"\tversion \"" + version + "\"\n" +
(_system >= 0 && _headers.ContainsKey(_system) ? " header \"" + _headers[_system] + "\"\n" : "") +
"\tcomment \"\"\n" +
"\tauthor \"The Wizard of DATz\"\n" +
")\n";
string header = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<!DOCTYPE datafile PUBLIC \"-//Logiqx//DTD ROM Management Datafile//EN\" \"http://www.logiqx.com/Dats/datafile.dtd\">\n\n" +
"\t<datafile>\n" +
"\t\t<header>\n" +
"\t\t\t<name>" + HttpUtility.HtmlEncode(datname) + "</name>\n" +
"\t\t\t<description>" + HttpUtility.HtmlEncode(datname) + "</description>\n" +
"\t\t\t<category>The Wizard of DATz</category>\n" +
"\t\t\t<version>" + version + "</version>\n" +
"\t\t\t<date>" + version + "</date>\n" +
"\t\t\t<author>The Wizard of DATz</author>\n" +
"\t\t\t<clrmamepro" + (_system >= 0 && _headers.ContainsKey(_system) ? " header=\"" + _headers[_system] + "\"" : "") + "/>\n" +
"\t\t</header>\n";
// Unset _system again if we're in MEGAMERGED mode
if (_system == 0 && _source == -1)
{
_system = -1;
}
// Write the header out
sw.Write((_old ? header_old : header));
// Write out each of the machines and roms
string lastgame = "";
foreach (RomData rom in roms)
{
string state = "";
if (lastgame != "" && lastgame != rom.Game)
{
state += (_old ? "}\n" : "\t</machine>\n");
}
if (lastgame != rom.Game)
{
state += (_old ? "game (\n\tname \"" + rom.Game + "\"\n" :
"\t<machine name=\"" + HttpUtility.HtmlEncode(rom.Game) + "\">\n" +
"\t\t<description>" + HttpUtility.HtmlEncode(rom.Game) + "</description>\n");
}
if (_old)
{
state += "\t" + rom.Type + " ( name \"" + rom.Name + "\"" +
(rom.Size != 0 ? " size " + rom.Size : "") +
(rom.CRC != "" ? " crc " + rom.CRC : "") +
(rom.MD5 != "" ? " md5 " + rom.MD5 : "") +
(rom.SHA1 != "" ? " sha1 " + rom.SHA1 : "") +
" )\n";
}
else
{
state += "\t\t<" + rom.Type + " name=\"" + HttpUtility.HtmlEncode(rom.Name) + "\"" +
(rom.Size != -1 ? " size=\"" + rom.Size + "\"" : "") +
(rom.CRC != "" ? " crc=\"" + rom.CRC + "\"" : "") +
(rom.MD5 != "" ? " md5=\"" + rom.MD5 + "\"" : "") +
(rom.SHA1 != "" ? " sha1=\"" + rom.SHA1 + "\"" : "") +
" />\n";
}
lastgame = HttpUtility.HtmlEncode(rom.Game);
sw.Write(state);
}
sw.Write((_old ? ")" : "\t</machine>\n</datafile>"));
Console.WriteLine("File written!");
sw.Close();
fs.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex);
return false;
}
return true;
}
public List<RomData> ProcessRoms()
{
List<RomData> roms = new List<RomData>();
// Check if we're in a merged mode
bool sysmerged = (_system == -1);
bool srcmerged = (_source == -1);
bool merged = sysmerged || srcmerged;
string query = @"
SELECT systems.manufacturer AS manufacturer, systems.system AS system, systems.id AS systemid,
sources.name AS source, sources.url AS url, sources.id AS sourceid,
games.name AS game, files.name AS name, files.type AS type, checksums.size AS size, checksums.crc AS crc,
checksums.md5 AS md5, checksums.sha1 AS sha1
FROM systems
JOIN games
ON systems.id=games.system
JOIN sources
ON games.source=sources.id
JOIN files
ON games.id=files.setid
JOIN checksums
ON files.id=checksums.file" +
(!sysmerged || !srcmerged ? "\nWHERE" : "") +
(!srcmerged ? " sources.id=" + _source : "") +
(!srcmerged && !sysmerged ? " AND" : "") +
(!sysmerged ? " systems.id=" + _system : "") +
(merged ? " GROUP BY checksums.size, checksums.crc, checksums.md5, checksums.sha1" : "") +
"\nORDER BY systems.id, sources.id, games.name, files.name";
using (SQLiteConnection dbc = new SQLiteConnection(_connectionString))
{
dbc.Open();
using (SQLiteCommand slc = new SQLiteCommand(query, dbc))
{
using (SQLiteDataReader sldr = slc.ExecuteReader())
{
// If there are no games for this combination, return nothing
if (!sldr.HasRows)
{
Console.WriteLine("No games could be found with those inputs. Please check and try again.");
return null;
}
// Retrieve and process the roms
string lastname = "", lastgame = "";
while (sldr.Read())
{
RomData temp = new RomData();
temp.Manufacturer = sldr.GetString(0);
temp.System = sldr.GetString(1);
temp.SystemID = sldr.GetInt32(2);
temp.Source = sldr.GetString(3);
temp.URL = sldr.GetString(4);
temp.SourceID = sldr.GetInt32(5);
temp.Game = sldr.GetString(6);
temp.Name = sldr.GetString(7);
temp.Type = sldr.GetString(8);
temp.Size = sldr.GetInt32(9);
temp.CRC = sldr.GetString(10);
temp.MD5 = sldr.GetString(11);
temp.SHA1 = sldr.GetString(12);
// If we're in merged mode, rename the game associated
if (merged)
{
temp.Game = temp.Game +
(sysmerged ? " [" + temp.Manufacturer + " - " + temp.System + "]" : "") +
(srcmerged ? " [" + temp.Source + "]" : "");
}
// Now relable any roms that have the same name inside of the same game
bool samename = false, samegame = false;
if (temp.Name != "")
{
samename = (lastname == temp.Name);
}
if (temp.Game != "")
{
samegame = (lastgame == temp.Game);
}
lastname = temp.Name;
lastgame = temp.Game;
// If the name and set are the same, rename it with whatever is different
if (samename && samegame)
{
temp.Name = Regex.Replace(temp.Name, @"^(.*)(\..*)", "$1 (" +
(temp.CRC != "" ? temp.CRC :
(temp.MD5 != "" ? temp.MD5 :
(temp.SHA1 != "" ? temp.SHA1 : "Alt"))) +
")$2");
}
roms.Add(temp);
}
}
}
}
return roms;
}
}
// Intermediate struct for holding and processing rom data
public struct RomData
{
public string Manufacturer;
public string System;
public int SystemID;
public string Source;
public string URL;
public int SourceID;
public string Game;
public string Name;
public string Type;
public int Size;
public string CRC;
public string MD5;
public string SHA1;
}
}

580
DATabase/Importer.cs Normal file
View File

@@ -0,0 +1,580 @@
using System;
using System.Data.SQLite;
using System.IO;
using System.Text.RegularExpressions;
using System.Xml;
using System.Reflection;
namespace DATabase
{
public class Importer
{
// Private instance variables
private string _filepath;
private string _connectionString;
// Regex File Name Patterns
private static string _defaultPattern = @"^(.+?) - (.+?) \((.*) (.*)\)\.dat$";
private static string _mamePattern = @"^(.*)\.xml$";
private static string _nointroPattern = @"^(.*?) \((\d{8}-\d{6})_CM\)\.dat$";
private static string _redumpPattern = @"^(.*?) \((\d{8} \d{2}-\d{2}-\d{2})\)\.dat$";
private static string _tosecPattern = @"^(.*?) - .* \(TOSEC-v(\d{4}-\d{2}-\d{2})_CM\)\.dat$";
private static string _truripPattern = @"^(.*?) - .* \(trurip_XML\)\.dat$";
// Regex Mapped Name Patterns
private static string _remappedPattern = @"^(.*) - (.*)$";
// Regex Date Patterns
private static string _defaultDatePattern = @"(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})";
private static string _nointroDatePattern = @"(\d{4})(\d{2})(\d{2})-(\d{2})(\d{2})(\d{2})";
private static string _redumpDatePattern = @"(\d{4})(\d{2})(\d{2}) (\d{2})-(\d{2})-(\d{2})";
private static string _tosecDatePattern = @"(\d{4})-(\d{2})-(\d{2}))";
private enum DatType
{
none = 0,
custom,
mame,
nointro,
redump,
tosec,
trurip,
}
// Public instance variables
public string FilePath
{
get { return _filepath; }
}
// Constructor
public Importer(string filepath, string connectionString)
{
if (File.Exists(filepath))
{
_filepath = filepath;
}
else
{
throw new IOException("File " + filepath + " does not exist!");
}
_connectionString = connectionString;
}
// Import the data from file into the database
public bool ImportData ()
{
// Determine which dattype we have
string filename = Path.GetFileName(_filepath);
GroupCollection fileinfo;
DatType type = DatType.none;
if (Regex.IsMatch(filename, _mamePattern))
{
fileinfo = Regex.Match(filename, _mamePattern).Groups;
type = DatType.mame;
}
else if (Regex.IsMatch(filename, _nointroPattern))
{
fileinfo = Regex.Match(filename, _nointroPattern).Groups;
type = DatType.nointro;
}
else if (Regex.IsMatch(filename, _redumpPattern))
{
fileinfo = Regex.Match(filename, _redumpPattern).Groups;
type = DatType.redump;
}
else if (Regex.IsMatch(filename, _tosecPattern))
{
fileinfo = Regex.Match(filename, _tosecPattern).Groups;
type = DatType.tosec;
}
else if (Regex.IsMatch(filename, _truripPattern))
{
fileinfo = Regex.Match(filename, _truripPattern).Groups;
type = DatType.trurip;
}
else if (Regex.IsMatch(filename, _defaultPattern))
{
fileinfo = Regex.Match(filename, _defaultPattern).Groups;
type = DatType.custom;
}
// If the type is still unmatched, the data can't be imported yet
else
{
Console.WriteLine("File " + filename + " cannot be imported at this time.");
return false;
}
// Check for and extract import information from the file name based on type
string manufacturer = "";
string system = "";
string source = "";
string datestring = "";
string date = "";
switch (type)
{
case DatType.mame:
GroupCollection mameInfo = Regex.Match(Remapping.MAME[fileinfo[1].Value], _remappedPattern).Groups;
manufacturer = mameInfo[1].Value;
system = mameInfo[2].Value;
source = "MAME";
date = File.GetLastWriteTime(_filepath).ToString("Y-m-d G:i:s");
break;
case DatType.nointro:
GroupCollection nointroInfo = Regex.Match(Remapping.NoIntro[fileinfo[1].Value], _remappedPattern).Groups;
manufacturer = nointroInfo[1].Value;
system = nointroInfo[2].Value;
source = "no-Intro";
datestring = fileinfo[2].Value;
GroupCollection niDateInfo = Regex.Match(datestring, _nointroDatePattern).Groups;
date = niDateInfo[1].Value + "-" + niDateInfo[2].Value + "-" + niDateInfo[3].Value + " " +
niDateInfo[4].Value + ":" + niDateInfo[5].Value + ":" + niDateInfo[6].Value;
break;
case DatType.redump:
GroupCollection redumpInfo = Regex.Match(Remapping.Redump[fileinfo[1].Value], _remappedPattern).Groups;
manufacturer = redumpInfo[1].Value;
system = redumpInfo[2].Value;
source = "Redump";
datestring = fileinfo[2].Value;
GroupCollection rdDateInfo = Regex.Match(datestring, _redumpDatePattern).Groups;
date = rdDateInfo[1].Value + "-" + rdDateInfo[2].Value + "-" + rdDateInfo[3].Value + " " +
rdDateInfo[4].Value + ":" + rdDateInfo[5].Value + ":" + rdDateInfo[6].Value;
break;
case DatType.tosec:
GroupCollection tosecInfo = Regex.Match(Remapping.TOSEC[fileinfo[1].Value], _remappedPattern).Groups;
manufacturer = tosecInfo[1].Value;
system = tosecInfo[2].Value;
source = "TOSEC";
datestring = fileinfo[2].Value;
GroupCollection toDateInfo = Regex.Match(datestring, _tosecDatePattern).Groups;
date = toDateInfo[1].Value + "-" + toDateInfo[2].Value + "-" + toDateInfo[3].Value + " 00:00:00";
break;
case DatType.trurip:
GroupCollection truripInfo = Regex.Match(Remapping.TruRip[fileinfo[1].Value], _remappedPattern).Groups;
manufacturer = truripInfo[1].Value;
system = truripInfo[2].Value;
source = "trurip";
date = File.GetLastWriteTime(_filepath).ToString("Y-m-d G:i:s");
break;
case DatType.custom:
default:
manufacturer = fileinfo[1].Value;
system = fileinfo[2].Value;
source = fileinfo[3].Value;
datestring = fileinfo[4].Value;
GroupCollection cDateInfo = Regex.Match(datestring, _defaultDatePattern).Groups;
date = cDateInfo[1].Value + "-" + cDateInfo[2].Value + "-" + cDateInfo[3].Value + " " +
cDateInfo[4].Value + ":" + cDateInfo[5].Value + ":" + cDateInfo[6].Value;
break;
}
/*
Console.WriteLine(manufacturer + " - " + system + " (" + source + " " + date + ")");
return true;
*/
// Check to make sure that the manufacturer and system are valid according to the database
int sysid = -1;
string query = "SELECT id FROM systems WHERE manufacturer='" + manufacturer + "' AND system='" + system +"'";
using (SQLiteConnection dbc = new SQLiteConnection(_connectionString))
{
dbc.Open();
using (SQLiteCommand slc = new SQLiteCommand(query, dbc))
{
using (SQLiteDataReader sldr = slc.ExecuteReader())
{
// If nothing is found, tell the user and exit
if (!sldr.HasRows)
{
Console.WriteLine("Error: No suitable system found! Please add the system and then try again.");
return false;
}
// Set the system ID from the first found value
sldr.Read();
sysid = sldr.GetInt32(0);
}
}
}
// Check to make sure that the source is valid according to the database
int srcid = -1;
query = "SELECT id FROM sources WHERE name='" + source + "'";
using (SQLiteConnection dbc = new SQLiteConnection(_connectionString))
{
dbc.Open();
using (SQLiteCommand slc = new SQLiteCommand(query, dbc))
{
using (SQLiteDataReader sldr = slc.ExecuteReader())
{
// If nothing is found, tell the user and exit
if (!sldr.HasRows)
{
Console.WriteLine("Error: No suitable source found! Please add the source and then try again.");
return false;
}
// Set the source ID from the first found value
sldr.Read();
srcid = sldr.GetInt32(0);
}
}
}
// Attempt to open the given file
StreamReader sr;
try
{
FileStream fs = File.OpenRead(_filepath);
sr = new StreamReader(fs);
}
catch (Exception ex)
{
Console.WriteLine(ex);
return false;
}
// Set necessary dat values
string format = "";
bool machinefound = false;
string machinename = "";
string description = "";
long gameid = 0;
bool comment = false;
// Parse the file for its rom information
while (sr.Peek() > 0)
{
string line = sr.ReadLine();
// First each string has to be normalized
line = Style.NormalizeChars(line);
// If the input style hasn't been set, set it according to the header
if (format == "")
{
if (line.IndexOf("<!DOCTYPE datafile") != -1)
{
format = "logiqx";
}
else if (line.IndexOf("<!DOCTYPE softwarelist") != -1)
{
format = "softwarelist";
}
else if (line.IndexOf("clrmamepro (") != -1 || line.IndexOf("romvault (") != -1)
{
format = "romvault";
}
else
{
format = "unknown";
}
}
// If there's an XML-style comment, stop the presses and skip until it's over
else if (line.IndexOf("-->") != -1)
{
comment = false;
}
else if (line.IndexOf("<!--") != -1)
{
comment = true;
}
// Process Logiqx XML-derived DATs
else if(format == "logiqx" && !comment)
{
if (line.IndexOf("<machine") != -1 || line.IndexOf("<game") != -1)
{
machinefound = true;
XmlReader xml = XmlReader.Create(new StringReader(line + (line.IndexOf("<machine") != -1 ? "</machine>" : "</game>")));
machinename = xml.GetAttribute("name");
gameid = AddGame(sysid, machinename, srcid);
}
else if (line.IndexOf("<rom") != -1 && machinefound)
{
AddRom(line, machinename, "rom", gameid, date);
}
else if (line.IndexOf("<disk") != -1 && machinefound)
{
AddRom(line, machinename, "disk", gameid, date);
}
else if (line.IndexOf("</machine>") != -1 || line.IndexOf("</game>") != -1)
{
machinefound = false;
machinename = "";
description = "";
gameid = 0;
}
}
// Process SoftwareList XML-derived DATs
else if (format == "softwarelist" && !comment)
{
if (line.IndexOf("<software") != -1)
{
machinefound = true;
XmlReader xml = XmlReader.Create(new StringReader(line + "</software>"));
machinename = xml.GetAttribute("name");
gameid = AddGame(sysid, machinename, srcid);
}
else if (line.IndexOf("<rom") != -1 && machinefound)
{
AddRom(line, machinename, "rom", gameid, date);
}
else if (line.IndexOf("<disk") != -1 && machinefound)
{
AddRom(line, machinename, "disk", gameid, date);
}
else if (line.IndexOf("</software>") != -1)
{
machinefound = false;
machinename = "";
description = "";
gameid = 0;
}
}
// Process original style RomVault DATs
else if (format == "romvault")
{
if (line.IndexOf("game") != -1 && !machinefound)
{
machinefound = true;
}
else if (line.IndexOf("rom (") != -1 && machinefound)
{
AddRomOld(line, machinename, "rom", gameid, date);
}
else if (line.IndexOf("disk (") != -1 && machinefound)
{
AddRomOld(line, machinename, "disk", gameid, date);
}
else if (line.IndexOf("name \"") != -1 && machinefound)
{
string machineNamePattern = "^\\s*name \"(.*)\"";
Regex machineNameRegex = new Regex(machineNamePattern);
Match machineNameMatch = machineNameRegex.Match(line);
machinename = machineNameMatch.Groups[1].Value;
gameid = AddGame(sysid, machinename, srcid);
}
else if (line.IndexOf(")") != -1)
{
machinefound = false;
machinename = "";
description = "";
gameid = 0;
}
}
}
return true;
}
private long AddGame(int sysid, string machinename, int srcid)
{
// WoD gets rid of anything past the first "(" or "[" as the name, we will do the same
string stripPattern = @"(([[(].*[\)\]] )?([^([]+))";
Regex stripRegex = new Regex(stripPattern);
Match stripMatch = stripRegex.Match(machinename);
machinename = stripMatch.Groups[1].Value;
// Run the name through the filters to make sure that it's correct
machinename = Style.NormalizeChars(machinename);
machinename = Style.RussianToLatin(machinename);
machinename = Style.SearchPattern(machinename);
machinename.Trim();
long gameid = -1;
string query = "SELECT id FROM games WHERE system=" + sysid +
" AND name='" + machinename.Replace("'", "''") + "'" +
" AND source=" + srcid;
using (SQLiteConnection dbc = new SQLiteConnection(_connectionString))
{
dbc.Open();
using (SQLiteCommand slc = new SQLiteCommand(query, dbc))
{
using (SQLiteDataReader sldr = slc.ExecuteReader())
{
// If nothing is found, add the game and get the insert ID
if (!sldr.HasRows)
{
query = "INSERT INTO games (system, name, source)" +
" VALUES (" + sysid + ", '" + machinename.Replace("'", "''") + "', " + srcid + ")";
using (SQLiteCommand slc2 = new SQLiteCommand(query, dbc))
{
slc2.ExecuteNonQuery();
}
query = "SELECT last_insert_rowid()";
using (SQLiteCommand slc2 = new SQLiteCommand(query, dbc))
{
gameid = (long)slc2.ExecuteScalar();
}
}
// Otherwise, retrieve the ID
else
{
sldr.Read();
gameid = sldr.GetInt64(0);
}
}
}
}
return gameid;
}
private bool AddRom(string line, string machinename, string romtype, long gameid, string date)
{
XmlReader xml = XmlReader.Create(new StringReader(line));
return AddRomHelper(machinename, romtype, gameid, xml.GetAttribute("name"),
date, Int32.Parse(xml.GetAttribute("size")), xml.GetAttribute("crc"),
xml.GetAttribute("md5"), xml.GetAttribute("sha1"));
}
private bool AddRomOld(string line, string machinename, string romtype, long gameid, string date)
{
string infoPattern = "name \"(.*)\"";
Regex infoRegex = new Regex(infoPattern);
Match infoMatch = infoRegex.Match(line);
string name = infoMatch.Groups[1].Value;
string[] rominfo = line.Split(' ');
int size = -1;
string crc = "";
string md5 = "";
string sha1 = "";
string next = "";
foreach (string info in rominfo)
{
if (info == "size" || info == "crc" || info == "md5" || info == "sha1")
{
next = info;
}
else if (next != "")
{
switch (next)
{
case "size": size = Int32.Parse(info); break;
case "crc": crc = info; break;
case "md5": md5 = info; break;
case "sha1": sha1 = info; break;
default: break;
}
next = "";
}
}
return AddRomHelper(machinename, romtype, gameid, name, date, size, crc, md5, sha1);
}
private bool AddRomHelper(string machinename, string romtype, long gameid, string name, string date, int size, string crc, string md5, string sha1)
{
// Run the name through the filters to make sure that it's correct
name = Style.NormalizeChars(name);
name = Style.RussianToLatin(name);
name = Style.SearchPattern(name);
// WOD origninally stripped out any subdirs from the imported files, we do the same
string[] fullname = name.Split('\\');
name = fullname[fullname.Length - 1];
if (romtype != "rom" && romtype != "disk")
{
romtype = "rom";
}
// Check to see if this exact file is in the database already
string query = @"
SELECT files.id FROM files
JOIN checksums
ON files.id=checksums.file
WHERE files.name='" + name.Replace("'", "''") + @"'
AND files.type='" + romtype + @"'
AND files.setid=" + gameid + " " +
(size != -1 ? " AND checksums.size=" + size : "") +
(crc != "" ? " AND checksums.crc='" + crc + "'" : "") +
(md5 != "" ? " AND checksums.md5='" + md5 + "'" : "") +
(sha1 != "" ? " AND checksums.sha1='" + sha1 + "'" : "");
using (SQLiteConnection dbc = new SQLiteConnection(_connectionString))
{
dbc.Open();
using (SQLiteCommand slc = new SQLiteCommand(query, dbc))
{
using (SQLiteDataReader sldr = slc.ExecuteReader())
{
// If the file doesn't exist, add it
if (!sldr.HasRows)
{
query = @"
INSERT INTO files (setid, name, type, lastupdated)
VALUES (" + gameid + ", '" + name.Replace("'", "''") + "', '" + romtype + "', '" + date + "')";
using (SQLiteCommand slc2 = new SQLiteCommand(query, dbc))
{
int affected = slc2.ExecuteNonQuery();
// If the insert was successful, add the checksums for the file
if (affected >= 1)
{
query = "SELECT last_insert_rowid()";
long romid = -1;
using (SQLiteCommand slc3 = new SQLiteCommand(query, dbc))
{
romid = (long)slc3.ExecuteScalar();
}
query = @"INSERT INTO checksums (file" +
(size != -1 ? ", size" : "") +
(crc != "" ? ", crc" : "") +
(md5 != "" ? ", md5" : "") +
(sha1 != "" ? ", sha1" : "") +
") VALUES (" + romid +
(size != -1 ? ", " + size : "") +
(crc != "" ? ", '" + crc + "'" : "") +
(md5 != "" ? ", '" + md5 + "'" : "") +
(sha1 != "" ? ", '" + sha1 + "'" : "") + ")";
using (SQLiteCommand slc3 = new SQLiteCommand(query, dbc))
{
affected = slc3.ExecuteNonQuery();
}
// If the insert of the checksums failed, that's bad
if (affected < 1)
{
Console.WriteLine("There was an error adding checksums for " + name + " to the database!");
return false;
}
}
// Otherwise, something happened which is bad
else
{
Console.WriteLine("There was an error adding " + name + " to the database!");
return false;
}
}
}
}
}
}
return true;
}
}
}

279
DATabase/Program.cs Normal file
View File

@@ -0,0 +1,279 @@
using System;
using System.Collections.Generic;
using System.Data.SQLite;
using System.IO;
namespace DATabase
{
class Program
{
private static string _connectionString = "Data Source=DATabase.sqlite;Version = 3;";
static void Main(string[] args)
{
// Ensure the database is set up properly
EnsureDatabase();
// Make sure all mappings are created and ready to be used
Remapping.CreateRemappings();
// If there's not enough arguments, show the help screen
if (args.Length == 0 || args[0] == "-h" || args[0] == "-?" || args[0] == "--help")
{
Help();
return;
}
// Determine what mode we are in from the first argument
switch (args[0])
{
// Import a file or folder
case "-i":
case "--import":
// Check if there are enough arguments
if (args.Length > 1)
{
// Check to see if the second argument is a file that exists
if (args.Length > 1 && File.Exists(args[1]))
{
Console.WriteLine(args[1]);
Importer imp = new Importer(args[1], _connectionString);
imp.ImportData();
}
// Check to see if the second argument is a directory that exists
else if (args.Length > 1 && Directory.Exists(args[1]))
{
foreach (string filename in Directory.GetFiles(args[1], "*", SearchOption.TopDirectoryOnly))
{
Console.WriteLine(filename);
Importer imp = new Importer(filename, _connectionString);
imp.ImportData();
}
}
// If it's invalid for either, show the help
else
{
Help();
}
}
// If there aren't enough arguments
else
{
Help();
}
break;
// Generate a DAT
case "-g":
case "--generate":
Generate gen;
if (args.Length > 1)
{
int system = -1, source = -1;
for (int i = 1; i < args.Length; i++)
{
if (args[i].StartsWith("system=") && system == -1)
{
Int32.TryParse(args[i].Split('=')[1], out system);
}
else if (args[i].StartsWith("source=") && source == -1)
{
Int32.TryParse(args[i].Split('=')[1], out source);
}
else
{
Help();
return;
}
}
gen = new Generate(system, source, _connectionString);
}
else
{
gen = new Generate(-1, -1, _connectionString);
}
gen.Export();
break;
// List all available sources
case "-lso":
string query = @"
SELECT DISTINCT sources.id, sources.name
FROM sources JOIN games on sources.id=games.source
ORDER BY sources.name COLLATE NOCASE";
using (SQLiteConnection dbc = new SQLiteConnection(_connectionString))
{
dbc.Open();
using (SQLiteCommand slc = new SQLiteCommand(query, dbc))
{
using (SQLiteDataReader sldr = slc.ExecuteReader())
{
// If nothing is found, tell the user and exit
if (!sldr.HasRows)
{
Console.WriteLine("Error: No sources found! Please add a source and then try again.");
return;
}
Console.WriteLine("Available Sources (id <= name):");
while (sldr.Read())
{
Console.WriteLine(sldr.GetInt32(0) + "\t<=\t" + sldr.GetString(1));
}
}
}
}
break;
// List all available systems
case "-lsy":
query = @"
SELECT DISTINCT systems.id, systems.manufacturer, systems.system
FROM systems JOIN games ON systems.id=games.system
ORDER BY systems.manufacturer, systems.system";
using (SQLiteConnection dbc = new SQLiteConnection(_connectionString))
{
dbc.Open();
using (SQLiteCommand slc = new SQLiteCommand(query, dbc))
{
using (SQLiteDataReader sldr = slc.ExecuteReader())
{
// If nothing is found, tell the user and exit
if (!sldr.HasRows)
{
Console.WriteLine("Error: No systems found! Please add a system and then try again.");
return;
}
Console.WriteLine("Available Systems (id <= name):");
while (sldr.Read())
{
Console.WriteLine(sldr.GetInt32(0) + "\t<=\t" + sldr.GetString(1) + " - " + sldr.GetString(2));
}
}
}
}
break;
// Invalid argument
default:
Help();
break;
}
return;
}
private static void EnsureDatabase()
{
// Make sure the file exists
if (!File.Exists("DATabase.sqlite"))
{
SQLiteConnection.CreateFile("DATabase.sqlite");
}
// Connect to the file
SQLiteConnection dbc = new SQLiteConnection(_connectionString);
dbc.Open();
try
{
// Make sure the database has the correct schema
string query = @"
CREATE TABLE IF NOT EXISTS checksums (
'file' INTEGER NOT NULL,
'size' INTEGER NOT NULL DEFAULT -1,
'crc' TEXT NOT NULL,
'md5' TEXT NOT NULL,
'sha1' TEXT NOT NULL,
PRIMARY KEY (file, size, crc, md5, sha1)
)";
SQLiteCommand slc = new SQLiteCommand(query, dbc);
slc.ExecuteNonQuery();
query = @"
CREATE TABLE IF NOT EXISTS files (
'id' INTEGER PRIMARY KEY NOT NULL,
'setid' INTEGER NOT NULL,
'name' TEXT NOT NULL,
'type' TEXT NOT NULL DEFAULT 'rom',
'lastupdated' TEXT NOT NULL
)";
slc = new SQLiteCommand(query, dbc);
slc.ExecuteNonQuery();
query = @"
CREATE TABLE IF NOT EXISTS games (
'id' INTEGER PRIMARY KEY NOT NULL,
'system' INTEGER NOT NULL,
'name' TEXT NOT NULL,
'parent' INTEGER NOT NULL DEFAULT '0',
'source' INTEGER NOT NULL DEFAULT '0'
)";
slc = new SQLiteCommand(query, dbc);
slc.ExecuteNonQuery();
query = @"
CREATE TABLE IF NOT EXISTS parent (
'id' INTEGER PRIMARY KEY NOT NULL,
'name' TEXT NOT NULL
)";
slc = new SQLiteCommand(query, dbc);
slc.ExecuteNonQuery();
query = @"
CREATE TABLE IF NOT EXISTS sources (
'id' INTEGER PRIMARY KEY NOT NULL,
'name' TEXT NOT NULL UNIQUE,
'url' TEXT NOT NULL
)";
slc = new SQLiteCommand(query, dbc);
slc.ExecuteNonQuery();
query = @"
CREATE TABLE IF NOT EXISTS systems (
'id' INTEGER PRIMARY KEY NOT NULL,
'manufacturer' TEXT NOT NULL,
'system' TEXT NOT NULL
)";
slc = new SQLiteCommand(query, dbc);
slc.ExecuteNonQuery();
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
finally
{
// Close and return the database connection
dbc.Close();
}
}
private static void Help ()
{
Console.Write(@"
DATabase - Import and Generate DAT files
-----------------------------------------
Usage: DATabase <option> (<filename>|<dirname>) | (system=sy) (source=so)
<option> can be one of the following:
-h, -?, --help Show this help
-i, --import Start tool in import mode
-g, --generate Start tool in generate mode
-lso List all sources (id <= name)
-lsy List all systems (id <= name)
If started in import mode, either a filename or directory
name is required in order to run.
If started in generate mode, here are the possible states:
system blank, source blank Create MEGAMERGED
system blank, source Create source-merged
system, source blank Create system-merged
system, source Create custom
");
}
}
}

View File

@@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("DATabase")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("DATabase")]
[assembly: AssemblyCopyright("Copyright © 2016")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("3b615702-1866-4d7b-8af1-7b43fd0cc1d0")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

884
DATabase/Remapping.cs Normal file
View File

@@ -0,0 +1,884 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DATabase
{
class Remapping
{
public static Dictionary<string, string> MAME;
public static Dictionary<string, string> NoIntro;
public static Dictionary<string, string> Redump;
public static Dictionary<string, string> TOSEC;
public static Dictionary<string, string> TruRip;
public static void CreateRemappings()
{
MAME = new Dictionary<string, string>();
MAME.Add("32x.xml", "Sega - 32X");
MAME.Add("3do_m2.xml", "Panasonic - 3DO M2");
MAME.Add("a2600.xml", "Atari - 2600");
MAME.Add("a2600_cass.xml", "Atari - 2600");
MAME.Add("a5200.xml", "Atari - 5200");
MAME.Add("a7800.xml", "Atari - 7800");
MAME.Add("a800.xml", "Atari - 8bit");
MAME.Add("a800_flop.xml", "Atari - 8bit");
MAME.Add("abc1600.xml", "Luxor - ABC 1600");
MAME.Add("abc800.xml", "Luxor - ABC 800");
MAME.Add("abc800_hdd.xml", "Luxor - ABC 800");
MAME.Add("abc806.xml", "Luxor - ABC 806");
MAME.Add("abc80_cass.xml", "Luxor - ABC 80");
MAME.Add("abc80_flop.xml", "Luxor - ABC 80");
MAME.Add("adam_cart.xml", "Coleco - ColecoVision, ColecoVision ADAM");
MAME.Add("adam_cass.xml", "Coleco - ColecoVision, ColecoVision ADAM");
MAME.Add("adam_flop.xml", "Coleco - ColecoVision, ColecoVision ADAM");
MAME.Add("advantage.xml", "NorthStar - Advantage");
MAME.Add("advision.xml", "Entex - Adventure Vision");
MAME.Add("aim65_cart.xml", "Rockwell - AIM 65");
MAME.Add("aleste.xml", "Patisonic - Aleste 520EX");
MAME.Add("alice32.xml", "Matra Hachette - Alice 32 & 90");
MAME.Add("alice90.xml", "Matra Hachette - Alice 32 & 90");
MAME.Add("alphatro_flop.xml", "Triumph-Adler - Alphatronic PC");
MAME.Add("altos5.xml", "Altos Computer Systems - Series 5");
MAME.Add("amiga_a1000.xml", "Commodore - Amiga");
MAME.Add("amiga_a3000.xml", "Commodore - Amiga");
MAME.Add("amiga_apps.xml", "Commodore - Amiga");
MAME.Add("amiga_flop.xml", "Commodore - Amiga");
MAME.Add("amiga_hardware.xml", "Commodore - Amiga");
MAME.Add("amiga_workbench.xml", "Commodore - Amiga");
MAME.Add("amigaaga_flop.xml", "Commodore - Amiga");
MAME.Add("amigaecs_flop.xml", "Commodore - Amiga");
MAME.Add("amigaocs_flop.xml", "Commodore - Amiga");
MAME.Add("ampro.xml", "Ampro - Little Board");
MAME.Add("apc.xml", "NEC - Advanced Personal Computer");
MAME.Add("apfimag_cass.xml", "APF - M-1000");
MAME.Add("apfm1000.xml", "APF - M-1000");
MAME.Add("apogee.xml", "Radio-86RK - Apogej BK-01");
MAME.Add("apollo_ctape.xml", "Hewlett-Packard - Apollo");
MAME.Add("apple1.xml", "Apple - I");
MAME.Add("apple2.xml", "Apple - II");
MAME.Add("apple2gs.xml", "Apple - II");
MAME.Add("apple3.xml", "Apple - III");
MAME.Add("aquarius.xml", "Mattel - Aquarius");
MAME.Add("arcadia.xml", "Emerson - Arcadia 2001");
MAME.Add("archimedes.xml", "Acorn - Archimedes");
MAME.Add("astrocde.xml", "Bally Professional - Arcade, Astrocade");
MAME.Add("atom.xml", "Acorn - Atom");
MAME.Add("atom_cass.xml", "Acorn - Atom");
MAME.Add("atom_flop.xml", "Acorn - Atom");
MAME.Add("atom_rom.xml", "Acorn - Atom");
MAME.Add("attache.xml", "Otrona - Attache");
MAME.Add("b2m.xml", "BNPO - Bashkiria-2M");
MAME.Add("bbc_32016_flop.xml", "Acorn - BBC, Electron");
MAME.Add("bbc_65c102_flop.xml", "Acorn - BBC, Electron");
MAME.Add("bbc_68000_flop.xml", "Acorn - BBC, Electron");
MAME.Add("bbc_80186_flop.xml", "Acorn - BBC, Electron");
MAME.Add("bbc_arm_flop.xml", "Acorn - BBC, Electron");
MAME.Add("bbc_flop_32016.xml", "Acorn - BBC, Electron");
MAME.Add("bbc_flop_6502.xml", "Acorn - BBC, Electron");
MAME.Add("bbc_flop_65c102.xml", "Acorn - BBC, Electron");
MAME.Add("bbc_flop_68000.xml", "Acorn - BBC, Electron");
MAME.Add("bbc_flop_80186.xml", "Acorn - BBC, Electron");
MAME.Add("bbc_flop_arm.xml", "Acorn - BBC, Electron");
MAME.Add("bbc_flop_torch.xml", "Acorn - BBC, Electron");
MAME.Add("bbc_flop_z80.xml", "Acorn - BBC, Electron");
MAME.Add("bbc_torch_flop.xml", "Acorn - BBC, Electron");
MAME.Add("bbc_z80_flop.xml", "Acorn - BBC, Electron");
MAME.Add("bbca_cass.xml", "Acorn - BBC, Electron");
MAME.Add("bbcb_cass.xml", "Acorn - BBC, Electron");
MAME.Add("bbcb_cass_de.xml", "Acorn - BBC, Electron");
MAME.Add("bbcb_de_cass.xml", "Acorn - BBC, Electron");
MAME.Add("bbcb_flop.xml", "Acorn - BBC, Electron");
MAME.Add("bbcb_flop_orig.xml", "Acorn - BBC, Electron");
MAME.Add("bbcb_flop_us.xml", "Acorn - BBC, Electron");
MAME.Add("bbcb_orig_flop.xml", "Acorn - BBC, Electron");
MAME.Add("bbcb_us_flop.xml", "Acorn - BBC, Electron");
MAME.Add("bbcbc.xml", "BBC - Bridge Companion");
MAME.Add("bbcm_cart.xml", "Acorn - BBC, Electron");
MAME.Add("bbcm_cass.xml", "Acorn - BBC, Electron");
MAME.Add("bbcm_flop.xml", "Acorn - BBC, Electron");
MAME.Add("bbcmc_flop.xml", "Acorn - BBC, Electron");
MAME.Add("bk0010.xml", "Elektronika - BK-0010");
MAME.Add("bml3_flop.xml", "Hitachi - Basic Master Level 3");
MAME.Add("bw12.xml", "Bondwell - 12");
MAME.Add("bw14.xml", "Bondwell - 14");
MAME.Add("bw2.xml", "Bondwell - 2");
MAME.Add("bx256hp_flop.xml", "Commodore - BX256-80HP, CBM 730");
MAME.Add("c128_cart.xml", "Commodore - 128");
MAME.Add("c128_flop.xml", "Commodore - 128");
MAME.Add("c128_rom.xml", "Commodore - 128");
MAME.Add("c64_cart.xml", "Commodore - 64");
MAME.Add("c64_cass.xml", "Commodore - 64");
MAME.Add("c64_flop.xml", "Commodore - 64");
MAME.Add("c65_flop.xml", "Commodore - 65");
MAME.Add("casloopy.xml", "Casio - Loopy");
MAME.Add("cbm2_cart.xml", "Commodore - CBM-II");
MAME.Add("cbm2_flop.xml", "Commodore - CBM-II");
MAME.Add("cbm8096_flop.xml", "Commodore - 8096");
MAME.Add("cbm8296_flop.xml", "Commodore - 8296");
MAME.Add("cc40_cart.xml", "Texas Instruments - CC-40");
MAME.Add("cd32.xml", "Commodore - Amiga");
MAME.Add("cdi.xml", "Philips - CD-i");
MAME.Add("cdtv.xml", "Commodore - Amiga");
MAME.Add("cgenie_cart.xml", "EACA - EG2000 Colour Genie");
MAME.Add("cgenie_cass.xml", "EACA - EG2000 Colour Genie");
MAME.Add("channelf.xml", "Fairchild - Channel F");
MAME.Add("coco_cart.xml", "Tandy Radio Shack - TRS-80 Color Computer");
MAME.Add("coco_flop.xml", "Tandy Radio Shack - TRS-80 Color Computer");
MAME.Add("coleco.xml", "Coleco - ColecoVision, ColecoVision ADAM");
MAME.Add("compclr2_flop.xml", "ISC - Compucolor II");
MAME.Add("compis.xml", "Telenova - Compis");
MAME.Add("comx35_flop.xml", "COMX - COMX-35");
MAME.Add("copera.xml", "Sega - PICO");
MAME.Add("cpc_cass.xml", "Amstrad - CPC");
MAME.Add("cpc_flop.xml", "Amstrad - CPC");
MAME.Add("crvision.xml", "VTech - CreatiVision");
MAME.Add("cx3000tc.xml", "Palson - CX 3000 Tele Computer");
MAME.Add("dai_cass.xml", "DAI - Personal Computer");
MAME.Add("database.xml", "Voltmace - Database");
MAME.Add("dim68k.xml", "Dimension - 68000");
MAME.Add("dmv.xml", "NCR - Decision Mate V");
MAME.Add("dps1.xml", "Ithaca InterSystems - DPS-1");
MAME.Add("ec1841.xml", "MPO BT - EC 1841");
MAME.Add("einstein.xml", "Tatung - Einstein TC-01");
MAME.Add("electron_cart.xml", "Acorn - BBC, Electron");
MAME.Add("ep64_cart.xml", "Enterprise - 64");
MAME.Add("ep64_cass.xml", "Enterprise - 64");
MAME.Add("ep64_flop.xml", "Enterprise - 64");
MAME.Add("epson_cpm.xml", "Epson - CPM");
MAME.Add("exl100.xml", "Exelvision Exeltel, EXL100");
MAME.Add("famicom_cass.xml", "Nintendo - Famicom BASIC");
MAME.Add("famicom_flop.xml", "Nintendo - Famicom Disk System");
MAME.Add("fm77av.xml", "Fujitsu - FM-77AV");
MAME.Add("fm7_cass.xml", "Fujitsu - FM-7");
MAME.Add("fm7_disk.xml", "Fujitsu - FM-7");
MAME.Add("fmtowns_cd.xml", "Fujitsu - FM Towns");
MAME.Add("g7400.xml", "Philips - Videopac+, Odyssey2");
MAME.Add("galaxy.xml", "Galaksija - Galaksija, Galaksija Plus");
MAME.Add("gamate.xml", "Bit Corp - Gamate");
MAME.Add("gameboy.xml", "Nintendo - Game Boy");
MAME.Add("gamecom.xml", "Tiger - Game.com");
MAME.Add("gamegear.xml", "Sega - Game Gear");
MAME.Add("gameking.xml", "TimeTop - GameKing");
MAME.Add("gameking3.xml", "TimeTop - GameKing");
MAME.Add("gamepock.xml", "Epoch - Game Pocket Computer");
MAME.Add("gba.xml", "Nintendo - Game Boy Advance");
MAME.Add("gbcolor.xml", "Nintendo - Game Boy Color");
MAME.Add("genius.xml", "VTech - Genius");
MAME.Add("gimix.xml", "Gimix - 6809");
MAME.Add("gjmovie.xml", "VTech - Genius");
MAME.Add("gl2000.xml", "VTech - Genius");
MAME.Add("gl6000sl.xml", "VTech - Genius");
MAME.Add("glcolor.xml", "VTech - Genius");
MAME.Add("gmaster.xml", "Hartung - Game Master");
MAME.Add("gp32.xml", "GamePark - GP32");
MAME.Add("guab.xml", "JPM - Give us a Break");
MAME.Add("gx4000.xml", "Amstrad - GX4000");
MAME.Add("h21.xml", "TRQ - Video Computer H-21");
MAME.Add("horizon.xml", "NorthStar - Horizon");
MAME.Add("hp9835a_rom.xml", "Hewlett-Packard - 9835");
MAME.Add("hp9845a_rom.xml", "Hewlett-Packard - 9845");
MAME.Add("hp9845b_rom.xml", "Hewlett-Packard - 9845");
MAME.Add("ht68k.xml", "Hawthorne Technologies - HT68K");
MAME.Add("i7000_card.xml", "Itautec - I-7000");
MAME.Add("ibm5140.xml", "IBM - PC Compatibles");
MAME.Add("ibm5150.xml", "IBM - PC Compatibles");
MAME.Add("ibm5150_cass.xml", "IBM - PC Compatibles");
MAME.Add("ibm5160_flop.xml", "IBM - PC Compatibles");
MAME.Add("ibm5170.xml", "IBM - PC Compatibles");
MAME.Add("ibm5170_cdrom.xml", "IBM - PC Compatibles");
MAME.Add("ibmpcjr_cart.xml", "IBM - PC Jr");
MAME.Add("ibmpcjr_flop.xml", "IBM - PC Jr");
MAME.Add("interact.xml", "Interact - Family Computer");
MAME.Add("intv.xml", "Mattel - Intellivision");
MAME.Add("intvecs.xml", "Mattel - Intellivision");
MAME.Add("iq128.xml", "VTech - Genius");
MAME.Add("iq151_cart.xml", "ZPA Novy Bor - IQ-151");
MAME.Add("iq151_flop.xml", "ZPA Novy Bor - IQ-151");
MAME.Add("jaguar.xml", "Atari - Jaguar");
MAME.Add("juicebox.xml", "Mattel - Juice Box");
MAME.Add("jupace_cass.xml", "Jupiter Cantab - Jupiter Ace");
MAME.Add("kayproii.xml", "Kaypro - II");
MAME.Add("kc_cart.xml", "Robotron - KC85");
MAME.Add("kc_cass.xml", "Robotron - KC85");
MAME.Add("kc_flop.xml", "Robotron - KC85");
MAME.Add("korvet_flop.xml", "Moscow State University - Korvet");
MAME.Add("lantutor.xml", "Texas Instruments - Language Tutor");
MAME.Add("leapster.xml", "LeapFrog - Leapster Learning Game System");
MAME.Add("lisa.xml", "Apple - Lisa");
MAME.Add("lisa2.xml", "Apple - Lisa 2");
MAME.Add("lviv.xml", "Lviv - PC-01");
MAME.Add("lynx.xml", "Atari - Lynx");
MAME.Add("m20.xml", "Olivetti - M20");
MAME.Add("m5_cart.xml", "Sord - M5");
MAME.Add("m5_cass.xml", "Sord - M5");
MAME.Add("mac_flop.xml", "Apple - Macintosh");
MAME.Add("mac_hdd.xml", "Apple - Macintosh");
MAME.Add("mbc200.xml", "Sanyo - MBC-200, MBC-1200");
MAME.Add("mbc55x.xml", "Sanyo - MBC-550, MBC-555");
MAME.Add("mc10.xml", "Tandy Radio Shack - TRS-80 MC-10");
MAME.Add("mc1000_cass.xml", "CCE - MC-1000");
MAME.Add("mc1502_flop.xml", "Elektronika - MC 1502");
MAME.Add("md2_flop.xml", "Morrow - Micro Decision MD-2");
MAME.Add("megacd.xml", "Sega - Mega-CD, Sega CD");
MAME.Add("megacdj.xml", "Sega - Mega-CD, Sega CD");
MAME.Add("megadriv.xml", "Sega - Mega Drive, Genesis");
MAME.Add("megaduck.xml", "Creatronic - Mega Duck, Cougar Boy");
MAME.Add("megapc.xml", "Amstrad - Mega PC");
MAME.Add("megatech.xml", "Sega - Megatech");
MAME.Add("microvision.xml", "Milton Bradley - MicroVision");
MAME.Add("mikro80.xml", "Radio-86RK - Mikro-80");
MAME.Add("mikrosha_cart.xml", "Radio-86RK - Mikrosha");
MAME.Add("mikrosha_cass.xml", "Radio-86RK - Mikrosha");
MAME.Add("misterx.xml", "Yeno - MisterX");
MAME.Add("mm1_flop.xml", "Nokia - MikroMikko 1");
MAME.Add("mo5_cart.xml", "Thomson - 8bit");
MAME.Add("mpu1000.xml", "Acetronic - MPU-1000");
MAME.Add("mpz80.xml", "Morrow - MPZ80");
MAME.Add("msx1_cart.xml", "Microsoft - MSX, MSX 2");
MAME.Add("msx1_cass.xml", "Microsoft - MSX, MSX 2");
MAME.Add("msx1_flop.xml", "Microsoft - MSX, MSX 2");
MAME.Add("msx2_cart.xml", "Microsoft - MSX, MSX 2");
MAME.Add("msx2_cass.xml", "Microsoft - MSX, MSX 2");
MAME.Add("msx2_flop.xml", "Microsoft - MSX, MSX 2");
MAME.Add("msx2p_flop.xml", "Microsoft - MSX, MSX 2");
MAME.Add("msxr_flop.xml", "Microsoft - MSX, MSX 2");
MAME.Add("mtx_cass.xml", "Memotech - MTX512");
MAME.Add("myvision.xml", "Nichibutsu - My Vision");
MAME.Add("mz2000_cass.xml", "Sharp - MZ-2000");
MAME.Add("mz2000_flop.xml", "Sharp - MZ-2000");
MAME.Add("mz2500.xml", "Sharp - MZ-2500");
MAME.Add("mz700_cass.xml", "Sharp - MZ-700");
MAME.Add("mz800_cass.xml", "Sharp - MZ-800, M-1500");
MAME.Add("n64.xml", "Nintendo - Nintendo 64");
MAME.Add("n64dd.xml", "Nintendo - Nintendo 64DD");
MAME.Add("nascom_flop.xml", "Nascom - I, II");
MAME.Add("nascom_socket.xml", "Nascom - I, II");
MAME.Add("neocd.xml", "SNK - Neo Geo CD");
MAME.Add("neogeo.xml", "SNK - Neo-Geo");
MAME.Add("nes.xml", "Nintendo - Nintendo Entertainment System");
MAME.Add("nes_ade.xml", "Nintendo - Nintendo Entertainment System");
MAME.Add("nes_datach.xml", "Nintendo - Nintendo Entertainment System");
MAME.Add("nes_kstudio.xml", "Nintendo - Nintendo Entertainment System");
MAME.Add("nes_ntbrom.xml", "Nintendo - Nintendo Entertainment System");
MAME.Add("next.xml", "NeXT - NeXT");
MAME.Add("ngp.xml", "SNK - Neo Geo Pocket");
MAME.Add("ngpc.xml", "SNK - Neo Geo Pocket Color");
MAME.Add("nimbus.xml", "RM - Nimbus PC");
MAME.Add("odyssey2.xml", "Philips - Videopac+, Odyssey2");
MAME.Add("ondra.xml", "Tesla - Ondra, Ondra ViLi");
MAME.Add("orao.xml", "PEL Varazdin - Orao");
MAME.Add("orion_cart.xml", "Orion - Orion 128, OrionPro");
MAME.Add("orion_cass.xml", "Orion - Orion 128, OrionPro");
MAME.Add("orion_flop.xml", "Orion - Orion 128, OrionPro");
MAME.Add("orionpro_flop.xml", "Orion - Orion 128, OrionPro");
MAME.Add("osborne1.xml", "OCC - Osborne 1, 2, 3, 4");
MAME.Add("osborne2.xml", "OCC - Osborne 1, 2, 3, 4");
MAME.Add("p500_flop.xml", "Commodore - P500");
MAME.Add("partner_cass.xml", "Radio-86RK - Partner-01.01");
MAME.Add("partner_flop.xml", "Radio-86RK - Partner-01.01");
MAME.Add("pasogo.xml", "Koei - PasoGo");
MAME.Add("pb2000c.xml", "Casio - PB-2000C");
MAME.Add("pc1000.xml", "VTech - PreComputer 1000");
MAME.Add("pc1512.xml", "Amstrad - PC1512");
MAME.Add("pc1640.xml", "Amstrad - PC1640");
MAME.Add("pc8201.xml", "NEC - PC-8201");
MAME.Add("pc8801_cass.xml", "NEC - PC-8801");
MAME.Add("pc8801_flop.xml", "NEC - PC-8801");
MAME.Add("pc88va.xml", "NEC - PC-88VA");
MAME.Add("pc98.xml", "NEC - PC-9801");
MAME.Add("pce.xml", "NEC - PC Engine, TurboGrafx 16");
MAME.Add("pcecd.xml", "NEC - PC Engine CD, TurboGrafx 16 CD");
MAME.Add("pcw.xml", "Amstrad - PCW");
MAME.Add("pcw16.xml", "Amstrad - PCW");
MAME.Add("pecom_cass.xml", "Elektronska Industrija Nis - PECOM 32, 64");
MAME.Add("pegasus_cart.xml", "Technosys - Aamber Pegasus");
MAME.Add("pencil2.xml", "Hanimex - Pencil II");
MAME.Add("pentagon_cass.xml", "Pentagon - 1024SL");
MAME.Add("pet_cass.xml", "Commodore - PET");
MAME.Add("pet_flop.xml", "Commodore - PET");
MAME.Add("pet_hdd.xml", "Commodore - PET");
MAME.Add("pet_rom.xml", "Commodore - PET");
MAME.Add("pico.xml", "Sega - PICO");
MAME.Add("pippin.xml", "Bandai - Pippin");
MAME.Add("pippin_flop.xml", "Bandai - Pippin");
MAME.Add("plus4_cart.xml", "Commodore - Plus-4");
MAME.Add("plus4_cass.xml", "Commodore - Plus-4");
MAME.Add("plus4_flop.xml", "Commodore - Plus-4");
MAME.Add("pmd85_cass.xml", "Tesla - PMD 85");
MAME.Add("pokemini.xml", "Nintendo - Pokemon Mini");
MAME.Add("pro128_cart.xml", "Olivetti - Prodest PC 128");
MAME.Add("pro128s_flop.xml", "Olivetti - Prodest PC 128");
MAME.Add("prof180.xml", "Conitec - PROF-180");
MAME.Add("prof80.xml", "Conitec - PROF-80");
MAME.Add("psion1.xml", "Psion - Organiser I");
MAME.Add("psion2.xml", "Psion - Organiser II");
MAME.Add("psx.xml", "Sony - PlayStation");
MAME.Add("pt68k2.xml", "Peripheral Technology - PT68K");
MAME.Add("pv1000.xml", "Casio - PV-1000");
MAME.Add("pv2000.xml", "Casio - PV-2000");
MAME.Add("px4_cart.xml", "Epson - PX-4");
MAME.Add("pyl601.xml", "SASDF - Pyldin-601");
MAME.Add("ql_cart.xml", "Sinclair - QL");
MAME.Add("ql_cass.xml", "Sinclair - QL");
MAME.Add("ql_flop.xml", "Sinclair - QL");
MAME.Add("qx10_flop.xml", "Epson - QX-10");
MAME.Add("r9751.xml", "ROLM - CBX 9751");
MAME.Add("radio86_cart.xml", "Radio-86RK - Radio-86RK");
MAME.Add("radio86_cass.xml", "Radio-86RK - Radio-86RK");
MAME.Add("rainbow.xml", "DEC - Rainbow 100");
MAME.Add("rwtrntcs.xml", "Rowtron - Television Computer System");
MAME.Add("rx78.xml", "Gundam - RX-78");
MAME.Add("sage2.xml", "Sage - Sage II");
MAME.Add("samcoupe_cass.xml", "MGT - Sam Coupe");
MAME.Add("samcoupe_flop.xml", "MGT - Sam Coupe");
MAME.Add("sat_cart.xml", "Sega - Saturn");
MAME.Add("saturn.xml", "Sega - Saturn");
MAME.Add("sawatte.xml", "Sega - PICO");
MAME.Add("sc3000_cart.xml", "Sega - SG-1000, SC-3000, SF-7000, Othello Multivision");
MAME.Add("sc3000_cass.xml", "Sega - SG-1000, SC-3000, SF-7000, Othello Multivision");
MAME.Add("scv.xml", "Epoch - Super Cassette Vision");
MAME.Add("segacd.xml", "Sega - Mega-CD, Sega CD");
MAME.Add("sf7000.xml", "Sega - SG-1000, SC-3000, SF-7000, Othello Multivision");
MAME.Add("sg1000.xml", "Sega - SG-1000, SC-3000, SF-7000, Othello Multivision");
MAME.Add("sgx.xml", "NEC - Super Grafx");
MAME.Add("smc777.xml", "Sony - SMC777");
MAME.Add("sms.xml", "Sega - Master System, Mark III");
MAME.Add("snes.xml", "Nintendo - Super Nintendo Entertainment System");
MAME.Add("snes_bspack.xml", "Nintendo - Super Nintendo Entertainment System");
MAME.Add("snes_strom.xml", "Nintendo - Super Nintendo Entertainment System");
MAME.Add("snes_vkun.xml", "Nintendo - Super Nintendo Entertainment System");
MAME.Add("snotec.xml", "Bandai - Super Note Club");
MAME.Add("snread.xml", "Texas Instruments - Speak & Read");
MAME.Add("snspell.xml", "Texas Instruments - Speak & Spell");
MAME.Add("socrates.xml", "VTech - Socrates");
MAME.Add("softbox.xml", "SSE - SoftBox");
MAME.Add("sol20_cass.xml", "PTC - Sol Terminal Computer SOL-20");
MAME.Add("sorcerer_cart.xml", "Exidy - Sorcerer");
MAME.Add("sorcerer_cass.xml", "Exidy - Sorcerer");
MAME.Add("sorcerer_flop.xml", "Exidy - Sorcerer");
MAME.Add("spc1000_cass.xml", "Samsung - SPC-1000");
MAME.Add("special_cass.xml", "Specialist - Specialist");
MAME.Add("special_flop.xml", "Specialist - Specialist");
MAME.Add("specpls3_flop.xml", "Sinclair - ZX Spectrum");
MAME.Add("spectrum_cart.xml", "Sinclair - ZX Spectrum");
MAME.Add("spectrum_cass.xml", "Sinclair - ZX Spectrum");
MAME.Add("st_cart.xml", "Atari - ST");
MAME.Add("st_flop.xml", "Atari - ST");
MAME.Add("studio2.xml", "RCA - Studio II");
MAME.Add("stv.xml", "Sega - Titan Video");
MAME.Add("super6.xml", "ADC - Super Six");
MAME.Add("superpet_flop.xml", "Commodore - SuperPET, MMF 9000");
MAME.Add("supracan.xml", "Funtech - Super Acan");
MAME.Add("sv8000.xml", "Bandai - Super Vision 8000");
MAME.Add("svi318_cart.xml", "Spectravideo - SVI-318, SVI-328");
MAME.Add("svi318_cass.xml", "Spectravideo - SVI-318, SVI-328");
MAME.Add("svi318_flop.xml", "Spectravideo - SVI-318, SVI-328");
MAME.Add("svision.xml", "Watara - Supervision");
MAME.Add("svmu.xml", "Sega - Visual Memory System");
MAME.Add("tandy200.xml", "Tandy Radio Shack - Model 200");
MAME.Add("tandy2k.xml", "Tandy Radio Shack - 2000");
MAME.Add("tandy6k.xml", "Tandy Radio Shack - 6000");
MAME.Add("tdv2324.xml", "Tandberg - TDV 2324");
MAME.Add("tek4052_cart.xml", "Tektronix - 4052");
MAME.Add("tg16.xml", "NEC - PC Engine, TurboGrafx 16");
MAME.Add("ti74_cart.xml", "Texas Instruments - TI-74");
MAME.Add("ti99_cart.xml", "Texas Instruments - TI-99 4A");
MAME.Add("tiki100.xml", "Tiki Data - Kontiki-100, Tiki-100");
MAME.Add("timex_dock.xml", "Timex - TS-2068");
MAME.Add("tntell.xml", "Texas Instruments - Touch & Tell");
MAME.Add("to770_cart.xml", "Thomson - 8bit");
MAME.Add("to7_cart.xml", "Thomson - 8bit");
MAME.Add("trs80m2.xml", "Tandy Radio Shack - TRS-80 Model II");
MAME.Add("trsm100.xml", "Tandy Radio Shack - TRS-80 Model 100");
MAME.Add("tutor.xml", "Tomy - Tutor, Pyuuta");
MAME.Add("tvc_cart.xml", "Videoton - TV-Computer");
MAME.Add("tvc_cass.xml", "Videoton - TV-Computer");
MAME.Add("tvc_flop.xml", "Videoton - TV-Computer");
MAME.Add("unichamp.xml", "Unisonic - Champion 2711");
MAME.Add("ut88.xml", "Radio-86RK - YuT-88");
MAME.Add("uzebox.xml", "Uzebox - Uzebox");
MAME.Add("v1050_flop.xml", "Visual Technology - Visual 1050");
MAME.Add("v1050_hdd.xml", "Visual Technology - Visual 1050");
MAME.Add("vboy.xml", "Nintendo - Virtual Boy");
MAME.Add("vc4000.xml", "Interton - VC 4000");
MAME.Add("vector06_cart.xml", "Temirazov & Sokolov - Vector-06C");
MAME.Add("vectrex.xml", "GCE - Vectrex");
MAME.Add("vg5k.xml", "Philips - VG-5000");
MAME.Add("vic10.xml", "Commodore - VIC-10");
MAME.Add("vic1001_cart.xml", "Commodore - VIC-20");
MAME.Add("vic1001_cass.xml", "Commodore - VIC-20");
MAME.Add("vic1001_flop.xml", "Commodore - VIC-20");
MAME.Add("victor9k_flop.xml", "Sirius - Victor 9000");
MAME.Add("vidbrain.xml", "VideoBrain - Family Computer");
MAME.Add("vii.xml", "Chintendo - Vii");
MAME.Add("vip.xml", "RCA - Vip");
MAME.Add("visicom.xml", "Toshiba - Visicom");
MAME.Add("vixen.xml", "OCC - Osborne 1, 2, 3, 4");
MAME.Add("vreader.xml", "VTech - V.Reader, Storio");
MAME.Add("vsmile_cart.xml", "VTech - V.Smile, V.Disc");
MAME.Add("vsmile_cd.xml", "VTech - V.Smile, V.Disc");
MAME.Add("vz_cass.xml", "Dick Smith Electronics - VZ-200, VZ-300");
MAME.Add("wangpc.xml", "Wang - PC");
MAME.Add("wicat.xml", "Millennium Systems - Wicat");
MAME.Add("wmbullet.xml", "WaveMate - Bullet");
MAME.Add("wscolor.xml", "Bandai - WonderSwan Color");
MAME.Add("wswan.xml", "Bandai - WonderSwan");
MAME.Add("x07_card.xml", "Canon - X-07");
MAME.Add("x07_cass.xml", "Canon - X-07");
MAME.Add("x1_cass.xml", "Sharp - X1");
MAME.Add("x1_flop.xml", "Sharp - X1");
MAME.Add("x68k_flop.xml", "Sharp - X68000");
MAME.Add("xegs.xml", "Atari - 8bit");
MAME.Add("xerox820.xml", "Xerox - 820");
MAME.Add("xerox820ii.xml", "Xerox - 820 II");
NoIntro = new Dictionary<string, string>();
NoIntro.Add("Atari - 5200", "Atari - 5200");
NoIntro.Add("Atari - 7800", "Atari - 7800");
NoIntro.Add("Atari - Jaguar", "Atari - Jaguar");
NoIntro.Add("Atari - Lynx", "Atari - Lynx");
NoIntro.Add("Atari - ST", "Atari - ST");
NoIntro.Add("Bandai - WonderSwan", "Bandai - WonderSwan");
NoIntro.Add("Bandai - WonderSwan Color", "Bandai - WonderSwan Color");
NoIntro.Add("Casio - Loopy", "Casio - Loopy");
NoIntro.Add("Casio - PV-1000", "Casio - PV-1000");
NoIntro.Add("Coleco - ColecoVision", "Coleco - ColecoVision, ColecoVision ADAM");
NoIntro.Add("Commodore - 64", "Commodore - 64");
NoIntro.Add("Commodore - 64 (PP)", "Commodore - 64");
NoIntro.Add("Commodore - 64 (Tapes)", "Commodore - 64");
NoIntro.Add("Commodore - Amiga", "Commodore - Amiga");
NoIntro.Add("Commodore - Plus-4", "Commodore - Plus-4");
NoIntro.Add("Commodore - VIC-20", "Commodore - VIC-20");
NoIntro.Add("Emerson - Arcadia 2001", "Emerson - Arcadia 2001");
NoIntro.Add("Entex - Adventure Vision", "Entex - Adventure Vision");
NoIntro.Add("Epoch - Super Cassette Vision", "Epoch - Super Cassette Vision");
NoIntro.Add("Fairchild - Channel F", "Fairchild - Channel F");
NoIntro.Add("Funtech - Super Acan", "Funtech - Super Acan");
NoIntro.Add("GamePark - GP32", "GamePark - GP32");
NoIntro.Add("GCE - Vectrex", "GCE - Vectrex");
NoIntro.Add("Hartung - Game Master", "Hartung - Game Master");
NoIntro.Add("LeapFrog - Leapster Learning Game System", "LeapFrog - Leapster Learning Game System");
NoIntro.Add("Magnavox - Odyssey2", "Philips - Videopac+, Odyssey2");
NoIntro.Add("Microsoft - MSX", "Microsoft - MSX, MSX 2");
NoIntro.Add("Microsoft - MSX 2", "Microsoft - MSX, MSX 2");
NoIntro.Add("Microsoft - XBOX 360 (DLC)", "Microsoft - Xbox 360");
NoIntro.Add("Microsoft - XBOX 360 (Games on Demand)", "Microsoft - Xbox 360");
NoIntro.Add("Microsoft - XBOX 360 (Title Updates)", "Microsoft - Xbox 360");
NoIntro.Add("NEC - PC Engine - TurboGrafx 16", "NEC - PC Engine, TurboGrafx 16");
NoIntro.Add("NEC - Super Grafx", "NEC - Super Grafx");
NoIntro.Add("Nintendo - Famicom Disk System", "Nintendo - Famicom Disk System");
NoIntro.Add("Nintendo - Game Boy", "Nintendo - Game Boy");
NoIntro.Add("Nintendo - Game Boy Advance", "Nintendo - Game Boy Advance");
NoIntro.Add("Nintendo - Game Boy Advance (e-Cards)", "Nintendo - Game Boy Advance");
NoIntro.Add("Nintendo - Game Boy Color", "Nintendo - Game Boy Color");
NoIntro.Add("Nintendo - New Nintendo 3DS", "Nintendo - Nintendo 3DS");
NoIntro.Add("Nintendo - New Nintendo 3DS (DLC)", "Nintendo - Nintendo 3DS");
NoIntro.Add("Nintendo - Nintendo 3DS", "Nintendo - Nintendo 3DS");
NoIntro.Add("Nintendo - Nintendo 3DS (DLC)", "Nintendo - Nintendo 3DS");
NoIntro.Add("Nintendo - Nintendo 64", "Nintendo - Nintendo 64");
NoIntro.Add("Nintendo - Nintendo 64DD", "Nintendo - Nintendo 64DD");
NoIntro.Add("Nintendo - Nintendo DS", "Nintendo - Nintendo DS");
NoIntro.Add("Nintendo - Nintendo DS (Download Play) (BETA)", "Nintendo - Nintendo DS");
NoIntro.Add("Nintendo - Nintendo DSi", "Nintendo - Nintendo DSi");
NoIntro.Add("Nintendo - Nintendo DSi (DLC)", "Nintendo - Nintendo DSi");
NoIntro.Add("Nintendo - Nintendo Entertainment System", "Nintendo - Nintendo Entertainment System");
NoIntro.Add("Nintendo - Nintendo Wii (DLC)", "Nintendo - Nintendo Wii");
NoIntro.Add("Nintendo - Pokemon Mini", "Nintendo - Pokemon Mini");
NoIntro.Add("Nintendo - Satellaview", "Nintendo - Super Nintendo Entertainment System");
NoIntro.Add("Nintendo - Sufami Turbo", "Nintendo - Super Nintendo Entertainment System");
NoIntro.Add("Nintendo - Super Nintendo Entertainment System", "Nintendo - Super Nintendo Entertainment System");
NoIntro.Add("Nintendo - Virtual Boy", "Nintendo - Virtual Boy");
NoIntro.Add("Nokia - N-Gage", "Nokia - N-Gage");
NoIntro.Add("Philips - Videopac+", "Philips - Videopac+, Odyssey2");
NoIntro.Add("RCA - Studio II", "RCA - Studio II");
NoIntro.Add("Sega - 32X", "Sega - 32X");
NoIntro.Add("Sega - Game Gear", "Sega - Game Gear");
NoIntro.Add("Sega - Master System - Mark III", "Sega - Master System, Mark III");
NoIntro.Add("Sega - Mega Drive - Genesis", "Sega - Mega Drive, Genesis");
NoIntro.Add("Sega - PICO", "Sega - PICO");
NoIntro.Add("Sega - SG-1000", "Sega - SG-1000, SC-3000, SF-7000, Othello Multivision");
NoIntro.Add("Sinclair - ZX Spectrum +3", "Sinclair - ZX Spectrum");
NoIntro.Add("Sony - PlayStation 3 (DLC)", "Sony - PlayStation 3");
NoIntro.Add("Sony - PlayStation 3 (Downloadable)", "Sony - PlayStation 3");
NoIntro.Add("Sony - PlayStation 3 (PSN)", "Sony - PlayStation 3");
NoIntro.Add("Sony - PlayStation Portable", "Sony - PlayStation Portable");
NoIntro.Add("Sony - PlayStation Portable (DLC)", "Sony - PlayStation Portable");
NoIntro.Add("Sony - PlayStation Portable (PSN)", "Sony - PlayStation Portable");
NoIntro.Add("Sony - PlayStation Portable (PSX2PSP)", "Sony - PlayStation Portable");
NoIntro.Add("Sony - PlayStation Portable (UMD Music)", "Sony - PlayStation Portable");
NoIntro.Add("Sony - PlayStation Portable (UMD Video)", "Sony - PlayStation Portable");
NoIntro.Add("SNK - Neo Geo Pocket", "SNK - Neo Geo Pocket");
NoIntro.Add("SNK - Neo Geo Pocket Color", "SNK - Neo Geo Pocket Color");
NoIntro.Add("Tiger - Game.com", "Tiger - Game.com");
NoIntro.Add("Tiger - Gizmondo", "Tiger - Gizmondo");
NoIntro.Add("VTech - CreatiVision", "VTech - CreatiVision");
NoIntro.Add("VTech - V.Smile", "VTech - V.Smile, V.Disc");
NoIntro.Add("Watara - Supervision", "Watara - Supervision");
Redump = new Dictionary<string, string>();
Redump.Add("Apple - Machintosh", "Apple - Macintosh");
Redump.Add("Arcade - Namco - Sega - Nintendo - Triforce", "Namco - Triforce");
Redump.Add("Arcade - Sega - Chihiro", "Sega - Chihiro");
Redump.Add("Arcade - Sega - Lindbergh", "Sega - Lindbergh");
Redump.Add("Arcade - Sega - Naomi", "Sega - Naomi, Naomi 2, Atomiswave");
Redump.Add("Bandai - Apple - Pippin", "Bandai - Pippin");
Redump.Add("Bandai - Playdia", "Bandai - Playdia");
Redump.Add("Commodore - Amiga CD", "Commodore - Amiga");
Redump.Add("Commodore - Amiga CD32", "Commodore - Amiga");
Redump.Add("Commodore - Amiga CDTV", "Commodore - Amiga");
Redump.Add("Fujitsu - FM-Towns", "Fujitsu - FM Towns");
Redump.Add("IBM - PC compatible", "IBM - PC Compatibles");
Redump.Add("Mattel - HyperScan", "Mattel - HyperScan");
Redump.Add("Microsoft - Xbox - BIOS Images", "Microsoft - Xbox");
Redump.Add("Microsoft - Xbox", "Microsoft - Xbox");
Redump.Add("Microsoft - Xbox 360", "Microsoft - Xbox 360");
Redump.Add("Microsoft - Xbox One", "Microsoft - Xbox One");
Redump.Add("NEC - PC Engine CD - TurboGrafx-CD", "NEC - PC Engine CD, TurboGrafx 16 CD");
Redump.Add("NEC - PC-88 series", "NEC - PC-8801");
Redump.Add("NEC - PC-98 series", "NEC - PC-9801");
Redump.Add("NEC - PC-FX - PC-FXGA", "NEC - PC FX, PC FXGA");
Redump.Add("Nintendo - GameCube - BIOS Images", "Nintendo - GameCube");
Redump.Add("Nintendo - GameCube", "Nintendo - GameCube");
Redump.Add("Nintendo - Wii", "Nintendo - Wii");
Redump.Add("Nintendo - Wii U", "Nintendo - Wii U");
Redump.Add("Palm", "Hewlett-Packard - Palm");
Redump.Add("Panasonic - 3DO Interactive Multiplayer", "Panasonic - 3DO Interactive Multiplayer");
Redump.Add("Philips - CD-i", "Philips - CD-i");
Redump.Add("Sega - Dreamcast", "Sega - Dreamcast");
Redump.Add("Sega - Mega-CD - Sega CD", "Sega - Mega-CD, Sega CD");
Redump.Add("Sega - Saturn", "Sega - Saturn");
Redump.Add("SNK - Neo Geo CD", "SNK - Neo Geo CD");
Redump.Add("Sony - PlayStation - BIOS Images", "Sony - PlayStation");
Redump.Add("Sony - PlayStation", "Sony - PlayStation");
Redump.Add("Sony - PlayStation 2 - BIOS Images", "Sony - PlayStation 2");
Redump.Add("Sony - PlayStation 2", "Sony - PlayStation 2");
Redump.Add("Sony - PlayStation 3", "Sony - PlayStation 3");
Redump.Add("Sony - PlayStation 4", "Sony - PlayStation 4");
Redump.Add("Sony - PlayStation Portable", "Sony - PlayStation Portable");
Redump.Add("VTech - V.Flash", "VTech - V.Flash Home Edutainment System");
TOSEC = new Dictionary<string, string>();
TOSEC.Add("3DO 3DO Interactive Multiplayer", "Panasonic - 3DO Interactive Multiplayer");
TOSEC.Add("Acorn Archimedes", "Acorn - Archimedes");
TOSEC.Add("Acorn BBC", "Acorn BBC, Electron");
TOSEC.Add("Acorn Electron", "Acorn BBC, Electron");
TOSEC.Add("Altos Computer Systems ACS-186, 586 & 986", "Altos Computer Systems - ACS-186, 586, 986");
TOSEC.Add("Altos Computer Systems Series 5", "Altos Computer Systems - ACS Series 5");
TOSEC.Add("Amstrad CPC", "Amstrad - CPC");
TOSEC.Add("Amstrad PCW", "Amstrad - PCW");
TOSEC.Add("APF Imagination Machine", "APF - M-1000");
TOSEC.Add("American Laser Games CD-ROM System", "American Laser Games - CD-ROM System");
TOSEC.Add("Apple 1", "Apple - I");
TOSEC.Add("Apple II", "Apple - II");
TOSEC.Add("Apple IIGS", "Apple - II");
TOSEC.Add("Apple III", "Apple - III");
TOSEC.Add("Apple Macintosh", "Apple - Macintosh");
TOSEC.Add("Apple Lisa", "Apple - Lisa");
TOSEC.Add("Applied Technology MicroBee", "Applied Technology - MicroBee");
TOSEC.Add("Atari 8bit", "Atari - 8bit");
TOSEC.Add("Atari 2600 & VCS", "Atari - 2600");
TOSEC.Add("Atari 5200", "Atari - 5200");
TOSEC.Add("Atari 7800", "Atari - 7200");
TOSEC.Add("Atari Jaguar", "Atari - Jaguar");
TOSEC.Add("Atari Jaguar CD", "Atari - Jaguar CD");
TOSEC.Add("Atari Lynx", "Atari - Lynx");
TOSEC.Add("Atari ST", "Atari - ST");
TOSEC.Add("Bally Professional Arcade & Astrocade", "Bally Professional - Arcade, Astrocade");
TOSEC.Add("Bandai Pippin @World & Pippin Atmark", "Bandai - Pippin");
TOSEC.Add("Bandai Playdia", "Bandai - Playdia");
TOSEC.Add("Bandai WonderSwan", "Bandai - WonderSwan");
TOSEC.Add("Bandai WonderSwan Color", "Bandai - WonderSwan Color");
TOSEC.Add("Bondwell 2", "Bondwell - 2");
TOSEC.Add("Bondwell 12", "Bondwell - 12");
TOSEC.Add("Camputers Lynx", "Camputers - Lynx");
TOSEC.Add("Capcom CP System III", "Capcom - CPS III");
TOSEC.Add("Casio CFX-9850", "Casio - CFX-9850");
TOSEC.Add("Casio Loopy", "Casio - Loopy");
TOSEC.Add("Casio PB-1000", "Casio - PB-1000");
TOSEC.Add("Casio PV-2000", "Casio - PV-2000");
TOSEC.Add("Coleco ColecoVision", "Coleco - ColecoVision, ColecoVision ADAM");
TOSEC.Add("Coleco ColecoVision ADAM", "Coleco - ColecoVision, ColecoVision ADAM");
TOSEC.Add("Commodore Amiga", "Commodore - Amiga");
TOSEC.Add("Commodore Amiga CD32", "Commodore - Amiga");
TOSEC.Add("Commodore Amiga CDTV", "Commodore - Amiga");
TOSEC.Add("Commodore C16, C116 & Plus-4", "Commodore - Plus-4");
TOSEC.Add("Commodore C64", "Commodore - 64");
TOSEC.Add("Commodore C64DTV", "Commodore - 64 DTV");
TOSEC.Add("Commodore C65", "Commodore - 65");
TOSEC.Add("Commodore C128", "Commodore - 128");
TOSEC.Add("Commodore MAX Machine & VIC10", "Commodore - VIC-10");
TOSEC.Add("Commodore PET", "Commodore - PET");
TOSEC.Add("Commodore VIC20", "Commodore - VIC-20");
TOSEC.Add("Creatronic Mega Duck & Cougar Boy", "Creatronic - Mega Duck, Cougar Boy");
TOSEC.Add("Cybiko Cybiko", "Cybiko - Cybiko");
TOSEC.Add("Cybiko Xtreme", "Cybiko - Xtreme");
TOSEC.Add("DEC PDP-1", "DEC - PDP-1");
TOSEC.Add("DEC PDP-7", "DEC - PDP-7");
TOSEC.Add("DEC PDP-8", "DEC - PDP-8");
TOSEC.Add("DEC PDP-9", "DEC - PDP-9");
TOSEC.Add("DEC PDP-10", "DEC - PDP-10");
TOSEC.Add("DEC PDP-11", "DEC - PDP-11");
TOSEC.Add("DEC PDP-12", "DEC - PDP-12");
TOSEC.Add("DEC PDP-15", "DEC - PDP-15");
TOSEC.Add("Dragon Data Dragon", "Dragon Data - Dragon");
TOSEC.Add("EACA EG2000 Colour Genie", "EACA - EG2000 Colour Genie");
TOSEC.Add("Elektronika BK-0010-0011M", "Elektronika BK-0010");
TOSEC.Add("Elektronika BK-0011-411", "Elektronika BK-0010");
TOSEC.Add("Elektronska Industrija Nis PECOM 32 & 64", "Elektronska Industrija Nis - PECOM 32, 64");
TOSEC.Add("Emerson Arcadia 2001", "Emerson - Arcadia 2001");
TOSEC.Add("Enterprise 64 & 128", "Enterprise - 64, 128");
TOSEC.Add("Entex Adventure Vision", "Entex - Adventure Vision");
TOSEC.Add("Epoch Super Cassette Vision", "Epoch - Super Cassette Vision");
TOSEC.Add("Epson PX-8, HC-88 & Geneva", "Epson - PX-8, HC-88, Geneva");
TOSEC.Add("ETL Mark II", "ETL - Mark II");
TOSEC.Add("ETL Mark IV", "ETL - Mark IV");
TOSEC.Add("ETL Mark IV A", "ETL - Mark IV A");
TOSEC.Add("Exelvision Exeltel", "Exelvision - Exeltel, EXL100");
TOSEC.Add("Exelvision EXL100", "Exelvision - Exeltel, EXL100");
TOSEC.Add("Exidy Sorcerer", "Exidy - Sorcerer");
TOSEC.Add("Fairchild VES & Channel F", "Fairchild - Channel F");
TOSEC.Add("Front Fareast Magic Drive", "Front Fareast - Magic Drive");
TOSEC.Add("Fuji Photo Film FUJIC", "Fuji Photo Film - FUJIC");
TOSEC.Add("Fujitsu FM Towns", "Fujitsu - FM Towns");
TOSEC.Add("Fujitsu FM-7", "Fujitsu - FM-7");
TOSEC.Add("Funtech Super Acan", "Funtech - Super Acan");
TOSEC.Add("Galaksija Galaksija", "Galaksija - Galaksija, Galaksija Plus");
TOSEC.Add("Galaksija Galaksija Plus", "Galaksija - Galaksija, Galaksija Plus");
TOSEC.Add("Game Park GP32", "GamePark - GP32");
TOSEC.Add("GCE Vectrex", "GCE - Vectrex");
TOSEC.Add("Hewlett-Packard HP48", "Hewlett-Packard - HP48");
TOSEC.Add("Hewlett-Packard HP49", "Hewlett-Packard - HP49");
TOSEC.Add("HomeLab BraiLab", "HomeLab - BraiLab");
TOSEC.Add("HomeLab HomeLab", "HomeLab - HomeLab");
TOSEC.Add("IBM PC Compatibles", "IBM - PC Compatibles");
TOSEC.Add("IBM PCjr", "IBM - PC Jr");
TOSEC.Add("Incredible Technologies Eagle", "Incredible Technologies - Eagle");
TOSEC.Add("Infocom Z-Machine", "Infocom - Z-Machine");
TOSEC.Add("Interact Family Computer", "Interact - Family Computer");
TOSEC.Add("Jupiter Cantab Jupiter Ace", "Jupiter Cantab - Jupiter Ace");
TOSEC.Add("Kaypro II", "Kaypro - II");
TOSEC.Add("Keio University K-1", "University of Keio - K-1");
TOSEC.Add("Konami Bemani System 573 Analog", "Konami - System 573");
TOSEC.Add("Konami Bemani System 573 Digital", "Konami - System 573");
TOSEC.Add("Konami System 573", "Konami - System 573");
TOSEC.Add("Luxor ABC 80", "Luxor - ABC 80");
TOSEC.Add("Luxor ABC 800", "Luxor - ABC 800");
TOSEC.Add("Luxor Video Entertainment System", "Luxor - Video Entertainment System");
TOSEC.Add("Magnavox Odyssey2", "Philips - Videopac+, Odyssey2");
TOSEC.Add("Matra Hachette Alice 32", "Matra Hachette - Alice 32 & 90");
TOSEC.Add("Matsushita National JR 200", "Matsushita National - JR 200");
TOSEC.Add("Mattel Aquarius", "Mattel - Aquarius");
TOSEC.Add("Mattel HyperScan", "Mattel - HyperScan");
TOSEC.Add("Mattel Intellivision", "Mattel - Intellivision");
TOSEC.Add("Memorex Video Information System", "Memorex - Video Information System");
TOSEC.Add("Memotech MTX", "Memotech MTX512");
TOSEC.Add("MGT Sam Coupe", "MGT - Sam Coupe");
TOSEC.Add("Microkey Primo", "Microkey - Primo");
TOSEC.Add("MITS Altair 8800", "MITS - Altair 8800");
TOSEC.Add("MSX MSX", "Microsoft - MSX, MSX 2");
TOSEC.Add("MSX MSX2", "Microsoft - MSX, MSX 2");
TOSEC.Add("MSX MSX2+", "Microsoft - MSX, MSX 2");
TOSEC.Add("MSX TurboR", "Microsoft - MSX, MSX 2");
TOSEC.Add("Nascom I & II", "Nascom - I, II");
TOSEC.Add("NCR Decision Mate V", "NCR - Decision Mate V");
TOSEC.Add("NEC PC-88VA", "NEC - PC-88VA");
TOSEC.Add("NEC PC-6001", "NEC - PC-6001");
TOSEC.Add("NEC PC-8001", "NEC - PC-8001");
TOSEC.Add("NEC PC-8201", "NEC - PC-8201");
TOSEC.Add("NEC PC-8801", "NEC - PC-8801");
TOSEC.Add("NEC PC-9801", "NEC - PC-9801");
TOSEC.Add("NEC PC-9821", "NEC - PC-9801");
TOSEC.Add("NEC PC-Engine & TurboGrafx-16", "NEC - PC Engine, TurboGrafx 16");
TOSEC.Add("NEC PC-Engine CD & TurboGrafx-16 CD", "NEC - PC Engine CD, TurboGrafx 16 CD");
TOSEC.Add("NEC PC-FX", "NEC - PC FX, PC FXGA");
TOSEC.Add("NEC PC-FXGA", "NEC - PC FX, PC FXGA");
TOSEC.Add("NEC SuperGrafx", "NEC - Super Grafx");
TOSEC.Add("Nintendo 64", "Nintendo - Nintendo 64");
TOSEC.Add("Nintendo 64DD", "Nintendo - Nintendo 64DD");
TOSEC.Add("Nintendo Famicom & Entertainment System", "Nintendo - Nintendo Entertainment System");
TOSEC.Add("Nintendo Famicom Disk System", "Nintendo - Famicom Disk System");
TOSEC.Add("Nintendo Game Boy", "Nintendo - Game Boy");
TOSEC.Add("Nintendo Game Boy Advance", "Nintendo - Game Boy Advance");
TOSEC.Add("Nintendo Game Boy Color", "Nintendo - Game Boy Color");
TOSEC.Add("Nintendo GameCube", "Nintendo - GameCube");
TOSEC.Add("Nintendo Pokemon Mini", "Nintendo - Pokemon Mini");
TOSEC.Add("Nintendo Super Famicom & Super Entertainment System", "Nintendo - Super Nintendo Entertainment System");
TOSEC.Add("Nintendo Virtual Boy", "Nintendo - Virtual Boy");
TOSEC.Add("OCC Osborne 1 & Osborne Executive", "OCC - Osborne 1, 2, 3, 4");
TOSEC.Add("OpenPandora Pandora", "OpenPandora - Pandora");
TOSEC.Add("PEL Varazdin Orao", "PEL Varazdin - Orao");
TOSEC.Add("Philips CD-i", "Philips - CD-i");
TOSEC.Add("Philips P2000", "Philips - P2000");
TOSEC.Add("Philips VG 5000", "Philips - VG 5000");
TOSEC.Add("Philips Videopac+", "Philips - Videopac+, Odyssey2");
TOSEC.Add("Pioneer LaserActive", "Pioneer - LaserActive");
TOSEC.Add("PTC Sol Terminal Computer SOL-20", "PTC - Sol Terminal Computer SOL-20");
TOSEC.Add("Radica Arcade Legends & Play TV Legends", "Radica - Arcade Legends, Play TV Legends");
TOSEC.Add("Radio-86RK Apogej BK-01", "Radio-86RK - Apogej BK-01");
TOSEC.Add("Radio-86RK Mikro-80", "Radio-86RK - Mikro-80");
TOSEC.Add("Radio-86RK Mikrosha", "Radio-86RK - Mikrosha");
TOSEC.Add("Radio-86RK Partner-01.01", "Radio-86RK - Partner-01.01");
TOSEC.Add("Radio-86RK Radio-86RK", "Radio-86RK - Radio-86RK");
TOSEC.Add("Radio-86RK YuT-88", "Radio-86RK - YuT-88");
TOSEC.Add("RCA Chip-8", "RCA - Chip-8");
TOSEC.Add("RCA Studio II", "RCA - Studio II");
TOSEC.Add("RCA Superchip", "RCA - Superchip");
TOSEC.Add("RM Nimbus PC", "RM - Nimbus PC");
TOSEC.Add("Robotron HC900, KC85 2, KC85 3 & KC85 4", "Robotron - KC85");
TOSEC.Add("Robotron KC Compact", "Robotron - KC Compact");
TOSEC.Add("Robotron Z1013", "Robotron - Z1013");
TOSEC.Add("Robotron Z9001 & KC85 1", "Robotron - KC85");
TOSEC.Add("SABA Videoplay", "Fairchild - Channel F");
TOSEC.Add("Sega 32X", "Sega - 32X");
TOSEC.Add("Sega Computer 3000", "Sega - SG-1000, SC-3000, SF-7000, Othello Multivision");
TOSEC.Add("Sega Dreamcast", "Sega - Dreamcast");
TOSEC.Add("Sega Game 1000", "Sega - SG-1000, SC-3000, SF-7000, Othello Multivision");
TOSEC.Add("Sega Game Gear", "Sega - Game Gear");
TOSEC.Add("Sega Mark III & Master System", "Sega - Master System, Mark III");
TOSEC.Add("Sega Mega Drive & Genesis", "Sega - Mega Drive, Genesis");
TOSEC.Add("Sega Mega-CD and Sega CD", "Sega - Mega-CD, Sega CD");
TOSEC.Add("Sega NAOMI", "Sega - Naomi, Naomi 2, Atomiswave");
TOSEC.Add("Sega NAOMI 2", "Sega - Naomi, Naomi 2, Atomiswave");
TOSEC.Add("Sega Pico", "Sega - PICO");
TOSEC.Add("Sega Saturn", "Sega - Saturn");
TOSEC.Add("Sega Super Control Station", "Sega - SG-1000, SC-3000, SF-7000, Othello Multivision");
TOSEC.Add("Sega Visual Memory System", "Sega - Visual Memory System");
TOSEC.Add("Sega WonderMega", "Sega - Mega-CD, Sega CD");
TOSEC.Add("Sharp MZ-700", "Sharp - MZ-700");
TOSEC.Add("Sharp MZ-800 & MZ-1500", "Sharp - MZ-800, MZ-1500");
TOSEC.Add("Sharp X1", "Sharp - X1");
TOSEC.Add("Sharp X1 Turbo", "Sharp - X1");
TOSEC.Add("Sharp X68000", "Sharp - X68000");
TOSEC.Add("Sinclair QL", "Sinclair - QL");
TOSEC.Add("Sinclair ZX Spectrum", "Sinclair - ZX Spectrum");
TOSEC.Add("Sinclair ZX81", "Sinclair - ZX81");
TOSEC.Add("SNK Hyper Neo-Geo 64", "SNK - Hyper Neo Geo 64");
TOSEC.Add("SNK Neo-Geo CD", "SNK - Neo Geo CD");
TOSEC.Add("SNK Neo-Geo Pocket", "SNK - Neo Geo Pocket");
TOSEC.Add("SNK Neo-Geo Pocket Color", "SNK - Neo Geo Pocket Color");
TOSEC.Add("Sony PlayStation", "Sony - PlayStation");
TOSEC.Add("Sony PlayStation 2", "Sony - PlayStation 2");
TOSEC.Add("Sony PocketStation", "Sony - PocketStation");
TOSEC.Add("Sord M5", "Sord - M5");
TOSEC.Add("Spectravideo SVI-318 & SVI-328", "Spectravideo - SVI-318, SVI-328");
TOSEC.Add("Tandy Radio Shack TRS-80 Color Computer", "Tandy Radio Shack - TRS-80 Color Computer");
TOSEC.Add("Tandy Radio Shack TRS-80 MC-10", "Tandy Radio Shack - TRS-80 MC-10");
TOSEC.Add("Tandy Radio Shack TRS-80 Model 4", "Tandy Radio Shack - TRS-80 Model 4");
TOSEC.Add("Tandy Radio Shack TRS-80 Model 100", "Tandy Radio Shack - TRS-80 Model 100");
TOSEC.Add("Tandy Radio Shack TRS-80 Model I", "Tandy Radio Shack - TRS-80 Model I");
TOSEC.Add("Tandy Radio Shack TRS-80 Model III", "Tandy Radio Shack - TRS-80 Model III");
TOSEC.Add("Tangerine Microtan 65", "Tangerine - Microtan 65");
TOSEC.Add("Tangerine Oric-1 & Oric Atmos", "Tangerine - Oric-1, Oric Atmos");
TOSEC.Add("Tatung Einstein TC-01", "Tatung - Einstein TC-01");
TOSEC.Add("Technosys Aamber Pegasus", "Technosys - Aamber Pegasus");
TOSEC.Add("Tesla PMD 85", "Tesla - PMD 85");
TOSEC.Add("Texas Instruments CC-40", "Texas Instruments - CC-40");
TOSEC.Add("Texas Instruments TI-73", "Texas Instruments - TI-73");
TOSEC.Add("Texas Instruments TI-80", "Texas Instruments - TI-80");
TOSEC.Add("Texas Instruments TI-81", "Texas Instruments - TI-81");
TOSEC.Add("Texas Instruments TI-82", "Texas Instruments - TI-82");
TOSEC.Add("Texas Instruments TI-83", "Texas Instruments - TI-83");
TOSEC.Add("Texas Instruments TI-85", "Texas Instruments - TI-85");
TOSEC.Add("Texas Instruments TI-86", "Texas Instruments - TI-86");
TOSEC.Add("Texas Instruments TI-89", "Texas Instruments - TI-89");
TOSEC.Add("Texas Instruments TI-92", "Texas Instruments - TI-92");
TOSEC.Add("Texas Instruments TI-99 4A", "Texas Instruments - TI-99 4A");
TOSEC.Add("Thomson MO5", "Thomson - 8bit");
TOSEC.Add("Thomson MO6", "Thomson - 8bit");
TOSEC.Add("Thomson TO7", "Thomson - 8bit");
TOSEC.Add("Thomson TO8", "Thomson - 8bit");
TOSEC.Add("Thomson TO9+", "Thomson - 8bit");
TOSEC.Add("Tiger Game.com", "Tiger - Game.com");
TOSEC.Add("Tiki Data Kontiki-100 & Tiki-100", "Tiki Data - Kontiki-100, Tiki-100");
TOSEC.Add("Tomy KISS-Site", "Tomy - Kiss-site");
TOSEC.Add("Tomy Tutor & Pyuuta", "Tomy - Tutor, Pyuuta");
TOSEC.Add("Tsukuda Original Othello Multivision", "Sega - SG-1000, SC-3000, SF-7000, Othello Multivision");
TOSEC.Add("University of Cambridge EDSAC", "University of Cambridge - EDSAC");
TOSEC.Add("University of Tokyo PC-1", "University of Tokyo - PC-1");
TOSEC.Add("Videoton TV-Computer", "Videoton - TV-Computer");
TOSEC.Add("Visual Technology Visual 1050", "Visual Technology - Visual 1050");
TOSEC.Add("VM Labs Nuon", "VM Labs - Nuon");
TOSEC.Add("VTech V.Flash Home Edutainment System", "VTech - V.Flash Home Edutainment System");
TOSEC.Add("VTech Laser 200", "VTech - Laser");
TOSEC.Add("VTech Laser 310", "VTech - Laser");
TOSEC.Add("VTech Laser 2001 & CreatiVision", "VTech - CreatiVision");
TOSEC.Add("Wang VS", "Wang - VS");
TOSEC.Add("Watara Supervision", "Watara - SuperVision");
TOSEC.Add("ZAPiT Games Game Wave Family Entertainment System", "ZAPiT Games - Game Wave Family Entertainment System");
TruRip = new Dictionary<string, string>();
TruRip.Add("Acorn Archimedes", "Acorn - Archimedes");
TruRip.Add("Acorn Archimedes CD", "Acorn - Archimedes");
TruRip.Add("Acorn BBC Microcomputer System", "Acorn - BBC, Electron");
TruRip.Add("American Laser Games American Laser Games (Arcade)", "American Laser Games - CD-ROM System");
TruRip.Add("Amstrad GX4000", "Amstrad - GX4000");
TruRip.Add("Andamiro Pump It Up (Arcade)", "Andamiro - Pump It Up");
TruRip.Add("Apple Macintosh CD", "Apple - Macintosh");
TruRip.Add("Atari 5200", "Atari - 5200");
TruRip.Add("Atari 7800", "Atari - 7800");
TruRip.Add("Atari Jaguar CD", "Atari - Jaguar CD");
TruRip.Add("Atari Lynx", "Atari - Lynx");
TruRip.Add("Bandai Pippin @World & Atmark", "Bandai Pippin");
TruRip.Add("Bandai Playdia", "Bandai - Playdia");
TruRip.Add("Bandai WonderSwan Color (SwanCrystal)", "Bandai - WonderSwan Color");
TruRip.Add("Bandai WonderSwan", "Bandai - WonderSwan");
TruRip.Add("Capcom CP SYSTEM III", "Capcom - CPS III");
TruRip.Add("Commodore Amiga CD", "Commodore - Amiga");
TruRip.Add("Commodore Amiga CD32", "Commodore - Amiga");
TruRip.Add("Commodore Amiga CDTV", "Commodore - Amiga");
TruRip.Add("Fairchild Channel F (Video Entertainment System)", "Fairchild - Channel F");
TruRip.Add("Fujitsu FM Towns (Marty)", "Fujitsu - FM Towns");
TruRip.Add("IBM PC Compatible IBM PC compatible", "IBM - PC Compatibles");
TruRip.Add("Incredible Technologies IT Eagle", "Incredible Technologies - Eagle");
TruRip.Add("Incredible Technologies IT PC", "Incredible Technologies - PC");
TruRip.Add("Konami Bemani FireBeat", "Konami - Bemani FireBeat");
TruRip.Add("Konami Bemani Twinkle", "Konami - Bemani Twinkle");
TruRip.Add("Konami M2", "Panasonic - 3DO M2");
TruRip.Add("Konami System 573", "Konami - System 573");
TruRip.Add("Mattel HyperScan", "Mattel - HyperScan");
TruRip.Add("Memorex VIS interactive Video Information", "Memorex - Video Information System");
TruRip.Add("MSX MSX CD", "Microsoft - MSX, MSX 2");
TruRip.Add("Namco - Sega - Nintendo Triforce", "Namco - Triforce");
TruRip.Add("Namco System 2x6", "Namco - System 246, System 256");
TruRip.Add("NCR Decision Mate V", "NCR - Decision Mate V");
TruRip.Add("NEC PC Engine CD & TurboGrafx CD", "NEC - PC Engine CD, TurboGrafx 16 CD");
TruRip.Add("NEC PC-FX", "NEC - PC FX, PC FXGA");
TruRip.Add("NEC PC-FXGA", "NEC - PC FX, PC FXGA");
TruRip.Add("Panasonic 3DO Interactive Multiplayer", "Panasonic - 3DO Interactive Multiplayer");
TruRip.Add("Philips CD-i & VCD", "Philips - CD-i");
TruRip.Add("Philips Videopac + G7400", "Philips - Videopac+, Odyssey2");
TruRip.Add("Sega Chihiro", "Sega - Chihiro");
TruRip.Add("Sega Dreamcast", "Sega - Dreamcast");
TruRip.Add("Sega Lindbergh", "Sega - Lindbergh");
TruRip.Add("Sega Mega-CD & Sega CD", "Sega - Mega-CD, Sega CD");
TruRip.Add("Sega NAOMI 2", "Sega - Naomi, Naomi 2, Atomiswave");
TruRip.Add("Sega NAOMI", "Sega - Naomi, Naomi 2, Atomiswave");
TruRip.Add("Sega RingWide", "Sega - RingWide");
TruRip.Add("Sega Saturn", "Sega - Saturn");
TruRip.Add("Sharp X1", "Sharp - X1");
TruRip.Add("SNK Neo-Geo CD", "SNK - Neo Geo CD");
TruRip.Add("Sony PlayStation & PSone", "Sony - PlayStation");
TruRip.Add("Sord CGL M 5 (M 5, Game M 5)", "Sord - M5");
TruRip.Add("Spectravideo SV-318 & SV-328", "Spectravideo - SVI-318, SVI-328");
TruRip.Add("Tesla PMD-85", "Tesla - PMD 85");
TruRip.Add("Tiger Game.com", "Tiger - Game.com");
TruRip.Add("Tomy Grandstand Tutor (Tutor, Pyuuta)", "Tomy - Tutor, Pyuuta");
TruRip.Add("Tomy Kiss-site", "Tomy - Kiss-site");
TruRip.Add("Tsukuda Original Othello Multivision", "Sega - SG-1000, SC-3000, SF-7000, Othello Multivision");
TruRip.Add("Vidoton TV-Computer", "Videoton - TV-Computer");
TruRip.Add("VM Labs Nuon", "VM Labs - Nuon");
TruRip.Add("VTech V.Flash Home Edutainment System", "VTech - V.Flash Home Edutainment System");
TruRip.Add("Wang VS", "Wang - VS");
TruRip.Add("Watara SuperVision (Quickshot, Hartung SV-100, HiperVision, Tiger Boy)", "Watara - Supervision");
TruRip.Add("ZAPiT Games Game Wave Family Entertainment System", "ZAPiT Games - Game Wave Family Entertainment System");
}
}
}

124
DATabase/Style.cs Normal file
View File

@@ -0,0 +1,124 @@
using System.Text.RegularExpressions;
namespace DATabase
{
public class Style
{
// Replace accented characters
public static string NormalizeChars(string input)
{
string[,] charmap = {
{ "Á", "A" }, { "á", "a" },
{ "À", "A" }, { "à", "a" },
{ "Â", "A" }, { "â", "a" },
{ "Ä", "Ae" }, { "ä", "ae" },
{ "Ã", "A" }, { "ã", "a" },
{ "Å", "A" }, { "å", "a" },
{ "Æ", "Ae" }, { "æ", "ae" },
{ "Ç", "C" }, { "ç", "c" },
{ "Ð", "D" }, { "ð", "d" },
{ "É", "E" }, { "é", "e" },
{ "È", "E" }, { "è", "e" },
{ "Ê", "E" }, { "ê", "e" },
{ "Ë", "E" }, { "ë", "e" },
{ "ƒ", "f" },
{ "Í", "I" }, { "í", "i" },
{ "Ì", "I" }, { "ì", "i" },
{ "Î", "I" }, { "î", "i" },
{ "Ï", "I" }, { "ï", "i" },
{ "Ñ", "N" }, { "ñ", "n" },
{ "Ó", "O" }, { "ó", "o" },
{ "Ò", "O" }, { "ò", "o" },
{ "Ô", "O" }, { "ô", "o" },
{ "Ö", "Oe" }, { "ö", "oe" },
{ "Õ", "O" }, { "õ", "o" },
{ "Ø", "O" }, { "ø", "o" },
{ "Š", "S" }, { "š", "s" },
{ "ß", "ss" },
{ "Þ", "B" }, { "þ", "b" },
{ "Ú", "U" }, { "ú", "u" },
{ "Ù", "U" }, { "ù", "u" },
{ "Û", "U" }, { "û", "u" },
{ "Ü", "Ue" }, { "ü", "ue" },
{ "ÿ", "y" },
{ "Ý", "Y" }, { "ý", "y" },
{ "Ž", "Z" }, { "ž", "z" },
};
for (int i = 0; i < charmap.GetLength(0); i++)
{
input = input.Replace(charmap[i, 0], charmap[i, 1]);
}
return input;
}
// Replace special characters and patterns
public static string SearchPattern(string input)
{
string[,] charmap = {
{ @"~", " - " },
{ @"_", " " },
{ @":", " " },
{ @">", ")" },
{ @"<", "(" },
{ @"\|", "-" },
{ "\"", "'" },
{ @"\*", "." },
{ @"\\", "-" },
{ @"/", "-" },
{ @"\?", " " },
{ @"\(([^)(]*)\(([^)]*)\)([^)(]*)\)", " " },
{ @"\(([^)]+)\)", " " },
{ @"\[([^]]+)\]", " " },
{ @"\{([^}]+)\}", " " },
{ @"(ZZZJUNK|ZZZ-UNK-|ZZZ-UNK |zzz unknow |zzz unk |Copy of |[.][a-z]{3}[.][a-z]{3}[.]|[.][a-z]{3}[.])", " " },
{ @" (r|rev|v|ver)\s*[\d\.]+[^\s]*", " " },
{ @"(( )|(\A))(\d{6}|\d{8})(( )|(\Z))", " " },
{ @"(( )|(\A))(\d{1,2})-(\d{1,2})-(\d{4}|\d{2})", " " },
{ @"(( )|(\A))(\d{4}|\d{2})-(\d{1,2})-(\d{1,2})", " " },
{ @"[-]+", "-" },
{ @"\A\s*\)", " " },
{ @"\A\s*(,|-)", " " },
{ @"\s+", " " },
{ @"\s+,", "," },
{ @"\s*(,|-)\s*\Z", " " },
};
for (int i = 0; i < charmap.GetLength(0); i++)
{
input = Regex.Replace(input, charmap[i, 0], charmap[i, 1]);
}
return input;
}
// Convert Cyrillic lettering to Latin lettering
public static string RussianToLatin (string input)
{
string [,] charmap = {
{ "А", "A" }, { "Б", "B" }, { "В", "V" }, { "Г", "G" }, { "Д", "D" },
{ "Е", "E" }, { "Ё", "Yo" }, { "Ж", "Zh" }, { "З", "Z" }, { "И", "I" },
{ "Й", "J" }, { "К", "K" }, { "Л", "L" }, { "М", "M" }, { "Н", "N" },
{ "О", "O" }, { "П", "P" }, { "Р", "R" }, { "С", "S" }, { "Т", "T" },
{ "У", "U" }, { "Ф", "f" }, { "Х", "Kh" }, { "Ц", "Ts" }, { "Ч", "Ch" },
{ "Ш", "Sh" }, { "Щ", "Sch" }, { "Ъ", "" }, { "Ы", "y" }, { "Ь", "" },
{ "Э", "e" }, { "Ю", "yu" }, { "Я", "ya" }, { "а", "a" }, { "б", "b" },
{ "в", "v" }, { "г", "g" }, { "д", "d" }, { "е", "e" }, { "ё", "yo" },
{ "ж", "zh" }, { "з", "z" }, { "и", "i" }, { "й", "j" }, { "к", "k" },
{ "л", "l" }, { "м", "m" }, { "н", "n" }, { "о", "o" }, { "п", "p" },
{ "р", "r" }, { "с", "s" }, { "т", "t" }, { "у", "u" }, { "ф", "f" },
{ "х", "kh" }, { "ц", "ts" }, { "ч", "ch" }, { "ш", "sh" }, { "щ", "sch" },
{ "ъ", "" }, { "ы", "y" }, { "ь", "" }, { "э", "e" }, { "ю", "yu" },
{ "я", "ya" },
};
for (int i = 0; i < charmap.GetLength(0); i++)
{
input = input.Replace(charmap[i, 0], charmap[i, 1]);
}
return input;
}
}
}

8
DATabase/packages.config Normal file
View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="EntityFramework" version="6.0.0" targetFramework="net452" />
<package id="System.Data.SQLite" version="1.0.99.0" targetFramework="net452" />
<package id="System.Data.SQLite.Core" version="1.0.99.0" targetFramework="net452" />
<package id="System.Data.SQLite.EF6" version="1.0.99.0" targetFramework="net452" />
<package id="System.Data.SQLite.Linq" version="1.0.99.0" targetFramework="net452" />
</packages>

View File

@@ -0,0 +1,5 @@
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
</configSections>
</configuration>

View File

@@ -0,0 +1,5 @@
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
</configSections>
</configuration>

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,48 @@
TOPIC
about_EntityFramework
SHORT DESCRIPTION
Provides information about Entity Framework commands.
LONG DESCRIPTION
This topic describes the Entity Framework commands. Entity Framework is
Microsoft's recommended data access technology for new applications.
The following Entity Framework cmdlets are used with Entity Framework
Migrations.
Cmdlet Description
----------------- ---------------------------------------------------
Enable-Migrations Enables Code First Migrations in a project.
Add-Migration Scaffolds a migration script for any pending model
changes.
Update-Database Applies any pending migrations to the database.
Get-Migrations Displays the migrations that have been applied to
the target database.
The following Entity Framework cmdlets are used by NuGet packages that
install Entity Framework providers. These commands are not usually used as
part of normal application development.
Cmdlet Description
------------------------------ ---------------------------------------
Add-EFProvider Adds or updates an Entity Framework
provider entry in the project config
file.
Add-EFDefaultConnectionFactory Adds or updates an Entity Framework
default connection factory in the
project config file.
Initialize-EFConfiguration Initializes the Entity Framework
section in the project config file and
sets defaults.
SEE ALSO
Enable-Migrations
Add-Migration
Update-Database
Get-Migrations

View File

@@ -0,0 +1,154 @@
param($installPath, $toolsPath, $package, $project)
if (Get-Module | ?{ $_.Name -eq 'EntityFramework' })
{
Remove-Module EntityFramework
}
Import-Module (Join-Path $toolsPath EntityFramework.psd1)
# SIG # Begin signature block
# MIIarwYJKoZIhvcNAQcCoIIaoDCCGpwCAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB
# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR
# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUjXj4E03IfImYfKMB4CA3DfY0
# KZmgghWCMIIEwzCCA6ugAwIBAgITMwAAADPlJ4ajDkoqgAAAAAAAMzANBgkqhkiG
# 9w0BAQUFADB3MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4G
# A1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSEw
# HwYDVQQDExhNaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EwHhcNMTMwMzI3MjAwODIz
# WhcNMTQwNjI3MjAwODIzWjCBszELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hp
# bmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jw
# b3JhdGlvbjENMAsGA1UECxMETU9QUjEnMCUGA1UECxMebkNpcGhlciBEU0UgRVNO
# OkY1MjgtMzc3Ny04QTc2MSUwIwYDVQQDExxNaWNyb3NvZnQgVGltZS1TdGFtcCBT
# ZXJ2aWNlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyt7KGQ8fllaC
# X9hCMtQIbbadwMLtfDirWDOta4FQuIghCl2vly2QWsfDLrJM1GN0WP3fxYlU0AvM
# /ZyEEXmsoyEibTPgrt4lQEWSTg1jCCuLN91PB2rcKs8QWo9XXZ09+hdjAsZwPrsi
# 7Vux9zK65HG8ef/4y+lXP3R75vJ9fFdYL6zSDqjZiNlAHzoiQeIJJgKgzOUlzoxn
# g99G+IVNw9pmHsdzfju0dhempaCgdFWo5WAYQWI4x2VGqwQWZlbq+abLQs9dVGQv
# gfjPOAAPEGvhgy6NPkjsSVZK7Jpp9MsPEPsHNEpibAGNbscghMpc0WOZHo5d7A+l
# Fkiqa94hLwIDAQABo4IBCTCCAQUwHQYDVR0OBBYEFABYGz7txfEGk74xPTa0rAtd
# MvCBMB8GA1UdIwQYMBaAFCM0+NlSRnAK7UD7dvuzK7DDNbMPMFQGA1UdHwRNMEsw
# SaBHoEWGQ2h0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3Rz
# L01pY3Jvc29mdFRpbWVTdGFtcFBDQS5jcmwwWAYIKwYBBQUHAQEETDBKMEgGCCsG
# AQUFBzAChjxodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY3Jv
# c29mdFRpbWVTdGFtcFBDQS5jcnQwEwYDVR0lBAwwCgYIKwYBBQUHAwgwDQYJKoZI
# hvcNAQEFBQADggEBAAL/44wD6u9+OLm5fJ87UoOk+iM41AO4alm16uBviAP0b1Fq
# lTp1hegc3AfFTp0bqM4kRxQkTzV3sZy8J3uPXU/8BouXl/kpm/dAHVKBjnZIA37y
# mxe3rtlbIpFjOzJfNfvGkTzM7w6ZgD4GkTgTegxMvjPbv+2tQcZ8GyR8E9wK/EuK
# IAUdCYmROQdOIU7ebHxwu6vxII74mHhg3IuUz2W+lpAPoJyE7Vy1fEGgYS29Q2dl
# GiqC1KeKWfcy46PnxY2yIruSKNiwjFOPaEdHodgBsPFhFcQXoS3jOmxPb6897t4p
# sETLw5JnugDOD44R79ECgjFJlJidUUh4rR3WQLYwggTsMIID1KADAgECAhMzAAAA
# sBGvCovQO5/dAAEAAACwMA0GCSqGSIb3DQEBBQUAMHkxCzAJBgNVBAYTAlVTMRMw
# EQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVN
# aWNyb3NvZnQgQ29ycG9yYXRpb24xIzAhBgNVBAMTGk1pY3Jvc29mdCBDb2RlIFNp
# Z25pbmcgUENBMB4XDTEzMDEyNDIyMzMzOVoXDTE0MDQyNDIyMzMzOVowgYMxCzAJ
# BgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25k
# MR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xDTALBgNVBAsTBE1PUFIx
# HjAcBgNVBAMTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjCCASIwDQYJKoZIhvcNAQEB
# BQADggEPADCCAQoCggEBAOivXKIgDfgofLwFe3+t7ut2rChTPzrbQH2zjjPmVz+l
# URU0VKXPtIupP6g34S1Q7TUWTu9NetsTdoiwLPBZXKnr4dcpdeQbhSeb8/gtnkE2
# KwtA+747urlcdZMWUkvKM8U3sPPrfqj1QRVcCGUdITfwLLoiCxCxEJ13IoWEfE+5
# G5Cw9aP+i/QMmk6g9ckKIeKq4wE2R/0vgmqBA/WpNdyUV537S9QOgts4jxL+49Z6
# dIhk4WLEJS4qrp0YHw4etsKvJLQOULzeHJNcSaZ5tbbbzvlweygBhLgqKc+/qQUF
# 4eAPcU39rVwjgynrx8VKyOgnhNN+xkMLlQAFsU9lccUCAwEAAaOCAWAwggFcMBMG
# A1UdJQQMMAoGCCsGAQUFBwMDMB0GA1UdDgQWBBRZcaZaM03amAeA/4Qevof5cjJB
# 8jBRBgNVHREESjBIpEYwRDENMAsGA1UECxMETU9QUjEzMDEGA1UEBRMqMzE1OTUr
# NGZhZjBiNzEtYWQzNy00YWEzLWE2NzEtNzZiYzA1MjM0NGFkMB8GA1UdIwQYMBaA
# FMsR6MrStBZYAck3LjMWFrlMmgofMFYGA1UdHwRPME0wS6BJoEeGRWh0dHA6Ly9j
# cmwubWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01pY0NvZFNpZ1BDQV8w
# OC0zMS0yMDEwLmNybDBaBggrBgEFBQcBAQROMEwwSgYIKwYBBQUHMAKGPmh0dHA6
# Ly93d3cubWljcm9zb2Z0LmNvbS9wa2kvY2VydHMvTWljQ29kU2lnUENBXzA4LTMx
# LTIwMTAuY3J0MA0GCSqGSIb3DQEBBQUAA4IBAQAx124qElczgdWdxuv5OtRETQie
# 7l7falu3ec8CnLx2aJ6QoZwLw3+ijPFNupU5+w3g4Zv0XSQPG42IFTp8263Os8ls
# ujksRX0kEVQmMA0N/0fqAwfl5GZdLHudHakQ+hywdPJPaWueqSSE2u2WoN9zpO9q
# GqxLYp7xfMAUf0jNTbJE+fA8k21C2Oh85hegm2hoCSj5ApfvEQO6Z1Ktwemzc6bS
# Y81K4j7k8079/6HguwITO10g3lU/o66QQDE4dSheBKlGbeb1enlAvR/N6EXVruJd
# PvV1x+ZmY2DM1ZqEh40kMPfvNNBjHbFCZ0oOS786Du+2lTqnOOQlkgimiGaCMIIF
# vDCCA6SgAwIBAgIKYTMmGgAAAAAAMTANBgkqhkiG9w0BAQUFADBfMRMwEQYKCZIm
# iZPyLGQBGRYDY29tMRkwFwYKCZImiZPyLGQBGRYJbWljcm9zb2Z0MS0wKwYDVQQD
# EyRNaWNyb3NvZnQgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMTAwODMx
# MjIxOTMyWhcNMjAwODMxMjIyOTMyWjB5MQswCQYDVQQGEwJVUzETMBEGA1UECBMK
# V2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0
# IENvcnBvcmF0aW9uMSMwIQYDVQQDExpNaWNyb3NvZnQgQ29kZSBTaWduaW5nIFBD
# QTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJyWVwZMGS/HZpgICBC
# mXZTbD4b1m/My/Hqa/6XFhDg3zp0gxq3L6Ay7P/ewkJOI9VyANs1VwqJyq4gSfTw
# aKxNS42lvXlLcZtHB9r9Jd+ddYjPqnNEf9eB2/O98jakyVxF3K+tPeAoaJcap6Vy
# c1bxF5Tk/TWUcqDWdl8ed0WDhTgW0HNbBbpnUo2lsmkv2hkL/pJ0KeJ2L1TdFDBZ
# +NKNYv3LyV9GMVC5JxPkQDDPcikQKCLHN049oDI9kM2hOAaFXE5WgigqBTK3S9dP
# Y+fSLWLxRT3nrAgA9kahntFbjCZT6HqqSvJGzzc8OJ60d1ylF56NyxGPVjzBrAlf
# A9MCAwEAAaOCAV4wggFaMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMsR6MrS
# tBZYAck3LjMWFrlMmgofMAsGA1UdDwQEAwIBhjASBgkrBgEEAYI3FQEEBQIDAQAB
# MCMGCSsGAQQBgjcVAgQWBBT90TFO0yaKleGYYDuoMW+mPLzYLTAZBgkrBgEEAYI3
# FAIEDB4KAFMAdQBiAEMAQTAfBgNVHSMEGDAWgBQOrIJgQFYnl+UlE/wq4QpTlVnk
# pDBQBgNVHR8ESTBHMEWgQ6BBhj9odHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtp
# L2NybC9wcm9kdWN0cy9taWNyb3NvZnRyb290Y2VydC5jcmwwVAYIKwYBBQUHAQEE
# SDBGMEQGCCsGAQUFBzAChjhodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2Nl
# cnRzL01pY3Jvc29mdFJvb3RDZXJ0LmNydDANBgkqhkiG9w0BAQUFAAOCAgEAWTk+
# fyZGr+tvQLEytWrrDi9uqEn361917Uw7LddDrQv+y+ktMaMjzHxQmIAhXaw9L0y6
# oqhWnONwu7i0+Hm1SXL3PupBf8rhDBdpy6WcIC36C1DEVs0t40rSvHDnqA2iA6VW
# 4LiKS1fylUKc8fPv7uOGHzQ8uFaa8FMjhSqkghyT4pQHHfLiTviMocroE6WRTsgb
# 0o9ylSpxbZsa+BzwU9ZnzCL/XB3Nooy9J7J5Y1ZEolHN+emjWFbdmwJFRC9f9Nqu
# 1IIybvyklRPk62nnqaIsvsgrEA5ljpnb9aL6EiYJZTiU8XofSrvR4Vbo0HiWGFzJ
# NRZf3ZMdSY4tvq00RBzuEBUaAF3dNVshzpjHCe6FDoxPbQ4TTj18KUicctHzbMrB
# 7HCjV5JXfZSNoBtIA1r3z6NnCnSlNu0tLxfI5nI3EvRvsTxngvlSso0zFmUeDord
# EN5k9G/ORtTTF+l5xAS00/ss3x+KnqwK+xMnQK3k+eGpf0a7B2BHZWBATrBC7E7t
# s3Z52Ao0CW0cgDEf4g5U3eWh++VHEK1kmP9QFi58vwUheuKVQSdpw5OPlcmN2Jsh
# rg1cnPCiroZogwxqLbt2awAdlq3yFnv2FoMkuYjPaqhHMS+a3ONxPdcAfmJH0c6I
# ybgY+g5yjcGjPa8CQGr/aZuW4hCoELQ3UAjWwz0wggYHMIID76ADAgECAgphFmg0
# AAAAAAAcMA0GCSqGSIb3DQEBBQUAMF8xEzARBgoJkiaJk/IsZAEZFgNjb20xGTAX
# BgoJkiaJk/IsZAEZFgltaWNyb3NvZnQxLTArBgNVBAMTJE1pY3Jvc29mdCBSb290
# IENlcnRpZmljYXRlIEF1dGhvcml0eTAeFw0wNzA0MDMxMjUzMDlaFw0yMTA0MDMx
# MzAzMDlaMHcxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYD
# VQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xITAf
# BgNVBAMTGE1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQTCCASIwDQYJKoZIhvcNAQEB
# BQADggEPADCCAQoCggEBAJ+hbLHf20iSKnxrLhnhveLjxZlRI1Ctzt0YTiQP7tGn
# 0UytdDAgEesH1VSVFUmUG0KSrphcMCbaAGvoe73siQcP9w4EmPCJzB/LMySHnfL0
# Zxws/HvniB3q506jocEjU8qN+kXPCdBer9CwQgSi+aZsk2fXKNxGU7CG0OUoRi4n
# rIZPVVIM5AMs+2qQkDBuh/NZMJ36ftaXs+ghl3740hPzCLdTbVK0RZCfSABKR2YR
# JylmqJfk0waBSqL5hKcRRxQJgp+E7VV4/gGaHVAIhQAQMEbtt94jRrvELVSfrx54
# QTF3zJvfO4OToWECtR0Nsfz3m7IBziJLVP/5BcPCIAsCAwEAAaOCAaswggGnMA8G
# A1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFCM0+NlSRnAK7UD7dvuzK7DDNbMPMAsG
# A1UdDwQEAwIBhjAQBgkrBgEEAYI3FQEEAwIBADCBmAYDVR0jBIGQMIGNgBQOrIJg
# QFYnl+UlE/wq4QpTlVnkpKFjpGEwXzETMBEGCgmSJomT8ixkARkWA2NvbTEZMBcG
# CgmSJomT8ixkARkWCW1pY3Jvc29mdDEtMCsGA1UEAxMkTWljcm9zb2Z0IFJvb3Qg
# Q2VydGlmaWNhdGUgQXV0aG9yaXR5ghB5rRahSqClrUxzWPQHEy5lMFAGA1UdHwRJ
# MEcwRaBDoEGGP2h0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1
# Y3RzL21pY3Jvc29mdHJvb3RjZXJ0LmNybDBUBggrBgEFBQcBAQRIMEYwRAYIKwYB
# BQUHMAKGOGh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2kvY2VydHMvTWljcm9z
# b2Z0Um9vdENlcnQuY3J0MBMGA1UdJQQMMAoGCCsGAQUFBwMIMA0GCSqGSIb3DQEB
# BQUAA4ICAQAQl4rDXANENt3ptK132855UU0BsS50cVttDBOrzr57j7gu1BKijG1i
# uFcCy04gE1CZ3XpA4le7r1iaHOEdAYasu3jyi9DsOwHu4r6PCgXIjUji8FMV3U+r
# kuTnjWrVgMHmlPIGL4UD6ZEqJCJw+/b85HiZLg33B+JwvBhOnY5rCnKVuKE5nGct
# xVEO6mJcPxaYiyA/4gcaMvnMMUp2MT0rcgvI6nA9/4UKE9/CCmGO8Ne4F+tOi3/F
# NSteo7/rvH0LQnvUU3Ih7jDKu3hlXFsBFwoUDtLaFJj1PLlmWLMtL+f5hYbMUVbo
# nXCUbKw5TNT2eb+qGHpiKe+imyk0BncaYsk9Hm0fgvALxyy7z0Oz5fnsfbXjpKh0
# NbhOxXEjEiZ2CzxSjHFaRkMUvLOzsE1nyJ9C/4B5IYCeFTBm6EISXhrIniIh0EPp
# K+m79EjMLNTYMoBMJipIJF9a6lbvpt6Znco6b72BJ3QGEe52Ib+bgsEnVLaxaj2J
# oXZhtG6hE6a/qkfwEm/9ijJssv7fUciMI8lmvZ0dhxJkAj0tr1mPuOQh5bWwymO0
# eFQF1EEuUKyUsKV4q7OglnUa2ZKHE3UiLzKoCG6gW4wlv6DvhMoh1useT8ma7kng
# 9wFlb4kLfchpyOZu6qeXzjEp/w7FW1zYTRuh2Povnj8uVRZryROj/TGCBJcwggST
# AgEBMIGQMHkxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYD
# VQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xIzAh
# BgNVBAMTGk1pY3Jvc29mdCBDb2RlIFNpZ25pbmcgUENBAhMzAAAAsBGvCovQO5/d
# AAEAAACwMAkGBSsOAwIaBQCggbAwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQw
# HAYKKwYBBAGCNwIBCzEOMAwGCisGAQQBgjcCARUwIwYJKoZIhvcNAQkEMRYEFOrT
# ZEbL6mMRie0QxeNrtIXxNuY6MFAGCisGAQQBgjcCAQwxQjBAoCKAIABFAG4AdABp
# AHQAeQAgAEYAcgBhAG0AZQB3AG8AcgBroRqAGGh0dHA6Ly9tc2RuLmNvbS9kYXRh
# L2VmIDANBgkqhkiG9w0BAQEFAASCAQAp46rF491ax2xI+ywddNCS8k+nfEHapr0P
# /5psYf8iQn+QOp8boRjDaP3AVdnbf+ZHAhkqc+/1RoEI6FbfLqPECRFKAdMip3vR
# cHC/CcTsCTrJzn9/seSsoVFO+6zY4K8VNtlGD4cQNXkOy+2WAdvXlyiUi4qKC7tr
# XyF6KsbdhqXynrfRHkPUTMm1KakaH571roCd40WQrNh5Sec4m1ndOoY6pR2y3c/d
# EyTV/T3IhH0i8AsQxFOhDnxFNDWPKY83my2mZCWiW9XTMykCqNsBcQ2iAIb3oIx7
# A7iLTvyDiVYrYfzVcJmJGqSZjAkHiKj02uIA/mWNyblckled8XzJoYICKDCCAiQG
# CSqGSIb3DQEJBjGCAhUwggIRAgEBMIGOMHcxCzAJBgNVBAYTAlVTMRMwEQYDVQQI
# EwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3Nv
# ZnQgQ29ycG9yYXRpb24xITAfBgNVBAMTGE1pY3Jvc29mdCBUaW1lLVN0YW1wIFBD
# QQITMwAAADPlJ4ajDkoqgAAAAAAAMzAJBgUrDgMCGgUAoF0wGAYJKoZIhvcNAQkD
# MQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMTMwOTExMTYwNDU5WjAjBgkq
# hkiG9w0BCQQxFgQUmKcMuWdwUtNtz9/a4twIEFV7cyAwDQYJKoZIhvcNAQEFBQAE
# ggEAGeJnAW3s1vuo0R4gs/yNDlYP0PmKSupeC+vyrhTFCogXq74IA2kmbNgzijI5
# AYhEFOONY8f5qcoDuU0HhONiQO/EKv6jL3T48WNGvNg15igIlwExHFDZTtEiJ7o1
# GSWiz+P7oyN3ZZDk5tNJcpJE0NDHY3xGbCqiOLfXZ5bxFXsfq5PfVuDy+S/oxCn4
# qrIpYW9pLYPK0+co2CB+IlQ5jBSpzTOe+s1gHrWfblWGFqWyd72yK9T4stnGLsR7
# nMu32fO1YrIeMiFqGh87y4/KLVhhBRCyOiy0s42Rn4UC3hnk2Z9WvnVVTvtjBUk4
# h/2NfIS33wkSUhkokpWtWKLrqQ==
# SIG # End signature block

View File

@@ -0,0 +1,153 @@
param($installPath, $toolsPath, $package, $project)
Initialize-EFConfiguration $project
Add-EFProvider $project 'System.Data.SqlClient' 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer'
Write-Host
Write-Host "Type 'get-help EntityFramework' to see all available Entity Framework commands."
# SIG # Begin signature block
# MIIarwYJKoZIhvcNAQcCoIIaoDCCGpwCAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB
# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR
# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUt8mwpdjiFmu2B4KBh+vEeQ+V
# VnSgghWCMIIEwzCCA6ugAwIBAgITMwAAADQkMUDJoMF5jQAAAAAANDANBgkqhkiG
# 9w0BAQUFADB3MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4G
# A1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSEw
# HwYDVQQDExhNaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EwHhcNMTMwMzI3MjAwODI1
# WhcNMTQwNjI3MjAwODI1WjCBszELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hp
# bmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jw
# b3JhdGlvbjENMAsGA1UECxMETU9QUjEnMCUGA1UECxMebkNpcGhlciBEU0UgRVNO
# OkI4RUMtMzBBNC03MTQ0MSUwIwYDVQQDExxNaWNyb3NvZnQgVGltZS1TdGFtcCBT
# ZXJ2aWNlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5RoHrQqWLNS2
# NGTLNCDyvARYgou1CdxS1HCf4lws5/VqpPW2LrGBhlkB7ElsKQQe9TiLVxj1wDIN
# 7TSQ7MZF5buKCiWq76F7h9jxcGdKzWrc5q8FkT3tBXDrQc+rsSVmu6uitxj5eBN4
# dc2LM1x97WfE7QP9KKxYYMF7vYCNM5NhYgixj1ESZY9BfsTVJektZkHTQzT6l4H4
# /Ieh7TlSH/jpPv9egMkGNgfb27lqxzfPhrUaS0rUJfLHyI2vYWeK2lMv80wegyxj
# yqAQUhG6gVhzQoTjNLLu6pO+TILQfZYLT38vzxBdGkVmqwLxXyQARsHBVdKDckIi
# hjqkvpNQAQIDAQABo4IBCTCCAQUwHQYDVR0OBBYEFF9LQt4MuTig1GY2jVb7dFlJ
# ZoErMB8GA1UdIwQYMBaAFCM0+NlSRnAK7UD7dvuzK7DDNbMPMFQGA1UdHwRNMEsw
# SaBHoEWGQ2h0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3Rz
# L01pY3Jvc29mdFRpbWVTdGFtcFBDQS5jcmwwWAYIKwYBBQUHAQEETDBKMEgGCCsG
# AQUFBzAChjxodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY3Jv
# c29mdFRpbWVTdGFtcFBDQS5jcnQwEwYDVR0lBAwwCgYIKwYBBQUHAwgwDQYJKoZI
# hvcNAQEFBQADggEBAA9CUKDVHq0XPx8Kpis3imdYLbEwTzvvwldp7GXTTMVQcvJz
# JfbkhALFdRxxWEOr8cmqjt/Kb1g8iecvzXo17GbX1V66jp9XhpQQoOtRN61X9id7
# I08Z2OBtdgQlMGESraWOoya2SOVT8kVOxbiJJxCdqePPI+l5bK6TaDoa8xPEFLZ6
# Op5B2plWntDT4BaWkHJMrwH3JAb7GSuYslXMep/okjprMXuA8w6eV4u35gW2OSWa
# l4IpNos4rq6LGqzu5+wuv0supQc1gfMTIOq0SpOev5yDVn+tFS9cKXELlGc4/DC/
# Zef1Od7qIu2HjKuyO7UBwq3g/I4lFQwivp8M7R0wggTsMIID1KADAgECAhMzAAAA
# sBGvCovQO5/dAAEAAACwMA0GCSqGSIb3DQEBBQUAMHkxCzAJBgNVBAYTAlVTMRMw
# EQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVN
# aWNyb3NvZnQgQ29ycG9yYXRpb24xIzAhBgNVBAMTGk1pY3Jvc29mdCBDb2RlIFNp
# Z25pbmcgUENBMB4XDTEzMDEyNDIyMzMzOVoXDTE0MDQyNDIyMzMzOVowgYMxCzAJ
# BgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25k
# MR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xDTALBgNVBAsTBE1PUFIx
# HjAcBgNVBAMTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjCCASIwDQYJKoZIhvcNAQEB
# BQADggEPADCCAQoCggEBAOivXKIgDfgofLwFe3+t7ut2rChTPzrbQH2zjjPmVz+l
# URU0VKXPtIupP6g34S1Q7TUWTu9NetsTdoiwLPBZXKnr4dcpdeQbhSeb8/gtnkE2
# KwtA+747urlcdZMWUkvKM8U3sPPrfqj1QRVcCGUdITfwLLoiCxCxEJ13IoWEfE+5
# G5Cw9aP+i/QMmk6g9ckKIeKq4wE2R/0vgmqBA/WpNdyUV537S9QOgts4jxL+49Z6
# dIhk4WLEJS4qrp0YHw4etsKvJLQOULzeHJNcSaZ5tbbbzvlweygBhLgqKc+/qQUF
# 4eAPcU39rVwjgynrx8VKyOgnhNN+xkMLlQAFsU9lccUCAwEAAaOCAWAwggFcMBMG
# A1UdJQQMMAoGCCsGAQUFBwMDMB0GA1UdDgQWBBRZcaZaM03amAeA/4Qevof5cjJB
# 8jBRBgNVHREESjBIpEYwRDENMAsGA1UECxMETU9QUjEzMDEGA1UEBRMqMzE1OTUr
# NGZhZjBiNzEtYWQzNy00YWEzLWE2NzEtNzZiYzA1MjM0NGFkMB8GA1UdIwQYMBaA
# FMsR6MrStBZYAck3LjMWFrlMmgofMFYGA1UdHwRPME0wS6BJoEeGRWh0dHA6Ly9j
# cmwubWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01pY0NvZFNpZ1BDQV8w
# OC0zMS0yMDEwLmNybDBaBggrBgEFBQcBAQROMEwwSgYIKwYBBQUHMAKGPmh0dHA6
# Ly93d3cubWljcm9zb2Z0LmNvbS9wa2kvY2VydHMvTWljQ29kU2lnUENBXzA4LTMx
# LTIwMTAuY3J0MA0GCSqGSIb3DQEBBQUAA4IBAQAx124qElczgdWdxuv5OtRETQie
# 7l7falu3ec8CnLx2aJ6QoZwLw3+ijPFNupU5+w3g4Zv0XSQPG42IFTp8263Os8ls
# ujksRX0kEVQmMA0N/0fqAwfl5GZdLHudHakQ+hywdPJPaWueqSSE2u2WoN9zpO9q
# GqxLYp7xfMAUf0jNTbJE+fA8k21C2Oh85hegm2hoCSj5ApfvEQO6Z1Ktwemzc6bS
# Y81K4j7k8079/6HguwITO10g3lU/o66QQDE4dSheBKlGbeb1enlAvR/N6EXVruJd
# PvV1x+ZmY2DM1ZqEh40kMPfvNNBjHbFCZ0oOS786Du+2lTqnOOQlkgimiGaCMIIF
# vDCCA6SgAwIBAgIKYTMmGgAAAAAAMTANBgkqhkiG9w0BAQUFADBfMRMwEQYKCZIm
# iZPyLGQBGRYDY29tMRkwFwYKCZImiZPyLGQBGRYJbWljcm9zb2Z0MS0wKwYDVQQD
# EyRNaWNyb3NvZnQgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMTAwODMx
# MjIxOTMyWhcNMjAwODMxMjIyOTMyWjB5MQswCQYDVQQGEwJVUzETMBEGA1UECBMK
# V2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0
# IENvcnBvcmF0aW9uMSMwIQYDVQQDExpNaWNyb3NvZnQgQ29kZSBTaWduaW5nIFBD
# QTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJyWVwZMGS/HZpgICBC
# mXZTbD4b1m/My/Hqa/6XFhDg3zp0gxq3L6Ay7P/ewkJOI9VyANs1VwqJyq4gSfTw
# aKxNS42lvXlLcZtHB9r9Jd+ddYjPqnNEf9eB2/O98jakyVxF3K+tPeAoaJcap6Vy
# c1bxF5Tk/TWUcqDWdl8ed0WDhTgW0HNbBbpnUo2lsmkv2hkL/pJ0KeJ2L1TdFDBZ
# +NKNYv3LyV9GMVC5JxPkQDDPcikQKCLHN049oDI9kM2hOAaFXE5WgigqBTK3S9dP
# Y+fSLWLxRT3nrAgA9kahntFbjCZT6HqqSvJGzzc8OJ60d1ylF56NyxGPVjzBrAlf
# A9MCAwEAAaOCAV4wggFaMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMsR6MrS
# tBZYAck3LjMWFrlMmgofMAsGA1UdDwQEAwIBhjASBgkrBgEEAYI3FQEEBQIDAQAB
# MCMGCSsGAQQBgjcVAgQWBBT90TFO0yaKleGYYDuoMW+mPLzYLTAZBgkrBgEEAYI3
# FAIEDB4KAFMAdQBiAEMAQTAfBgNVHSMEGDAWgBQOrIJgQFYnl+UlE/wq4QpTlVnk
# pDBQBgNVHR8ESTBHMEWgQ6BBhj9odHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtp
# L2NybC9wcm9kdWN0cy9taWNyb3NvZnRyb290Y2VydC5jcmwwVAYIKwYBBQUHAQEE
# SDBGMEQGCCsGAQUFBzAChjhodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2Nl
# cnRzL01pY3Jvc29mdFJvb3RDZXJ0LmNydDANBgkqhkiG9w0BAQUFAAOCAgEAWTk+
# fyZGr+tvQLEytWrrDi9uqEn361917Uw7LddDrQv+y+ktMaMjzHxQmIAhXaw9L0y6
# oqhWnONwu7i0+Hm1SXL3PupBf8rhDBdpy6WcIC36C1DEVs0t40rSvHDnqA2iA6VW
# 4LiKS1fylUKc8fPv7uOGHzQ8uFaa8FMjhSqkghyT4pQHHfLiTviMocroE6WRTsgb
# 0o9ylSpxbZsa+BzwU9ZnzCL/XB3Nooy9J7J5Y1ZEolHN+emjWFbdmwJFRC9f9Nqu
# 1IIybvyklRPk62nnqaIsvsgrEA5ljpnb9aL6EiYJZTiU8XofSrvR4Vbo0HiWGFzJ
# NRZf3ZMdSY4tvq00RBzuEBUaAF3dNVshzpjHCe6FDoxPbQ4TTj18KUicctHzbMrB
# 7HCjV5JXfZSNoBtIA1r3z6NnCnSlNu0tLxfI5nI3EvRvsTxngvlSso0zFmUeDord
# EN5k9G/ORtTTF+l5xAS00/ss3x+KnqwK+xMnQK3k+eGpf0a7B2BHZWBATrBC7E7t
# s3Z52Ao0CW0cgDEf4g5U3eWh++VHEK1kmP9QFi58vwUheuKVQSdpw5OPlcmN2Jsh
# rg1cnPCiroZogwxqLbt2awAdlq3yFnv2FoMkuYjPaqhHMS+a3ONxPdcAfmJH0c6I
# ybgY+g5yjcGjPa8CQGr/aZuW4hCoELQ3UAjWwz0wggYHMIID76ADAgECAgphFmg0
# AAAAAAAcMA0GCSqGSIb3DQEBBQUAMF8xEzARBgoJkiaJk/IsZAEZFgNjb20xGTAX
# BgoJkiaJk/IsZAEZFgltaWNyb3NvZnQxLTArBgNVBAMTJE1pY3Jvc29mdCBSb290
# IENlcnRpZmljYXRlIEF1dGhvcml0eTAeFw0wNzA0MDMxMjUzMDlaFw0yMTA0MDMx
# MzAzMDlaMHcxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYD
# VQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xITAf
# BgNVBAMTGE1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQTCCASIwDQYJKoZIhvcNAQEB
# BQADggEPADCCAQoCggEBAJ+hbLHf20iSKnxrLhnhveLjxZlRI1Ctzt0YTiQP7tGn
# 0UytdDAgEesH1VSVFUmUG0KSrphcMCbaAGvoe73siQcP9w4EmPCJzB/LMySHnfL0
# Zxws/HvniB3q506jocEjU8qN+kXPCdBer9CwQgSi+aZsk2fXKNxGU7CG0OUoRi4n
# rIZPVVIM5AMs+2qQkDBuh/NZMJ36ftaXs+ghl3740hPzCLdTbVK0RZCfSABKR2YR
# JylmqJfk0waBSqL5hKcRRxQJgp+E7VV4/gGaHVAIhQAQMEbtt94jRrvELVSfrx54
# QTF3zJvfO4OToWECtR0Nsfz3m7IBziJLVP/5BcPCIAsCAwEAAaOCAaswggGnMA8G
# A1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFCM0+NlSRnAK7UD7dvuzK7DDNbMPMAsG
# A1UdDwQEAwIBhjAQBgkrBgEEAYI3FQEEAwIBADCBmAYDVR0jBIGQMIGNgBQOrIJg
# QFYnl+UlE/wq4QpTlVnkpKFjpGEwXzETMBEGCgmSJomT8ixkARkWA2NvbTEZMBcG
# CgmSJomT8ixkARkWCW1pY3Jvc29mdDEtMCsGA1UEAxMkTWljcm9zb2Z0IFJvb3Qg
# Q2VydGlmaWNhdGUgQXV0aG9yaXR5ghB5rRahSqClrUxzWPQHEy5lMFAGA1UdHwRJ
# MEcwRaBDoEGGP2h0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1
# Y3RzL21pY3Jvc29mdHJvb3RjZXJ0LmNybDBUBggrBgEFBQcBAQRIMEYwRAYIKwYB
# BQUHMAKGOGh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2kvY2VydHMvTWljcm9z
# b2Z0Um9vdENlcnQuY3J0MBMGA1UdJQQMMAoGCCsGAQUFBwMIMA0GCSqGSIb3DQEB
# BQUAA4ICAQAQl4rDXANENt3ptK132855UU0BsS50cVttDBOrzr57j7gu1BKijG1i
# uFcCy04gE1CZ3XpA4le7r1iaHOEdAYasu3jyi9DsOwHu4r6PCgXIjUji8FMV3U+r
# kuTnjWrVgMHmlPIGL4UD6ZEqJCJw+/b85HiZLg33B+JwvBhOnY5rCnKVuKE5nGct
# xVEO6mJcPxaYiyA/4gcaMvnMMUp2MT0rcgvI6nA9/4UKE9/CCmGO8Ne4F+tOi3/F
# NSteo7/rvH0LQnvUU3Ih7jDKu3hlXFsBFwoUDtLaFJj1PLlmWLMtL+f5hYbMUVbo
# nXCUbKw5TNT2eb+qGHpiKe+imyk0BncaYsk9Hm0fgvALxyy7z0Oz5fnsfbXjpKh0
# NbhOxXEjEiZ2CzxSjHFaRkMUvLOzsE1nyJ9C/4B5IYCeFTBm6EISXhrIniIh0EPp
# K+m79EjMLNTYMoBMJipIJF9a6lbvpt6Znco6b72BJ3QGEe52Ib+bgsEnVLaxaj2J
# oXZhtG6hE6a/qkfwEm/9ijJssv7fUciMI8lmvZ0dhxJkAj0tr1mPuOQh5bWwymO0
# eFQF1EEuUKyUsKV4q7OglnUa2ZKHE3UiLzKoCG6gW4wlv6DvhMoh1useT8ma7kng
# 9wFlb4kLfchpyOZu6qeXzjEp/w7FW1zYTRuh2Povnj8uVRZryROj/TGCBJcwggST
# AgEBMIGQMHkxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYD
# VQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xIzAh
# BgNVBAMTGk1pY3Jvc29mdCBDb2RlIFNpZ25pbmcgUENBAhMzAAAAsBGvCovQO5/d
# AAEAAACwMAkGBSsOAwIaBQCggbAwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQw
# HAYKKwYBBAGCNwIBCzEOMAwGCisGAQQBgjcCARUwIwYJKoZIhvcNAQkEMRYEFJiz
# f4JawBv4s6ihwSKoeZTRDcAvMFAGCisGAQQBgjcCAQwxQjBAoCKAIABFAG4AdABp
# AHQAeQAgAEYAcgBhAG0AZQB3AG8AcgBroRqAGGh0dHA6Ly9tc2RuLmNvbS9kYXRh
# L2VmIDANBgkqhkiG9w0BAQEFAASCAQBl1eyDt2dp8f759lxqbnnQy+TYCdsEAqxP
# 5AY0A38rcH28zRXOGRwxLo1o7uwmP9WFgmBvTa5yvDLVXI9OPsQ2yy1ugJT9GLro
# l2v6TbtUikmli9JQ1cMXAQKCvJWr7q8pie9Xlv/Kf2hD/KdxqACw/O+wXVu43cZq
# ewAUd4OsKQ5kWTalsog9sIQ9NoggMVDGwPQc4F/da9LwXaL9hwl+8J0l2V5TZefk
# X5Hxsae0Souw8RR+u55r3OMyGxX4jANDVpsMzVh3bmNwsq0OaNtJ5WXx/1R5+72D
# yZQPi+wpjcSn8oDJEhCAvNT/jzX6NsxbnZr3fxEn8MfMB5BmkInAoYICKDCCAiQG
# CSqGSIb3DQEJBjGCAhUwggIRAgEBMIGOMHcxCzAJBgNVBAYTAlVTMRMwEQYDVQQI
# EwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3Nv
# ZnQgQ29ycG9yYXRpb24xITAfBgNVBAMTGE1pY3Jvc29mdCBUaW1lLVN0YW1wIFBD
# QQITMwAAADQkMUDJoMF5jQAAAAAANDAJBgUrDgMCGgUAoF0wGAYJKoZIhvcNAQkD
# MQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMTMwOTExMTYwNDU5WjAjBgkq
# hkiG9w0BCQQxFgQU/5ZEGkCagXUs+tIh1LXCDL6NUJYwDQYJKoZIhvcNAQEFBQAE
# ggEAQEqm6b+Ap0anii4Sb/4F2a3nHT1dFaqmAYVWiqS72t+Ws1j3mCKZRrrh8puT
# EOtUzKgx0wIBCr/DAFw9+g/S3zC3uhJkcyqPk3187Zcz/Qu9FKj0pFKO6fWpxfCU
# aN2iVBNRpldqusvVsRStMYj4cHOiGp3lilzg9iC1pNOlU4xBRDZ7i/r98K0gw2XI
# GMKTEKtcQQkS6ws7oJfO+asAqqUakB+y4MiWaxAworKMeT2GvpTSOSO2pEdq1DvJ
# r9NCSiCNxGx9Io/zJJA9T+0Ecs00/qPt5xTU23xeUl3q2I2l04AYIxKuDGZt6Xu7
# Rx8Cl1sC5w6EyCItwslF4WafkQ==
# SIG # End signature block

Binary file not shown.

View File

@@ -0,0 +1,141 @@
<!--
*
* System.Data.SQLite.Core.targets -
*
* WARNING: This MSBuild file requires MSBuild 4.0 features.
*
* Written by Joe Mistachkin and David Archer.
* Released to the public domain, use at your own risk!
*
-->
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!--
******************************************************************************
** Load Per-User Settings **
******************************************************************************
-->
<!--
NOTE: If the per-user settings file exists, import it now. The contained
settings, if any, will override the default ones provided below.
-->
<Import Condition="'$(MSBuildThisFileDirectory)' != '' And
HasTrailingSlash('$(MSBuildThisFileDirectory)') And
Exists('$(MSBuildThisFileDirectory)\System.Data.SQLite.Core.targets.user')"
Project="$(MSBuildThisFileDirectory)\System.Data.SQLite.Core.targets.user" />
<!--
******************************************************************************
** SQLite Interop Library Build Items **
******************************************************************************
-->
<ItemGroup>
<SQLiteInteropFiles Condition="'$(MSBuildThisFileDirectory)' != '' And
HasTrailingSlash('$(MSBuildThisFileDirectory)')"
Include="$(MSBuildThisFileDirectory)**\SQLite.Interop.*" />
</ItemGroup>
<!--
******************************************************************************
** SQLite Interop Library Content Items **
******************************************************************************
-->
<ItemGroup Condition="'$(ContentSQLiteInteropFiles)' != '' And
'$(ContentSQLiteInteropFiles)' != 'false' And
'@(SQLiteInteropFiles)' != ''">
<Content Include="@(SQLiteInteropFiles)">
<Link>%(RecursiveDir)%(FileName)%(Extension)</Link>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
<!--
******************************************************************************
** SQLite Interop Library Build Targets **
******************************************************************************
-->
<Target Name="CopySQLiteInteropFiles"
Condition="'$(CopySQLiteInteropFiles)' != 'false' And
'$(OutDir)' != '' And
HasTrailingSlash('$(OutDir)') And
Exists('$(OutDir)')"
Inputs="@(SQLiteInteropFiles)"
Outputs="@(SQLiteInteropFiles -> '$(OutDir)%(RecursiveDir)%(Filename)%(Extension)')">
<!--
NOTE: Copy "SQLite.Interop.dll" and all related files, for every
architecture that we support, to the build output directory.
-->
<Copy SourceFiles="@(SQLiteInteropFiles)"
DestinationFiles="@(SQLiteInteropFiles -> '$(OutDir)%(RecursiveDir)%(Filename)%(Extension)')" />
</Target>
<!--
******************************************************************************
-->
<Target Name="CleanSQLiteInteropFiles"
Condition="'$(CleanSQLiteInteropFiles)' != 'false' And
'$(OutDir)' != '' And
HasTrailingSlash('$(OutDir)') And
Exists('$(OutDir)')">
<!--
NOTE: Delete "SQLite.Interop.dll" and all related files, for every
architecture that we support, from the build output directory.
-->
<Delete Files="@(SQLiteInteropFiles -> '$(OutDir)%(RecursiveDir)%(Filename)%(Extension)')" />
</Target>
<!--
******************************************************************************
-->
<Target Name="CollectSQLiteInteropFiles"
Condition="'$(CollectSQLiteInteropFiles)' != 'false'">
<ItemGroup>
<FilesForPackagingFromProject Include="@(SQLiteInteropFiles)">
<DestinationRelativePath>bin\%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
</FilesForPackagingFromProject>
</ItemGroup>
</Target>
<!--
******************************************************************************
** SQLite Interop Library Build Properties **
******************************************************************************
-->
<PropertyGroup>
<PostBuildEventDependsOn>
$(PostBuildEventDependsOn);
CopySQLiteInteropFiles;
</PostBuildEventDependsOn>
<BuildDependsOn>
$(BuildDependsOn);
CopySQLiteInteropFiles;
</BuildDependsOn>
<CleanDependsOn>
$(CleanDependsOn);
CleanSQLiteInteropFiles;
</CleanDependsOn>
</PropertyGroup>
<!--
******************************************************************************
** SQLite Interop Library Publish Properties for Visual Studio 201x **
******************************************************************************
-->
<PropertyGroup Condition="'$(VisualStudioVersion)' == '' Or
'$(VisualStudioVersion)' == '10.0' Or
'$(VisualStudioVersion)' == '11.0' Or
'$(VisualStudioVersion)' == '12.0' Or
'$(VisualStudioVersion)' == '14.0'">
<PipelineCollectFilesPhaseDependsOn>
CollectSQLiteInteropFiles;
$(PipelineCollectFilesPhaseDependsOn);
</PipelineCollectFilesPhaseDependsOn>
</PropertyGroup>
</Project>

View File

@@ -0,0 +1,141 @@
<!--
*
* System.Data.SQLite.Core.targets -
*
* WARNING: This MSBuild file requires MSBuild 4.0 features.
*
* Written by Joe Mistachkin and David Archer.
* Released to the public domain, use at your own risk!
*
-->
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!--
******************************************************************************
** Load Per-User Settings **
******************************************************************************
-->
<!--
NOTE: If the per-user settings file exists, import it now. The contained
settings, if any, will override the default ones provided below.
-->
<Import Condition="'$(MSBuildThisFileDirectory)' != '' And
HasTrailingSlash('$(MSBuildThisFileDirectory)') And
Exists('$(MSBuildThisFileDirectory)\System.Data.SQLite.Core.targets.user')"
Project="$(MSBuildThisFileDirectory)\System.Data.SQLite.Core.targets.user" />
<!--
******************************************************************************
** SQLite Interop Library Build Items **
******************************************************************************
-->
<ItemGroup>
<SQLiteInteropFiles Condition="'$(MSBuildThisFileDirectory)' != '' And
HasTrailingSlash('$(MSBuildThisFileDirectory)')"
Include="$(MSBuildThisFileDirectory)**\SQLite.Interop.*" />
</ItemGroup>
<!--
******************************************************************************
** SQLite Interop Library Content Items **
******************************************************************************
-->
<ItemGroup Condition="'$(ContentSQLiteInteropFiles)' != '' And
'$(ContentSQLiteInteropFiles)' != 'false' And
'@(SQLiteInteropFiles)' != ''">
<Content Include="@(SQLiteInteropFiles)">
<Link>%(RecursiveDir)%(FileName)%(Extension)</Link>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
<!--
******************************************************************************
** SQLite Interop Library Build Targets **
******************************************************************************
-->
<Target Name="CopySQLiteInteropFiles"
Condition="'$(CopySQLiteInteropFiles)' != 'false' And
'$(OutDir)' != '' And
HasTrailingSlash('$(OutDir)') And
Exists('$(OutDir)')"
Inputs="@(SQLiteInteropFiles)"
Outputs="@(SQLiteInteropFiles -> '$(OutDir)%(RecursiveDir)%(Filename)%(Extension)')">
<!--
NOTE: Copy "SQLite.Interop.dll" and all related files, for every
architecture that we support, to the build output directory.
-->
<Copy SourceFiles="@(SQLiteInteropFiles)"
DestinationFiles="@(SQLiteInteropFiles -> '$(OutDir)%(RecursiveDir)%(Filename)%(Extension)')" />
</Target>
<!--
******************************************************************************
-->
<Target Name="CleanSQLiteInteropFiles"
Condition="'$(CleanSQLiteInteropFiles)' != 'false' And
'$(OutDir)' != '' And
HasTrailingSlash('$(OutDir)') And
Exists('$(OutDir)')">
<!--
NOTE: Delete "SQLite.Interop.dll" and all related files, for every
architecture that we support, from the build output directory.
-->
<Delete Files="@(SQLiteInteropFiles -> '$(OutDir)%(RecursiveDir)%(Filename)%(Extension)')" />
</Target>
<!--
******************************************************************************
-->
<Target Name="CollectSQLiteInteropFiles"
Condition="'$(CollectSQLiteInteropFiles)' != 'false'">
<ItemGroup>
<FilesForPackagingFromProject Include="@(SQLiteInteropFiles)">
<DestinationRelativePath>bin\%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
</FilesForPackagingFromProject>
</ItemGroup>
</Target>
<!--
******************************************************************************
** SQLite Interop Library Build Properties **
******************************************************************************
-->
<PropertyGroup>
<PostBuildEventDependsOn>
$(PostBuildEventDependsOn);
CopySQLiteInteropFiles;
</PostBuildEventDependsOn>
<BuildDependsOn>
$(BuildDependsOn);
CopySQLiteInteropFiles;
</BuildDependsOn>
<CleanDependsOn>
$(CleanDependsOn);
CleanSQLiteInteropFiles;
</CleanDependsOn>
</PropertyGroup>
<!--
******************************************************************************
** SQLite Interop Library Publish Properties for Visual Studio 201x **
******************************************************************************
-->
<PropertyGroup Condition="'$(VisualStudioVersion)' == '' Or
'$(VisualStudioVersion)' == '10.0' Or
'$(VisualStudioVersion)' == '11.0' Or
'$(VisualStudioVersion)' == '12.0' Or
'$(VisualStudioVersion)' == '14.0'">
<PipelineCollectFilesPhaseDependsOn>
CollectSQLiteInteropFiles;
$(PipelineCollectFilesPhaseDependsOn);
</PipelineCollectFilesPhaseDependsOn>
</PropertyGroup>
</Project>

View File

@@ -0,0 +1,141 @@
<!--
*
* System.Data.SQLite.Core.targets -
*
* WARNING: This MSBuild file requires MSBuild 4.0 features.
*
* Written by Joe Mistachkin and David Archer.
* Released to the public domain, use at your own risk!
*
-->
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!--
******************************************************************************
** Load Per-User Settings **
******************************************************************************
-->
<!--
NOTE: If the per-user settings file exists, import it now. The contained
settings, if any, will override the default ones provided below.
-->
<Import Condition="'$(MSBuildThisFileDirectory)' != '' And
HasTrailingSlash('$(MSBuildThisFileDirectory)') And
Exists('$(MSBuildThisFileDirectory)\System.Data.SQLite.Core.targets.user')"
Project="$(MSBuildThisFileDirectory)\System.Data.SQLite.Core.targets.user" />
<!--
******************************************************************************
** SQLite Interop Library Build Items **
******************************************************************************
-->
<ItemGroup>
<SQLiteInteropFiles Condition="'$(MSBuildThisFileDirectory)' != '' And
HasTrailingSlash('$(MSBuildThisFileDirectory)')"
Include="$(MSBuildThisFileDirectory)**\SQLite.Interop.*" />
</ItemGroup>
<!--
******************************************************************************
** SQLite Interop Library Content Items **
******************************************************************************
-->
<ItemGroup Condition="'$(ContentSQLiteInteropFiles)' != '' And
'$(ContentSQLiteInteropFiles)' != 'false' And
'@(SQLiteInteropFiles)' != ''">
<Content Include="@(SQLiteInteropFiles)">
<Link>%(RecursiveDir)%(FileName)%(Extension)</Link>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
<!--
******************************************************************************
** SQLite Interop Library Build Targets **
******************************************************************************
-->
<Target Name="CopySQLiteInteropFiles"
Condition="'$(CopySQLiteInteropFiles)' != 'false' And
'$(OutDir)' != '' And
HasTrailingSlash('$(OutDir)') And
Exists('$(OutDir)')"
Inputs="@(SQLiteInteropFiles)"
Outputs="@(SQLiteInteropFiles -> '$(OutDir)%(RecursiveDir)%(Filename)%(Extension)')">
<!--
NOTE: Copy "SQLite.Interop.dll" and all related files, for every
architecture that we support, to the build output directory.
-->
<Copy SourceFiles="@(SQLiteInteropFiles)"
DestinationFiles="@(SQLiteInteropFiles -> '$(OutDir)%(RecursiveDir)%(Filename)%(Extension)')" />
</Target>
<!--
******************************************************************************
-->
<Target Name="CleanSQLiteInteropFiles"
Condition="'$(CleanSQLiteInteropFiles)' != 'false' And
'$(OutDir)' != '' And
HasTrailingSlash('$(OutDir)') And
Exists('$(OutDir)')">
<!--
NOTE: Delete "SQLite.Interop.dll" and all related files, for every
architecture that we support, from the build output directory.
-->
<Delete Files="@(SQLiteInteropFiles -> '$(OutDir)%(RecursiveDir)%(Filename)%(Extension)')" />
</Target>
<!--
******************************************************************************
-->
<Target Name="CollectSQLiteInteropFiles"
Condition="'$(CollectSQLiteInteropFiles)' != 'false'">
<ItemGroup>
<FilesForPackagingFromProject Include="@(SQLiteInteropFiles)">
<DestinationRelativePath>bin\%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
</FilesForPackagingFromProject>
</ItemGroup>
</Target>
<!--
******************************************************************************
** SQLite Interop Library Build Properties **
******************************************************************************
-->
<PropertyGroup>
<PostBuildEventDependsOn>
$(PostBuildEventDependsOn);
CopySQLiteInteropFiles;
</PostBuildEventDependsOn>
<BuildDependsOn>
$(BuildDependsOn);
CopySQLiteInteropFiles;
</BuildDependsOn>
<CleanDependsOn>
$(CleanDependsOn);
CleanSQLiteInteropFiles;
</CleanDependsOn>
</PropertyGroup>
<!--
******************************************************************************
** SQLite Interop Library Publish Properties for Visual Studio 201x **
******************************************************************************
-->
<PropertyGroup Condition="'$(VisualStudioVersion)' == '' Or
'$(VisualStudioVersion)' == '10.0' Or
'$(VisualStudioVersion)' == '11.0' Or
'$(VisualStudioVersion)' == '12.0' Or
'$(VisualStudioVersion)' == '14.0'">
<PipelineCollectFilesPhaseDependsOn>
CollectSQLiteInteropFiles;
$(PipelineCollectFilesPhaseDependsOn);
</PipelineCollectFilesPhaseDependsOn>
</PropertyGroup>
</Project>

View File

@@ -0,0 +1,141 @@
<!--
*
* System.Data.SQLite.Core.targets -
*
* WARNING: This MSBuild file requires MSBuild 4.0 features.
*
* Written by Joe Mistachkin and David Archer.
* Released to the public domain, use at your own risk!
*
-->
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!--
******************************************************************************
** Load Per-User Settings **
******************************************************************************
-->
<!--
NOTE: If the per-user settings file exists, import it now. The contained
settings, if any, will override the default ones provided below.
-->
<Import Condition="'$(MSBuildThisFileDirectory)' != '' And
HasTrailingSlash('$(MSBuildThisFileDirectory)') And
Exists('$(MSBuildThisFileDirectory)\System.Data.SQLite.Core.targets.user')"
Project="$(MSBuildThisFileDirectory)\System.Data.SQLite.Core.targets.user" />
<!--
******************************************************************************
** SQLite Interop Library Build Items **
******************************************************************************
-->
<ItemGroup>
<SQLiteInteropFiles Condition="'$(MSBuildThisFileDirectory)' != '' And
HasTrailingSlash('$(MSBuildThisFileDirectory)')"
Include="$(MSBuildThisFileDirectory)**\SQLite.Interop.*" />
</ItemGroup>
<!--
******************************************************************************
** SQLite Interop Library Content Items **
******************************************************************************
-->
<ItemGroup Condition="'$(ContentSQLiteInteropFiles)' != '' And
'$(ContentSQLiteInteropFiles)' != 'false' And
'@(SQLiteInteropFiles)' != ''">
<Content Include="@(SQLiteInteropFiles)">
<Link>%(RecursiveDir)%(FileName)%(Extension)</Link>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
<!--
******************************************************************************
** SQLite Interop Library Build Targets **
******************************************************************************
-->
<Target Name="CopySQLiteInteropFiles"
Condition="'$(CopySQLiteInteropFiles)' != 'false' And
'$(OutDir)' != '' And
HasTrailingSlash('$(OutDir)') And
Exists('$(OutDir)')"
Inputs="@(SQLiteInteropFiles)"
Outputs="@(SQLiteInteropFiles -> '$(OutDir)%(RecursiveDir)%(Filename)%(Extension)')">
<!--
NOTE: Copy "SQLite.Interop.dll" and all related files, for every
architecture that we support, to the build output directory.
-->
<Copy SourceFiles="@(SQLiteInteropFiles)"
DestinationFiles="@(SQLiteInteropFiles -> '$(OutDir)%(RecursiveDir)%(Filename)%(Extension)')" />
</Target>
<!--
******************************************************************************
-->
<Target Name="CleanSQLiteInteropFiles"
Condition="'$(CleanSQLiteInteropFiles)' != 'false' And
'$(OutDir)' != '' And
HasTrailingSlash('$(OutDir)') And
Exists('$(OutDir)')">
<!--
NOTE: Delete "SQLite.Interop.dll" and all related files, for every
architecture that we support, from the build output directory.
-->
<Delete Files="@(SQLiteInteropFiles -> '$(OutDir)%(RecursiveDir)%(Filename)%(Extension)')" />
</Target>
<!--
******************************************************************************
-->
<Target Name="CollectSQLiteInteropFiles"
Condition="'$(CollectSQLiteInteropFiles)' != 'false'">
<ItemGroup>
<FilesForPackagingFromProject Include="@(SQLiteInteropFiles)">
<DestinationRelativePath>bin\%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
</FilesForPackagingFromProject>
</ItemGroup>
</Target>
<!--
******************************************************************************
** SQLite Interop Library Build Properties **
******************************************************************************
-->
<PropertyGroup>
<PostBuildEventDependsOn>
$(PostBuildEventDependsOn);
CopySQLiteInteropFiles;
</PostBuildEventDependsOn>
<BuildDependsOn>
$(BuildDependsOn);
CopySQLiteInteropFiles;
</BuildDependsOn>
<CleanDependsOn>
$(CleanDependsOn);
CleanSQLiteInteropFiles;
</CleanDependsOn>
</PropertyGroup>
<!--
******************************************************************************
** SQLite Interop Library Publish Properties for Visual Studio 201x **
******************************************************************************
-->
<PropertyGroup Condition="'$(VisualStudioVersion)' == '' Or
'$(VisualStudioVersion)' == '10.0' Or
'$(VisualStudioVersion)' == '11.0' Or
'$(VisualStudioVersion)' == '12.0' Or
'$(VisualStudioVersion)' == '14.0'">
<PipelineCollectFilesPhaseDependsOn>
CollectSQLiteInteropFiles;
$(PipelineCollectFilesPhaseDependsOn);
</PipelineCollectFilesPhaseDependsOn>
</PropertyGroup>
</Project>

View File

@@ -0,0 +1,141 @@
<!--
*
* System.Data.SQLite.Core.targets -
*
* WARNING: This MSBuild file requires MSBuild 4.0 features.
*
* Written by Joe Mistachkin and David Archer.
* Released to the public domain, use at your own risk!
*
-->
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!--
******************************************************************************
** Load Per-User Settings **
******************************************************************************
-->
<!--
NOTE: If the per-user settings file exists, import it now. The contained
settings, if any, will override the default ones provided below.
-->
<Import Condition="'$(MSBuildThisFileDirectory)' != '' And
HasTrailingSlash('$(MSBuildThisFileDirectory)') And
Exists('$(MSBuildThisFileDirectory)\System.Data.SQLite.Core.targets.user')"
Project="$(MSBuildThisFileDirectory)\System.Data.SQLite.Core.targets.user" />
<!--
******************************************************************************
** SQLite Interop Library Build Items **
******************************************************************************
-->
<ItemGroup>
<SQLiteInteropFiles Condition="'$(MSBuildThisFileDirectory)' != '' And
HasTrailingSlash('$(MSBuildThisFileDirectory)')"
Include="$(MSBuildThisFileDirectory)**\SQLite.Interop.*" />
</ItemGroup>
<!--
******************************************************************************
** SQLite Interop Library Content Items **
******************************************************************************
-->
<ItemGroup Condition="'$(ContentSQLiteInteropFiles)' != '' And
'$(ContentSQLiteInteropFiles)' != 'false' And
'@(SQLiteInteropFiles)' != ''">
<Content Include="@(SQLiteInteropFiles)">
<Link>%(RecursiveDir)%(FileName)%(Extension)</Link>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
<!--
******************************************************************************
** SQLite Interop Library Build Targets **
******************************************************************************
-->
<Target Name="CopySQLiteInteropFiles"
Condition="'$(CopySQLiteInteropFiles)' != 'false' And
'$(OutDir)' != '' And
HasTrailingSlash('$(OutDir)') And
Exists('$(OutDir)')"
Inputs="@(SQLiteInteropFiles)"
Outputs="@(SQLiteInteropFiles -> '$(OutDir)%(RecursiveDir)%(Filename)%(Extension)')">
<!--
NOTE: Copy "SQLite.Interop.dll" and all related files, for every
architecture that we support, to the build output directory.
-->
<Copy SourceFiles="@(SQLiteInteropFiles)"
DestinationFiles="@(SQLiteInteropFiles -> '$(OutDir)%(RecursiveDir)%(Filename)%(Extension)')" />
</Target>
<!--
******************************************************************************
-->
<Target Name="CleanSQLiteInteropFiles"
Condition="'$(CleanSQLiteInteropFiles)' != 'false' And
'$(OutDir)' != '' And
HasTrailingSlash('$(OutDir)') And
Exists('$(OutDir)')">
<!--
NOTE: Delete "SQLite.Interop.dll" and all related files, for every
architecture that we support, from the build output directory.
-->
<Delete Files="@(SQLiteInteropFiles -> '$(OutDir)%(RecursiveDir)%(Filename)%(Extension)')" />
</Target>
<!--
******************************************************************************
-->
<Target Name="CollectSQLiteInteropFiles"
Condition="'$(CollectSQLiteInteropFiles)' != 'false'">
<ItemGroup>
<FilesForPackagingFromProject Include="@(SQLiteInteropFiles)">
<DestinationRelativePath>bin\%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
</FilesForPackagingFromProject>
</ItemGroup>
</Target>
<!--
******************************************************************************
** SQLite Interop Library Build Properties **
******************************************************************************
-->
<PropertyGroup>
<PostBuildEventDependsOn>
$(PostBuildEventDependsOn);
CopySQLiteInteropFiles;
</PostBuildEventDependsOn>
<BuildDependsOn>
$(BuildDependsOn);
CopySQLiteInteropFiles;
</BuildDependsOn>
<CleanDependsOn>
$(CleanDependsOn);
CleanSQLiteInteropFiles;
</CleanDependsOn>
</PropertyGroup>
<!--
******************************************************************************
** SQLite Interop Library Publish Properties for Visual Studio 201x **
******************************************************************************
-->
<PropertyGroup Condition="'$(VisualStudioVersion)' == '' Or
'$(VisualStudioVersion)' == '10.0' Or
'$(VisualStudioVersion)' == '11.0' Or
'$(VisualStudioVersion)' == '12.0' Or
'$(VisualStudioVersion)' == '14.0'">
<PipelineCollectFilesPhaseDependsOn>
CollectSQLiteInteropFiles;
$(PipelineCollectFilesPhaseDependsOn);
</PipelineCollectFilesPhaseDependsOn>
</PropertyGroup>
</Project>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,12 @@
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.data>
<DbProviderFactories>
<remove xdt:Transform="RemoveAll"
xdt:Locator="Condition(@invariant='System.Data.SQLite' or
@invariant='System.Data.SQLite.Linq')" />
<add xdt:Transform="RemoveAll"
xdt:Locator="Condition(@invariant='System.Data.SQLite' or
@invariant='System.Data.SQLite.Linq')" />
</DbProviderFactories>
</system.data>
</configuration>

View File

@@ -0,0 +1,11 @@
<configuration>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite.EF6" />
<add name="SQLite Data Provider (Entity Framework 6)"
invariant="System.Data.SQLite.EF6"
description=".NET Framework Data Provider for SQLite (Entity Framework 6)"
type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" />
</DbProviderFactories>
</system.data>
</configuration>

View File

@@ -0,0 +1,12 @@
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.data>
<DbProviderFactories>
<remove xdt:Transform="RemoveAll"
xdt:Locator="Condition(@invariant='System.Data.SQLite' or
@invariant='System.Data.SQLite.Linq')" />
<add xdt:Transform="RemoveAll"
xdt:Locator="Condition(@invariant='System.Data.SQLite' or
@invariant='System.Data.SQLite.Linq')" />
</DbProviderFactories>
</system.data>
</configuration>

View File

@@ -0,0 +1,11 @@
<configuration>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite.EF6" />
<add name="SQLite Data Provider (Entity Framework 6)"
invariant="System.Data.SQLite.EF6"
description=".NET Framework Data Provider for SQLite (Entity Framework 6)"
type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" />
</DbProviderFactories>
</system.data>
</configuration>

View File

@@ -0,0 +1,12 @@
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.data>
<DbProviderFactories>
<remove xdt:Transform="RemoveAll"
xdt:Locator="Condition(@invariant='System.Data.SQLite' or
@invariant='System.Data.SQLite.Linq')" />
<add xdt:Transform="RemoveAll"
xdt:Locator="Condition(@invariant='System.Data.SQLite' or
@invariant='System.Data.SQLite.Linq')" />
</DbProviderFactories>
</system.data>
</configuration>

View File

@@ -0,0 +1,11 @@
<configuration>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite.EF6" />
<add name="SQLite Data Provider (Entity Framework 6)"
invariant="System.Data.SQLite.EF6"
description=".NET Framework Data Provider for SQLite (Entity Framework 6)"
type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" />
</DbProviderFactories>
</system.data>
</configuration>

View File

@@ -0,0 +1,12 @@
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.data>
<DbProviderFactories>
<remove xdt:Transform="RemoveAll"
xdt:Locator="Condition(@invariant='System.Data.SQLite' or
@invariant='System.Data.SQLite.Linq')" />
<add xdt:Transform="RemoveAll"
xdt:Locator="Condition(@invariant='System.Data.SQLite' or
@invariant='System.Data.SQLite.Linq')" />
</DbProviderFactories>
</system.data>
</configuration>

View File

@@ -0,0 +1,11 @@
<configuration>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite.EF6" />
<add name="SQLite Data Provider (Entity Framework 6)"
invariant="System.Data.SQLite.EF6"
description=".NET Framework Data Provider for SQLite (Entity Framework 6)"
type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" />
</DbProviderFactories>
</system.data>
</configuration>

View File

@@ -0,0 +1,12 @@
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.data>
<DbProviderFactories>
<remove xdt:Transform="RemoveAll"
xdt:Locator="Condition(@invariant='System.Data.SQLite' or
@invariant='System.Data.SQLite.Linq')" />
<add xdt:Transform="RemoveAll"
xdt:Locator="Condition(@invariant='System.Data.SQLite' or
@invariant='System.Data.SQLite.Linq')" />
</DbProviderFactories>
</system.data>
</configuration>

View File

@@ -0,0 +1,11 @@
<configuration>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite.EF6" />
<add name="SQLite Data Provider (Entity Framework 6)"
invariant="System.Data.SQLite.EF6"
description=".NET Framework Data Provider for SQLite (Entity Framework 6)"
type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" />
</DbProviderFactories>
</system.data>
</configuration>

View File

@@ -0,0 +1,12 @@
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.data>
<DbProviderFactories>
<remove xdt:Transform="RemoveAll"
xdt:Locator="Condition(@invariant='System.Data.SQLite' or
@invariant='System.Data.SQLite.Linq')" />
<add xdt:Transform="RemoveAll"
xdt:Locator="Condition(@invariant='System.Data.SQLite' or
@invariant='System.Data.SQLite.Linq')" />
</DbProviderFactories>
</system.data>
</configuration>

View File

@@ -0,0 +1,11 @@
<configuration>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite.EF6" />
<add name="SQLite Data Provider (Entity Framework 6)"
invariant="System.Data.SQLite.EF6"
description=".NET Framework Data Provider for SQLite (Entity Framework 6)"
type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" />
</DbProviderFactories>
</system.data>
</configuration>

View File

@@ -0,0 +1,12 @@
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.data>
<DbProviderFactories>
<remove xdt:Transform="RemoveAll"
xdt:Locator="Condition(@invariant='System.Data.SQLite' or
@invariant='System.Data.SQLite.Linq')" />
<add xdt:Transform="RemoveAll"
xdt:Locator="Condition(@invariant='System.Data.SQLite' or
@invariant='System.Data.SQLite.Linq')" />
</DbProviderFactories>
</system.data>
</configuration>

View File

@@ -0,0 +1,11 @@
<configuration>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite.EF6" />
<add name="SQLite Data Provider (Entity Framework 6)"
invariant="System.Data.SQLite.EF6"
description=".NET Framework Data Provider for SQLite (Entity Framework 6)"
type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" />
</DbProviderFactories>
</system.data>
</configuration>

View File

@@ -0,0 +1,12 @@
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.data>
<DbProviderFactories>
<remove xdt:Transform="RemoveAll"
xdt:Locator="Condition(@invariant='System.Data.SQLite' or
@invariant='System.Data.SQLite.Linq')" />
<add xdt:Transform="RemoveAll"
xdt:Locator="Condition(@invariant='System.Data.SQLite' or
@invariant='System.Data.SQLite.Linq')" />
</DbProviderFactories>
</system.data>
</configuration>

View File

@@ -0,0 +1,11 @@
<configuration>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite.EF6" />
<add name="SQLite Data Provider (Entity Framework 6)"
invariant="System.Data.SQLite.EF6"
description=".NET Framework Data Provider for SQLite (Entity Framework 6)"
type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" />
</DbProviderFactories>
</system.data>
</configuration>

View File

@@ -0,0 +1,13 @@
###############################################################################
#
# provider.ps1 --
#
# Written by Joe Mistachkin.
# Released to the public domain, use at your own risk!
#
###############################################################################
param($installPath, $toolsPath, $package, $project)
Add-EFProvider $project "System.Data.SQLite.EF6" `
"System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6"

View File

@@ -0,0 +1,13 @@
###############################################################################
#
# provider.ps1 --
#
# Written by Joe Mistachkin.
# Released to the public domain, use at your own risk!
#
###############################################################################
param($installPath, $toolsPath, $package, $project)
Add-EFProvider $project "System.Data.SQLite.EF6" `
"System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6"

View File

@@ -0,0 +1,13 @@
###############################################################################
#
# provider.ps1 --
#
# Written by Joe Mistachkin.
# Released to the public domain, use at your own risk!
#
###############################################################################
param($installPath, $toolsPath, $package, $project)
Add-EFProvider $project "System.Data.SQLite.EF6" `
"System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6"

View File

@@ -0,0 +1,13 @@
###############################################################################
#
# provider.ps1 --
#
# Written by Joe Mistachkin.
# Released to the public domain, use at your own risk!
#
###############################################################################
param($installPath, $toolsPath, $package, $project)
Add-EFProvider $project "System.Data.SQLite.EF6" `
"System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6"

View File

@@ -0,0 +1,11 @@
<configuration>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite" />
<add name="SQLite Data Provider"
invariant="System.Data.SQLite"
description=".NET Framework Data Provider for SQLite"
type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
</DbProviderFactories>
</system.data>
</configuration>

View File

@@ -0,0 +1,11 @@
<configuration>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite" />
<add name="SQLite Data Provider"
invariant="System.Data.SQLite"
description=".NET Framework Data Provider for SQLite"
type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
</DbProviderFactories>
</system.data>
</configuration>

View File

@@ -0,0 +1,11 @@
<configuration>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite" />
<add name="SQLite Data Provider"
invariant="System.Data.SQLite"
description=".NET Framework Data Provider for SQLite"
type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
</DbProviderFactories>
</system.data>
</configuration>

View File

@@ -0,0 +1,11 @@
<configuration>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite" />
<add name="SQLite Data Provider"
invariant="System.Data.SQLite"
description=".NET Framework Data Provider for SQLite"
type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
</DbProviderFactories>
</system.data>
</configuration>

View File

@@ -0,0 +1,11 @@
<configuration>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite" />
<add name="SQLite Data Provider"
invariant="System.Data.SQLite"
description=".NET Framework Data Provider for SQLite"
type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
</DbProviderFactories>
</system.data>
</configuration>

View File

@@ -0,0 +1,11 @@
<configuration>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite" />
<add name="SQLite Data Provider"
invariant="System.Data.SQLite"
description=".NET Framework Data Provider for SQLite"
type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
</DbProviderFactories>
</system.data>
</configuration>

View File

@@ -0,0 +1,11 @@
<configuration>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite" />
<add name="SQLite Data Provider"
invariant="System.Data.SQLite"
description=".NET Framework Data Provider for SQLite"
type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
</DbProviderFactories>
</system.data>
</configuration>

View File

@@ -0,0 +1,11 @@
<configuration>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite" />
<add name="SQLite Data Provider"
invariant="System.Data.SQLite"
description=".NET Framework Data Provider for SQLite"
type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
</DbProviderFactories>
</system.data>
</configuration>

View File

@@ -0,0 +1,11 @@
<configuration>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite" />
<add name="SQLite Data Provider"
invariant="System.Data.SQLite"
description=".NET Framework Data Provider for SQLite"
type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
</DbProviderFactories>
</system.data>
</configuration>

View File

@@ -0,0 +1,11 @@
<configuration>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite" />
<add name="SQLite Data Provider"
invariant="System.Data.SQLite"
description=".NET Framework Data Provider for SQLite"
type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
</DbProviderFactories>
</system.data>
</configuration>

Some files were not shown because too many files have changed in this diff Show More