mirror of
https://github.com/SabreTools/SabreTools.Serialization.git
synced 2026-07-08 18:06:41 +00:00
Add skeleton filter overrides for nested items
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
using System.Xml.Serialization;
|
||||
using Newtonsoft.Json;
|
||||
using SabreTools.Metadata.Filter;
|
||||
|
||||
namespace SabreTools.Metadata.DatItems.Formats
|
||||
{
|
||||
@@ -99,5 +100,28 @@ namespace SabreTools.Metadata.DatItems.Formats
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Manipulation
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override bool PassesFilter(FilterRunner filterRunner)
|
||||
{
|
||||
if (Machine is not null && !Machine.PassesFilter(filterRunner))
|
||||
return false;
|
||||
|
||||
// TODO: Condition
|
||||
|
||||
return filterRunner.Run(_internal);
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override bool PassesFilterDB(FilterRunner filterRunner)
|
||||
{
|
||||
// TODO: Condition
|
||||
|
||||
return filterRunner.Run(_internal);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using System.Xml.Serialization;
|
||||
using Newtonsoft.Json;
|
||||
using SabreTools.Metadata.Filter;
|
||||
|
||||
namespace SabreTools.Metadata.DatItems.Formats
|
||||
{
|
||||
@@ -105,5 +106,28 @@ namespace SabreTools.Metadata.DatItems.Formats
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Manipulation
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override bool PassesFilter(FilterRunner filterRunner)
|
||||
{
|
||||
if (Machine is not null && !Machine.PassesFilter(filterRunner))
|
||||
return false;
|
||||
|
||||
// TODO: Condition
|
||||
|
||||
return filterRunner.Run(_internal);
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override bool PassesFilterDB(FilterRunner filterRunner)
|
||||
{
|
||||
// TODO: Condition
|
||||
|
||||
return filterRunner.Run(_internal);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.Xml.Serialization;
|
||||
using Newtonsoft.Json;
|
||||
using SabreTools.Metadata.Filter;
|
||||
|
||||
namespace SabreTools.Metadata.DatItems.Formats
|
||||
{
|
||||
@@ -128,5 +129,32 @@ namespace SabreTools.Metadata.DatItems.Formats
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Manipulation
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override bool PassesFilter(FilterRunner filterRunner)
|
||||
{
|
||||
if (Machine is not null && !Machine.PassesFilter(filterRunner))
|
||||
return false;
|
||||
|
||||
// TODO: Condition
|
||||
// TODO: ConfLocation
|
||||
// TODO: ConfSetting
|
||||
|
||||
return filterRunner.Run(_internal);
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override bool PassesFilterDB(FilterRunner filterRunner)
|
||||
{
|
||||
// TODO: Condition
|
||||
// TODO: ConfLocation
|
||||
// TODO: ConfSetting
|
||||
|
||||
return filterRunner.Run(_internal);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using System;
|
||||
using System.Xml.Serialization;
|
||||
using System.Xml.Serialization;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace SabreTools.Metadata.DatItems.Formats
|
||||
@@ -29,11 +28,6 @@ namespace SabreTools.Metadata.DatItems.Formats
|
||||
set => _internal.Name = value;
|
||||
}
|
||||
|
||||
public Rom[]? Rom { get; set; }
|
||||
|
||||
[JsonIgnore]
|
||||
public bool RomSpecified => Rom is not null && Rom.Length > 0;
|
||||
|
||||
public long? Size
|
||||
{
|
||||
get => _internal.Size;
|
||||
@@ -52,11 +46,12 @@ namespace SabreTools.Metadata.DatItems.Formats
|
||||
|
||||
public DataArea() : base() { }
|
||||
|
||||
public DataArea(Data.Models.Metadata.DataArea item) : base(item)
|
||||
public DataArea(Data.Models.Metadata.DataArea item)
|
||||
{
|
||||
// Handle subitems
|
||||
if (item.Rom is not null)
|
||||
Rom = Array.ConvertAll(item.Rom, rom => new Rom(rom));
|
||||
_internal = item.Clone() as Data.Models.Metadata.DataArea ?? new();
|
||||
|
||||
// Clear all lists
|
||||
_internal.Rom = null;
|
||||
}
|
||||
|
||||
public DataArea(Data.Models.Metadata.DataArea item, Machine machine, Source source) : this(item)
|
||||
@@ -82,15 +77,9 @@ namespace SabreTools.Metadata.DatItems.Formats
|
||||
/// <inheritdoc/>
|
||||
public override object Clone() => new DataArea(GetInternalClone());
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override Data.Models.Metadata.DataArea GetInternalClone()
|
||||
{
|
||||
var partItem = _internal.Clone() as Data.Models.Metadata.DataArea ?? new();
|
||||
|
||||
if (Rom is not null)
|
||||
partItem.Rom = Array.ConvertAll(Rom, rom => rom.GetInternalClone());
|
||||
|
||||
return partItem;
|
||||
}
|
||||
=> _internal.Clone() as Data.Models.Metadata.DataArea ?? new();
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.Xml.Serialization;
|
||||
using Newtonsoft.Json;
|
||||
using SabreTools.Metadata.Filter;
|
||||
|
||||
namespace SabreTools.Metadata.DatItems.Formats
|
||||
{
|
||||
@@ -100,12 +101,6 @@ namespace SabreTools.Metadata.DatItems.Formats
|
||||
{
|
||||
var deviceItem = _internal.Clone() as Data.Models.Metadata.Device ?? new();
|
||||
|
||||
deviceItem.DeviceType = DeviceType;
|
||||
deviceItem.FixedImage = FixedImage;
|
||||
deviceItem.Interface = Interface;
|
||||
deviceItem.Mandatory = Mandatory;
|
||||
deviceItem.Tag = Tag;
|
||||
|
||||
if (Instance is not null)
|
||||
deviceItem.Instance = Instance.GetInternalClone();
|
||||
|
||||
@@ -135,5 +130,30 @@ namespace SabreTools.Metadata.DatItems.Formats
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Manipulation
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override bool PassesFilter(FilterRunner filterRunner)
|
||||
{
|
||||
if (Machine is not null && !Machine.PassesFilter(filterRunner))
|
||||
return false;
|
||||
|
||||
// TODO: Instance
|
||||
// TODO: Extension
|
||||
|
||||
return filterRunner.Run(_internal);
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override bool PassesFilterDB(FilterRunner filterRunner)
|
||||
{
|
||||
// TODO: Instance
|
||||
// TODO: Extension
|
||||
|
||||
return filterRunner.Run(_internal);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.Xml.Serialization;
|
||||
using Newtonsoft.Json;
|
||||
using SabreTools.Metadata.Filter;
|
||||
|
||||
namespace SabreTools.Metadata.DatItems.Formats
|
||||
{
|
||||
@@ -158,5 +159,34 @@ namespace SabreTools.Metadata.DatItems.Formats
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Manipulation
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override bool PassesFilter(FilterRunner filterRunner)
|
||||
{
|
||||
if (Machine is not null && !Machine.PassesFilter(filterRunner))
|
||||
return false;
|
||||
|
||||
// TODO: Condition
|
||||
// TODO: DipLocation
|
||||
// TODO: DipValue
|
||||
// TODO: Entry
|
||||
|
||||
return filterRunner.Run(_internal);
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override bool PassesFilterDB(FilterRunner filterRunner)
|
||||
{
|
||||
// TODO: Condition
|
||||
// TODO: DipLocation
|
||||
// TODO: DipValue
|
||||
// TODO: Entry
|
||||
|
||||
return filterRunner.Run(_internal);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using System.Xml.Serialization;
|
||||
using Newtonsoft.Json;
|
||||
using SabreTools.Metadata.Filter;
|
||||
|
||||
namespace SabreTools.Metadata.DatItems.Formats
|
||||
{
|
||||
@@ -105,5 +106,28 @@ namespace SabreTools.Metadata.DatItems.Formats
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Manipulation
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override bool PassesFilter(FilterRunner filterRunner)
|
||||
{
|
||||
if (Machine is not null && !Machine.PassesFilter(filterRunner))
|
||||
return false;
|
||||
|
||||
// TODO: Condition
|
||||
|
||||
return filterRunner.Run(_internal);
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override bool PassesFilterDB(FilterRunner filterRunner)
|
||||
{
|
||||
// TODO: Condition
|
||||
|
||||
return filterRunner.Run(_internal);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ using System.Xml.Serialization;
|
||||
using Newtonsoft.Json;
|
||||
using SabreTools.Data.Extensions;
|
||||
using SabreTools.Data.Models.Metadata;
|
||||
using SabreTools.Metadata.Filter;
|
||||
using SabreTools.Text.Extensions;
|
||||
|
||||
namespace SabreTools.Metadata.DatItems.Formats
|
||||
@@ -209,6 +210,31 @@ namespace SabreTools.Metadata.DatItems.Formats
|
||||
|
||||
#endregion
|
||||
|
||||
#region Manipulation
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override bool PassesFilter(FilterRunner filterRunner)
|
||||
{
|
||||
if (Machine is not null && !Machine.PassesFilter(filterRunner))
|
||||
return false;
|
||||
|
||||
// TODO: DiskArea
|
||||
// TODO: Part
|
||||
|
||||
return filterRunner.Run(_internal);
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override bool PassesFilterDB(FilterRunner filterRunner)
|
||||
{
|
||||
// TODO: DiskArea
|
||||
// TODO: Part
|
||||
|
||||
return filterRunner.Run(_internal);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Sorting and Merging
|
||||
|
||||
/// <inheritdoc/>
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using System;
|
||||
using System.Xml.Serialization;
|
||||
using System.Xml.Serialization;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace SabreTools.Metadata.DatItems.Formats
|
||||
@@ -13,11 +12,6 @@ namespace SabreTools.Metadata.DatItems.Formats
|
||||
{
|
||||
#region Properties
|
||||
|
||||
public Disk[]? Disk { get; set; }
|
||||
|
||||
[JsonIgnore]
|
||||
public bool DiskSpecified => Disk is not null && Disk.Length > 0;
|
||||
|
||||
/// <inheritdoc>/>
|
||||
public override Data.Models.Metadata.ItemType ItemType
|
||||
=> Data.Models.Metadata.ItemType.DiskArea;
|
||||
@@ -36,9 +30,10 @@ namespace SabreTools.Metadata.DatItems.Formats
|
||||
|
||||
public DiskArea(Data.Models.Metadata.DiskArea item) : base(item)
|
||||
{
|
||||
// Handle subitems
|
||||
if (item.Disk is not null)
|
||||
Disk = Array.ConvertAll(item.Disk, rom => new Disk(rom));
|
||||
_internal = item.Clone() as Data.Models.Metadata.DiskArea ?? new();
|
||||
|
||||
// Clear all lists
|
||||
_internal.Disk = null;
|
||||
}
|
||||
|
||||
public DiskArea(Data.Models.Metadata.DiskArea item, Machine machine, Source source) : this(item)
|
||||
@@ -64,15 +59,9 @@ namespace SabreTools.Metadata.DatItems.Formats
|
||||
/// <inheritdoc/>
|
||||
public override object Clone() => new DiskArea(GetInternalClone());
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override Data.Models.Metadata.DiskArea GetInternalClone()
|
||||
{
|
||||
var partItem = _internal.Clone() as Data.Models.Metadata.DiskArea ?? new();
|
||||
|
||||
if (Disk is not null)
|
||||
partItem.Disk = Array.ConvertAll(Disk, rom => rom.GetInternalClone());
|
||||
|
||||
return partItem;
|
||||
}
|
||||
=> _internal.Clone() as Data.Models.Metadata.DiskArea ?? new();
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.Xml.Serialization;
|
||||
using Newtonsoft.Json;
|
||||
using SabreTools.Metadata.Filter;
|
||||
|
||||
namespace SabreTools.Metadata.DatItems.Formats
|
||||
{
|
||||
@@ -124,5 +125,28 @@ namespace SabreTools.Metadata.DatItems.Formats
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Manipulation
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override bool PassesFilter(FilterRunner filterRunner)
|
||||
{
|
||||
if (Machine is not null && !Machine.PassesFilter(filterRunner))
|
||||
return false;
|
||||
|
||||
// TODO: Control
|
||||
|
||||
return filterRunner.Run(_internal);
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override bool PassesFilterDB(FilterRunner filterRunner)
|
||||
{
|
||||
// TODO: Control
|
||||
|
||||
return filterRunner.Run(_internal);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using System;
|
||||
using System.Xml.Serialization;
|
||||
using System.Xml.Serialization;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace SabreTools.Metadata.DatItems.Formats
|
||||
@@ -13,26 +12,6 @@ namespace SabreTools.Metadata.DatItems.Formats
|
||||
{
|
||||
#region Properties
|
||||
|
||||
public DataArea[]? DataArea { get; set; }
|
||||
|
||||
[JsonIgnore]
|
||||
public bool DataAreaSpecified => DataArea is not null && DataArea.Length > 0;
|
||||
|
||||
public DiskArea[]? DiskArea { get; set; }
|
||||
|
||||
[JsonIgnore]
|
||||
public bool DiskAreaSpecified => DiskArea is not null && DiskArea.Length > 0;
|
||||
|
||||
public DipSwitch[]? DipSwitch { get; set; }
|
||||
|
||||
[JsonIgnore]
|
||||
public bool DipSwitchSpecified => DipSwitch is not null && DipSwitch.Length > 0;
|
||||
|
||||
public PartFeature[]? Feature { get; set; }
|
||||
|
||||
[JsonIgnore]
|
||||
public bool FeatureSpecified => Feature is not null && Feature.Length > 0;
|
||||
|
||||
public string? Interface
|
||||
{
|
||||
get => _internal.Interface;
|
||||
@@ -57,18 +36,13 @@ namespace SabreTools.Metadata.DatItems.Formats
|
||||
|
||||
public Part(Data.Models.Metadata.Part item) : base(item)
|
||||
{
|
||||
// Handle subitems
|
||||
if (item.DataArea is not null)
|
||||
DataArea = Array.ConvertAll(item.DataArea, dataArea => new DataArea(dataArea));
|
||||
_internal = item.Clone() as Data.Models.Metadata.Part ?? new();
|
||||
|
||||
if (item.DiskArea is not null)
|
||||
DiskArea = Array.ConvertAll(item.DiskArea, diskArea => new DiskArea(diskArea));
|
||||
|
||||
if (item.DipSwitch is not null)
|
||||
DipSwitch = Array.ConvertAll(item.DipSwitch, dipSwitch => new DipSwitch(dipSwitch));
|
||||
|
||||
if (item.Feature is not null)
|
||||
Feature = Array.ConvertAll(item.Feature, feature => new PartFeature(feature));
|
||||
// Clear all lists
|
||||
_internal.DataArea = null;
|
||||
_internal.DiskArea = null;
|
||||
_internal.DipSwitch = null;
|
||||
_internal.Feature = null;
|
||||
}
|
||||
|
||||
public Part(Data.Models.Metadata.Part item, Machine machine, Source source) : this(item)
|
||||
@@ -96,23 +70,7 @@ namespace SabreTools.Metadata.DatItems.Formats
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override Data.Models.Metadata.Part GetInternalClone()
|
||||
{
|
||||
var partItem = _internal.Clone() as Data.Models.Metadata.Part ?? new();
|
||||
|
||||
if (DataArea is not null)
|
||||
partItem.DataArea = Array.ConvertAll(DataArea, dataArea => dataArea.GetInternalClone());
|
||||
|
||||
if (DiskArea is not null)
|
||||
partItem.DiskArea = Array.ConvertAll(DiskArea, diskArea => diskArea.GetInternalClone());
|
||||
|
||||
if (DipSwitch is not null)
|
||||
partItem.DipSwitch = Array.ConvertAll(DipSwitch, dipSwitch => dipSwitch.GetInternalClone());
|
||||
|
||||
if (Feature is not null)
|
||||
partItem.Feature = Array.ConvertAll(Feature, feature => feature.GetInternalClone());
|
||||
|
||||
return partItem;
|
||||
}
|
||||
=> _internal.Clone() as Data.Models.Metadata.Part ?? new();
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using System.Xml.Serialization;
|
||||
using Newtonsoft.Json;
|
||||
using SabreTools.Metadata.Filter;
|
||||
|
||||
namespace SabreTools.Metadata.DatItems.Formats
|
||||
{
|
||||
@@ -105,5 +106,28 @@ namespace SabreTools.Metadata.DatItems.Formats
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Manipulation
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override bool PassesFilter(FilterRunner filterRunner)
|
||||
{
|
||||
if (Machine is not null && !Machine.PassesFilter(filterRunner))
|
||||
return false;
|
||||
|
||||
// TODO: Part
|
||||
|
||||
return filterRunner.Run(_internal);
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override bool PassesFilterDB(FilterRunner filterRunner)
|
||||
{
|
||||
// TODO: Part
|
||||
|
||||
return filterRunner.Run(_internal);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.Xml.Serialization;
|
||||
using Newtonsoft.Json;
|
||||
using SabreTools.Metadata.Filter;
|
||||
|
||||
namespace SabreTools.Metadata.DatItems.Formats
|
||||
{
|
||||
@@ -94,5 +95,28 @@ namespace SabreTools.Metadata.DatItems.Formats
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Manipulation
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override bool PassesFilter(FilterRunner filterRunner)
|
||||
{
|
||||
if (Machine is not null && !Machine.PassesFilter(filterRunner))
|
||||
return false;
|
||||
|
||||
// TODO: Analog
|
||||
|
||||
return filterRunner.Run(_internal);
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override bool PassesFilterDB(FilterRunner filterRunner)
|
||||
{
|
||||
// TODO: Analog
|
||||
|
||||
return filterRunner.Run(_internal);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ using System.Xml.Serialization;
|
||||
using Newtonsoft.Json;
|
||||
using SabreTools.Data.Extensions;
|
||||
using SabreTools.Data.Models.Metadata;
|
||||
using SabreTools.Metadata.Filter;
|
||||
using SabreTools.Text.Extensions;
|
||||
|
||||
namespace SabreTools.Metadata.DatItems.Formats
|
||||
@@ -941,6 +942,31 @@ namespace SabreTools.Metadata.DatItems.Formats
|
||||
|
||||
#endregion
|
||||
|
||||
#region Manipulation
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override bool PassesFilter(FilterRunner filterRunner)
|
||||
{
|
||||
if (Machine is not null && !Machine.PassesFilter(filterRunner))
|
||||
return false;
|
||||
|
||||
// TODO: DataArea
|
||||
// TODO: Part
|
||||
|
||||
return filterRunner.Run(_internal);
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override bool PassesFilterDB(FilterRunner filterRunner)
|
||||
{
|
||||
// TODO: DataArea
|
||||
// TODO: Part
|
||||
|
||||
return filterRunner.Run(_internal);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Sorting and Merging
|
||||
|
||||
/// <inheritdoc/>
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.Xml.Serialization;
|
||||
using Newtonsoft.Json;
|
||||
using SabreTools.Metadata.Filter;
|
||||
|
||||
namespace SabreTools.Metadata.DatItems.Formats
|
||||
{
|
||||
@@ -94,5 +95,28 @@ namespace SabreTools.Metadata.DatItems.Formats
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Manipulation
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override bool PassesFilter(FilterRunner filterRunner)
|
||||
{
|
||||
if (Machine is not null && !Machine.PassesFilter(filterRunner))
|
||||
return false;
|
||||
|
||||
// TODO: SlotOption
|
||||
|
||||
return filterRunner.Run(_internal);
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override bool PassesFilterDB(FilterRunner filterRunner)
|
||||
{
|
||||
// TODO: SlotOption
|
||||
|
||||
return filterRunner.Run(_internal);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user