diff --git a/CapyKit/Attributes/EnumerationAttribute.cs b/CapyKit/Attributes/EnumerationAttribute.cs
index 47b6eaa..13e7ca3 100644
--- a/CapyKit/Attributes/EnumerationAttribute.cs
+++ b/CapyKit/Attributes/EnumerationAttribute.cs
@@ -1,43 +1,36 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+namespace CapyKit.Attributes;
-namespace CapyKit.Attributes
+///
+/// Custom attribute class for decorating enumeration fields with additional data.
+///
+///
+/// Generic type parameter allowing for arbitrary declarations and assignments of meaning.
+///
+[AttributeUsage(AttributeTargets.Field)]
+public abstract class EnumerationAttribute : Attribute
{
- ///
- /// Custom attribute class for decorating enumeration fields with additional data.
- ///
- ///
- /// Generic type parameter allowing for arbitrary declarations and assignments of meaning.
- ///
- [AttributeUsage(AttributeTargets.Field)]
- public abstract class EnumerationAttribute : Attribute
+ #region Constructors
+
+ /// Gets the value of the enumeration represented by this attribute.
+ ///
+ /// Initializes a new instance of the class with a
+ /// specified value.
+ ///
+ protected EnumerationAttribute(T value)
{
- #region Properties
-
- ///
- /// Initializes a new instance of the class with a
- /// specified value.
- ///
- /// The value.
- public T Value { get; private set; }
-
- #endregion
-
- #region Constructors
-
- /// Gets the value of the enumeration represented by this attribute.
- ///
- /// Initializes a new instance of the class with a
- /// specified value.
- ///
- protected EnumerationAttribute(T value)
- {
- this.Value = value;
- }
-
- #endregion
+ this.Value = value;
}
-}
+
+ #endregion
+
+ #region Properties
+
+ ///
+ /// Initializes a new instance of the class with a
+ /// specified value.
+ ///
+ /// The value.
+ public T Value { get; private set; }
+
+ #endregion
+}
\ No newline at end of file
diff --git a/CapyKit/Attributes/EnumerationDescriptionAttribute.cs b/CapyKit/Attributes/EnumerationDescriptionAttribute.cs
index 4b626fc..f862b90 100644
--- a/CapyKit/Attributes/EnumerationDescriptionAttribute.cs
+++ b/CapyKit/Attributes/EnumerationDescriptionAttribute.cs
@@ -1,25 +1,18 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+namespace CapyKit.Attributes;
-namespace CapyKit.Attributes
+/// An attribute class for decorating enumeration fields with a description.
+///
+[AttributeUsage(AttributeTargets.Field)]
+public class EnumerationDescriptionAttribute : EnumerationAttribute
{
- /// An attribute class for decorating enumeration fields with a description.
- ///
- [AttributeUsage(AttributeTargets.Field)]
- public class EnumerationDescriptionAttribute : EnumerationAttribute
+ ///
+ /// Initializes a new instance of the class with
+ /// the specified description.
+ ///
+ /// The description of the enumeration value.
+ public EnumerationDescriptionAttribute(string description)
+ : base(description)
{
- ///
- /// Initializes a new instance of the class with
- /// the specified description.
- ///
- /// The description of the enumeration value.
- public EnumerationDescriptionAttribute(string description)
- : base(description)
- {
- //
- }
+ //
}
-}
+}
\ No newline at end of file
diff --git a/CapyKit/Attributes/EnumerationIconAttribute.cs b/CapyKit/Attributes/EnumerationIconAttribute.cs
index 55b7409..0605f71 100644
--- a/CapyKit/Attributes/EnumerationIconAttribute.cs
+++ b/CapyKit/Attributes/EnumerationIconAttribute.cs
@@ -1,17 +1,17 @@
namespace CapyKit.Attributes;
-/// Attribute describing the associated font-awesome icon of an parameter.
+/// Attribute describing the associated font-awesome icon of an parameter.
[AttributeUsage(AttributeTargets.Field)]
public class EnumerationIconAttribute : Attribute
{
- /// Gets or sets the description of the enumeration.
- /// The description.
- public string Icon { get; private set; }
-
/// Constructor.
/// The icon associated with the enumeration.
public EnumerationIconAttribute(string icon)
{
this.Icon = icon;
}
+
+ /// Gets or sets the description of the enumeration.
+ /// The description.
+ public string Icon { get; private set; }
}
\ No newline at end of file
diff --git a/CapyKit/Attributes/ParameterAcceptedValuesAttribute.cs b/CapyKit/Attributes/ParameterAcceptedValuesAttribute.cs
index 6b3fdb0..8a772b5 100644
--- a/CapyKit/Attributes/ParameterAcceptedValuesAttribute.cs
+++ b/CapyKit/Attributes/ParameterAcceptedValuesAttribute.cs
@@ -4,14 +4,6 @@ namespace CapyKit.Attributes;
/// Accepted values are stored as discreet values similar to an enumeration. Ranges are not supported.
public class ParameterAcceptedValuesAttribute : Attribute
{
- #region Properties
-
- /// Gets or sets the accepted values.
- /// The accepted values.
- public IEnumerable AcceptedValues { get; private set; }
-
- #endregion Properties
-
#region Constructors
/// Constructor.
@@ -22,4 +14,12 @@ public class ParameterAcceptedValuesAttribute : Attribute
}
#endregion Constructors
+
+ #region Properties
+
+ /// Gets or sets the accepted values.
+ /// The accepted values.
+ public IEnumerable AcceptedValues { get; private set; }
+
+ #endregion Properties
}
\ No newline at end of file
diff --git a/CapyKit/Attributes/ParameterAttribute.cs b/CapyKit/Attributes/ParameterAttribute.cs
index e2dc68b..d3890b5 100644
--- a/CapyKit/Attributes/ParameterAttribute.cs
+++ b/CapyKit/Attributes/ParameterAttribute.cs
@@ -13,13 +13,15 @@ public class ParameterAttribute : Attribute
#region Properties
///
- /// Gets or sets the name parameter as passed in a POST method from the Browser. This can be hardcoded at the class level.
+ /// Gets or sets the name parameter as passed in a POST method from the Browser. This can be hardcoded at the class
+ /// level.
///
/// The name of the parameter.
public string ParameterName { get; private set; }
///
- /// Gets the description of the parameter. This serves as a human-readable explanation or label for the parameter's purpose or usage.
+ /// Gets the description of the parameter. This serves as a human-readable explanation or label for the parameter's
+ /// purpose or usage.
///
/// The description text of the parameter.
public string Description { get; private set; }
@@ -48,8 +50,10 @@ public class ParameterAttribute : Attribute
/// Constructor.
/// The name of the system.
- /// Name of the resource that contains the description of
- /// the parameter.
+ ///
+ /// Name of the resource that contains the description of
+ /// the parameter.
+ ///
public ParameterAttribute(string systemName, string description)
{
this.ParameterName = systemName;
@@ -60,8 +64,10 @@ public class ParameterAttribute : Attribute
/// Constructor.
/// The name of the system.
- /// Name of the resource that contains the description of
- /// the parameter.
+ ///
+ /// Name of the resource that contains the description of
+ /// the parameter.
+ ///
/// The FontAwesome icon name.
public ParameterAttribute(string systemName, string description, string iconName)
{
@@ -73,8 +79,10 @@ public class ParameterAttribute : Attribute
/// Constructor.
/// The name of the system.
- /// Name of the resource that contains the description of
- /// the parameter.
+ ///
+ /// Name of the resource that contains the description of
+ /// the parameter.
+ ///
/// The FontAwesome icon name.
/// The ordinal position.
public ParameterAttribute(string systemName, string description, string iconName, int ordinal)
@@ -87,8 +95,10 @@ public class ParameterAttribute : Attribute
/// Constructor.
/// The name of the system.
- /// Name of the resource that contains the description of
- /// the parameter.
+ ///
+ /// Name of the resource that contains the description of
+ /// the parameter.
+ ///
/// The ordinal position.
public ParameterAttribute(string systemName, string description, int ordinal)
{
diff --git a/CapyKit/Attributes/ValueFormatAttribute.cs b/CapyKit/Attributes/ValueFormatAttribute.cs
index 67c7ebc..0a88e29 100644
--- a/CapyKit/Attributes/ValueFormatAttribute.cs
+++ b/CapyKit/Attributes/ValueFormatAttribute.cs
@@ -1,58 +1,51 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+namespace CapyKit.Attributes;
-namespace CapyKit.Attributes
+///
+/// Custom attribute for formatting values in a specific way.
+///
+[AttributeUsage(AttributeTargets.Property)]
+public class ValueFormatAttribute : Attribute
{
- ///
- /// Custom attribute for formatting values in a specific way.
- ///
- [AttributeUsage(AttributeTargets.Property)]
- public class ValueFormatAttribute : Attribute
+ #region Properties
+
+ /// Gets or sets the format to use for formatting the value.
+ /// The format string used to format the value.
+ public string Format { get; }
+
+ #endregion Properties
+
+ #region Methods
+
+ /// Gets a parameterized formatted string for the specified index.
+ /// (Optional) Zero-based index of the item in the string to format.
+ /// A formatted string with the specified index and format.
+ public string GetFormatParameterizedString(int index = 0)
{
- #region Properties
-
- /// Gets or sets the format to use for formatting the value.
- /// The format string used to format the value.
- public string Format { get; private set; }
-
- #endregion Properties
-
- #region Constructors
-
- ///
- /// Default constructor. Initializes a new instance of the
- /// class with an empty format string.
- ///
- public ValueFormatAttribute()
- {
- this.Format = string.Empty;
- }
-
- ///
- /// Constructor. Initializes a new instance of the class with
- /// the specified format string.
- ///
- /// The format string used to format the value.
- public ValueFormatAttribute(string format)
- {
- this.Format = format;
- }
-
- #endregion Constructors
-
- #region Methods
-
- /// Gets a parameterized formatted string for the specified index.
- /// (Optional) Zero-based index of the item in the string to format.
- /// A formatted string with the specified index and format.
- public string GetFormatParameterizedString(int index = 0)
- {
- return "{" + index + ":" + this.Format + "}";
- }
-
- #endregion Methods
+ return "{" + index + ":" + this.Format + "}";
}
-}
+
+ #endregion Methods
+
+ #region Constructors
+
+ ///
+ /// Default constructor. Initializes a new instance of the
+ /// class with an empty format string.
+ ///
+ public ValueFormatAttribute()
+ {
+ this.Format = string.Empty;
+ }
+
+ ///
+ /// Constructor. Initializes a new instance of the class with
+ /// the specified format string.
+ ///
+ /// The format string used to format the value.
+ public ValueFormatAttribute(string format)
+ {
+ this.Format = format;
+ }
+
+ #endregion Constructors
+}
\ No newline at end of file
diff --git a/CapyKit/CapyEvent.cs b/CapyKit/CapyEvent.cs
index 843ba1c..5fec7c5 100644
--- a/CapyKit/CapyEvent.cs
+++ b/CapyKit/CapyEvent.cs
@@ -1,223 +1,224 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Runtime.CompilerServices;
-using System.Text;
-using System.Threading.Tasks;
+using System.Runtime.CompilerServices;
using CapyKit.Attributes;
-using CapyKit.Extensions;
-namespace CapyKit
+namespace CapyKit;
+
+///
+/// The CapyEventReporter class is responsible for managing event subscriptions and emissions within CapyKit.
+///
+///
+/// Because consumers of CapyKit may have varied ways of handling logging, the
+/// provides
+/// a way for subscribers to recieve events for various "events" within the library. These can be thought of as
+/// a logging solution for CapyKit. Consumers are free to treat these events however they see fit.
+///
+public static class CapyEventReporter
{
+ #region Members
+
///
- /// The CapyEventReporter class is responsible for managing event subscriptions and emissions within CapyKit.
+ /// A dictionary storing event handlers and their corresponding origins for each subscription level.
+ ///
+ private static readonly Dictionary> subscribers = new();
+
+ /// A hash set storing unique identifiers for events intended to only be emitted once.
+ ///
+ private static readonly HashSet uniqueIdentifiers = new();
+
+ #endregion
+
+ #region Methods
+
+ ///
+ /// Subscribes the specified event handler to the event with the given subscription level and
+ /// origin.
///
///
- /// Because consumers of CapyKit may have varied ways of handling logging, the provides
- /// a way for subscribers to recieve events for various "events" within the library. These can be thought of as
- /// a logging solution for CapyKit. Consumers are free to treat these events however they see fit.
+ /// If there is no existing list for the given subscription level, a new list is created and
+ /// added to the dictionary.
///
- public static class CapyEventReporter
+ /// The event handler to subscribe.
+ /// The severity level of the event to subscribe to.
+ ///
+ /// (Optional) The name of the method or class where the subscription is made.
+ ///
+ public static void Subscribe(CapyEventHandler callback, EventLevel subscriptionLevel,
+ [CallerMemberName] string origin = null)
{
- #region Members
-
- ///
- /// A dictionary storing event handlers and their corresponding origins for each subscription level.
- ///
- private static Dictionary> subscribers = new Dictionary>();
-
- /// A hash set storing unique identifiers for events intended to only be emitted once.
- ///
- private static HashSet uniqueIdentifiers = new HashSet();
-
- #endregion
-
- #region Methods
-
- ///
- /// Subscribes the specified event handler to the event with the given subscription level and
- /// origin.
- ///
- ///
- /// If there is no existing list for the given subscription level, a new list is created and
- /// added to the dictionary.
- ///
- /// The event handler to subscribe.
- /// The severity level of the event to subscribe to.
- ///
- /// (Optional) The name of the method or class where the subscription is made.
- ///
- public static void Subscribe(CapyEventHandler callback, EventLevel subscriptionLevel, [CallerMemberName] string origin = null)
+ if (!CapyEventReporter.subscribers.ContainsKey(subscriptionLevel))
{
- if (!subscribers.ContainsKey(subscriptionLevel))
- {
- subscribers.Add(subscriptionLevel, new List<(CapyEventHandler Handler, string origin)>());
- }
-
- subscribers[subscriptionLevel].Add((callback, origin ?? "[Unknown]"));
+ CapyEventReporter.subscribers.Add(subscriptionLevel, new List<(CapyEventHandler Handler, string origin)>());
}
- ///
- /// Unsubscribes the specified event handler from the event with the given origin.
- ///
- /// The event handler to unsubscribe.
- ///
- /// The name of the method or class where the subscription was made.
- ///
- public static void Unsubscribe(CapyEventHandler callback, string origin)
- {
- foreach (var value in Enum.GetValues(typeof(EventLevel)))
- {
- if (value is EventLevel)
- {
- subscribers[(EventLevel)value].RemoveAll(c => c.Handler == callback && c.origin == origin);
- }
- }
- }
-
- /// Emits an event with the given severity level, message, and method name.
- ///
- /// In order to allow for efficient calling member access via
- /// , it is suggested that is defined explicitly for formatted messages.
- ///
- /// The severity level of the event.
- ///
- /// The message describing the reason for the event. String formatting for
- /// is accepted.
- ///
- ///
- /// (Optional) The name of the method where the event was raised.
- ///
- ///
- /// A variable-length parameters list containing arguments for formatting the message.
- ///
- ///
- ///
- /// CapyEventReporter.EmitEvent(EventLevel.Error, "Could not find the description for {0}.", args: new[] { enumeration });
- ///
- ///
- ///
- public static void EmitEvent(EventLevel eventLevel, string message, [CallerMemberName] string method = null, params object[] args)
- {
- if (!subscribers.ContainsKey(eventLevel))
- {
- return;
- }
-
- var formattedMessage = string.Format(message, args);
-
- var capyEventArgs = new CapyEventArgs(eventLevel, formattedMessage, method);
-
- foreach (var subscriber in subscribers[eventLevel])
- {
- subscriber.Handler(capyEventArgs);
- }
- }
-
- ///
- /// Emits an event with the given severity level, message, unique identifier, and method name one
- /// time.
- ///
- ///
- /// This method is similar to
- /// , but requires a unique identifier (such as a ) to prevent duplicate
- /// emissions.
- ///
- /// The severity level of the event.
- ///
- /// The message describing the reason for the event. String formatting for
- /// is accepted.
- ///
- /// A unique identifier for the event emission.
- ///
- /// (Optional) The name of the method where the event was raised.
- ///
- ///
- /// A variable-length parameters list containing arguments for formatting the message.
- ///
- ///
- ///
- public static void EmitEventOnce(EventLevel eventLevel, string message, string uniqueIdentifier, [CallerMemberName] string method = null, params object[] args)
- {
- if(uniqueIdentifiers.Contains(uniqueIdentifier))
- {
- return;
- }
-
- uniqueIdentifiers.Add(uniqueIdentifier);
- EmitEvent(eventLevel, message, method: method, args: args);
- }
-
- #endregion
+ CapyEventReporter.subscribers[subscriptionLevel].Add((callback, origin ?? "[Unknown]"));
}
///
- /// A delegate representing an event handler that accepts a instance.
+ /// Unsubscribes the specified event handler from the event with the given origin.
///
- /// The CapyEventArgs instance containing event data.
- public delegate void CapyEventHandler(CapyEventArgs e);
-
- ///
- /// The CapyEventArgs class represents an event argument instance with event level, message, and
- /// method name information.
- ///
- public class CapyEventArgs : EventArgs
+ /// The event handler to unsubscribe.
+ ///
+ /// The name of the method or class where the subscription was made.
+ ///
+ public static void Unsubscribe(CapyEventHandler callback, string origin)
{
- #region Properties
-
- ///
- /// Gets the severity level of the event.
- ///
- public EventLevel Level { get; private set; }
-
- ///
- /// Gets the message describing the reason for the event.
- ///
- public string Message { get; private set; }
-
- ///
- /// Gets the name of the method where the event was raised.
- ///
- public string MethodName { get; private set; }
-
- #endregion
-
- #region Constructor
-
- ///
- /// Initializes a new instance of the CapyEventArgs class with the specified event level, message, and method name.
- ///
- /// The severity level of the event.
- /// A descriptive message explaining the reason for the event.
- /// The name of the method where the event was raised.
- public CapyEventArgs(EventLevel level, string message, string method = null)
+ foreach (var value in Enum.GetValues(typeof(EventLevel)))
{
- this.Level = level;
- this.Message = message;
- this.MethodName = method ?? "[Unknown]";
+ if (value is EventLevel)
+ {
+ CapyEventReporter.subscribers[(EventLevel)value]
+ .RemoveAll(c => c.Handler == callback && c.origin == origin);
+ }
+ }
+ }
+
+ /// Emits an event with the given severity level, message, and method name.
+ ///
+ /// In order to allow for efficient calling member access via
+ /// , it is suggested that is defined explicitly for formatted messages.
+ ///
+ /// The severity level of the event.
+ ///
+ /// The message describing the reason for the event. String formatting for
+ /// is accepted.
+ ///
+ ///
+ /// (Optional) The name of the method where the event was raised.
+ ///
+ ///
+ /// A variable-length parameters list containing arguments for formatting the message.
+ ///
+ ///
+ ///
+ /// CapyEventReporter.EmitEvent(EventLevel.Error, "Could not find the description for {0}.", args: new[] { enumeration });
+ ///
+ ///
+ ///
+ public static void EmitEvent(EventLevel eventLevel, string message, [CallerMemberName] string method = null,
+ params object[] args)
+ {
+ if (!CapyEventReporter.subscribers.ContainsKey(eventLevel))
+ {
+ return;
}
- #endregion
+ var formattedMessage = string.Format(message, args);
+
+ var capyEventArgs = new CapyEventArgs(eventLevel, formattedMessage, method);
+
+ foreach (var subscriber in CapyEventReporter.subscribers[eventLevel])
+ {
+ subscriber.Handler(capyEventArgs);
+ }
}
-
- /// Enumeration representing different event level severity values.
- public enum EventLevel
+ ///
+ /// Emits an event with the given severity level, message, unique identifier, and method name one
+ /// time.
+ ///
+ ///
+ /// This method is similar to
+ /// , but requires a unique identifier (such as a ) to prevent duplicate
+ /// emissions.
+ ///
+ /// The severity level of the event.
+ ///
+ /// The message describing the reason for the event. String formatting for
+ /// is accepted.
+ ///
+ /// A unique identifier for the event emission.
+ ///
+ /// (Optional) The name of the method where the event was raised.
+ ///
+ ///
+ /// A variable-length parameters list containing arguments for formatting the message.
+ ///
+ ///
+ ///
+ public static void EmitEventOnce(EventLevel eventLevel, string message, string uniqueIdentifier,
+ [CallerMemberName] string method = null, params object[] args)
{
- /// Represents a critical error that requires immediate attention.
- [EnumerationDescription("Represents a critical error that requires immediate attention.")]
- Critical = 0,
- /// Represents an error that prevents the normal execution of the application.
- [EnumerationDescription("Represents an error that prevents the normal execution of the application.")]
- Error = 1,
- /// Represents a warning indicating a non-critical issue that should be addressed.
- [EnumerationDescription("Represents a warning indicating a non-critical issue that should be addressed.")]
- Warning = 2,
- /// Represents informational messages that provide useful context to the consumer.
- [EnumerationDescription("Represents informational messages that provide useful context to the consumer.")]
- Information = 3,
- /// Represents detailed messages that are typically used for debugging purposes.
- [EnumerationDescription("Represents detailed messages that are typically used for debugging purposes.")]
- Debug = 4
+ if (CapyEventReporter.uniqueIdentifiers.Contains(uniqueIdentifier))
+ {
+ return;
+ }
+
+ CapyEventReporter.uniqueIdentifiers.Add(uniqueIdentifier);
+ EmitEvent(eventLevel, message, method, args);
}
+
+ #endregion
}
+
+///
+/// A delegate representing an event handler that accepts a instance.
+///
+/// The CapyEventArgs instance containing event data.
+public delegate void CapyEventHandler(CapyEventArgs e);
+
+///
+/// The CapyEventArgs class represents an event argument instance with event level, message, and
+/// method name information.
+///
+public class CapyEventArgs : EventArgs
+{
+ #region Constructor
+
+ ///
+ /// Initializes a new instance of the CapyEventArgs class with the specified event level, message, and method name.
+ ///
+ /// The severity level of the event.
+ /// A descriptive message explaining the reason for the event.
+ /// The name of the method where the event was raised.
+ public CapyEventArgs(EventLevel level, string message, string method = null)
+ {
+ this.Level = level;
+ this.Message = message;
+ this.MethodName = method ?? "[Unknown]";
+ }
+
+ #endregion
+
+ #region Properties
+
+ ///
+ /// Gets the severity level of the event.
+ ///
+ public EventLevel Level { get; private set; }
+
+ ///
+ /// Gets the message describing the reason for the event.
+ ///
+ public string Message { get; private set; }
+
+ ///
+ /// Gets the name of the method where the event was raised.
+ ///
+ public string MethodName { get; private set; }
+
+ #endregion
+}
+
+/// Enumeration representing different event level severity values.
+public enum EventLevel
+{
+ /// Represents a critical error that requires immediate attention.
+ [EnumerationDescription("Represents a critical error that requires immediate attention.")]
+ Critical = 0,
+
+ /// Represents an error that prevents the normal execution of the application.
+ [EnumerationDescription("Represents an error that prevents the normal execution of the application.")]
+ Error = 1,
+
+ /// Represents a warning indicating a non-critical issue that should be addressed.
+ [EnumerationDescription("Represents a warning indicating a non-critical issue that should be addressed.")]
+ Warning = 2,
+
+ /// Represents informational messages that provide useful context to the consumer.
+ [EnumerationDescription("Represents informational messages that provide useful context to the consumer.")]
+ Information = 3,
+
+ /// Represents detailed messages that are typically used for debugging purposes.
+ [EnumerationDescription("Represents detailed messages that are typically used for debugging purposes.")]
+ Debug = 4
+}
\ No newline at end of file
diff --git a/CapyKit/CapyKit.csproj b/CapyKit/CapyKit.csproj
index a3020e6..40fac37 100644
--- a/CapyKit/CapyKit.csproj
+++ b/CapyKit/CapyKit.csproj
@@ -1,21 +1,21 @@
-
- net8.0
- enable
- enable
- True
- README.md
- 1.0.4
-
+
+ net8.0
+ enable
+ enable
+ True
+ README.md
+ 1.0.4
+
-
-
- True
- \
-
-
+
+
+ True
+ \
+
+
-
+
diff --git a/CapyKit/EncryptedValue.cs b/CapyKit/EncryptedValue.cs
index 20d49a5..1a09df5 100644
--- a/CapyKit/EncryptedValue.cs
+++ b/CapyKit/EncryptedValue.cs
@@ -1,30 +1,23 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+namespace CapyKit;
-namespace CapyKit
+///
+/// Holds a value that has been encrypted.
+///
+///
+public class EncryptedValue
{
+ #region Properties
+
///
- /// Holds a value that has been encrypted.
+ /// The encrypted value.
///
- ///
- public class EncryptedValue
- {
- #region Members
+ public T Value { get; set; }
- //
+ #endregion
- #endregion
+ #region Members
- #region Properties
+ //
- ///
- /// The encrypted value.
- ///
- public T Value { get; set; }
-
- #endregion
- }
-}
+ #endregion
+}
\ No newline at end of file
diff --git a/CapyKit/Enumerations/MeasurementSystem.cs b/CapyKit/Enumerations/MeasurementSystem.cs
index 333930d..5b0deaf 100644
--- a/CapyKit/Enumerations/MeasurementSystem.cs
+++ b/CapyKit/Enumerations/MeasurementSystem.cs
@@ -1,20 +1,13 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+namespace CapyKit.Enumerations;
-namespace CapyKit.Enumerations
+///
+/// An enumeration representing different measurement systems.
+///
+public enum MeasurementSystem
{
- ///
- /// An enumeration representing different measurement systems.
- ///
- public enum MeasurementSystem
- {
- /// The imperial measurement system.
- Imperial = 0,
+ /// The imperial measurement system.
+ Imperial = 0,
- /// The metric measurement system.
- Metric = 1
- }
-}
+ /// The metric measurement system.
+ Metric = 1
+}
\ No newline at end of file
diff --git a/CapyKit/Extensions/EnumerationExtensions.cs b/CapyKit/Extensions/EnumerationExtensions.cs
index 1fc4308..6b338d3 100644
--- a/CapyKit/Extensions/EnumerationExtensions.cs
+++ b/CapyKit/Extensions/EnumerationExtensions.cs
@@ -1,94 +1,91 @@
-using CapyKit.Attributes;
+using System.Reflection;
+using CapyKit.Attributes;
using CapyKit.Helpers;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Reflection;
-using System.Text;
-using System.Threading.Tasks;
-namespace CapyKit.Extensions
+namespace CapyKit.Extensions;
+
+/// Provides static extentions methods for providing additional functionality for types.
+public static class EnumerationExtensions
{
- /// Provides static extentions methods for providing additional functionality for types.
- public static class EnumerationExtensions
+ #region Methods
+
+ ///
+ /// A extension method that parses a string into an enumeration.
+ ///
+ /// Generic type parameter.
+ /// The enumeration to act on.
+ /// The value.
+ /// A T.
+ public static T Parse(this T enumeration, string value) where T : Enum
{
- #region Methods
-
- ///
- /// A extension method that parses a string into an enumeration.
- ///
- /// Generic type parameter.
- /// The enumeration to act on.
- /// The value.
- /// A T.
- public static T Parse(this T enumeration, string value) where T : Enum
- {
- return (T)Enum.Parse(typeof(T), value);
- }
-
- ///
- /// A extension method that parses a string into an enumeration.
- ///
- /// Generic type parameter.
- /// The enumeration to act on.
- /// The string value of the .
- /// True to ignore case.
- /// A T.
- public static T Parse(this T enumeration, string value, bool ignoreCase) where T : Enum
- {
- return (T)Enum.Parse(typeof(T), value, ignoreCase);
- }
-
- ///
- /// An extension method that gets an integer value representing the enumation.
- ///
- /// The enumeration to act on.
- /// The integer value of the enumeration.
- public static int GetValue(this Enum enumeration)
- {
- return (int)Convert.ChangeType(enumeration, TypeCode.Int32);
- }
-
- /// An extension method that gets a name.
- /// The enumeration to act on.
- /// The name of the enumeration.
- public static string GetName(this Enum enumeration)
- {
- return Enum.GetName(enumeration.GetType(), enumeration) ?? "[Unknown]";
- }
-
- /// An extension method that gets a human readable name.
- /// The enumeration to act on.
- /// The human readable name of the enumeration.
- public static string GetPrettyName(this Enum enumeration)
- {
- return LanguageHelper.CamelCaseToHumanReadable(GetName(enumeration));
- }
-
- /// An extension method that gets a description.
- /// The enumeration to act on.
- ///
- /// The description if available, otherwise the string representation of the enumeration.
- ///
- public static string GetDescription(this Enum enumeration)
- {
- var memInfo = enumeration.GetType().GetMember(enumeration.GetName());
- if (memInfo.Any())
- {
- var attribute = memInfo.First().GetCustomAttribute(typeof(EnumerationDescriptionAttribute)) as EnumerationDescriptionAttribute;
- if (attribute == null)
- {
- CapyEventReporter.EmitEvent(EventLevel.Error, "Could not find the description for {0}.", args: new[] { enumeration });
- }
- else
- {
- return attribute.Value;
- }
- }
-
- return enumeration.ToString();
- }
-
- #endregion Methods
+ return (T)Enum.Parse(typeof(T), value);
}
-}
+
+ ///
+ /// A extension method that parses a string into an enumeration.
+ ///
+ /// Generic type parameter.
+ /// The enumeration to act on.
+ /// The string value of the .
+ /// True to ignore case.
+ /// A T.
+ public static T Parse(this T enumeration, string value, bool ignoreCase) where T : Enum
+ {
+ return (T)Enum.Parse(typeof(T), value, ignoreCase);
+ }
+
+ ///
+ /// An extension method that gets an integer value representing the enumation.
+ ///
+ /// The enumeration to act on.
+ /// The integer value of the enumeration.
+ public static int GetValue(this Enum enumeration)
+ {
+ return (int)Convert.ChangeType(enumeration, TypeCode.Int32);
+ }
+
+ /// An extension method that gets a name.
+ /// The enumeration to act on.
+ /// The name of the enumeration.
+ public static string GetName(this Enum enumeration)
+ {
+ return Enum.GetName(enumeration.GetType(), enumeration) ?? "[Unknown]";
+ }
+
+ /// An extension method that gets a human readable name.
+ /// The enumeration to act on.
+ /// The human readable name of the enumeration.
+ public static string GetPrettyName(this Enum enumeration)
+ {
+ return LanguageHelper.CamelCaseToHumanReadable(enumeration.GetName());
+ }
+
+ /// An extension method that gets a description.
+ /// The enumeration to act on.
+ ///
+ /// The description if available, otherwise the string representation of the enumeration.
+ ///
+ public static string GetDescription(this Enum enumeration)
+ {
+ var memInfo = enumeration.GetType().GetMember(enumeration.GetName());
+ if (memInfo.Any())
+ {
+ var attribute =
+ memInfo.First().GetCustomAttribute(typeof(EnumerationDescriptionAttribute)) as
+ EnumerationDescriptionAttribute;
+ if (attribute == null)
+ {
+ CapyEventReporter.EmitEvent(EventLevel.Error, "Could not find the description for {0}.",
+ args: new[] { enumeration });
+ }
+ else
+ {
+ return attribute.Value;
+ }
+ }
+
+ return enumeration.ToString();
+ }
+
+ #endregion Methods
+}
\ No newline at end of file
diff --git a/CapyKit/Extensions/LINQExtentions.cs b/CapyKit/Extensions/LINQExtentions.cs
index 3a20094..fdca52f 100644
--- a/CapyKit/Extensions/LINQExtentions.cs
+++ b/CapyKit/Extensions/LINQExtentions.cs
@@ -1,260 +1,266 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Linq.Expressions;
-using System.Text;
-using System.Threading.Tasks;
+using System.Linq.Expressions;
-namespace CapyKit.Extensions
+namespace CapyKit.Extensions;
+
+///
+/// Provides static extension methods for performing common LINQ operations on and
+/// collections.
+///
+public static class LINQExtensions
{
- /// Provides static extension methods for performing common LINQ operations on and collections.
- public static class LINQExtensions
+ ///
+ /// Filters out items matching a from the collection.
+ ///
+ /// Generic type parameter.
+ /// The source to act on.
+ /// The predicate.
+ ///
+ /// An enumerator that allows foreach to be used to process remove in this collection.
+ ///
+ public static IEnumerable Filter(this IEnumerable source, Func predicate)
{
- ///
- /// Filters out items matching a from the collection.
- ///
- /// Generic type parameter.
- /// The source to act on.
- /// The predicate.
- ///
- /// An enumerator that allows foreach to be used to process remove in this collection.
- ///
- public static IEnumerable Filter(this IEnumerable source, Func predicate)
+ return source.Where(item => !predicate(item));
+ }
+
+ ///
+ /// Filters out items matching a from the collection.
+ ///
+ /// Generic type parameter.
+ /// The source to act on.
+ /// The predicate.
+ ///
+ /// An enumerator that allows foreach to be used to process remove in this collection.
+ ///
+ public static IQueryable Filter(this IQueryable source, Expression> predicate)
+ {
+ if (predicate.Parameters.Count > 1)
{
- return source.Where(item => !predicate(item));
+ CapyEventReporter.EmitEvent(EventLevel.Warning,
+ "More than one parameter was found in the predicate, which could result in unexpected behavior.");
}
- ///
- /// Filters out items matching a from the collection.
- ///
- /// Generic type parameter.
- /// The source to act on.
- /// The predicate.
- ///
- /// An enumerator that allows foreach to be used to process remove in this collection.
- ///
- public static IQueryable Filter(this IQueryable source, System.Linq.Expressions.Expression> predicate)
+ var parameter = predicate.Parameters.FirstOrDefault();
+ var negatedPredicate = Expression.Not(predicate);
+ var lamda = Expression.Lambda>(negatedPredicate, parameter);
+
+ return source.Where(lamda);
+ }
+
+ ///
+ /// Get a page of items from a collection, skipping pages of
+ /// items per page.
+ ///
+ /// This method uses natural numbering starting at page 1.
+ ///
+ /// Thrown when is less than 1 or if
+ /// is less than
+ /// 1 .
+ ///
+ /// Generic type parameter.
+ /// The source to act on.
+ /// The page number to retrieve.
+ /// Number of items per page.
+ ///
+ /// An enumerator that allows foreach to be used to process page in this collection.
+ ///
+ public static IEnumerable Page(this IEnumerable source, int pageNumber, int pageSize)
+ {
+ if (pageNumber < 1)
{
- if(predicate.Parameters.Count > 1)
- {
- CapyEventReporter.EmitEvent(EventLevel.Warning, "More than one parameter was found in the predicate, which could result in unexpected behavior.");
- }
-
- var parameter = predicate.Parameters.FirstOrDefault();
- var negatedPredicate = Expression.Not(predicate);
- var lamda = Expression.Lambda>(negatedPredicate, parameter);
-
- return source.Where(lamda);
+ CapyEventReporter.EmitEvent(EventLevel.Error, "pageNumber is out of range. [{0}]",
+ args: new[] { pageNumber });
+ throw new ArgumentOutOfRangeException("pageNumber");
}
- ///
- /// Get a page of items from a collection, skipping pages of
- /// items per page.
- ///
- /// This method uses natural numbering starting at page 1.
- ///
- /// Thrown when is less than 1 or if
- /// is less than
- /// 1 .
- ///
- /// Generic type parameter.
- /// The source to act on.
- /// The page number to retrieve.
- /// Number of items per page.
- ///
- /// An enumerator that allows foreach to be used to process page in this collection.
- ///
- public static IEnumerable Page(this IEnumerable source, int pageNumber, int pageSize)
+ if (pageSize < 1)
{
- if (pageNumber < 1)
- {
- CapyEventReporter.EmitEvent(EventLevel.Error, "pageNumber is out of range. [{0}]", args: new[] { pageNumber });
- throw new ArgumentOutOfRangeException("pageNumber");
- }
-
- if (pageSize < 1)
- {
- CapyEventReporter.EmitEvent(EventLevel.Error, "pageSize is out of range. [{0}]", args: new[] { pageSize });
- throw new ArgumentOutOfRangeException("pageSize");
- }
-
- return source.Skip((pageNumber - 1) * pageSize).Take(pageSize);
+ CapyEventReporter.EmitEvent(EventLevel.Error, "pageSize is out of range. [{0}]", args: new[] { pageSize });
+ throw new ArgumentOutOfRangeException("pageSize");
}
- ///
- /// Get a page of items from a collection, skipping pages of
- /// items per page.
- ///
- /// This method uses natural numbering starting at page 1.
- ///
- /// Thrown when is less than 1 or if
- /// is less than
- /// 1 .
- ///
- /// Generic type parameter.
- /// The source to act on.
- /// The page number to retrieve.
- /// .
- ///
- /// An enumerator that allows foreach to be used to process page in this collection.
- ///
- public static IQueryable Page(this IQueryable source, int pageNumber, int pageSize)
+ return source.Skip((pageNumber - 1) * pageSize).Take(pageSize);
+ }
+
+ ///
+ /// Get a page of items from a collection, skipping pages of
+ /// items per page.
+ ///
+ /// This method uses natural numbering starting at page 1.
+ ///
+ /// Thrown when is less than 1 or if
+ /// is less than
+ /// 1 .
+ ///
+ /// Generic type parameter.
+ /// The source to act on.
+ /// The page number to retrieve.
+ /// .
+ ///
+ /// An enumerator that allows foreach to be used to process page in this collection.
+ ///
+ public static IQueryable Page(this IQueryable source, int pageNumber, int pageSize)
+ {
+ if (pageNumber < 1)
{
- if (pageNumber < 1)
- {
- CapyEventReporter.EmitEvent(EventLevel.Error, "pageNumber is out of range. [{0}]", args: new[] { pageNumber });
- throw new ArgumentOutOfRangeException("pageNumber");
- }
-
- if (pageSize < 1)
- {
- CapyEventReporter.EmitEvent(EventLevel.Error, "pageSize is out of range. [{0}]", args: new[] { pageSize });
- throw new ArgumentOutOfRangeException("pageSize");
- }
-
- return source.Skip((pageNumber - 1) * pageSize).Take(pageSize);
+ CapyEventReporter.EmitEvent(EventLevel.Error, "pageNumber is out of range. [{0}]",
+ args: new[] { pageNumber });
+ throw new ArgumentOutOfRangeException("pageNumber");
}
- ///
- /// The number of pages of size in the given collection.
- ///
- ///
- /// Thrown when is less than 1 .
- ///
- /// Generic type parameter.
- /// The source to act on.
- /// Size of the page.
- /// An int.
- public static int PageCount(this IEnumerable source, int pageSize)
+ if (pageSize < 1)
{
- if (pageSize < 1)
- {
- CapyEventReporter.EmitEvent(EventLevel.Error, "pageSize is out of range. [{0}]", args: new[] { pageSize });
- throw new ArgumentOutOfRangeException("pageSize");
- }
-
- var ceiling = Math.Ceiling(Convert.ToDouble(source.Count()) / pageSize);
- return Convert.ToInt32(ceiling);
+ CapyEventReporter.EmitEvent(EventLevel.Error, "pageSize is out of range. [{0}]", args: new[] { pageSize });
+ throw new ArgumentOutOfRangeException("pageSize");
}
- ///
- /// The number of pages of size in the given collection.
- ///
- ///
- /// Thrown when is less than 1 .
- ///
- /// Generic type parameter.
- /// The source to act on.
- /// Size of the page.
- /// An int.
- public static int PageCount(this IQueryable source, int pageSize)
- {
- if (pageSize < 1)
- {
- CapyEventReporter.EmitEvent(EventLevel.Error, "pageSize is out of range. [{0}]", args: new[] { pageSize });
- throw new ArgumentOutOfRangeException("pageSize");
- }
+ return source.Skip((pageNumber - 1) * pageSize).Take(pageSize);
+ }
- var ceiling = Math.Ceiling(Convert.ToDouble(source.Count()) / pageSize);
- return Convert.ToInt32(ceiling);
+ ///
+ /// The number of pages of size in the given collection.
+ ///
+ ///
+ /// Thrown when is less than 1 .
+ ///
+ /// Generic type parameter.
+ /// The source to act on.
+ /// Size of the page.
+ /// An int.
+ public static int PageCount(this IEnumerable source, int pageSize)
+ {
+ if (pageSize < 1)
+ {
+ CapyEventReporter.EmitEvent(EventLevel.Error, "pageSize is out of range. [{0}]", args: new[] { pageSize });
+ throw new ArgumentOutOfRangeException("pageSize");
}
- /// An IQueryable<T> extension method that left outer join.
- /// Generic type parameter.
- /// Generic type parameter.
- /// Type of the key.
- /// Type of the r.
- /// The source to act on.
- /// The inner.
- /// The outer selector.
- /// The inner selector.
- /// The result selector.
- /// (Optional) The default generator.
- /// An IQueryable<R>
- public static IQueryable LeftOuterJoin(this IQueryable source, IQueryable inner, Expression> outerSelector, Expression> innerSelector, Func, R> resultSelector, Func defaultGenerator = null)
+ var ceiling = Math.Ceiling(Convert.ToDouble(source.Count()) / pageSize);
+ return Convert.ToInt32(ceiling);
+ }
+
+ ///
+ /// The number of pages of size in the given collection.
+ ///
+ ///
+ /// Thrown when is less than 1 .
+ ///
+ /// Generic type parameter.
+ /// The source to act on.
+ /// Size of the page.
+ /// An int.
+ public static int PageCount(this IQueryable source, int pageSize)
+ {
+ if (pageSize < 1)
{
- Func, R> resultOrDefaultSelector = (i, o) =>
- {
- if (defaultGenerator == null)
- {
- defaultGenerator = (t) => default(U);
- }
-
- if (!o.Any())
- {
- return resultSelector(i, new[] { defaultGenerator(i) });
- }
-
- return resultSelector(i, o);
- };
-
- return source.LeftOuterJoin(inner, outerSelector, innerSelector, (a, b) => resultSelector(a, b));
+ CapyEventReporter.EmitEvent(EventLevel.Error, "pageSize is out of range. [{0}]", args: new[] { pageSize });
+ throw new ArgumentOutOfRangeException("pageSize");
}
- /// An IQueryable<T> extension method that left outer join.
- /// Generic type parameter.
- /// Generic type parameter.
- /// Type of the key.
- /// Type of the r.
- /// The source to act on.
- /// The inner.
- /// The outer selector.
- /// The inner selector.
- /// The result selector.
- /// An IQueryable<R>
- private static IQueryable LeftOuterJoin(this IQueryable source, IQueryable inner, Expression> outerSelector, Expression> innerSelector, Expression, R>> resultSelector)
- {
- return source.GroupJoin(inner, outerSelector, innerSelector, resultSelector);
- }
+ var ceiling = Math.Ceiling(Convert.ToDouble(source.Count()) / pageSize);
+ return Convert.ToInt32(ceiling);
+ }
- /// An IEnumable<T> extension method that left outer join.
- /// Generic type parameter.
- /// Generic type parameter.
- /// Type of the key.
- /// Type of the r.
- /// The source to act on.
- /// The inner.
- /// The outer selector.
- /// The inner selector.
- /// The result selector.
- /// (Optional) The default generator.
- ///
- /// An enumerator that allows foreach to be used to process left outter join in this collection.
- ///
- public static IEnumerable LeftOuterJoin(this IEnumerable source, IEnumerable inner, Func outerSelector, Func innerSelector, Func, R> resultSelector, Func defaultGenerator = null)
+ /// An IQueryable<T> extension method that left outer join.
+ /// Generic type parameter.
+ /// Generic type parameter.
+ /// Type of the key.
+ /// Type of the r.
+ /// The source to act on.
+ /// The inner.
+ /// The outer selector.
+ /// The inner selector.
+ /// The result selector.
+ /// (Optional) The default generator.
+ /// An IQueryable<R>
+ public static IQueryable LeftOuterJoin(this IQueryable source, IQueryable inner,
+ Expression> outerSelector, Expression> innerSelector,
+ Func, R> resultSelector, Func defaultGenerator = null)
+ {
+ Func, R> resultOrDefaultSelector = (i, o) =>
{
- var combined = source.GroupJoin(inner, outerSelector, innerSelector, (i, o) => new { inner = i, outer = o });
-
if (defaultGenerator == null)
{
- defaultGenerator = (t) => default(U);
+ defaultGenerator = t => default;
}
- return combined.Select(anon =>
+ if (!o.Any())
{
- if (!anon.outer.Any())
- {
- return resultSelector(anon.inner, new[] { defaultGenerator(anon.inner) });
- }
+ return resultSelector(i, new[] { defaultGenerator(i) });
+ }
- return resultSelector(anon.inner, anon.outer);
- });
- }
+ return resultSelector(i, o);
+ };
- ///
- /// Enumerates distinct items in this collection as defined by the key .
- ///
- /// Generic type parameter of the parent object.
- /// Generic type parameter property value.
- /// The items to act on.
- /// The property.
- ///
- /// An enumerator that allows foreach to be used to process distinct items in this collection.
- ///
- public static IEnumerable Distinct(this IEnumerable items, Func property)
- {
- var propertyComparer = new PropertyComparer(property);
- return items.Distinct(propertyComparer);
- }
+ return source.LeftOuterJoin(inner, outerSelector, innerSelector, (a, b) => resultSelector(a, b));
}
-}
+
+ /// An IQueryable<T> extension method that left outer join.
+ /// Generic type parameter.
+ /// Generic type parameter.
+ /// Type of the key.
+ /// Type of the r.
+ /// The source to act on.
+ /// The inner.
+ /// The outer selector.
+ /// The inner selector.
+ /// The result selector.
+ /// An IQueryable<R>
+ private static IQueryable LeftOuterJoin(this IQueryable source, IQueryable inner,
+ Expression> outerSelector, Expression> innerSelector,
+ Expression, R>> resultSelector)
+ {
+ return source.GroupJoin(inner, outerSelector, innerSelector, resultSelector);
+ }
+
+ /// An IEnumable<T> extension method that left outer join.
+ /// Generic type parameter.
+ /// Generic type parameter.
+ /// Type of the key.
+ /// Type of the r.
+ /// The source to act on.
+ /// The inner.
+ /// The outer selector.
+ /// The inner selector.
+ /// The result selector.
+ /// (Optional) The default generator.
+ ///
+ /// An enumerator that allows foreach to be used to process left outter join in this collection.
+ ///
+ public static IEnumerable LeftOuterJoin(this IEnumerable source, IEnumerable inner,
+ Func outerSelector, Func innerSelector, Func, R> resultSelector,
+ Func defaultGenerator = null)
+ {
+ var combined = source.GroupJoin(inner, outerSelector, innerSelector, (i, o) => new { inner = i, outer = o });
+
+ if (defaultGenerator == null)
+ {
+ defaultGenerator = t => default;
+ }
+
+ return combined.Select(anon =>
+ {
+ if (!anon.outer.Any())
+ {
+ return resultSelector(anon.inner, new[] { defaultGenerator(anon.inner) });
+ }
+
+ return resultSelector(anon.inner, anon.outer);
+ });
+ }
+
+ ///
+ /// Enumerates distinct items in this collection as defined by the key .
+ ///
+ /// Generic type parameter of the parent object.
+ /// Generic type parameter property value.
+ /// The items to act on.
+ /// The property.
+ ///
+ /// An enumerator that allows foreach to be used to process distinct items in this collection.
+ ///
+ public static IEnumerable Distinct(this IEnumerable items, Func property)
+ {
+ var propertyComparer = new PropertyComparer(property);
+ return items.Distinct(propertyComparer);
+ }
+}
\ No newline at end of file
diff --git a/CapyKit/Extensions/ObjectExtensions.cs b/CapyKit/Extensions/ObjectExtensions.cs
index 8cd041e..5263ddb 100644
--- a/CapyKit/Extensions/ObjectExtensions.cs
+++ b/CapyKit/Extensions/ObjectExtensions.cs
@@ -1,52 +1,47 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+namespace CapyKit.Extensions;
-namespace CapyKit.Extensions
+/// An class containing extenstions that apply to any object type.
+public static class ObjectExtensions
{
- /// An class containing extenstions that apply to any object type.
- public static class ObjectExtensions
+ ///
+ /// An object extension method that updates the properties of a given
+ /// object with the values from a given object.
+ ///
+ /// Generic type parameter.
+ /// The target object to act on.
+ /// Source for the new property values.
+ public static void UpdateProperties(this T target, T source)
{
- ///
- /// An object extension method that updates the properties of a given
- /// object with the values from a given object.
- ///
- /// Generic type parameter.
- /// The target object to act on.
- /// Source for the new property values.
- public static void UpdateProperties(this T target, T source)
+ var properties = typeof(T).GetProperties();
+ foreach (var prop in properties)
{
- var properties = typeof(T).GetProperties();
- foreach (var prop in properties)
+ if (prop.CanWrite)
{
- if (prop.CanWrite)
- {
- prop.SetValue(target, prop.GetValue(source));
- }
- }
- }
-
- ///
- /// An object extension method that updates the properties of a given
- /// object with the values from a given object.
- ///
- /// The target object to act on.
- /// Source for the new property values.
- public static void UpdateProperties(this object target, object source)
- {
- var targetProperties = target.GetType().GetProperties();
- var sourceProperties = source.GetType().GetProperties();
- var matchingProperties = targetProperties.Join(sourceProperties, outer => new { outer.Name, outer.PropertyType }, inner => new { inner.Name, inner.PropertyType }, (outer, inner) => new { Target = outer, Source = inner });
-
- foreach (var propertyMatch in matchingProperties)
- {
- if(propertyMatch.Target.CanWrite)
- {
- propertyMatch.Target.SetValue(target, propertyMatch.Source.GetValue(source));
- }
+ prop.SetValue(target, prop.GetValue(source));
}
}
}
-}
+
+ ///
+ /// An object extension method that updates the properties of a given
+ /// object with the values from a given object.
+ ///
+ /// The target object to act on.
+ /// Source for the new property values.
+ public static void UpdateProperties(this object target, object source)
+ {
+ var targetProperties = target.GetType().GetProperties();
+ var sourceProperties = source.GetType().GetProperties();
+ var matchingProperties = targetProperties.Join(sourceProperties,
+ outer => new { outer.Name, outer.PropertyType }, inner => new { inner.Name, inner.PropertyType },
+ (outer, inner) => new { Target = outer, Source = inner });
+
+ foreach (var propertyMatch in matchingProperties)
+ {
+ if (propertyMatch.Target.CanWrite)
+ {
+ propertyMatch.Target.SetValue(target, propertyMatch.Source.GetValue(source));
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/CapyKit/Extensions/StringExtensions.cs b/CapyKit/Extensions/StringExtensions.cs
index 57b4bbf..737f425 100644
--- a/CapyKit/Extensions/StringExtensions.cs
+++ b/CapyKit/Extensions/StringExtensions.cs
@@ -1,56 +1,49 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+namespace CapyKit.Extensions;
-namespace CapyKit.Extensions
+/// Provides static extentions methods for providing additional functionality for types.
+public static class StringExtensions
{
- /// Provides static extentions methods for providing additional functionality for types.
- public static class StringExtensions
+ #region Members
+
+ //
+
+ #endregion Members
+
+ #region Methods
+
+ /// Replaces a null or empty string with a specified replacement string.
+ /// The original string.
+ /// The replacement string.
+ ///
+ /// The original string if not null or empty, otherwise the replacement string.
+ ///
+ ///
+ public static string IfNullOrEmpty(this string value, string replacement)
{
- #region Members
-
- //
-
- #endregion Members
-
- #region Methods
-
- /// Replaces a null or empty string with a specified replacement string.
- /// The original string.
- /// The replacement string.
- ///
- /// The original string if not null or empty, otherwise the replacement string.
- ///
- ///
- public static string IfNullOrEmpty(this string value, string replacement)
+ if (string.IsNullOrEmpty(value))
{
- if (string.IsNullOrEmpty(value))
- {
- return replacement;
- }
-
- return value;
+ return replacement;
}
- /// Replaces a null or whitespace string with a specified replacement string.
- /// The original string.
- /// The replacement string.
- ///
- /// The original string if not null or whitespace, otherwise the replacement string.
- ///
- ///
- public static string IfNullOrWhiteSpace(this string value, string replacement)
- {
- if (string.IsNullOrWhiteSpace(value))
- {
- return replacement;
- }
-
- return value;
- }
-
- #endregion Methods
+ return value;
}
-}
+
+ /// Replaces a null or whitespace string with a specified replacement string.
+ /// The original string.
+ /// The replacement string.
+ ///
+ /// The original string if not null or whitespace, otherwise the replacement string.
+ ///
+ ///
+ public static string IfNullOrWhiteSpace(this string value, string replacement)
+ {
+ if (string.IsNullOrWhiteSpace(value))
+ {
+ return replacement;
+ }
+
+ return value;
+ }
+
+ #endregion Methods
+}
\ No newline at end of file
diff --git a/CapyKit/Helpers/CalculationHelper.cs b/CapyKit/Helpers/CalculationHelper.cs
index 63e667f..a6b37e5 100644
--- a/CapyKit/Helpers/CalculationHelper.cs
+++ b/CapyKit/Helpers/CalculationHelper.cs
@@ -1,160 +1,159 @@
-using CapyKit.Enumerations;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Security.Cryptography;
+using System.Security.Cryptography;
using System.Text;
-using System.Threading.Tasks;
+using CapyKit.Enumerations;
-namespace CapyKit.Helpers
+namespace CapyKit.Helpers;
+
+/// Static class providing helper methods for various calculations.
+public static class CalculationHelper
{
- /// Static class providing helper methods for various calculations.
- public static class CalculationHelper
+ #region Members
+
+ /// The earth's radius in kilometers.
+ public const int EARTH_RADIUS_KILOMETERS = 6371;
+
+ /// Ratio of miles per kilometer .
+ public const double MILES_PER_KILOMETER = 0.621371;
+
+ /// The valid hexidecimal characters.
+ private const string chars = "0123456789ABCDEF";
+
+ #endregion Members
+
+ #region Methods
+
+ ///
+ /// Calculates the hash of a given string using an value as the first 32 bits.
+ ///
+ /// The string to be hashed.
+ /// The calculated hash.
+ ///
+ /// This method is used for a quick and consistent hash function. It should not be considered
+ /// cryptographically sound or used in security contexts.
+ ///
+ public static int CalculateHash(string str)
{
- #region Members
+ var md5Hasher = MD5.Create();
+ var md5Hash = md5Hasher.ComputeHash(Encoding.UTF8.GetBytes(str));
+ var hash = BitConverter.ToInt32(md5Hash, 0);
- /// The earth's radius in kilometers.
- public const int EARTH_RADIUS_KILOMETERS = 6371;
-
- /// Ratio of miles per kilometer .
- public const double MILES_PER_KILOMETER = 0.621371;
-
- /// The valid hexidecimal characters.
- private const string chars = "0123456789ABCDEF";
-
- #endregion Members
-
- #region Methods
-
- ///
- /// Calculates the hash of a given string using an value as the first 32 bits.
- ///
- /// The string to be hashed.
- /// The calculated hash.
- ///
- /// This method is used for a quick and consistent hash function. It should not be considered
- /// cryptographically sound or used in security contexts.
- ///
- public static int CalculateHash(string str)
- {
- MD5 md5Hasher = MD5.Create();
- var md5Hash = md5Hasher.ComputeHash(Encoding.UTF8.GetBytes(str));
- var hash = BitConverter.ToInt32(md5Hash, 0);
-
- return hash;
- }
-
- /// Calculates the hexadecimal hash.
- /// The string to be hashed.
- /// The calculated 16 character hexadecimal hash.
- public static string CalculateHexHash(string str)
- {
- byte[] bytes = Encoding.UTF8.GetBytes(str);
-
- MD5 md5Hasher = MD5.Create();
- byte[] hash = md5Hasher.ComputeHash(bytes);
-
- char[] hash2 = new char[16];
-
- // Note that here we are wasting bits of hash!
- // But it isn't really important, because hash.Length == 32
- for (int i = 0; i < hash2.Length; i++)
- {
- hash2[i] = CalculationHelper.chars[hash[i] % CalculationHelper.chars.Length];
- }
-
- return new string(hash2);
- }
-
- ///
- /// Gets the distance between two points on earth using the haversine formula.
- ///
- /// The latitude origin.
- /// The longitude origin.
- /// The latitude destination.
- /// The longitude destination.
- /// (Optional) The measurement system.
- /// The distance.
- ///
- /// Uses the haversine formula
- /// to calculate the "as-the-crow-flies" distance between two points on earth.
- ///
- ///
- public static decimal GetDistance(decimal latitudeOrigin, decimal longitudeOrigin, decimal latitudeDestination, decimal longitudeDestination, MeasurementSystem measurementSystem = MeasurementSystem.Imperial)
- {
- double latitudeOriginalDouble = Convert.ToDouble(latitudeOrigin);
- double longitudeOriginDouble = Convert.ToDouble(longitudeOrigin);
- double latitudeDestinationDouble = Convert.ToDouble(latitudeDestination);
- double longitudeDestinationDouble = Convert.ToDouble(longitudeDestination);
-
- var result = GetDistance(latitudeOriginalDouble, longitudeOriginDouble, latitudeDestinationDouble, longitudeDestinationDouble, measurementSystem);
-
- return Convert.ToDecimal(result);
- }
-
- /// Gets the distance between two points on earth using the haversine formula.
- /// The latitude of the origin.
- /// The longitude of the origin.
- /// The latitude destination.
- /// The longitude destination.
- /// (Optional) The measurement system.
- /// The distance.
- ///
- /// Uses the haversine formula
- /// to calculate the "as-the-crow-flies" distance between two points on earth.
- ///
- public static double GetDistance(double latitudeOrigin, double longitudeOrigin, double latitudeDestination, double longitudeDestination, MeasurementSystem measurementSystem = MeasurementSystem.Imperial)
- {
- var thetaLatitude = DegreesToRadians(latitudeOrigin);
- var thetaLongitude = DegreesToRadians(longitudeOrigin);
- var deltaLatitude = DegreesToRadians(latitudeDestination - latitudeOrigin);
- var deltaLongitude = DegreesToRadians(longitudeDestination - longitudeOrigin);
-
- var haversineTheta = Math.Sin(deltaLatitude / 2) * Math.Sin(deltaLatitude / 2) + Math.Cos(thetaLatitude) * Math.Cos(thetaLongitude) * Math.Sin(deltaLongitude / 2) * Math.Sin(deltaLongitude / 2);
- var angularDistance = 2 * Math.Atan2(Math.Sqrt(haversineTheta), Math.Sqrt(1 - haversineTheta));
-
- var distance = EARTH_RADIUS_KILOMETERS * angularDistance;
-
- if (measurementSystem == MeasurementSystem.Imperial)
- {
- return KilometersToMiles(distance);
- }
-
- return distance;
- }
-
- /// Converts kilometers to miles.
- /// The value in kilometers.
- /// The value in miles.
- public static double KilometersToMiles(double kilometers)
- {
- return kilometers * MILES_PER_KILOMETER;
- }
-
- /// Converts miles to kilometers.
- /// The value in miles.
- /// The value in kilometers.
- public static double MilesToKilometers(double miles)
- {
- return miles / MILES_PER_KILOMETER;
- }
-
- /// Convers degrees to radians.
- /// The degree value.
- /// The value as radians.
- public static double DegreesToRadians(double degrees)
- {
- return degrees * Math.PI / 180.0;
- }
-
- /// Converts radians to degrees.
- /// The radian value.
- /// The value as degrees.
- public static double RadiansToDegrees(double radians)
- {
- return radians * 180.0 / Math.PI;
- }
-
- #endregion Methods
+ return hash;
}
-}
+
+ /// Calculates the hexadecimal hash.
+ /// The string to be hashed.
+ /// The calculated 16 character hexadecimal hash.
+ public static string CalculateHexHash(string str)
+ {
+ var bytes = Encoding.UTF8.GetBytes(str);
+
+ var md5Hasher = MD5.Create();
+ var hash = md5Hasher.ComputeHash(bytes);
+
+ var hash2 = new char[16];
+
+ // Note that here we are wasting bits of hash!
+ // But it isn't really important, because hash.Length == 32
+ for (var i = 0; i < hash2.Length; i++)
+ {
+ hash2[i] = CalculationHelper.chars[hash[i] % CalculationHelper.chars.Length];
+ }
+
+ return new string(hash2);
+ }
+
+ ///
+ /// Gets the distance between two points on earth using the haversine formula.
+ ///
+ /// The latitude origin.
+ /// The longitude origin.
+ /// The latitude destination.
+ /// The longitude destination.
+ /// (Optional) The measurement system.
+ /// The distance.
+ ///
+ /// Uses the haversine formula
+ /// to calculate the "as-the-crow-flies" distance between two points on earth.
+ ///
+ ///
+ public static decimal GetDistance(decimal latitudeOrigin, decimal longitudeOrigin, decimal latitudeDestination,
+ decimal longitudeDestination, MeasurementSystem measurementSystem = MeasurementSystem.Imperial)
+ {
+ var latitudeOriginalDouble = Convert.ToDouble(latitudeOrigin);
+ var longitudeOriginDouble = Convert.ToDouble(longitudeOrigin);
+ var latitudeDestinationDouble = Convert.ToDouble(latitudeDestination);
+ var longitudeDestinationDouble = Convert.ToDouble(longitudeDestination);
+
+ var result = GetDistance(latitudeOriginalDouble, longitudeOriginDouble, latitudeDestinationDouble,
+ longitudeDestinationDouble, measurementSystem);
+
+ return Convert.ToDecimal(result);
+ }
+
+ /// Gets the distance between two points on earth using the haversine formula.
+ /// The latitude of the origin.
+ /// The longitude of the origin.
+ /// The latitude destination.
+ /// The longitude destination.
+ /// (Optional) The measurement system.
+ /// The distance.
+ ///
+ /// Uses the haversine formula
+ /// to calculate the "as-the-crow-flies" distance between two points on earth.
+ ///
+ public static double GetDistance(double latitudeOrigin, double longitudeOrigin, double latitudeDestination,
+ double longitudeDestination, MeasurementSystem measurementSystem = MeasurementSystem.Imperial)
+ {
+ var thetaLatitude = DegreesToRadians(latitudeOrigin);
+ var thetaLongitude = DegreesToRadians(longitudeOrigin);
+ var deltaLatitude = DegreesToRadians(latitudeDestination - latitudeOrigin);
+ var deltaLongitude = DegreesToRadians(longitudeDestination - longitudeOrigin);
+
+ var haversineTheta = Math.Sin(deltaLatitude / 2) * Math.Sin(deltaLatitude / 2) + Math.Cos(thetaLatitude) *
+ Math.Cos(thetaLongitude) * Math.Sin(deltaLongitude / 2) * Math.Sin(deltaLongitude / 2);
+ var angularDistance = 2 * Math.Atan2(Math.Sqrt(haversineTheta), Math.Sqrt(1 - haversineTheta));
+
+ var distance = CalculationHelper.EARTH_RADIUS_KILOMETERS * angularDistance;
+
+ if (measurementSystem == MeasurementSystem.Imperial)
+ {
+ return KilometersToMiles(distance);
+ }
+
+ return distance;
+ }
+
+ /// Converts kilometers to miles.
+ /// The value in kilometers.
+ /// The value in miles.
+ public static double KilometersToMiles(double kilometers)
+ {
+ return kilometers * CalculationHelper.MILES_PER_KILOMETER;
+ }
+
+ /// Converts miles to kilometers.
+ /// The value in miles.
+ /// The value in kilometers.
+ public static double MilesToKilometers(double miles)
+ {
+ return miles / CalculationHelper.MILES_PER_KILOMETER;
+ }
+
+ /// Convers degrees to radians.
+ /// The degree value.
+ /// The value as radians.
+ public static double DegreesToRadians(double degrees)
+ {
+ return degrees * Math.PI / 180.0;
+ }
+
+ /// Converts radians to degrees.
+ /// The radian value.
+ /// The value as degrees.
+ public static double RadiansToDegrees(double radians)
+ {
+ return radians * 180.0 / Math.PI;
+ }
+
+ #endregion Methods
+}
\ No newline at end of file
diff --git a/CapyKit/Helpers/CompressionHelper.cs b/CapyKit/Helpers/CompressionHelper.cs
index b995d67..78569c6 100644
--- a/CapyKit/Helpers/CompressionHelper.cs
+++ b/CapyKit/Helpers/CompressionHelper.cs
@@ -1,106 +1,102 @@
-using System;
-using System.Collections.Generic;
-using System.IO.Compression;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+using System.IO.Compression;
-namespace CapyKit.Helpers
+namespace CapyKit.Helpers;
+
+/// A class that contains methods for managing data compression.
+public static class CompressionHelper
{
- /// A class that contains methods for managing data compression.
- public static class CompressionHelper
+ #region Members
+
+ //
+
+ #endregion Members
+
+ #region Methods
+
+ /// Compresses a given object using the gzip algorithm.
+ /// The object.
+ /// A byte array representing the compressed object in gzip format.
+ public static byte[] Compress(object obj)
{
- #region Members
+ var bytes = SerializationHelper.SerializeToBytes(obj);
- //
-
- #endregion Members
-
- #region Methods
-
- /// Compresses a given object using the gzip algorithm.
- /// The object.
- /// A byte array representing the compressed object in gzip format.
- public static byte[] Compress(object obj)
+ try
{
- var bytes = SerializationHelper.SerializeToBytes(obj);
-
- try
+ using (var inputStream = new MemoryStream(bytes))
+ using (var outputStream = new MemoryStream())
{
- using (var inputStream = new MemoryStream(bytes))
- using (var outputStream = new MemoryStream())
+ using (var gzipStream = new GZipStream(outputStream, CompressionMode.Compress))
{
- using (var gzipStream = new GZipStream(outputStream, CompressionMode.Compress))
- {
- inputStream.Position = 0;
- inputStream.CopyTo(gzipStream);
- gzipStream.Flush();
- }
- return outputStream.ToArray();
+ inputStream.Position = 0;
+ inputStream.CopyTo(gzipStream);
+ gzipStream.Flush();
}
- }
- catch (Exception ex)
- {
- CapyEventReporter.EmitEvent(EventLevel.Error, "Could not compress the object.");
- throw;
+
+ return outputStream.ToArray();
}
}
-
- /// Compresses a given object to a string using base64 encoding of gzip format.
- /// The object.
- /// A string in base64 encoding.
- public static string CompressToString(object obj)
+ catch (Exception ex)
{
- var bytes = Compress(obj);
- return Convert.ToBase64String(bytes);
+ CapyEventReporter.EmitEvent(EventLevel.Error, "Could not compress the object.");
+ throw;
}
-
- /// Decompresses a given base64 encoded string of gzip format.
- /// Generic type parameter.
- /// The base64 encoded gzip string.
- /// A typed object.
- public static T Decompress(string encodedString)
- {
- var bytes = Convert.FromBase64String(encodedString);
- return Decompress(bytes);
- }
-
- /// Decompresses a given compressed gzip byte stream.
- /// Generic type parameter.
- /// The compressed byte stream.
- /// A typed object.
- public static T Decompress(byte[] byteStream)
- {
- try
- {
- using (var inputStream = new MemoryStream(byteStream))
- using (var outputStream = new MemoryStream())
- {
- using (var gzipStream = new GZipStream(inputStream, CompressionMode.Decompress))
- {
- gzipStream.CopyTo(outputStream);
- }
- var bytes = outputStream.ToArray();
- return SerializationHelper.Deserialize(bytes);
- }
- }
- catch (Exception ex)
- {
- CapyEventReporter.EmitEvent(EventLevel.Error, "Could not decompress the deflated object.");
- throw;
- }
- }
-
- /// Decompresses the given base64 string in gzip format.
- /// The compressed string.
- /// A decomressed string.
- public static string DecompressToString(string compressed)
- {
- var bytes = Convert.FromBase64String(compressed);
-
- return Decompress(bytes);
- }
-
- #endregion Methods
}
-}
+
+ /// Compresses a given object to a string using base64 encoding of gzip format.
+ /// The object.
+ /// A string in base64 encoding.
+ public static string CompressToString(object obj)
+ {
+ var bytes = Compress(obj);
+ return Convert.ToBase64String(bytes);
+ }
+
+ /// Decompresses a given base64 encoded string of gzip format.
+ /// Generic type parameter.
+ /// The base64 encoded gzip string.
+ /// A typed object.
+ public static T Decompress(string encodedString)
+ {
+ var bytes = Convert.FromBase64String(encodedString);
+ return Decompress(bytes);
+ }
+
+ /// Decompresses a given compressed gzip byte stream.
+ /// Generic type parameter.
+ /// The compressed byte stream.
+ /// A typed object.
+ public static T Decompress(byte[] byteStream)
+ {
+ try
+ {
+ using (var inputStream = new MemoryStream(byteStream))
+ using (var outputStream = new MemoryStream())
+ {
+ using (var gzipStream = new GZipStream(inputStream, CompressionMode.Decompress))
+ {
+ gzipStream.CopyTo(outputStream);
+ }
+
+ var bytes = outputStream.ToArray();
+ return SerializationHelper.Deserialize(bytes);
+ }
+ }
+ catch (Exception ex)
+ {
+ CapyEventReporter.EmitEvent(EventLevel.Error, "Could not decompress the deflated object.");
+ throw;
+ }
+ }
+
+ /// Decompresses the given base64 string in gzip format.
+ /// The compressed string.
+ /// A decomressed string.
+ public static string DecompressToString(string compressed)
+ {
+ var bytes = Convert.FromBase64String(compressed);
+
+ return Decompress(bytes);
+ }
+
+ #endregion Methods
+}
\ No newline at end of file
diff --git a/CapyKit/Helpers/EncryptionHelper.cs b/CapyKit/Helpers/EncryptionHelper.cs
index b82dcd0..9604145 100644
--- a/CapyKit/Helpers/EncryptionHelper.cs
+++ b/CapyKit/Helpers/EncryptionHelper.cs
@@ -1,44 +1,36 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Runtime.InteropServices.ObjectiveC;
-using System.Text;
-using System.Threading.Tasks;
+namespace CapyKit.Helpers;
-namespace CapyKit.Helpers
+public class EncryptionHelper
{
- public class EncryptionHelper
+ #region Members
+
+ private string encryptionKey;
+
+ #endregion
+
+ #region Constructors
+
+ public EncryptionHelper(string encryptionKey)
{
- #region Members
-
- private string encryptionKey;
-
- #endregion
-
- #region Constructors
-
- public EncryptionHelper(string encryptionKey)
- {
- this.encryptionKey = encryptionKey;
- }
-
- #endregion
+ this.encryptionKey = encryptionKey;
}
- public interface IEncryptionAlgorithm
- {
- #region Properties
-
- string AlgorithmName { get; }
-
- #endregion
-
- #region Methods
-
- EncryptedValue Encrypt(object obj, params object[] args);
-
- T Decrypt(EncryptedValue encryptedValue, params object[] args);
-
- #endregion
- }
+ #endregion
}
+
+public interface IEncryptionAlgorithm
+{
+ #region Properties
+
+ string AlgorithmName { get; }
+
+ #endregion
+
+ #region Methods
+
+ EncryptedValue Encrypt(object obj, params object[] args);
+
+ T Decrypt(EncryptedValue encryptedValue, params object[] args);
+
+ #endregion
+}
\ No newline at end of file
diff --git a/CapyKit/Helpers/EnumerationHelper.cs b/CapyKit/Helpers/EnumerationHelper.cs
index 5017a8d..b56e6d7 100644
--- a/CapyKit/Helpers/EnumerationHelper.cs
+++ b/CapyKit/Helpers/EnumerationHelper.cs
@@ -2,7 +2,7 @@ using CapyKit.Extensions;
namespace CapyKit.Helpers;
-/// A class that contains methods for managing objects.
+/// A class that contains methods for managing objects.
public static class EnumerationHelper
{
#region Methods
@@ -18,7 +18,7 @@ public static class EnumerationHelper
return (T)(object)value;
}
- return default(T);
+ return default;
}
/// Gets enumeration value from a string value.
@@ -39,16 +39,16 @@ public static class EnumerationHelper
}
}
- return default(T);
+ return default;
}
///
- /// An Enum extension method that deconstructs the given enumeration into a dictionary of its
- /// integer value and its name.
+ /// An Enum extension method that deconstructs the given enumeration into a dictionary of its
+ /// integer value and its name.
///
/// Generic type parameter.
///
- /// An enumerator that allows foreach to be used to process deconstruct in this collection.
+ /// An enumerator that allows foreach to be used to process deconstruct in this collection.
///
public static IEnumerable Deconstruct() where T : struct, Enum
{
@@ -62,13 +62,13 @@ public static class EnumerationHelper
}
///
- /// An Enum extension method that deconstructs the given enumeration into a dictionary of its
- /// integer value and its name.
+ /// An Enum extension method that deconstructs the given enumeration into a dictionary of its
+ /// integer value and its name.
///
/// Generic type parameter.
/// The enumeration to act on.
///
- /// An enumerator that allows foreach to be used to process deconstruct in this collection.
+ /// An enumerator that allows foreach to be used to process deconstruct in this collection.
///
public static IEnumerable Deconstruct(this T enumeration) where T : struct, Enum
{
@@ -78,8 +78,8 @@ public static class EnumerationHelper
/// An Enum extension method that deconstruct non default.
/// Generic type parameter.
///
- /// An enumerator that allows foreach to be used to process deconstruct non default in this
- /// collection.
+ /// An enumerator that allows foreach to be used to process deconstruct non default in this
+ /// collection.
///
public static IEnumerable DeconstructNonDefault() where T : struct, Enum
{
@@ -90,8 +90,8 @@ public static class EnumerationHelper
/// Generic type parameter.
/// The enumeration to act on.
///
- /// An enumerator that allows foreach to be used to process deconstruct non default in this
- /// collection.
+ /// An enumerator that allows foreach to be used to process deconstruct non default in this
+ /// collection.
///
public static IEnumerable DeconstructNonDefault(this T enumeration) where T : struct, Enum
{
diff --git a/CapyKit/Helpers/KeyHelper.cs b/CapyKit/Helpers/KeyHelper.cs
index 486fb93..8f0411d 100644
--- a/CapyKit/Helpers/KeyHelper.cs
+++ b/CapyKit/Helpers/KeyHelper.cs
@@ -1,225 +1,238 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Tasks;
-using System.Security.Cryptography;
+using System.Security.Cryptography;
using System.Text;
-using System.Net;
-namespace CapyKit.Helpers
+namespace CapyKit.Helpers;
+
+/// A class that contains methods for managing key creation and validation against a master key.
+public class KeyHelper
{
- /// A class that contains methods for managing key creation and validation against a master key.
- public class KeyHelper
+ /// The master key accessor function.
+ private Func masterKeyAccessor;
+
+ /// Number of parts accessor function.
+ private Func numPartsAccessor;
+
+ /// The salt size accessor function.
+ private Func saltSizeAccessor;
+
+ /// Sets the master key.
+ /// The accessor function.
+ public void SetMasterKeyAccessor(Func accessor)
{
- /// The master key accessor function.
- private Func masterKeyAccessor;
- /// The salt size accessor function.
- private Func saltSizeAccessor;
- /// Number of parts accessor function.
- private Func numPartsAccessor;
+ this.masterKeyAccessor = accessor;
+ }
- /// Sets the master key.
- /// The accessor function.
- public void SetMasterKeyAccessor(Func accessor)
+ /// Gets the master key.
+ ///
+ /// Thrown when the requested operation is invalid.
+ ///
+ /// An array of byte.
+ public byte[] GetMasterKey()
+ {
+ if (this.masterKeyAccessor == null)
{
- this.masterKeyAccessor = accessor;
+ var errorMessage = "Master key accessor not set.";
+ CapyEventReporter.EmitEvent(EventLevel.Error, errorMessage);
+ throw new InvalidOperationException(errorMessage);
}
- /// Gets the master key.
- ///
- /// Thrown when the requested operation is invalid.
- ///
- /// An array of byte.
- public byte[] GetMasterKey()
+ return this.masterKeyAccessor();
+ }
+
+ /// Sets the salt size (in bytes). Default is 4.
+ /// The accessor function.
+ public void SetSaltSizeAccessor(Func accessor)
+ {
+ this.saltSizeAccessor = accessor;
+ }
+
+ /// Gets the salt size.
+ /// The salt size.
+ public int GetSaltSize()
+ {
+ return this.saltSizeAccessor != null ? this.saltSizeAccessor() : 4;
+ }
+
+ /// Set and get the number of parts for the formatted key. Default is 2.
+ /// The accessor function.
+ public void SetNumPartsAccessor(Func accessor)
+ {
+ this.numPartsAccessor = accessor;
+ }
+
+ /// Gets the number parts.
+ ///
+ /// Thrown when one or more arguments have unsupported or illegal values.
+ ///
+ /// The number parts.
+ public int GetNumParts()
+ {
+ var parts = this.numPartsAccessor != null ? this.numPartsAccessor() : 2;
+ if (parts < 2)
{
- if (this.masterKeyAccessor == null)
- {
- var errorMessage = "Master key accessor not set.";
- CapyEventReporter.EmitEvent(EventLevel.Error, errorMessage);
- throw new InvalidOperationException(errorMessage);
- }
- return this.masterKeyAccessor();
+ var errorMessage = "Number of parts must be 2 or more.";
+ CapyEventReporter.EmitEvent(EventLevel.Error, errorMessage);
+ throw new ArgumentException(errorMessage);
}
- /// Sets the salt size (in bytes). Default is 4.
- /// The accessor function.
- public void SetSaltSizeAccessor(Func accessor)
+ return parts;
+ }
+
+ ///
+ /// Computes an HMAC-SHA256 over the salt using the master key and truncates it to the same
+ /// number of bytes as the salt.
+ ///
+ /// The salt.
+ /// The calculated signature.
+ private byte[] ComputeSignature(byte[] salt)
+ {
+ var masterKey = GetMasterKey();
+ using (var hmac = new HMACSHA256(masterKey))
{
- this.saltSizeAccessor = accessor;
- }
-
- /// Gets the salt size.
- /// The salt size.
- public int GetSaltSize()
- {
- return this.saltSizeAccessor != null ? this.saltSizeAccessor() : 4;
- }
-
- /// Set and get the number of parts for the formatted key. Default is 2.
- /// The accessor function.
- public void SetNumPartsAccessor(Func accessor)
- {
- this.numPartsAccessor = accessor;
- }
-
- /// Gets the number parts.
- ///
- /// Thrown when one or more arguments have unsupported or illegal values.
- ///
- /// The number parts.
- public int GetNumParts()
- {
- int parts = this.numPartsAccessor != null ? this.numPartsAccessor() : 2;
- if (parts < 2)
- {
- var errorMessage = "Number of parts must be 2 or more.";
- CapyEventReporter.EmitEvent(EventLevel.Error, errorMessage);
- throw new ArgumentException(errorMessage);
- }
- return parts;
- }
-
- ///
- /// Computes an HMAC-SHA256 over the salt using the master key and truncates it to the same
- /// number of bytes as the salt.
- ///
- /// The salt.
- /// The calculated signature.
- private byte[] ComputeSignature(byte[] salt)
- {
- byte[] masterKey = GetMasterKey();
- using (var hmac = new HMACSHA256(masterKey))
- {
- byte[] hash = hmac.ComputeHash(salt);
- int sigLength = salt.Length;
- byte[] signature = new byte[sigLength];
- Array.Copy(hash, signature, sigLength);
- return signature;
- }
- }
-
- /// Converts a byte array to a hex string.
- /// The bytes.
- /// A string.
- private string BytesToHex(byte[] bytes)
- {
- StringBuilder sb = new StringBuilder(bytes.Length * 2);
- foreach (var b in bytes)
- {
- sb.Append(b.ToString("X2"));
- }
- return sb.ToString();
- }
-
- /// Converts a hex string back to a byte array.
- ///
- /// Thrown when one or more arguments have unsupported or illegal values.
- ///
- /// The hexadecimal.
- /// A byte[].
- private byte[] HexToBytes(string hex)
- {
- if (hex.Length % 2 != 0)
- {
- var errorMessage = "Invalid hex string.";
- CapyEventReporter.EmitEvent(EventLevel.Error, errorMessage);
- throw new ArgumentException(errorMessage);
- }
- byte[] bytes = new byte[hex.Length / 2];
- for (int i = 0; i < hex.Length; i += 2)
- {
- bytes[i / 2] = Convert.ToByte(hex.Substring(i, 2), 16);
- }
- return bytes;
- }
-
- ///
- /// Formats the given hex string into the desired number of parts (separated by dashes).
- ///
- /// The hexadecimal.
- /// The formatted key.
- private string FormatKey(string hex)
- {
- int parts = GetNumParts();
- int totalLength = hex.Length;
- int baseLength = totalLength / parts;
- int remainder = totalLength % parts;
-
- StringBuilder formatted = new StringBuilder();
- int currentIndex = 0;
- for (int i = 0; i < parts; i++)
- {
- // Distribute any extra characters across the first few groups.
- int groupLength = baseLength + (i < remainder ? 1 : 0);
- formatted.Append(hex.Substring(currentIndex, groupLength));
- currentIndex += groupLength;
- if (i < parts - 1)
- formatted.Append("-");
- }
- return formatted.ToString();
- }
-
- /// Generates a random key.
- /// The key.
- public string GenerateKey()
- {
- int saltSize = GetSaltSize();
- byte[] salt = new byte[saltSize];
- using (var rng = RandomNumberGenerator.Create())
- {
- rng.GetBytes(salt);
- }
-
- byte[] signature = ComputeSignature(salt);
- string saltHex = BytesToHex(salt);
- string signatureHex = BytesToHex(signature);
- string combinedHex = saltHex + signatureHex;
- return FormatKey(combinedHex);
- }
-
- /// Validates the provided key.
- /// The provided key.
- /// True if it succeeds, false if it fails.
- ///
- ///
- ///
- public bool ValidateKey(string providedKey)
- {
- if (string.IsNullOrWhiteSpace(providedKey))
- return false;
-
- // Remove dashes.
- string cleanedKey = providedKey.Replace("-", "");
- int saltSize = GetSaltSize();
- int expectedTotalHexLength = 4 * saltSize; // salt (2*saltSize) + signature (2*saltSize)
- if (cleanedKey.Length != expectedTotalHexLength)
- return false;
-
- string saltHex = cleanedKey.Substring(0, 2 * saltSize);
- string signatureHex = cleanedKey.Substring(2 * saltSize);
-
- byte[] salt;
- byte[] providedSignature;
- try
- {
- salt = HexToBytes(saltHex);
- providedSignature = HexToBytes(signatureHex);
- }
- catch
- {
- return false;
- }
-
- byte[] expectedSignature = ComputeSignature(salt);
- if (expectedSignature.Length != providedSignature.Length)
- return false;
-
- for (int i = 0; i < expectedSignature.Length; i++)
- {
- if (expectedSignature[i] != providedSignature[i])
- return false;
- }
- return true;
+ var hash = hmac.ComputeHash(salt);
+ var sigLength = salt.Length;
+ var signature = new byte[sigLength];
+ Array.Copy(hash, signature, sigLength);
+ return signature;
}
}
-}
+
+ /// Converts a byte array to a hex string.
+ /// The bytes.
+ /// A string.
+ private string BytesToHex(byte[] bytes)
+ {
+ var sb = new StringBuilder(bytes.Length * 2);
+ foreach (var b in bytes)
+ {
+ sb.Append(b.ToString("X2"));
+ }
+
+ return sb.ToString();
+ }
+
+ /// Converts a hex string back to a byte array.
+ ///
+ /// Thrown when one or more arguments have unsupported or illegal values.
+ ///
+ /// The hexadecimal.
+ /// A byte[].
+ private byte[] HexToBytes(string hex)
+ {
+ if (hex.Length % 2 != 0)
+ {
+ var errorMessage = "Invalid hex string.";
+ CapyEventReporter.EmitEvent(EventLevel.Error, errorMessage);
+ throw new ArgumentException(errorMessage);
+ }
+
+ var bytes = new byte[hex.Length / 2];
+ for (var i = 0; i < hex.Length; i += 2)
+ {
+ bytes[i / 2] = Convert.ToByte(hex.Substring(i, 2), 16);
+ }
+
+ return bytes;
+ }
+
+ ///
+ /// Formats the given hex string into the desired number of parts (separated by dashes).
+ ///
+ /// The hexadecimal.
+ /// The formatted key.
+ private string FormatKey(string hex)
+ {
+ var parts = GetNumParts();
+ var totalLength = hex.Length;
+ var baseLength = totalLength / parts;
+ var remainder = totalLength % parts;
+
+ var formatted = new StringBuilder();
+ var currentIndex = 0;
+ for (var i = 0; i < parts; i++)
+ {
+ // Distribute any extra characters across the first few groups.
+ var groupLength = baseLength + (i < remainder ? 1 : 0);
+ formatted.Append(hex.Substring(currentIndex, groupLength));
+ currentIndex += groupLength;
+ if (i < parts - 1)
+ {
+ formatted.Append("-");
+ }
+ }
+
+ return formatted.ToString();
+ }
+
+ /// Generates a random key.
+ /// The key.
+ public string GenerateKey()
+ {
+ var saltSize = GetSaltSize();
+ var salt = new byte[saltSize];
+ using (var rng = RandomNumberGenerator.Create())
+ {
+ rng.GetBytes(salt);
+ }
+
+ var signature = ComputeSignature(salt);
+ var saltHex = BytesToHex(salt);
+ var signatureHex = BytesToHex(signature);
+ var combinedHex = saltHex + signatureHex;
+ return FormatKey(combinedHex);
+ }
+
+ /// Validates the provided key.
+ /// The provided key.
+ /// True if it succeeds, false if it fails.
+ ///
+ ///
+ ///
+ public bool ValidateKey(string providedKey)
+ {
+ if (string.IsNullOrWhiteSpace(providedKey))
+ {
+ return false;
+ }
+
+ // Remove dashes.
+ var cleanedKey = providedKey.Replace("-", "");
+ var saltSize = GetSaltSize();
+ var expectedTotalHexLength = 4 * saltSize; // salt (2*saltSize) + signature (2*saltSize)
+ if (cleanedKey.Length != expectedTotalHexLength)
+ {
+ return false;
+ }
+
+ var saltHex = cleanedKey.Substring(0, 2 * saltSize);
+ var signatureHex = cleanedKey.Substring(2 * saltSize);
+
+ byte[] salt;
+ byte[] providedSignature;
+ try
+ {
+ salt = HexToBytes(saltHex);
+ providedSignature = HexToBytes(signatureHex);
+ }
+ catch
+ {
+ return false;
+ }
+
+ var expectedSignature = ComputeSignature(salt);
+ if (expectedSignature.Length != providedSignature.Length)
+ {
+ return false;
+ }
+
+ for (var i = 0; i < expectedSignature.Length; i++)
+ {
+ if (expectedSignature[i] != providedSignature[i])
+ {
+ return false;
+ }
+ }
+
+ return true;
+ }
+}
\ No newline at end of file
diff --git a/CapyKit/Helpers/LanguageHelper.cs b/CapyKit/Helpers/LanguageHelper.cs
index b8e13a9..6af24bc 100644
--- a/CapyKit/Helpers/LanguageHelper.cs
+++ b/CapyKit/Helpers/LanguageHelper.cs
@@ -1,33 +1,28 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Text.RegularExpressions;
-using System.Threading.Tasks;
+using System.Text.RegularExpressions;
-namespace CapyKit.Helpers
+namespace CapyKit.Helpers;
+
+///
+/// Helper class for handling text transformations.
+///
+public class LanguageHelper
{
- ///
- /// Helper class for handling text transformations.
- ///
- public class LanguageHelper
+ #region Methods
+
+ /// Converts camel case text to human readable text.
+ ///
+ /// Camel case is a naming convention for identifiers in which the first letter of each word is
+ /// capitalized.
+ ///
+ /// The value.
+ /// A string in human readable format.
+ public static string CamelCaseToHumanReadable(string value)
{
- #region Methods
+ var regex = new Regex(@"(?<=[A-Z])(?=[A-Z][a-z]) | (?<=[^A-Z])(?=[A-Z]) | (?<=[A-Za-z])(?=[^A-Za-z])",
+ RegexOptions.IgnorePatternWhitespace);
- /// Converts camel case text to human readable text.
- ///
- /// Camel case is a naming convention for identifiers in which the first letter of each word is
- /// capitalized.
- ///
- /// The value.
- /// A string in human readable format.
- public static string CamelCaseToHumanReadable(string value)
- {
- var regex = new Regex(@"(?<=[A-Z])(?=[A-Z][a-z]) | (?<=[^A-Z])(?=[A-Z]) | (?<=[A-Za-z])(?=[^A-Za-z])", RegexOptions.IgnorePatternWhitespace);
-
- return regex.Replace(value, " ");
- }
-
- #endregion
+ return regex.Replace(value, " ");
}
-}
+
+ #endregion
+}
\ No newline at end of file
diff --git a/CapyKit/Helpers/PropertyHelper.cs b/CapyKit/Helpers/PropertyHelper.cs
index 694b5ac..94a85bd 100644
--- a/CapyKit/Helpers/PropertyHelper.cs
+++ b/CapyKit/Helpers/PropertyHelper.cs
@@ -9,8 +9,8 @@ namespace CapyKit.Helpers;
public static class PropertyHelper
{
///
- /// Gets the reflected value of an instanced
- /// object.
+ /// Gets the reflected value of an instanced
+ /// object.
///
/// Type of the property.
/// The instanced object.
@@ -22,12 +22,12 @@ public static class PropertyHelper
}
///
- /// Gets the reflected of an instanced
- /// object.
+ /// Gets the reflected of an instanced
+ /// object.
///
/// The instanced object.
/// Name of the property.
- /// The reflected .
+ /// The reflected .
public static PropertyInfo GetProperty(T obj, string propertyName)
{
if (obj == null)
@@ -40,7 +40,10 @@ public static class PropertyHelper
.FirstOrDefault();
}
- /// Gets the reflected value of an instanced object property value as described by a .
+ ///
+ /// Gets the reflected value of an instanced object
+ /// property value as described by a .
+ ///
/// Type of the property.
/// The instanced object.
/// The property selector function that identifies the property.
@@ -51,16 +54,18 @@ public static class PropertyHelper
}
///
- /// Gets the reflected of an object as
- /// described by a .
+ /// Gets the reflected of an object as
+ /// described by a .
///
- /// Thrown when the does
- /// not return a
- /// of type
- /// .
+ ///
+ /// Thrown when the does
+ /// not return a
+ /// of type
+ /// .
+ ///
/// Type of the property.
/// The property selector function that identifies the property.
- /// The reflected .
+ /// The reflected .
public static PropertyInfo GetProperty(Expression> selector)
{
Expression body = selector;
@@ -82,7 +87,7 @@ public static class PropertyHelper
}
///
- /// Gets an attribute from a given property.
+ /// Gets an attribute from a given property.
///
/// Type of the property.
/// The property selector function that identifies the property.
@@ -94,7 +99,7 @@ public static class PropertyHelper
}
///
- /// Gets a attribute from the given property.
+ /// Gets a attribute from the given property.
///
/// Type of the property.
/// The property selector function that identifies the property.
@@ -105,7 +110,7 @@ public static class PropertyHelper
}
///
- /// Gets a attribute from the given property.
+ /// Gets a attribute from the given property.
///
/// Type of the property.
/// The property selector function that identifies the property.
@@ -115,11 +120,11 @@ public static class PropertyHelper
return GetPropertyCustomAttribute(selector);
}
- /// Gets custom from a given property.
+ /// Gets custom from a given property.
/// Type of the attribute.
/// Type of the property.
/// The property selector function that identifies the property.
- /// The custom of the property.
+ /// The custom of the property.
public static TAttribute GetPropertyCustomAttribute(Expression> selector)
where TAttribute : Attribute
{
diff --git a/CapyKit/Helpers/SecurityHelper.cs b/CapyKit/Helpers/SecurityHelper.cs
index af929e4..bce011c 100644
--- a/CapyKit/Helpers/SecurityHelper.cs
+++ b/CapyKit/Helpers/SecurityHelper.cs
@@ -1,485 +1,488 @@
-using CapyKit.Attributes;
-using CapyKit.Extensions;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Reflection.Metadata.Ecma335;
-using System.Security.Cryptography;
+using System.Security.Cryptography;
using System.Text;
-using System.Threading.Tasks;
+using CapyKit.Attributes;
-namespace CapyKit.Helpers
+namespace CapyKit.Helpers;
+
+/// A class that contains methods for managing secure data processing and cryptography.
+public class SecurityHelper
{
- /// A class that contains methods for managing secure data processing and cryptography.
- public class SecurityHelper
+ #region Members
+
+ /// A string of all the lower case characters.
+ internal const string LOWER_CASE_CHARACTERS = "abcdefghijklmnopqrstuvwxyz";
+
+ /// A string of all the upper case characters.
+ internal const string UPPER_CASE_CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+
+ /// A string of all the numeric characters.
+ internal const string NUMBER_CHARACTERS = "0123456789";
+
+ /// A string of the most common non-alphanumeric characters.
+ internal const string SPECIAL_CHARACTERS = "!@#$%&?+-_";
+
+ #endregion Members
+
+ #region Methods
+
+ public static bool CompareHashedPassword(Password existingPassword, string password, string salt,
+ params object[] args)
+ where T : IPasswordAlgorithm
{
- #region Members
+ return CompareHashedPassword(Convert.ToBase64String(existingPassword.Hash), password, salt, args);
+ }
- /// A string of all the lower case characters.
- internal const string LOWER_CASE_CHARACTERS = "abcdefghijklmnopqrstuvwxyz";
+ ///
+ /// Compares an unencrypted with a stored, encrypted .
+ /// This method uses the specified password algorithm type to retrieve the hashed version
+ /// of the and then compares it with the .
+ ///
+ /// The type of the password hashing algorithm.
+ /// The existing, encrypted password.
+ /// The unencrypted password to be compared.
+ /// The salt value used in password hashing.
+ /// Additional arguments required for constructing the password algorithm instance.
+ ///
+ /// if hash comparison succeeds, if it fails.
+ ///
+ public static bool CompareHashedPassword(Password existingPassword, string password, byte[] salt,
+ params object[] args)
+ where T : IPasswordAlgorithm
+ {
+ return CompareHashedPassword(existingPassword.Hash, password, salt, args);
+ }
- /// A string of all the upper case characters.
- internal const string UPPER_CASE_CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
-
- /// A string of all the numeric characters.
- internal const string NUMBER_CHARACTERS = "0123456789";
-
- /// A string of the most common non-alphanumeric characters.
- internal const string SPECIAL_CHARACTERS = "!@#$%&?+-_";
-
- #endregion Members
-
- #region Methods
-
- public static bool CompareHashedPassword(Password existingPassword, string password, string salt,
- params object[] args)
- where T : IPasswordAlgorithm
+ ///
+ /// Compares a plaintext password with a persisted Base64-encoded hash and salt.
+ ///
+ /// The password hashing algorithm.
+ /// The Base64-encoded persisted hash.
+ /// The plaintext password to verify.
+ /// The Base64-encoded persisted salt.
+ /// Arguments used to construct the password algorithm.
+ /// when the password matches the persisted hash.
+ public static bool CompareHashedPassword(string storedHash, string password, string salt,
+ params object[] args)
+ where T : IPasswordAlgorithm
+ {
+ if (string.IsNullOrWhiteSpace(storedHash) || string.IsNullOrEmpty(password) ||
+ string.IsNullOrWhiteSpace(salt))
{
- return CompareHashedPassword(Convert.ToBase64String(existingPassword.Hash), password, salt, args);
+ return false;
}
- ///
- /// Compares an unencrypted with a stored, encrypted .
- /// This method uses the specified password algorithm type to retrieve the hashed version
- /// of the and then compares it with the .
- ///
- /// The type of the password hashing algorithm.
- /// The existing, encrypted password.
- /// The unencrypted password to be compared.
- /// The salt value used in password hashing.
- /// Additional arguments required for constructing the password algorithm instance.
- ///
- /// if hash comparison succeeds, if it fails.
- ///
- public static bool CompareHashedPassword(Password existingPassword, string password, byte[] salt,
- params object[] args)
- where T : IPasswordAlgorithm
+ try
{
- return CompareHashedPassword(existingPassword.Hash, password, salt, args);
+ return CompareHashedPassword(Convert.FromBase64String(storedHash), password,
+ Convert.FromBase64String(salt), args);
+ }
+ catch (FormatException)
+ {
+ return false;
+ }
+ }
+
+ ///
+ /// Compares a hashed password with a plaintext password by using a specified hashing algorithm
+ /// .
+ /// This method requires the existing hash, the plaintext password to compare, and the associated salt value.
+ ///
+ /// The type of the password hashing algorithm implementing .
+ /// The stored hash of the password as a byte array.
+ /// The plaintext password to verify.
+ /// The salt used during the password hashing process as a byte array.
+ /// Optional arguments required for constructing the password hashing algorithm instance.
+ ///
+ /// if the hashed password matches the stored hash, otherwise.
+ ///
+ public static bool CompareHashedPassword(byte[] storedHash, string password, byte[] salt,
+ params object[] args)
+ where T : IPasswordAlgorithm
+ {
+ if (storedHash == null || storedHash.Length == 0 || string.IsNullOrEmpty(password) || salt == null ||
+ salt.Length == 0)
+ {
+ return false;
}
- ///
- /// Compares a plaintext password with a persisted Base64-encoded hash and salt.
- ///
- /// The password hashing algorithm.
- /// The Base64-encoded persisted hash.
- /// The plaintext password to verify.
- /// The Base64-encoded persisted salt.
- /// Arguments used to construct the password algorithm.
- /// when the password matches the persisted hash.
- public static bool CompareHashedPassword(string storedHash, string password, string salt,
- params object[] args)
- where T : IPasswordAlgorithm
+ var candidatePassword = GetPassword(password, salt, args);
+ return candidatePassword is not null && candidatePassword.Hash.Length == storedHash.Length &&
+ CryptographicOperations.FixedTimeEquals(storedHash, candidatePassword.Hash);
+ }
+
+ public static bool CompareHashedPassword(Password existingPassword, string password, string salt,
+ IPasswordAlgorithm algorithm, params object[] args)
+ {
+ var saltBytes = Convert.FromBase64String(salt);
+
+ return CompareHashedPassword(existingPassword, password, saltBytes, algorithm, args);
+ }
+
+ ///
+ /// Compares an unencrypted with a stored, encrypted .
+ /// This method uses the specified password hashing algorithm of type to hash the
+ ///
+ /// and then compares it with the .
+ ///
+ /// The type of the password hashing algorithm, implementing .
+ /// The stored, encrypted password to compare against.
+ /// The plain text password to be compared.
+ /// The salt value used for hashing the plain text password.
+ /// Optional additional arguments required for initializing the password hashing algorithm.
+ ///
+ /// if the password hashes match, otherwise .
+ ///
+ public static bool CompareHashedPassword(Password existingPassword, string password, byte[] salt,
+ IPasswordAlgorithm algorithm, params object[] args)
+ {
+ var algorithmType = algorithm.GetType();
+
+ var providedPassword = typeof(SecurityHelper)
+ .GetMethod("GetPassword", new[] { typeof(string), typeof(byte[]), typeof(object[]) })
+ ?.MakeGenericMethod(algorithmType)
+ ?.Invoke(null, new object[] { password, salt, args });
+
+ return existingPassword.Equals(providedPassword);
+ }
+
+ ///
+ /// Produces a deterministic SHA-256 digest for an opaque secret that must be looked up
+ /// without persisting the raw value.
+ ///
+ /// The raw opaque secret.
+ /// The Base64-encoded digest.
+ public static string HashOpaqueSecret(string secret)
+ {
+ ArgumentException.ThrowIfNullOrWhiteSpace(secret);
+ return Convert.ToBase64String(SHA256.HashData(Encoding.UTF8.GetBytes(secret)));
+ }
+
+ ///
+ /// Retrieves a object using the specified password and generates a random salt value.
+ /// Then it uses that salt to call the overloaded method with
+ /// the given password and
+ /// the generated salt as arguments.
+ ///
+ /// The type of implementation to use.
+ /// The plaintext password to be hashed.
+ ///
+ /// Optional constructor arguments for the implementation
+ /// instance.
+ ///
+ ///
+ /// A new object with the given password and a randomly generated salt, as well as an
+ /// instance of created using any optional constructor arguments provided.
+ ///
+ ///
+ public static Password GetPassword(string password, int saltSize, params object[] args)
+ where T : IPasswordAlgorithm
+ {
+ var salt = GetRandomBytes(saltSize);
+ return GetPassword(password, salt, args);
+ }
+
+ ///
+ /// Retrieves a object using the specified password, salt, and optional
+ /// constructor arguments.
+ ///
+ ///
+ /// This method uses reflection to find a constructor for the specified password algorithm type (
+ /// ).
+ /// It emits an error event if a suitable constructor is not found or if there is an error invoking the constructor.
+ ///
+ ///
+ /// The type of implementation to use.
+ ///
+ /// The plaintext password to be hashed.
+ ///
+ /// A random value used as an additional input to the one-way function that hashes data, a
+ /// password or passphrase. This is used to make each output different for the same input
+ /// thus adding security.
+ ///
+ ///
+ /// Optional constructor arguments for the implementation
+ /// instance.
+ ///
+ ///
+ /// A new object with the given password and salt, as well as an instance
+ /// of created using the provided constructor arguments.
+ ///
+ public static Password GetPassword(string password, byte[] salt, params object[] args)
+ where T : IPasswordAlgorithm
+ {
+ //var allArgs = args.Prepend(salt).Prepend(password).ToArray(); // Prepend in reverse order so that password precedes salt.
+ var argTypes = args.Select(arg => arg.GetType()).ToArray();
+ var algorithmConstructor = typeof(T).GetConstructor(argTypes);
+ if (algorithmConstructor == null)
{
- if (string.IsNullOrWhiteSpace(storedHash) || string.IsNullOrEmpty(password) ||
- string.IsNullOrWhiteSpace(salt))
- {
- return false;
- }
-
- try
- {
- return CompareHashedPassword(Convert.FromBase64String(storedHash), password,
- Convert.FromBase64String(salt), args);
- }
- catch (FormatException)
- {
- return false;
- }
- }
-
- ///
- /// Compares a hashed password with a plaintext password by using a specified hashing algorithm .
- /// This method requires the existing hash, the plaintext password to compare, and the associated salt value.
- ///
- /// The type of the password hashing algorithm implementing .
- /// The stored hash of the password as a byte array.
- /// The plaintext password to verify.
- /// The salt used during the password hashing process as a byte array.
- /// Optional arguments required for constructing the password hashing algorithm instance.
- ///
- /// if the hashed password matches the stored hash, otherwise.
- ///
- public static bool CompareHashedPassword(byte[] storedHash, string password, byte[] salt,
- params object[] args)
- where T : IPasswordAlgorithm
- {
- if (storedHash == null || storedHash.Length == 0 || string.IsNullOrEmpty(password) || salt == null ||
- salt.Length == 0)
- {
- return false;
- }
-
- var candidatePassword = GetPassword(password, salt, args);
- return candidatePassword is not null && candidatePassword.Hash.Length == storedHash.Length &&
- CryptographicOperations.FixedTimeEquals(storedHash, candidatePassword.Hash);
- }
-
- public static bool CompareHashedPassword(Password existingPassword, string password, string salt,
- IPasswordAlgorithm algorithm, params object[] args)
- {
- var saltBytes = Convert.FromBase64String(salt);
-
- return CompareHashedPassword(existingPassword, password, saltBytes, algorithm, args);
- }
-
- ///
- /// Compares an unencrypted with a stored, encrypted .
- /// This method uses the specified password hashing algorithm of type to hash the
- /// and then compares it with the .
- ///
- /// The type of the password hashing algorithm, implementing .
- /// The stored, encrypted password to compare against.
- /// The plain text password to be compared.
- /// The salt value used for hashing the plain text password.
- /// Optional additional arguments required for initializing the password hashing algorithm.
- ///
- /// if the password hashes match, otherwise .
- ///
- public static bool CompareHashedPassword(Password existingPassword, string password, byte[] salt,
- IPasswordAlgorithm algorithm, params object[] args)
- {
- var algorithmType = algorithm.GetType();
-
- var providedPassword = typeof(SecurityHelper)
- .GetMethod("GetPassword", new Type[] { typeof(string), typeof(byte[]), typeof(object[]) })
- ?.MakeGenericMethod(algorithmType)
- ?.Invoke(null, new object[] { password, salt, args });
-
- return existingPassword.Equals(providedPassword);
- }
-
- ///
- /// Produces a deterministic SHA-256 digest for an opaque secret that must be looked up
- /// without persisting the raw value.
- ///
- /// The raw opaque secret.
- /// The Base64-encoded digest.
- public static string HashOpaqueSecret(string secret)
- {
- ArgumentException.ThrowIfNullOrWhiteSpace(secret);
- return Convert.ToBase64String(SHA256.HashData(Encoding.UTF8.GetBytes(secret)));
- }
-
- ///
- /// Retrieves a object using the specified password and generates a random salt value.
- /// Then it uses that salt to call the overloaded method with the given password and
- /// the generated salt as arguments.
- ///
- /// The type of implementation to use.
- /// The plaintext password to be hashed.
- ///
- /// Optional constructor arguments for the implementation
- /// instance.
- ///
- ///
- /// A new object with the given password and a randomly generated salt, as well as an
- /// instance of created using any optional constructor arguments provided.
- ///
- ///
- public static Password GetPassword(string password, int saltSize, params object[] args)
- where T : IPasswordAlgorithm
- {
- var salt = GetRandomBytes(saltSize);
- return GetPassword(password, salt, args);
- }
-
- ///
- /// Retrieves a object using the specified password, salt, and optional
- /// constructor arguments.
- ///
- ///
- /// This method uses reflection to find a constructor for the specified password algorithm type ( ).
- /// It emits an error event if a suitable constructor is not found or if there is an error invoking the constructor.
- ///
- ///
- /// The type of implementation to use.
- ///
- /// The plaintext password to be hashed.
- ///
- /// A random value used as an additional input to the one-way function that hashes data, a
- /// password or passphrase. This is used to make each output different for the same input
- /// thus adding security.
- ///
- ///
- /// Optional constructor arguments for the implementation
- /// instance.
- ///
- ///
- /// A new object with the given password and salt, as well as an instance
- /// of created using the provided constructor arguments.
- ///
- public static Password GetPassword(string password, byte[] salt, params object[] args)
- where T : IPasswordAlgorithm
- {
- //var allArgs = args.Prepend(salt).Prepend(password).ToArray(); // Prepend in reverse order so that password precedes salt.
- var argTypes = args.Select(arg => arg.GetType()).ToArray();
- var algorithmConstructor = typeof(T).GetConstructor(argTypes);
- if (algorithmConstructor == null)
- {
- CapyEventReporter.EmitEvent(EventLevel.Error,
- "Cannot find a constructor for {0} that matches the given arguments: {1}",
- args: new[]
- {
- typeof(T).Name,
- string.Join(",", argTypes.Select(arg => arg.Name))
- });
- return default(Password);
- }
-
- var passwordInstance = (T)algorithmConstructor.Invoke(args);
-
- if (passwordInstance == null)
- {
- CapyEventReporter.EmitEvent(EventLevel.Error,
- "There was an error invoking the constructor for {0} with the given arguments: {1}",
- args: new[]
- {
- typeof(T).Name,
- string.Join(",", args)
- });
- return default(Password);
- }
-
- return new Password(password, salt, passwordInstance, args);
- }
-
- ///
- /// Generates a new object using the PBKDF2 algorithm with the provided
- /// and .
- ///
- ///
- /// This method uses the PBKDF2 (Password-Based Key Derivation Function 2) algorithm to generate
- /// a new password hash. The algorithm iteratively applies a pseudorandom function to the
- /// password and salt, which increases the security of the resulting hash.
- ///
- /// The clear text password to be hashed.
- ///
- /// A random value used to add an additional layer of security to the generated hash.
- ///
- ///
- /// A new object containing the hashed password and salt.
- ///
- public static Password Pbkdf2(string password, byte[] salt)
- {
- var pwd = new Password(password, salt, Password.Pbkdf2Algorithm);
-
- return pwd;
- }
-
- ///
- /// Generates a new object using the PBKDF2 algorithm with the provided .
- /// This overload of the method generates a random salt value for added security.
- ///
- ///
- /// This method uses the PBKDF2 (Password-Based Key Derivation Function 2) algorithm to generate
- /// a new password hash. The algorithm iteratively applies a pseudorandom function to the
- /// password and salt, which increases the security of the resulting hash. In this overload,
- /// a random salt value is generated using method.
- ///
- /// The clear text password to be hashed.
- ///
- /// A new object containing the hashed password and a randomly generated salt.
- ///
- public static Password Pbkdf2(string password, int saltSize)
- {
- var salt = SecurityHelper.GetRandomBytes(saltSize);
- var pwd = new Password(password, salt, Password.Pbkdf2Algorithm);
-
- return pwd;
- }
-
- /// Gets a cryptographically strong random password.
- /// The length of the password to generate.
- ///
- /// An array of enumeration values representing the desired
- /// character sets.
- ///
- /// The password.
- public static string GetRandomPassword(int length, params ValidCharacterCollection[] validCharacters)
- {
- if (validCharacters.Length == 0)
- {
- CapyEventReporter.EmitEvent(EventLevel.Warning,
- "No valid characters were provided, so all valid caharacters will be assumed.");
- validCharacters = new[]
+ CapyEventReporter.EmitEvent(EventLevel.Error,
+ "Cannot find a constructor for {0} that matches the given arguments: {1}",
+ args: new[]
{
- ValidCharacterCollection.Lowercase,
- ValidCharacterCollection.Uppercase,
- ValidCharacterCollection.Numbers,
- ValidCharacterCollection.Special
- };
- }
-
- return GetRandomString(length, validCharacters);
+ typeof(T).Name,
+ string.Join(",", argTypes.Select(arg => arg.Name))
+ });
+ return default;
}
- /// Compares two session identifiers.
- /// The first session identifier.
- /// The second session identifier.
- ///
- /// if comparison succeeds, if not.
- ///
- public static bool CompareSessionID(string first, string second)
+ var passwordInstance = (T)algorithmConstructor.Invoke(args);
+
+ if (passwordInstance == null)
{
- if (string.IsNullOrEmpty(first) || string.IsNullOrEmpty(second))
+ CapyEventReporter.EmitEvent(EventLevel.Error,
+ "There was an error invoking the constructor for {0} with the given arguments: {1}",
+ args: new[]
+ {
+ typeof(T).Name,
+ string.Join(",", args)
+ });
+ return default;
+ }
+
+ return new Password(password, salt, passwordInstance, args);
+ }
+
+ ///
+ /// Generates a new object using the PBKDF2 algorithm with the provided
+ ///
+ /// and .
+ ///
+ ///
+ /// This method uses the PBKDF2 (Password-Based Key Derivation Function 2) algorithm to generate
+ /// a new password hash. The algorithm iteratively applies a pseudorandom function to the
+ /// password and salt, which increases the security of the resulting hash.
+ ///
+ /// The clear text password to be hashed.
+ ///
+ /// A random value used to add an additional layer of security to the generated hash.
+ ///
+ ///
+ /// A new object containing the hashed password and salt.
+ ///
+ public static Password Pbkdf2(string password, byte[] salt)
+ {
+ var pwd = new Password(password, salt, Password.Pbkdf2Algorithm);
+
+ return pwd;
+ }
+
+ ///
+ /// Generates a new object using the PBKDF2 algorithm with the provided
+ /// .
+ /// This overload of the method generates a random salt value for added security.
+ ///
+ ///
+ /// This method uses the PBKDF2 (Password-Based Key Derivation Function 2) algorithm to generate
+ /// a new password hash. The algorithm iteratively applies a pseudorandom function to the
+ /// password and salt, which increases the security of the resulting hash. In this overload,
+ /// a random salt value is generated using method.
+ ///
+ /// The clear text password to be hashed.
+ ///
+ /// A new object containing the hashed password and a randomly generated salt.
+ ///
+ public static Password Pbkdf2(string password, int saltSize)
+ {
+ var salt = GetRandomBytes(saltSize);
+ var pwd = new Password(password, salt, Password.Pbkdf2Algorithm);
+
+ return pwd;
+ }
+
+ /// Gets a cryptographically strong random password.
+ /// The length of the password to generate.
+ ///
+ /// An array of enumeration values representing the desired
+ /// character sets.
+ ///
+ /// The password.
+ public static string GetRandomPassword(int length, params ValidCharacterCollection[] validCharacters)
+ {
+ if (validCharacters.Length == 0)
+ {
+ CapyEventReporter.EmitEvent(EventLevel.Warning,
+ "No valid characters were provided, so all valid caharacters will be assumed.");
+ validCharacters = new[]
{
- return CompareStrings(first, second);
- }
-
- return CompareStrings(first.Trim(), second.Trim());
- }
-
- ///
- /// A convenience method to generate a random string of the specified length using all character sets.
- ///
- /// The desired length of the generated random string.
- ///
- ///
- public static string GetRandomString(int length)
- {
- return GetRandomString(length,
ValidCharacterCollection.Lowercase,
ValidCharacterCollection.Uppercase,
ValidCharacterCollection.Numbers,
- ValidCharacterCollection.Special);
+ ValidCharacterCollection.Special
+ };
}
- /// Gets a cryptographically strong random string using the character values found in .
- /// The length of the string to create.
- /// The random string.
- public static string GetRandomString(int length, params ValidCharacterCollection[] validChars)
- {
- var buffer = new StringBuilder(length);
- var randomNumberBuffer =
- new byte[length * 3]; // Overprovision the buffer so we can discard a small percentage.
- var validCharacters = GetValidCharacterComposition(validChars);
- var validByteUpperLimit =
- (256 / validCharacters.Length) * validCharacters.Length -
- 1; // Maintains equal distribution of valid characters.
+ return GetRandomString(length, validCharacters);
+ }
- using (var rng = RandomNumberGenerator.Create())
+ /// Compares two session identifiers.
+ /// The first session identifier.
+ /// The second session identifier.
+ ///
+ /// if comparison succeeds, if not.
+ ///
+ public static bool CompareSessionID(string first, string second)
+ {
+ if (string.IsNullOrEmpty(first) || string.IsNullOrEmpty(second))
+ {
+ return CompareStrings(first, second);
+ }
+
+ return CompareStrings(first.Trim(), second.Trim());
+ }
+
+ ///
+ /// A convenience method to generate a random string of the specified length using all character sets.
+ ///
+ /// The desired length of the generated random string.
+ ///
+ ///
+ public static string GetRandomString(int length)
+ {
+ return GetRandomString(length,
+ ValidCharacterCollection.Lowercase,
+ ValidCharacterCollection.Uppercase,
+ ValidCharacterCollection.Numbers,
+ ValidCharacterCollection.Special);
+ }
+
+ ///
+ /// Gets a cryptographically strong random string using the character values found in
+ /// .
+ ///
+ /// The length of the string to create.
+ /// The random string.
+ public static string GetRandomString(int length, params ValidCharacterCollection[] validChars)
+ {
+ var buffer = new StringBuilder(length);
+ var randomNumberBuffer =
+ new byte[length * 3]; // Overprovision the buffer so we can discard a small percentage.
+ var validCharacters = GetValidCharacterComposition(validChars);
+ var validByteUpperLimit =
+ 256 / validCharacters.Length * validCharacters.Length -
+ 1; // Maintains equal distribution of valid characters.
+
+ using (var rng = RandomNumberGenerator.Create())
+ {
+ while (buffer.Length < length)
{
- while (buffer.Length < length)
+ rng.GetBytes(randomNumberBuffer);
+ foreach (var b in randomNumberBuffer)
{
- rng.GetBytes(randomNumberBuffer);
- foreach (byte b in randomNumberBuffer)
+ if (b <= validByteUpperLimit)
{
- if (b <= validByteUpperLimit)
+ var index = b % validCharacters.Length;
+ buffer.Append(validCharacters[index]);
+ if (buffer.Length == length)
{
- int index = b % validCharacters.Length;
- buffer.Append(validCharacters[index]);
- if (buffer.Length == length)
- {
- break;
- }
+ break;
}
}
}
}
-
- return buffer.ToString();
}
+ return buffer.ToString();
+ }
- /// Generates a new byte array of the specified length with random values.
- /// The desired length of the generated byte array.
- /// A new byte array of the specified length filled with random values.
- public static byte[] GetRandomBytes(int length)
+
+ /// Generates a new byte array of the specified length with random values.
+ /// The desired length of the generated byte array.
+ /// A new byte array of the specified length filled with random values.
+ public static byte[] GetRandomBytes(int length)
+ {
+ if (length <= 0)
{
- if (length <= 0)
- {
- CapyEventReporter.EmitEvent(EventLevel.Error, "Length must be greater than 0.");
- return GetRandomBytes(16);
- }
-
- var buffer = new byte[length];
- using (var rng = RandomNumberGenerator.Create())
- {
- rng.GetBytes(buffer);
- }
-
- return buffer;
+ CapyEventReporter.EmitEvent(EventLevel.Error, "Length must be greater than 0.");
+ return GetRandomBytes(16);
}
- ///
- /// Static method that returns a valid character composition based on the given ValidCharacterCollection parameters.
- ///
- /// An array of ValidCharacterCollection enumeration values representing the desired character sets.
- /// A string containing all the characters from the specified character sets.
- public static string GetValidCharacterComposition(params ValidCharacterCollection[] validCharacters)
+ var buffer = new byte[length];
+ using (var rng = RandomNumberGenerator.Create())
{
- var composition = new StringBuilder();
- foreach (var c in validCharacters)
- {
- switch (c)
- {
- case ValidCharacterCollection.Lowercase:
- composition.Append(SecurityHelper.LOWER_CASE_CHARACTERS);
- break;
- case ValidCharacterCollection.Uppercase:
- composition.Append(SecurityHelper.UPPER_CASE_CHARACTERS);
- break;
- case ValidCharacterCollection.Numbers:
- composition.Append(SecurityHelper.NUMBER_CHARACTERS);
- break;
- case ValidCharacterCollection.Special:
- composition.Append(SecurityHelper.SPECIAL_CHARACTERS);
- break;
- default:
- break;
- }
- }
-
- return composition.ToString();
+ rng.GetBytes(buffer);
}
- /// Compare two strings as case sensative.
- /// The first string.
- /// The second string.
- ///
- /// if the comparison succeeds, if not.
- ///
- ///
- /// This method is a proxy for using
- /// with the
- /// StringComparison set to .
- ///
- private static bool CompareStrings(string first, string second)
- {
- return string.Compare(first, second, StringComparison.Ordinal) == 0;
- }
-
- #endregion Methods
+ return buffer;
}
///
- /// An enumeration that defines the types of characters that can be included in a random string.
+ /// Static method that returns a valid character composition based on the given ValidCharacterCollection parameters.
///
- public enum ValidCharacterCollection
+ ///
+ /// An array of ValidCharacterCollection enumeration values representing the desired
+ /// character sets.
+ ///
+ /// A string containing all the characters from the specified character sets.
+ public static string GetValidCharacterComposition(params ValidCharacterCollection[] validCharacters)
{
- ///
- /// Indicates that lower case characters should be included in the random string.
- ///
- [EnumerationDescriptionAttribute(SecurityHelper.LOWER_CASE_CHARACTERS)]
- Lowercase,
+ var composition = new StringBuilder();
+ foreach (var c in validCharacters)
+ {
+ switch (c)
+ {
+ case ValidCharacterCollection.Lowercase:
+ composition.Append(SecurityHelper.LOWER_CASE_CHARACTERS);
+ break;
+ case ValidCharacterCollection.Uppercase:
+ composition.Append(SecurityHelper.UPPER_CASE_CHARACTERS);
+ break;
+ case ValidCharacterCollection.Numbers:
+ composition.Append(SecurityHelper.NUMBER_CHARACTERS);
+ break;
+ case ValidCharacterCollection.Special:
+ composition.Append(SecurityHelper.SPECIAL_CHARACTERS);
+ break;
+ }
+ }
- ///
- /// Indicates that upper case characters should be included in the random string.
- ///
- [EnumerationDescriptionAttribute(SecurityHelper.UPPER_CASE_CHARACTERS)]
- Uppercase,
-
- ///
- /// Indicates that numeric characters should be included in the random string.
- ///
- [EnumerationDescriptionAttribute(SecurityHelper.NUMBER_CHARACTERS)]
- Numbers,
-
- ///
- /// Indicates that special characters should be included in the random string.
- ///
- [EnumerationDescriptionAttribute(SecurityHelper.SPECIAL_CHARACTERS)]
- Special,
+ return composition.ToString();
}
+
+ /// Compare two strings as case sensative.
+ /// The first string.
+ /// The second string.
+ ///
+ /// if the comparison succeeds, if not.
+ ///
+ ///
+ /// This method is a proxy for using
+ /// with the
+ /// StringComparison set to .
+ ///
+ private static bool CompareStrings(string first, string second)
+ {
+ return string.Compare(first, second, StringComparison.Ordinal) == 0;
+ }
+
+ #endregion Methods
+}
+
+///
+/// An enumeration that defines the types of characters that can be included in a random string.
+///
+public enum ValidCharacterCollection
+{
+ ///
+ /// Indicates that lower case characters should be included in the random string.
+ ///
+ [EnumerationDescriptionAttribute(SecurityHelper.LOWER_CASE_CHARACTERS)]
+ Lowercase,
+
+ ///
+ /// Indicates that upper case characters should be included in the random string.
+ ///
+ [EnumerationDescriptionAttribute(SecurityHelper.UPPER_CASE_CHARACTERS)]
+ Uppercase,
+
+ ///
+ /// Indicates that numeric characters should be included in the random string.
+ ///
+ [EnumerationDescriptionAttribute(SecurityHelper.NUMBER_CHARACTERS)]
+ Numbers,
+
+ ///
+ /// Indicates that special characters should be included in the random string.
+ ///
+ [EnumerationDescriptionAttribute(SecurityHelper.SPECIAL_CHARACTERS)]
+ Special
}
\ No newline at end of file
diff --git a/CapyKit/Helpers/SerializationHelper.cs b/CapyKit/Helpers/SerializationHelper.cs
index b1bb378..8b836a2 100644
--- a/CapyKit/Helpers/SerializationHelper.cs
+++ b/CapyKit/Helpers/SerializationHelper.cs
@@ -1,105 +1,102 @@
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using System.Runtime.Serialization;
-using System.Runtime.Serialization.Formatters.Binary;
-using System.Text;
-using System.Text.Json;
-using System.Threading.Tasks;
+using System.Text.Json;
-namespace CapyKit.Helpers
+namespace CapyKit.Helpers;
+
+public static class SerializationHelper
{
- public static class SerializationHelper
+ #region Members
+
+ //
+
+ #endregion Members
+
+ #region Methods
+
+ /// Serializes an object to a byte array.
+ /// The object.
+ /// A JSON encoded string.
+ public static byte[] SerializeToBytes(object obj)
{
- #region Members
-
- //
-
- #endregion Members
-
- #region Methods
-
- /// Serializes an object to a byte array.
- /// The object.
- /// A JSON encoded string.
- public static byte[] SerializeToBytes(object obj)
- {
- return JsonSerializer.SerializeToUtf8Bytes(obj);
- }
-
- /// Serializes an object to a JSON encoded string.
- /// The object.
- /// A JSON encoded string.
- public static string SerializeToString(object obj)
- {
- return JsonSerializer.Serialize(obj);
- }
-
- /// Deserializes an object to a given type.
- /// Thrown when the format of the byte array is incorrect.
- /// Generic type parameter.
- /// The byte array representing a object.
- /// A object.
- public static T Deserialize(byte[] bytes)
- {
- var stream = new MemoryStream(bytes);
-
- return Deserialize(stream);
- }
-
- /// Deserializes an object to a given type.
- ///
- /// Thrown when the format of an input is incorrect.
- ///
- /// Generic type parameter.
- /// The steam.
- /// A object.
- public static T Deserialize(Stream stream)
- {
- try
- {
- var obj = JsonSerializer.Deserialize(stream);
-
- if(obj == null)
- {
- CapyEventReporter.EmitEvent(EventLevel.Error, "The deserialized object was null.");
- throw new ArgumentNullException(nameof(stream));
- }
-
- return (T)obj;
- }
- catch (JsonException ex)
- {
- CapyEventReporter.EmitEvent(EventLevel.Error, "JSON formatting error detected during deserialization of byte array for {0}.", args: new[] { typeof(T).Name });
- throw new FormatException(string.Format("JSON formatting error detected during deserialization of byte array for {0}.", typeof(T).Name), ex);
- }
- catch (Exception ex)
- {
- CapyEventReporter.EmitEvent(EventLevel.Error, "Could not deserialize object of type {0}.", args: new[] { typeof(T).Name });
- throw;
- }
- }
-
- /// Deserializes a JSON encoded string to the given .
- /// Generic type parameter.
- /// The JSON encoded string representing a object.
- /// A object.
- public static T Deserialize(string str)
- {
- if (typeof(T) == typeof(string))
- {
- return (T)Convert.ChangeType(str, typeof(T));
- }
- else if(string.IsNullOrWhiteSpace(str))
- {
- CapyEventReporter.EmitEvent(EventLevel.Error, "Could not deserialize an empty string.");
- return default(T);
- }
-
- return JsonSerializer.Deserialize(str);
- }
-
- #endregion Methods
+ return JsonSerializer.SerializeToUtf8Bytes(obj);
}
-}
+
+ /// Serializes an object to a JSON encoded string.
+ /// The object.
+ /// A JSON encoded string.
+ public static string SerializeToString(object obj)
+ {
+ return JsonSerializer.Serialize(obj);
+ }
+
+ /// Deserializes an object to a given type.
+ /// Thrown when the format of the byte array is incorrect.
+ /// Generic type parameter.
+ /// The byte array representing a object.
+ /// A object.
+ public static T Deserialize(byte[] bytes)
+ {
+ var stream = new MemoryStream(bytes);
+
+ return Deserialize(stream);
+ }
+
+ /// Deserializes an object to a given type.
+ ///
+ /// Thrown when the format of an input is incorrect.
+ ///
+ /// Generic type parameter.
+ /// The steam.
+ /// A object.
+ public static T Deserialize(Stream stream)
+ {
+ try
+ {
+ var obj = JsonSerializer.Deserialize(stream);
+
+ if (obj == null)
+ {
+ CapyEventReporter.EmitEvent(EventLevel.Error, "The deserialized object was null.");
+ throw new ArgumentNullException(nameof(stream));
+ }
+
+ return (T)obj;
+ }
+ catch (JsonException ex)
+ {
+ CapyEventReporter.EmitEvent(EventLevel.Error,
+ "JSON formatting error detected during deserialization of byte array for {0}.",
+ args: new[] { typeof(T).Name });
+ throw new FormatException(
+ string.Format("JSON formatting error detected during deserialization of byte array for {0}.",
+ typeof(T).Name), ex);
+ }
+ catch (Exception ex)
+ {
+ CapyEventReporter.EmitEvent(EventLevel.Error, "Could not deserialize object of type {0}.",
+ args: new[] { typeof(T).Name });
+ throw;
+ }
+ }
+
+ /// Deserializes a JSON encoded string to the given .
+ /// Generic type parameter.
+ /// The JSON encoded string representing a object.
+ /// A object.
+ public static T Deserialize(string str)
+ {
+ if (typeof(T) == typeof(string))
+ {
+ return (T)Convert.ChangeType(str, typeof(T));
+ }
+
+ if (string.IsNullOrWhiteSpace(str))
+ {
+ CapyEventReporter.EmitEvent(EventLevel.Error, "Could not deserialize an empty string.");
+ return default;
+ }
+
+ return JsonSerializer.Deserialize(str);
+ }
+
+ #endregion Methods
+}
\ No newline at end of file
diff --git a/CapyKit/Helpers/SettingsHelper.cs b/CapyKit/Helpers/SettingsHelper.cs
index 762b2e0..dc2488a 100644
--- a/CapyKit/Helpers/SettingsHelper.cs
+++ b/CapyKit/Helpers/SettingsHelper.cs
@@ -1,135 +1,128 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+namespace CapyKit.Helpers;
-namespace CapyKit.Helpers
+///
+/// Static class containing helper methods for retrieving and setting application settings.
+///
+///
+/// The specific means of accessing and storing the settings are determined by the consumer,
+/// allowing for flexibility in various environments such as App.config or Web.config
+/// .
+///
+///
+/// This example demonstrates how to set up the SettingsHelper class with custom accessor and
+/// detector methods that read from an App.config file. The setup is done at the beginning of the
+/// application execution, before any other usage of the helper methods.
+///
+/// public int main(string[] args)
+/// {
+/// // Set up SettingsHelper with custom accessor and detector methods
+/// Func<string, object> accessor = (key) =>
+/// {
+/// Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
+/// return config.AppSettings.Settings[key].Value;
+/// };
+///
+/// Func<string, bool> detector = (key) =>
+/// {
+/// Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
+/// return config.AppSettings.Settings.AllKeys.Contains(key);
+/// };
+///
+/// SettingsHelper.SetAccessorMethod(accessor);
+/// SettingsHelper.SetDetectorMethod(detector);
+///
+/// // Use the helper to retrieve and set settings
+/// SettingsHelper.SetApplicationSetting<int>("MySettingKey", 42);
+/// int newSetting = SettingsHelper.GetApplicationSetting<int>("MySettingKey");
+/// Console.WriteLine("New setting: {0}", newSetting);
+///
+/// int mySetting = SettingsHelper.GetApplicationSetting<int>("MySettingKey");
+/// Console.WriteLine("Retrieved setting: {0}", mySetting);
+/// }
+///
+///
+public static class SettingsHelper
{
+ #region Members
+
///
- /// Static class containing helper methods for retrieving and setting application settings.
+ /// Private delegate function that retrieves a setting with the given key .
///
- ///
- /// The specific means of accessing and storing the settings are determined by the consumer,
- /// allowing for flexibility in various environments such as App.config or Web.config
- /// .
- ///
- ///
- /// This example demonstrates how to set up the SettingsHelper class with custom accessor and
- /// detector methods that read from an App.config file. The setup is done at the beginning of the
- /// application execution, before any other usage of the helper methods.
- ///
- /// public int main(string[] args)
- /// {
- /// // Set up SettingsHelper with custom accessor and detector methods
- /// Func<string, object> accessor = (key) =>
- /// {
- /// Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
- /// return config.AppSettings.Settings[key].Value;
- /// };
- ///
- /// Func<string, bool> detector = (key) =>
- /// {
- /// Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
- /// return config.AppSettings.Settings.AllKeys.Contains(key);
- /// };
- ///
- /// SettingsHelper.SetAccessorMethod(accessor);
- /// SettingsHelper.SetDetectorMethod(detector);
- ///
- /// // Use the helper to retrieve and set settings
- /// SettingsHelper.SetApplicationSetting<int>("MySettingKey", 42);
- /// int newSetting = SettingsHelper.GetApplicationSetting<int>("MySettingKey");
- /// Console.WriteLine("New setting: {0}", newSetting);
- ///
- /// int mySetting = SettingsHelper.GetApplicationSetting<int>("MySettingKey");
- /// Console.WriteLine("Retrieved setting: {0}", mySetting);
- /// }
- ///
- ///
- public static class SettingsHelper
+ private static Func accessor = key => default;
+
+ ///
+ /// Private delegate function that detects if a setting with a given key exists. Returns
+ /// if the setting exists, if not.
+ ///
+ private static Func detector = key => false;
+
+ #endregion Members
+
+ #region Methods
+
+ ///
+ /// Retrieves a setting with the given key .
+ ///
+ /// The type of the setting to be retrieved.
+ /// The name of the setting to retrieve.
+ /// The value of the setting as an uncast .
+ public static T GetApplicationSetting(string settingName)
{
- #region Members
-
- ///
- /// Private delegate function that retrieves a setting with the given key .
- ///
- private static Func accessor = (key) => default(object);
-
- ///
- /// Private delegate function that detects if a setting with a given key exists. Returns
- /// if the setting exists, if not.
- ///
- private static Func detector = (key) => false;
-
- #endregion Members
-
- #region Methods
-
- ///
- /// Retrieves a setting with the given key .
- ///
- /// The type of the setting to be retrieved.
- /// The name of the setting to retrieve.
- /// The value of the setting as an uncast .
- public static T GetApplicationSetting(string settingName)
+ if (SettingsHelper.detector(settingName))
{
- if (SettingsHelper.detector(settingName))
+ var result = Convert.ChangeType(SettingsHelper.accessor(settingName), typeof(T));
+ if (result is T)
{
- var result = Convert.ChangeType(SettingsHelper.accessor(settingName), typeof(T));
- if (result is T)
- {
- return (T)result;
- }
-
- return default(T);
+ return (T)result;
}
- return default(T);
+ return default;
}
- /// Sets the function used to retrieve application settings.
- ///
- /// Thrown when one or more required arguments are null.
- ///
- /// The new function used to retrieve application settings.
- public static void SetAccessorMethod(Func accessor)
- {
- if (accessor != null)
- {
- SettingsHelper.accessor = accessor;
- }
- else
- {
- var error = "Cannot set the ApplicationSettingsHelper accessor method to a null function.";
- CapyEventReporter.EmitEvent(EventLevel.Error, error);
- throw new ArgumentNullException(error);
- }
- }
-
- ///
- /// Sets the function used to detect if an application setting with a given key exists.
- ///
- ///
- /// Thrown when one or more required arguments are null.
- ///
- ///
- /// The new function used to detect if an application setting exists.
- ///
- public static void SetDetectorMethod(Func detector)
- {
- if (detector != null)
- {
- SettingsHelper.detector = detector;
- }
- else
- {
- var error = "Cannot set the ApplicationSettingsHelper detector method to a null function.";
- CapyEventReporter.EmitEvent(EventLevel.Error, error);
- throw new ArgumentNullException(error);
- }
- }
-
- #endregion Methods
+ return default;
}
-}
+
+ /// Sets the function used to retrieve application settings.
+ ///
+ /// Thrown when one or more required arguments are null.
+ ///
+ /// The new function used to retrieve application settings.
+ public static void SetAccessorMethod(Func accessor)
+ {
+ if (accessor != null)
+ {
+ SettingsHelper.accessor = accessor;
+ }
+ else
+ {
+ var error = "Cannot set the ApplicationSettingsHelper accessor method to a null function.";
+ CapyEventReporter.EmitEvent(EventLevel.Error, error);
+ throw new ArgumentNullException(error);
+ }
+ }
+
+ ///
+ /// Sets the function used to detect if an application setting with a given key exists.
+ ///
+ ///
+ /// Thrown when one or more required arguments are null.
+ ///
+ ///
+ /// The new function used to detect if an application setting exists.
+ ///
+ public static void SetDetectorMethod(Func detector)
+ {
+ if (detector != null)
+ {
+ SettingsHelper.detector = detector;
+ }
+ else
+ {
+ var error = "Cannot set the ApplicationSettingsHelper detector method to a null function.";
+ CapyEventReporter.EmitEvent(EventLevel.Error, error);
+ throw new ArgumentNullException(error);
+ }
+ }
+
+ #endregion Methods
+}
\ No newline at end of file
diff --git a/CapyKit/NamedColor.cs b/CapyKit/NamedColor.cs
index d1bd767..39f48e9 100644
--- a/CapyKit/NamedColor.cs
+++ b/CapyKit/NamedColor.cs
@@ -1,1916 +1,2856 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+namespace CapyKit;
-namespace CapyKit
+///
+/// Enum representing a set of named colors with their corresponding HEX values. These colors are
+/// inspired by the XKCD color palette (Link ).
+///
+public enum NamedColor
{
- ///
- /// Enum representing a set of named colors with their corresponding HEX values. These colors are
- /// inspired by the XKCD color palette (Link ).
- ///
- public enum NamedColor
- {
- /// A color described as Cloudy Blue with a HEX value of #ACC2D9 .
- CloudyBlue = 0xACC2D9,
- /// A color described as Dark Pastel Green with a HEX value of #56AE57 .
- DarkPastelGreen = 0x56AE57,
- /// A color described as Dust with a HEX value of #B2996E .
- Dust = 0xB2996E,
- /// A color described as Electric Lime with a HEX value of #A8FF04 .
- ElectricLime = 0xA8FF04,
- /// A color described as Fresh Green with a HEX value of #69D84F .
- FreshGreen = 0x69D84F,
- /// A color described as Light Eggplant with a HEX value of #894585 .
- LightEggplant = 0x894585,
- /// A color described as Nasty Green with a HEX value of #70B23F .
- NastyGreen = 0x70B23F,
- /// A color described as Really Light Blue with a HEX value of #D4FFFF .
- ReallyLightBlue = 0xD4FFFF,
- /// A color described as Tea with a HEX value of #65AB7C .
- Tea = 0x65AB7C,
- /// A color described as Warm Purple with a HEX value of #952E8F .
- WarmPurple = 0x952E8F,
- /// A color described as Yellowish Tan with a HEX value of #FCFC81 .
- YellowishTan = 0xFCFC81,
- /// A color described as Cement with a HEX value of #A5A391 .
- Cement = 0xA5A391,
- /// A color described as Dark Grass Green with a HEX value of #388004 .
- DarkGrassGreen = 0x388004,
- /// A color described as Dusty Teal with a HEX value of #4C9085 .
- DustyTeal = 0x4C9085,
- /// A color described as Grey Teal with a HEX value of #5E9B8A .
- GreyTeal = 0x5E9B8A,
- /// A color described as Macaroni And Cheese with a HEX value of #EFB435 .
- MacaroniAndCheese = 0xEFB435,
- /// A color described as Pinkish Tan with a HEX value of #D99B82 .
- PinkishTan = 0xD99B82,
- /// A color described as Spruce with a HEX value of #0A5F38 .
- Spruce = 0x0A5F38,
- /// A color described as Strong Blue with a HEX value of #0C06F7 .
- StrongBlue = 0x0C06F7,
- /// A color described as Toxic Green with a HEX value of #61DE2A .
- ToxicGreen = 0x61DE2A,
- /// A color described as Windows Blue with a HEX value of #3778BF .
- WindowsBlue = 0x3778BF,
- /// A color described as Blue Blue with a HEX value of #2242C7 .
- BlueBlue = 0x2242C7,
- /// A color described as Blue With A Hint Of Purple with a HEX value of #533CC6 .
- BlueWithAHintOfPurple = 0x533CC6,
- /// A color described as Booger with a HEX value of #9BB53C .
- Booger = 0x9BB53C,
- /// A color described as Bright Sea Green with a HEX value of #05FFA6 .
- BrightSeaGreen = 0x05FFA6,
- /// A color described as Dark Green Blue with a HEX value of #1F6357 .
- DarkGreenBlue = 0x1F6357,
- /// A color described as Deep Turquoise with a HEX value of #017374 .
- DeepTurquoise = 0x017374,
- /// A color described as Green Teal with a HEX value of #0CB577 .
- GreenTeal = 0x0CB577,
- /// A color described as Strong Pink with a HEX value of #FF0789 .
- StrongPink = 0xFF0789,
- /// A color described as Bland with a HEX value of #AFA88B .
- Bland = 0xAFA88B,
- /// A color described as Deep Aqua with a HEX value of #08787F .
- DeepAqua = 0x08787F,
- /// A color described as Lavender Pink with a HEX value of #DD85D7 .
- LavenderPink = 0xDD85D7,
- /// A color described as Light Moss Green with a HEX value of #A6C875 .
- LightMossGreen = 0xA6C875,
- /// A color described as Light Seafoam Green with a HEX value of #A7FFB5 .
- LightSeafoamGreen = 0xA7FFB5,
- /// A color described as Olive Yellow with a HEX value of #C2B709 .
- OliveYellow = 0xC2B709,
- /// A color described as Pig Pink with a HEX value of #E78EA5 .
- PigPink = 0xE78EA5,
- /// A color described as Deep Lilac with a HEX value of #966EBD .
- DeepLilac = 0x966EBD,
- /// A color described as Desert with a HEX value of #CCAD60 .
- Desert = 0xCCAD60,
- /// A color described as Dusty Lavender with a HEX value of #AC86A8 .
- DustyLavender = 0xAC86A8,
- /// A color described as Purpley Grey with a HEX value of #947E94 .
- PurpleyGrey = 0x947E94,
- /// A color described as Purply with a HEX value of #983FB2 .
- Purply = 0x983FB2,
- /// A color described as Candy Pink with a HEX value of #FF63E9 .
- CandyPink = 0xFF63E9,
- /// A color described as Light Pastel Green with a HEX value of #B2FBA5 .
- LightPastelGreen = 0xB2FBA5,
- /// A color described as Boring Green with a HEX value of #63B365 .
- BoringGreen = 0x63B365,
- /// A color described as Kiwi Green with a HEX value of #8EE53F .
- KiwiGreen = 0x8EE53F,
- /// A color described as Light Grey Green with a HEX value of #B7E1A1 .
- LightGreyGreen = 0xB7E1A1,
- /// A color described as Orange Pink with a HEX value of #FF6F52 .
- OrangePink = 0xFF6F52,
- /// A color described as Tea Green with a HEX value of #BDF8A3 .
- TeaGreen = 0xBDF8A3,
- /// A color described as Very Light Brown with a HEX value of #D3B683 .
- VeryLightBrown = 0xD3B683,
- /// A color described as Egg Shell with a HEX value of #FFFCC4 .
- EggShell = 0xFFFCC4,
- /// A color described as Eggplant Purple with a HEX value of #430541 .
- EggplantPurple = 0x430541,
- /// A color described as Powder Pink with a HEX value of #FFB2D0 .
- PowderPink = 0xFFB2D0,
- /// A color described as Reddish Grey with a HEX value of #997570 .
- ReddishGrey = 0x997570,
- /// A color described as Baby Shit Brown with a HEX value of #AD900D .
- BabyShitBrown = 0xAD900D,
- /// A color described as Liliac with a HEX value of #C48EFD .
- Liliac = 0xC48EFD,
- /// A color described as Stormy Blue with a HEX value of #507B9C .
- StormyBlue = 0x507B9C,
- /// A color described as Ugly Brown with a HEX value of #7D7103 .
- UglyBrown = 0x7D7103,
- /// A color described as Custard with a HEX value of #FFFD78 .
- Custard = 0xFFFD78,
- /// A color described as Darkish Pink with a HEX value of #DA467D .
- DarkishPink = 0xDA467D,
- /// A color described as Deep Brown with a HEX value of #410200 .
- DeepBrown = 0x410200,
- /// A color described as Greenish Beige with a HEX value of #C9D179 .
- GreenishBeige = 0xC9D179,
- /// A color described as Manilla with a HEX value of #FFFA86 .
- Manilla = 0xFFFA86,
- /// A color described as Off Blue with a HEX value of #5684AE .
- OffBlue = 0x5684AE,
- /// A color described as Battleship Grey with a HEX value of #6B7C85 .
- BattleshipGrey = 0x6B7C85,
- /// A color described as Browny Green with a HEX value of #6F6C0A .
- BrownyGreen = 0x6F6C0A,
- /// A color described as Bruise with a HEX value of #7E4071 .
- Bruise = 0x7E4071,
- /// A color described as Kelley Green with a HEX value of #009337 .
- KelleyGreen = 0x009337,
- /// A color described as Sickly Yellow with a HEX value of #D0E429 .
- SicklyYellow = 0xD0E429,
- /// A color described as Sunny Yellow with a HEX value of #FFF917 .
- SunnyYellow = 0xFFF917,
- /// A color described as Azul with a HEX value of #1D5DEC .
- Azul = 0x1D5DEC,
- /// A color described as Darkgreen with a HEX value of #054907 .
- Darkgreen = 0x054907,
- /// A color described as Green/Yellow with a HEX value of #B5CE08 .
- GreenYellow = 0xB5CE08,
- /// A color described as Lichen with a HEX value of #8FB67B .
- Lichen = 0x8FB67B,
- /// A color described as Light Light Green with a HEX value of #C8FFB0 .
- LightLightGreen = 0xC8FFB0,
- /// A color described as Pale Gold with a HEX value of #FDDE6C .
- PaleGold = 0xFDDE6C,
- /// A color described as Sun Yellow with a HEX value of #FFDF22 .
- SunYellow = 0xFFDF22,
- /// A color described as Tan Green with a HEX value of #A9BE70 .
- TanGreen = 0xA9BE70,
- /// A color described as Burple with a HEX value of #6832E3 .
- Burple = 0x6832E3,
- /// A color described as Butterscotch with a HEX value of #FDB147 .
- Butterscotch = 0xFDB147,
- /// A color described as Toupe with a HEX value of #C7AC7D .
- Toupe = 0xC7AC7D,
- /// A color described as Dark Cream with a HEX value of #FFF39A .
- DarkCream = 0xFFF39A,
- /// A color described as Indian Red with a HEX value of #850E04 .
- IndianRed = 0x850E04,
- /// A color described as Light Lavendar with a HEX value of #EFC0FE .
- LightLavendar = 0xEFC0FE,
- /// A color described as Poison Green with a HEX value of #40FD14 .
- PoisonGreen = 0x40FD14,
- /// A color described as Baby Puke Green with a HEX value of #B6C406 .
- BabyPukeGreen = 0xB6C406,
- /// A color described as Bright Yellow Green with a HEX value of #9DFF00 .
- BrightYellowGreen = 0x9DFF00,
- /// A color described as Charcoal Grey with a HEX value of #3C4142 .
- CharcoalGrey = 0x3C4142,
- /// A color described as Squash with a HEX value of #F2AB15 .
- Squash = 0xF2AB15,
- /// A color described as Cinnamon with a HEX value of #AC4F06 .
- Cinnamon = 0xAC4F06,
- /// A color described as Light Pea Green with a HEX value of #C4FE82 .
- LightPeaGreen = 0xC4FE82,
- /// A color described as Radioactive Green with a HEX value of #2CFA1F .
- RadioactiveGreen = 0x2CFA1F,
- /// A color described as Raw Sienna with a HEX value of #9A6200 .
- RawSienna = 0x9A6200,
- /// A color described as Baby Purple with a HEX value of #CA9BF7 .
- BabyPurple = 0xCA9BF7,
- /// A color described as Cocoa with a HEX value of #875F42 .
- Cocoa = 0x875F42,
- /// A color described as Light Royal Blue with a HEX value of #3A2EFE .
- LightRoyalBlue = 0x3A2EFE,
- /// A color described as Orangeish with a HEX value of #FD8D49 .
- Orangeish = 0xFD8D49,
- /// A color described as Rust Brown with a HEX value of #8B3103 .
- RustBrown = 0x8B3103,
- /// A color described as Sand Brown with a HEX value of #CBA560 .
- SandBrown = 0xCBA560,
- /// A color described as Swamp with a HEX value of #698339 .
- Swamp = 0x698339,
- /// A color described as Tealish Green with a HEX value of #0CDC73 .
- TealishGreen = 0x0CDC73,
- /// A color described as Burnt Siena with a HEX value of #B75203 .
- BurntSiena = 0xB75203,
- /// A color described as Camo with a HEX value of #7F8F4E .
- Camo = 0x7F8F4E,
- /// A color described as Dusk Blue with a HEX value of #26538D .
- DuskBlue = 0x26538D,
- /// A color described as Fern with a HEX value of #63A950 .
- Fern = 0x63A950,
- /// A color described as Old Rose with a HEX value of #C87F89 .
- OldRose = 0xC87F89,
- /// A color described as Pale Light Green with a HEX value of #B1FC99 .
- PaleLightGreen = 0xB1FC99,
- /// A color described as Peachy Pink with a HEX value of #FF9A8A .
- PeachyPink = 0xFF9A8A,
- /// A color described as Rosy Pink with a HEX value of #F6688E .
- RosyPink = 0xF6688E,
- /// A color described as Light Bluish Green with a HEX value of #76FDA8 .
- LightBluishGreen = 0x76FDA8,
- /// A color described as Light Bright Green with a HEX value of #53FE5C .
- LightBrightGreen = 0x53FE5C,
- /// A color described as Light Neon Green with a HEX value of #4EFD54 .
- LightNeonGreen = 0x4EFD54,
- /// A color described as Light Seafoam with a HEX value of #A0FEBF .
- LightSeafoam = 0xA0FEBF,
- /// A color described as Tiffany Blue with a HEX value of #7BF2DA .
- TiffanyBlue = 0x7BF2DA,
- /// A color described as Washed Out Green with a HEX value of #BCF5A6 .
- WashedOutGreen = 0xBCF5A6,
- /// A color described as Browny Orange with a HEX value of #CA6B02 .
- BrownyOrange = 0xCA6B02,
- /// A color described as Nice Blue with a HEX value of #107AB0 .
- NiceBlue = 0x107AB0,
- /// A color described as Sapphire with a HEX value of #2138AB .
- Sapphire = 0x2138AB,
- /// A color described as Greyish Teal with a HEX value of #719F91 .
- GreyishTeal = 0x719F91,
- /// A color described as Orangey Yellow with a HEX value of #FDB915 .
- OrangeyYellow = 0xFDB915,
- /// A color described as Parchment with a HEX value of #FEFCAF .
- Parchment = 0xFEFCAF,
- /// A color described as Straw with a HEX value of #FCF679 .
- Straw = 0xFCF679,
- /// A color described as Very Dark Brown with a HEX value of #1D0200 .
- VeryDarkBrown = 0x1D0200,
- /// A color described as Terracota with a HEX value of #CB6843 .
- Terracota = 0xCB6843,
- /// A color described as Ugly Blue with a HEX value of #31668A .
- UglyBlue = 0x31668A,
- /// A color described as Clear Blue with a HEX value of #247AFD .
- ClearBlue = 0x247AFD,
- /// A color described as Creme with a HEX value of #FFFFB6 .
- Creme = 0xFFFFB6,
- /// A color described as Foam Green with a HEX value of #90FDA9 .
- FoamGreen = 0x90FDA9,
- /// A color described as Grey/Green with a HEX value of #86A17D .
- GreyGreen = 0x86A17D,
- /// A color described as Light Gold with a HEX value of #FDDC5C .
- LightGold = 0xFDDC5C,
- /// A color described as Seafoam Blue with a HEX value of #78D1B6 .
- SeafoamBlue = 0x78D1B6,
- /// A color described as Topaz with a HEX value of #13BBAF .
- Topaz = 0x13BBAF,
- /// A color described as Violet Pink with a HEX value of #FB5FFC .
- VioletPink = 0xFB5FFC,
- /// A color described as Wintergreen with a HEX value of #20F986 .
- Wintergreen = 0x20F986,
- /// A color described as Yellow Tan with a HEX value of #FFE36E .
- YellowTan = 0xFFE36E,
- /// A color described as Dark Fuchsia with a HEX value of #9D0759 .
- DarkFuchsia = 0x9D0759,
- /// A color described as Indigo Blue with a HEX value of #3A18B1 .
- IndigoBlue = 0x3A18B1,
- /// A color described as Light Yellowish Green with a HEX value of #C2FF89 .
- LightYellowishGreen = 0xC2FF89,
- /// A color described as Pale Magenta with a HEX value of #D767AD .
- PaleMagenta = 0xD767AD,
- /// A color described as Rich Purple with a HEX value of #720058 .
- RichPurple = 0x720058,
- /// A color described as Sunflower Yellow with a HEX value of #FFDA03 .
- SunflowerYellow = 0xFFDA03,
- /// A color described as Green/Blue with a HEX value of #01C08D .
- GreenBlue = 0x01C08D,
- /// A color described as Leather with a HEX value of #AC7434 .
- Leather = 0xAC7434,
- /// A color described as Racing Green with a HEX value of #014600 .
- RacingGreen = 0x014600,
- /// A color described as Vivid Purple with a HEX value of #9900FA .
- VividPurple = 0x9900FA,
- /// A color described as Dark Royal Blue with a HEX value of #02066F .
- DarkRoyalBlue = 0x02066F,
- /// A color described as Hazel with a HEX value of #8E7618 .
- Hazel = 0x8E7618,
- /// A color described as Muted Pink with a HEX value of #D1768F .
- MutedPink = 0xD1768F,
- /// A color described as Booger Green with a HEX value of #96B403 .
- BoogerGreen = 0x96B403,
- /// A color described as Canary with a HEX value of #FDFF63 .
- Canary = 0xFDFF63,
- /// A color described as Cool Grey with a HEX value of #95A3A6 .
- CoolGrey = 0x95A3A6,
- /// A color described as Dark Taupe with a HEX value of #7F684E .
- DarkTaupe = 0x7F684E,
- /// A color described as Darkish Purple with a HEX value of #751973 .
- DarkishPurple = 0x751973,
- /// A color described as True Green with a HEX value of #089404 .
- TrueGreen = 0x089404,
- /// A color described as Coral Pink with a HEX value of #FF6163 .
- CoralPink = 0xFF6163,
- /// A color described as Dark Sage with a HEX value of #598556 .
- DarkSage = 0x598556,
- /// A color described as Dark Slate Blue with a HEX value of #214761 .
- DarkSlateBlue = 0x214761,
- /// A color described as Flat Blue with a HEX value of #3C73A8 .
- FlatBlue = 0x3C73A8,
- /// A color described as Mushroom with a HEX value of #BA9E88 .
- Mushroom = 0xBA9E88,
- /// A color described as Rich Blue with a HEX value of #021BF9 .
- RichBlue = 0x021BF9,
- /// A color described as Dirty Purple with a HEX value of #734A65 .
- DirtyPurple = 0x734A65,
- /// A color described as Greenblue with a HEX value of #23C48B .
- Greenblue = 0x23C48B,
- /// A color described as Icky Green with a HEX value of #8FAE22 .
- IckyGreen = 0x8FAE22,
- /// A color described as Light Khaki with a HEX value of #E6F2A2 .
- LightKhaki = 0xE6F2A2,
- /// A color described as Warm Blue with a HEX value of #4B57DB .
- WarmBlue = 0x4B57DB,
- /// A color described as Dark Hot Pink with a HEX value of #D90166 .
- DarkHotPink = 0xD90166,
- /// A color described as Deep Sea Blue with a HEX value of #015482 .
- DeepSeaBlue = 0x015482,
- /// A color described as Carmine with a HEX value of #9D0216 .
- Carmine = 0x9D0216,
- /// A color described as Dark Yellow Green with a HEX value of #728F02 .
- DarkYellowGreen = 0x728F02,
- /// A color described as Pale Peach with a HEX value of #FFE5AD .
- PalePeach = 0xFFE5AD,
- /// A color described as Plum Purple with a HEX value of #4E0550 .
- PlumPurple = 0x4E0550,
- /// A color described as Golden Rod with a HEX value of #F9BC08 .
- GoldenRod = 0xF9BC08,
- /// A color described as Neon Red with a HEX value of #FF073A .
- NeonRed = 0xFF073A,
- /// A color described as Old Pink with a HEX value of #C77986 .
- OldPink = 0xC77986,
- /// A color described as Very Pale Blue with a HEX value of #D6FFFE .
- VeryPaleBlue = 0xD6FFFE,
- /// A color described as Blood Orange with a HEX value of #FE4B03 .
- BloodOrange = 0xFE4B03,
- /// A color described as Grapefruit with a HEX value of #FD5956 .
- Grapefruit = 0xFD5956,
- /// A color described as Sand Yellow with a HEX value of #FCE166 .
- SandYellow = 0xFCE166,
- /// A color described as Clay Brown with a HEX value of #B2713D .
- ClayBrown = 0xB2713D,
- /// A color described as Dark Blue Grey with a HEX value of #1F3B4D .
- DarkBlueGrey = 0x1F3B4D,
- /// A color described as Flat Green with a HEX value of #699D4C .
- FlatGreen = 0x699D4C,
- /// A color described as Light Green Blue with a HEX value of #56FCA2 .
- LightGreenBlue = 0x56FCA2,
- /// A color described as Warm Pink with a HEX value of #FB5581 .
- WarmPink = 0xFB5581,
- /// A color described as Dodger Blue with a HEX value of #3E82FC .
- DodgerBlue = 0x3E82FC,
- /// A color described as Gross Green with a HEX value of #A0BF16 .
- GrossGreen = 0xA0BF16,
- /// A color described as Ice with a HEX value of #D6FFFA .
- Ice = 0xD6FFFA,
- /// A color described as Metallic Blue with a HEX value of #4F738E .
- MetallicBlue = 0x4F738E,
- /// A color described as Pale Salmon with a HEX value of #FFB19A .
- PaleSalmon = 0xFFB19A,
- /// A color described as Sap Green with a HEX value of #5C8B15 .
- SapGreen = 0x5C8B15,
- /// A color described as Algae with a HEX value of #54AC68 .
- Algae = 0x54AC68,
- /// A color described as Bluey Grey with a HEX value of #89A0B0 .
- BlueyGrey = 0x89A0B0,
- /// A color described as Greeny Grey with a HEX value of #7EA07A .
- GreenyGrey = 0x7EA07A,
- /// A color described as Highlighter Green with a HEX value of #1BFC06 .
- HighlighterGreen = 0x1BFC06,
- /// A color described as Light Light Blue with a HEX value of #CAFFFB .
- LightLightBlue = 0xCAFFFB,
- /// A color described as Light Mint with a HEX value of #B6FFBB .
- LightMint = 0xB6FFBB,
- /// A color described as Raw Umber with a HEX value of #A75E09 .
- RawUmber = 0xA75E09,
- /// A color described as Vivid Blue with a HEX value of #152EFF .
- VividBlue = 0x152EFF,
- /// A color described as Deep Lavender with a HEX value of #8D5EB7 .
- DeepLavender = 0x8D5EB7,
- /// A color described as Dull Teal with a HEX value of #5F9E8F .
- DullTeal = 0x5F9E8F,
- /// A color described as Light Greenish Blue with a HEX value of #63F7B4 .
- LightGreenishBlue = 0x63F7B4,
- /// A color described as Mud Green with a HEX value of #606602 .
- MudGreen = 0x606602,
- /// A color described as Pinky with a HEX value of #FC86AA .
- Pinky = 0xFC86AA,
- /// A color described as Red Wine with a HEX value of #8C0034 .
- RedWine = 0x8C0034,
- /// A color described as Shit Green with a HEX value of #758000 .
- ShitGreen = 0x758000,
- /// A color described as Tan Brown with a HEX value of #AB7E4C .
- TanBrown = 0xAB7E4C,
- /// A color described as Darkblue with a HEX value of #030764 .
- Darkblue = 0x030764,
- /// A color described as Rosa with a HEX value of #FE86A4 .
- Rosa = 0xFE86A4,
- /// A color described as Lipstick with a HEX value of #D5174E .
- Lipstick = 0xD5174E,
- /// A color described as Pale Mauve with a HEX value of #FED0FC .
- PaleMauve = 0xFED0FC,
- /// A color described as Claret with a HEX value of #680018 .
- Claret = 0x680018,
- /// A color described as Dandelion with a HEX value of #FEDF08 .
- Dandelion = 0xFEDF08,
- /// A color described as Orangered with a HEX value of #FE420F .
- Orangered = 0xFE420F,
- /// A color described as Poop Green with a HEX value of #6F7C00 .
- PoopGreen = 0x6F7C00,
- /// A color described as Ruby with a HEX value of #CA0147 .
- Ruby = 0xCA0147,
- /// A color described as Dark with a HEX value of #1B2431 .
- Dark = 0x1B2431,
- /// A color described as Greenish Turquoise with a HEX value of #00FBB0 .
- GreenishTurquoise = 0x00FBB0,
- /// A color described as Pastel Red with a HEX value of #DB5856 .
- PastelRed = 0xDB5856,
- /// A color described as Piss Yellow with a HEX value of #DDD618 .
- PissYellow = 0xDDD618,
- /// A color described as Bright Cyan with a HEX value of #41FDFE .
- BrightCyan = 0x41FDFE,
- /// A color described as Dark Coral with a HEX value of #CF524E .
- DarkCoral = 0xCF524E,
- /// A color described as Algae Green with a HEX value of #21C36F .
- AlgaeGreen = 0x21C36F,
- /// A color described as Darkish Red with a HEX value of #A90308 .
- DarkishRed = 0xA90308,
- /// A color described as Reddy Brown with a HEX value of #6E1005 .
- ReddyBrown = 0x6E1005,
- /// A color described as Blush Pink with a HEX value of #FE828C .
- BlushPink = 0xFE828C,
- /// A color described as Camouflage Green with a HEX value of #4B6113 .
- CamouflageGreen = 0x4B6113,
- /// A color described as Lawn Green with a HEX value of #4DA409 .
- LawnGreen = 0x4DA409,
- /// A color described as Putty with a HEX value of #BEAE8A .
- Putty = 0xBEAE8A,
- /// A color described as Vibrant Blue with a HEX value of #0339F8 .
- VibrantBlue = 0x0339F8,
- /// A color described as Dark Sand with a HEX value of #A88F59 .
- DarkSand = 0xA88F59,
- /// A color described as Purple/Blue with a HEX value of #5D21D0 .
- PurpleBlue = 0x5D21D0,
- /// A color described as Saffron with a HEX value of #FEB209 .
- Saffron = 0xFEB209,
- /// A color described as Twilight with a HEX value of #4E518B .
- Twilight = 0x4E518B,
- /// A color described as Warm Brown with a HEX value of #964E02 .
- WarmBrown = 0x964E02,
- /// A color described as Bluegrey with a HEX value of #85A3B2 .
- Bluegrey = 0x85A3B2,
- /// A color described as Bubble Gum Pink with a HEX value of #FF69AF .
- BubbleGumPink = 0xFF69AF,
- /// A color described as Duck Egg Blue with a HEX value of #C3FBF4 .
- DuckEggBlue = 0xC3FBF4,
- /// A color described as Greenish Cyan with a HEX value of #2AFEB7 .
- GreenishCyan = 0x2AFEB7,
- /// A color described as Petrol with a HEX value of #005F6A .
- Petrol = 0x005F6A,
- /// A color described as Royal with a HEX value of #0C1793 .
- Royal = 0x0C1793,
- /// A color described as Butter with a HEX value of #FFFF81 .
- Butter = 0xFFFF81,
- /// A color described as Dusty Orange with a HEX value of #F0833A .
- DustyOrange = 0xF0833A,
- /// A color described as Off Yellow with a HEX value of #F1F33F .
- OffYellow = 0xF1F33F,
- /// A color described as Pale Olive Green with a HEX value of #B1D27B .
- PaleOliveGreen = 0xB1D27B,
- /// A color described as Orangish with a HEX value of #FC824A .
- Orangish = 0xFC824A,
- /// A color described as Leaf with a HEX value of #71AA34 .
- Leaf = 0x71AA34,
- /// A color described as Light Blue Grey with a HEX value of #B7C9E2 .
- LightBlueGrey = 0xB7C9E2,
- /// A color described as Dried Blood with a HEX value of #4B0101 .
- DriedBlood = 0x4B0101,
- /// A color described as Lightish Purple with a HEX value of #A552E6 .
- LightishPurple = 0xA552E6,
- /// A color described as Rusty Red with a HEX value of #AF2F0D .
- RustyRed = 0xAF2F0D,
- /// A color described as Lavender Blue with a HEX value of #8B88F8 .
- LavenderBlue = 0x8B88F8,
- /// A color described as Light Grass Green with a HEX value of #9AF764 .
- LightGrassGreen = 0x9AF764,
- /// A color described as Light Mint Green with a HEX value of #A6FBB2 .
- LightMintGreen = 0xA6FBB2,
- /// A color described as Sunflower with a HEX value of #FFC512 .
- Sunflower = 0xFFC512,
- /// A color described as Velvet with a HEX value of #750851 .
- Velvet = 0x750851,
- /// A color described as Brick Orange with a HEX value of #C14A09 .
- BrickOrange = 0xC14A09,
- /// A color described as Lightish Red with a HEX value of #FE2F4A .
- LightishRed = 0xFE2F4A,
- /// A color described as Pure Blue with a HEX value of #0203E2 .
- PureBlue = 0x0203E2,
- /// A color described as Twilight Blue with a HEX value of #0A437A .
- TwilightBlue = 0x0A437A,
- /// A color described as Violet Red with a HEX value of #A50055 .
- VioletRed = 0xA50055,
- /// A color described as Yellowy Brown with a HEX value of #AE8B0C .
- YellowyBrown = 0xAE8B0C,
- /// A color described as Carnation with a HEX value of #FD798F .
- Carnation = 0xFD798F,
- /// A color described as Muddy Yellow with a HEX value of #BFAC05 .
- MuddyYellow = 0xBFAC05,
- /// A color described as Dark Seafoam Green with a HEX value of #3EAF76 .
- DarkSeafoamGreen = 0x3EAF76,
- /// A color described as Deep Rose with a HEX value of #C74767 .
- DeepRose = 0xC74767,
- /// A color described as Dusty Red with a HEX value of #B9484E .
- DustyRed = 0xB9484E,
- /// A color described as Grey/Blue with a HEX value of #647D8E .
- GreyBlue = 0x647D8E,
- /// A color described as Lemon Lime with a HEX value of #BFFE28 .
- LemonLime = 0xBFFE28,
- /// A color described as Purple/Pink with a HEX value of #D725DE .
- PurplePink = 0xD725DE,
- /// A color described as Brown Yellow with a HEX value of #B29705 .
- BrownYellow = 0xB29705,
- /// A color described as Purple Brown with a HEX value of #673A3F .
- PurpleBrown = 0x673A3F,
- /// A color described as Wisteria with a HEX value of #A87DC2 .
- Wisteria = 0xA87DC2,
- /// A color described as Banana Yellow with a HEX value of #FAFE4B .
- BananaYellow = 0xFAFE4B,
- /// A color described as Lipstick Red with a HEX value of #C0022F .
- LipstickRed = 0xC0022F,
- /// A color described as Water Blue with a HEX value of #0E87CC .
- WaterBlue = 0x0E87CC,
- /// A color described as Brown Grey with a HEX value of #8D8468 .
- BrownGrey = 0x8D8468,
- /// A color described as Vibrant Purple with a HEX value of #AD03DE .
- VibrantPurple = 0xAD03DE,
- /// A color described as Baby Green with a HEX value of #8CFF9E .
- BabyGreen = 0x8CFF9E,
- /// A color described as Barf Green with a HEX value of #94AC02 .
- BarfGreen = 0x94AC02,
- /// A color described as Eggshell Blue with a HEX value of #C4FFF7 .
- EggshellBlue = 0xC4FFF7,
- /// A color described as Sandy Yellow with a HEX value of #FDEE73 .
- SandyYellow = 0xFDEE73,
- /// A color described as Cool Green with a HEX value of #33B864 .
- CoolGreen = 0x33B864,
- /// A color described as Pale with a HEX value of #FFF9D0 .
- Pale = 0xFFF9D0,
- /// A color described as Blue/Grey with a HEX value of #758DA3 .
- BlueGrey = 0x758DA3,
- /// A color described as Hot Magenta with a HEX value of #F504C9 .
- HotMagenta = 0xF504C9,
- /// A color described as Greyblue with a HEX value of #77A1B5 .
- Greyblue = 0x77A1B5,
- /// A color described as Purpley with a HEX value of #8756E4 .
- Purpley = 0x8756E4,
- /// A color described as Baby Shit Green with a HEX value of #889717 .
- BabyShitGreen = 0x889717,
- /// A color described as Brownish Pink with a HEX value of #C27E79 .
- BrownishPink = 0xC27E79,
- /// A color described as Dark Aquamarine with a HEX value of #017371 .
- DarkAquamarine = 0x017371,
- /// A color described as Diarrhea with a HEX value of #9F8303 .
- Diarrhea = 0x9F8303,
- /// A color described as Light Mustard with a HEX value of #F7D560 .
- LightMustard = 0xF7D560,
- /// A color described as Pale Sky Blue with a HEX value of #BDF6FE .
- PaleSkyBlue = 0xBDF6FE,
- /// A color described as Turtle Green with a HEX value of #75B84F .
- TurtleGreen = 0x75B84F,
- /// A color described as Bright Olive with a HEX value of #9CBB04 .
- BrightOlive = 0x9CBB04,
- /// A color described as Dark Grey Blue with a HEX value of #29465B .
- DarkGreyBlue = 0x29465B,
- /// A color described as Greeny Brown with a HEX value of #696006 .
- GreenyBrown = 0x696006,
- /// A color described as Lemon Green with a HEX value of #ADF802 .
- LemonGreen = 0xADF802,
- /// A color described as Light Periwinkle with a HEX value of #C1C6FC .
- LightPeriwinkle = 0xC1C6FC,
- /// A color described as Seaweed Green with a HEX value of #35AD6B .
- SeaweedGreen = 0x35AD6B,
- /// A color described as Sunshine Yellow with a HEX value of #FFFD37 .
- SunshineYellow = 0xFFFD37,
- /// A color described as Ugly Purple with a HEX value of #A442A0 .
- UglyPurple = 0xA442A0,
- /// A color described as Medium Pink with a HEX value of #F36196 .
- MediumPink = 0xF36196,
- /// A color described as Puke Brown with a HEX value of #947706 .
- PukeBrown = 0x947706,
- /// A color described as Very Light Pink with a HEX value of #FFF4F2 .
- VeryLightPink = 0xFFF4F2,
- /// A color described as Viridian with a HEX value of #1E9167 .
- Viridian = 0x1E9167,
- /// A color described as Bile with a HEX value of #B5C306 .
- Bile = 0xB5C306,
- /// A color described as Faded Yellow with a HEX value of #FEFF7F .
- FadedYellow = 0xFEFF7F,
- /// A color described as Very Pale Green with a HEX value of #CFFDBC .
- VeryPaleGreen = 0xCFFDBC,
- /// A color described as Vibrant Green with a HEX value of #0ADD08 .
- VibrantGreen = 0x0ADD08,
- /// A color described as Bright Lime with a HEX value of #87FD05 .
- BrightLime = 0x87FD05,
- /// A color described as Spearmint with a HEX value of #1EF876 .
- Spearmint = 0x1EF876,
- /// A color described as Light Aquamarine with a HEX value of #7BFDC7 .
- LightAquamarine = 0x7BFDC7,
- /// A color described as Light Sage with a HEX value of #BCECAC .
- LightSage = 0xBCECAC,
- /// A color described as Yellowgreen with a HEX value of #BBF90F .
- Yellowgreen = 0xBBF90F,
- /// A color described as Baby Poo with a HEX value of #AB9004 .
- BabyPoo = 0xAB9004,
- /// A color described as Dark Seafoam with a HEX value of #1FB57A .
- DarkSeafoam = 0x1FB57A,
- /// A color described as Deep Teal with a HEX value of #00555A .
- DeepTeal = 0x00555A,
- /// A color described as Heather with a HEX value of #A484AC .
- Heather = 0xA484AC,
- /// A color described as Rust Orange with a HEX value of #C45508 .
- RustOrange = 0xC45508,
- /// A color described as Dirty Blue with a HEX value of #3F829D .
- DirtyBlue = 0x3F829D,
- /// A color described as Fern Green with a HEX value of #548D44 .
- FernGreen = 0x548D44,
- /// A color described as Bright Lilac with a HEX value of #C95EFB .
- BrightLilac = 0xC95EFB,
- /// A color described as Weird Green with a HEX value of #3AE57F .
- WeirdGreen = 0x3AE57F,
- /// A color described as Peacock Blue with a HEX value of #016795 .
- PeacockBlue = 0x016795,
- /// A color described as Avocado Green with a HEX value of #87A922 .
- AvocadoGreen = 0x87A922,
- /// A color described as Faded Orange with a HEX value of #F0944D .
- FadedOrange = 0xF0944D,
- /// A color described as Grape Purple with a HEX value of #5D1451 .
- GrapePurple = 0x5D1451,
- /// A color described as Hot Green with a HEX value of #25FF29 .
- HotGreen = 0x25FF29,
- /// A color described as Lime Yellow with a HEX value of #D0FE1D .
- LimeYellow = 0xD0FE1D,
- /// A color described as Mango with a HEX value of #FFA62B .
- Mango = 0xFFA62B,
- /// A color described as Shamrock with a HEX value of #01B44C .
- Shamrock = 0x01B44C,
- /// A color described as Bubblegum with a HEX value of #FF6CB5 .
- Bubblegum = 0xFF6CB5,
- /// A color described as Purplish Brown with a HEX value of #6B4247 .
- PurplishBrown = 0x6B4247,
- /// A color described as Vomit Yellow with a HEX value of #C7C10C .
- VomitYellow = 0xC7C10C,
- /// A color described as Pale Cyan with a HEX value of #B7FFFA .
- PaleCyan = 0xB7FFFA,
- /// A color described as Key Lime with a HEX value of #AEFF6E .
- KeyLime = 0xAEFF6E,
- /// A color described as Tomato Red with a HEX value of #EC2D01 .
- TomatoRed = 0xEC2D01,
- /// A color described as Lightgreen with a HEX value of #76FF7B .
- Lightgreen = 0x76FF7B,
- /// A color described as Merlot with a HEX value of #730039 .
- Merlot = 0x730039,
- /// A color described as Night Blue with a HEX value of #040348 .
- NightBlue = 0x040348,
- /// A color described as Purpleish Pink with a HEX value of #DF4EC8 .
- PurpleishPink = 0xDF4EC8,
- /// A color described as Apple with a HEX value of #6ECB3C .
- Apple = 0x6ECB3C,
- /// A color described as Baby Poop Green with a HEX value of #8F9805 .
- BabyPoopGreen = 0x8F9805,
- /// A color described as Green Apple with a HEX value of #5EDC1F .
- GreenApple = 0x5EDC1F,
- /// A color described as Heliotrope with a HEX value of #D94FF5 .
- Heliotrope = 0xD94FF5,
- /// A color described as Yellow/Green with a HEX value of #C8FD3D .
- YellowGreen = 0xC8FD3D,
- /// A color described as Almost Black with a HEX value of #070D0D .
- AlmostBlack = 0x070D0D,
- /// A color described as Cool Blue with a HEX value of #4984B8 .
- CoolBlue = 0x4984B8,
- /// A color described as Leafy Green with a HEX value of #51B73B .
- LeafyGreen = 0x51B73B,
- /// A color described as Mustard Brown with a HEX value of #AC7E04 .
- MustardBrown = 0xAC7E04,
- /// A color described as Dusk with a HEX value of #4E5481 .
- Dusk = 0x4E5481,
- /// A color described as Dull Brown with a HEX value of #876E4B .
- DullBrown = 0x876E4B,
- /// A color described as Frog Green with a HEX value of #58BC08 .
- FrogGreen = 0x58BC08,
- /// A color described as Vivid Green with a HEX value of #2FEF10 .
- VividGreen = 0x2FEF10,
- /// A color described as Bright Light Green with a HEX value of #2DFE54 .
- BrightLightGreen = 0x2DFE54,
- /// A color described as Fluro Green with a HEX value of #0AFF02 .
- FluroGreen = 0x0AFF02,
- /// A color described as Kiwi with a HEX value of #9CEF43 .
- Kiwi = 0x9CEF43,
- /// A color described as Seaweed with a HEX value of #18D17B .
- Seaweed = 0x18D17B,
- /// A color described as Navy Green with a HEX value of #35530A .
- NavyGreen = 0x35530A,
- /// A color described as Ultramarine Blue with a HEX value of #1805DB .
- UltramarineBlue = 0x1805DB,
- /// A color described as Iris with a HEX value of #6258C4 .
- Iris = 0x6258C4,
- /// A color described as Pastel Orange with a HEX value of #FF964F .
- PastelOrange = 0xFF964F,
- /// A color described as Yellowish Orange with a HEX value of #FFAB0F .
- YellowishOrange = 0xFFAB0F,
- /// A color described as Perrywinkle with a HEX value of #8F8CE7 .
- Perrywinkle = 0x8F8CE7,
- /// A color described as Tealish with a HEX value of #24BCA8 .
- Tealish = 0x24BCA8,
- /// A color described as Dark Plum with a HEX value of #3F012C .
- DarkPlum = 0x3F012C,
- /// A color described as Pear with a HEX value of #CBF85F .
- Pear = 0xCBF85F,
- /// A color described as Pinkish Orange with a HEX value of #FF724C .
- PinkishOrange = 0xFF724C,
- /// A color described as Midnight Purple with a HEX value of #280137 .
- MidnightPurple = 0x280137,
- /// A color described as Light Urple with a HEX value of #B36FF6 .
- LightUrple = 0xB36FF6,
- /// A color described as Dark Mint with a HEX value of #48C072 .
- DarkMint = 0x48C072,
- /// A color described as Greenish Tan with a HEX value of #BCCB7A .
- GreenishTan = 0xBCCB7A,
- /// A color described as Light Burgundy with a HEX value of #A8415B .
- LightBurgundy = 0xA8415B,
- /// A color described as Turquoise Blue with a HEX value of #06B1C4 .
- TurquoiseBlue = 0x06B1C4,
- /// A color described as Ugly Pink with a HEX value of #CD7584 .
- UglyPink = 0xCD7584,
- /// A color described as Sandy with a HEX value of #F1DA7A .
- Sandy = 0xF1DA7A,
- /// A color described as Electric Pink with a HEX value of #FF0490 .
- ElectricPink = 0xFF0490,
- /// A color described as Muted Purple with a HEX value of #805B87 .
- MutedPurple = 0x805B87,
- /// A color described as Mid Green with a HEX value of #50A747 .
- MidGreen = 0x50A747,
- /// A color described as Greyish with a HEX value of #A8A495 .
- Greyish = 0xA8A495,
- /// A color described as Neon Yellow with a HEX value of #CFFF04 .
- NeonYellow = 0xCFFF04,
- /// A color described as Banana with a HEX value of #FFFF7E .
- Banana = 0xFFFF7E,
- /// A color described as Carnation Pink with a HEX value of #FF7FA7 .
- CarnationPink = 0xFF7FA7,
- /// A color described as Tomato with a HEX value of #EF4026 .
- Tomato = 0xEF4026,
- /// A color described as Sea with a HEX value of #3C9992 .
- Sea = 0x3C9992,
- /// A color described as Muddy Brown with a HEX value of #886806 .
- MuddyBrown = 0x886806,
- /// A color described as Turquoise Green with a HEX value of #04F489 .
- TurquoiseGreen = 0x04F489,
- /// A color described as Buff with a HEX value of #FEF69E .
- Buff = 0xFEF69E,
- /// A color described as Fawn with a HEX value of #CFAF7B .
- Fawn = 0xCFAF7B,
- /// A color described as Muted Blue with a HEX value of #3B719F .
- MutedBlue = 0x3B719F,
- /// A color described as Pale Rose with a HEX value of #FDC1C5 .
- PaleRose = 0xFDC1C5,
- /// A color described as Dark Mint Green with a HEX value of #20C073 .
- DarkMintGreen = 0x20C073,
- /// A color described as Amethyst with a HEX value of #9B5FC0 .
- Amethyst = 0x9B5FC0,
- /// A color described as Blue/Green with a HEX value of #0F9B8E .
- BlueGreen = 0x0F9B8E,
- /// A color described as Chestnut with a HEX value of #742802 .
- Chestnut = 0x742802,
- /// A color described as Sick Green with a HEX value of #9DB92C .
- SickGreen = 0x9DB92C,
- /// A color described as Pea with a HEX value of #A4BF20 .
- Pea = 0xA4BF20,
- /// A color described as Rusty Orange with a HEX value of #CD5909 .
- RustyOrange = 0xCD5909,
- /// A color described as Stone with a HEX value of #ADA587 .
- Stone = 0xADA587,
- /// A color described as Rose Red with a HEX value of #BE013C .
- RoseRed = 0xBE013C,
- /// A color described as Pale Aqua with a HEX value of #B8FFEB .
- PaleAqua = 0xB8FFEB,
- /// A color described as Deep Orange with a HEX value of #DC4D01 .
- DeepOrange = 0xDC4D01,
- /// A color described as Earth with a HEX value of #A2653E .
- Earth = 0xA2653E,
- /// A color described as Mossy Green with a HEX value of #638B27 .
- MossyGreen = 0x638B27,
- /// A color described as Grassy Green with a HEX value of #419C03 .
- GrassyGreen = 0x419C03,
- /// A color described as Pale Lime Green with a HEX value of #B1FF65 .
- PaleLimeGreen = 0xB1FF65,
- /// A color described as Light Grey Blue with a HEX value of #9DBCD4 .
- LightGreyBlue = 0x9DBCD4,
- /// A color described as Pale Grey with a HEX value of #FDFDFE .
- PaleGrey = 0xFDFDFE,
- /// A color described as Asparagus with a HEX value of #77AB56 .
- Asparagus = 0x77AB56,
- /// A color described as Blueberry with a HEX value of #464196 .
- Blueberry = 0x464196,
- /// A color described as Purple Red with a HEX value of #990147 .
- PurpleRed = 0x990147,
- /// A color described as Pale Lime with a HEX value of #BEFD73 .
- PaleLime = 0xBEFD73,
- /// A color described as Greenish Teal with a HEX value of #32BF84 .
- GreenishTeal = 0x32BF84,
- /// A color described as Caramel with a HEX value of #AF6F09 .
- Caramel = 0xAF6F09,
- /// A color described as Deep Magenta with a HEX value of #A0025C .
- DeepMagenta = 0xA0025C,
- /// A color described as Light Peach with a HEX value of #FFD8B1 .
- LightPeach = 0xFFD8B1,
- /// A color described as Milk Chocolate with a HEX value of #7F4E1E .
- MilkChocolate = 0x7F4E1E,
- /// A color described as Ocher with a HEX value of #BF9B0C .
- Ocher = 0xBF9B0C,
- /// A color described as Off Green with a HEX value of #6BA353 .
- OffGreen = 0x6BA353,
- /// A color described as Purply Pink with a HEX value of #F075E6 .
- PurplyPink = 0xF075E6,
- /// A color described as Lightblue with a HEX value of #7BC8F6 .
- Lightblue = 0x7BC8F6,
- /// A color described as Dusky Blue with a HEX value of #475F94 .
- DuskyBlue = 0x475F94,
- /// A color described as Golden with a HEX value of #F5BF03 .
- Golden = 0xF5BF03,
- /// A color described as Light Beige with a HEX value of #FFFEB6 .
- LightBeige = 0xFFFEB6,
- /// A color described as Butter Yellow with a HEX value of #FFFD74 .
- ButterYellow = 0xFFFD74,
- /// A color described as Dusky Purple with a HEX value of #895B7B .
- DuskyPurple = 0x895B7B,
- /// A color described as French Blue with a HEX value of #436BAD .
- FrenchBlue = 0x436BAD,
- /// A color described as Ugly Yellow with a HEX value of #D0C101 .
- UglyYellow = 0xD0C101,
- /// A color described as Greeny Yellow with a HEX value of #C6F808 .
- GreenyYellow = 0xC6F808,
- /// A color described as Orangish Red with a HEX value of #F43605 .
- OrangishRed = 0xF43605,
- /// A color described as Shamrock Green with a HEX value of #02C14D .
- ShamrockGreen = 0x02C14D,
- /// A color described as Orangish Brown with a HEX value of #B25F03 .
- OrangishBrown = 0xB25F03,
- /// A color described as Tree Green with a HEX value of #2A7E19 .
- TreeGreen = 0x2A7E19,
- /// A color described as Deep Violet with a HEX value of #490648 .
- DeepViolet = 0x490648,
- /// A color described as Gunmetal with a HEX value of #536267 .
- Gunmetal = 0x536267,
- /// A color described as Blue/Purple with a HEX value of #5A06EF .
- BluePurple = 0x5A06EF,
- /// A color described as Cherry with a HEX value of #CF0234 .
- Cherry = 0xCF0234,
- /// A color described as Sandy Brown with a HEX value of #C4A661 .
- SandyBrown = 0xC4A661,
- /// A color described as Warm Grey with a HEX value of #978A84 .
- WarmGrey = 0x978A84,
- /// A color described as Dark Indigo with a HEX value of #1F0954 .
- DarkIndigo = 0x1F0954,
- /// A color described as Midnight with a HEX value of #03012D .
- Midnight = 0x03012D,
- /// A color described as Bluey Green with a HEX value of #2BB179 .
- BlueyGreen = 0x2BB179,
- /// A color described as Grey Pink with a HEX value of #C3909B .
- GreyPink = 0xC3909B,
- /// A color described as Soft Purple with a HEX value of #A66FB5 .
- SoftPurple = 0xA66FB5,
- /// A color described as Blood with a HEX value of #770001 .
- Blood = 0x770001,
- /// A color described as Brown Red with a HEX value of #922B05 .
- BrownRed = 0x922B05,
- /// A color described as Medium Grey with a HEX value of #7D7F7C .
- MediumGrey = 0x7D7F7C,
- /// A color described as Berry with a HEX value of #990F4B .
- Berry = 0x990F4B,
- /// A color described as Poo with a HEX value of #8F7303 .
- Poo = 0x8F7303,
- /// A color described as Purpley Pink with a HEX value of #C83CB9 .
- PurpleyPink = 0xC83CB9,
- /// A color described as Light Salmon with a HEX value of #FEA993 .
- LightSalmon = 0xFEA993,
- /// A color described as Snot with a HEX value of #ACBB0D .
- Snot = 0xACBB0D,
- /// A color described as Easter Purple with a HEX value of #C071FE .
- EasterPurple = 0xC071FE,
- /// A color described as Light Yellow Green with a HEX value of #CCFD7F .
- LightYellowGreen = 0xCCFD7F,
- /// A color described as Dark Navy Blue with a HEX value of #00022E .
- DarkNavyBlue = 0x00022E,
- /// A color described as Drab with a HEX value of #828344 .
- Drab = 0x828344,
- /// A color described as Light Rose with a HEX value of #FFC5CB .
- LightRose = 0xFFC5CB,
- /// A color described as Rouge with a HEX value of #AB1239 .
- Rouge = 0xAB1239,
- /// A color described as Purplish Red with a HEX value of #B0054B .
- PurplishRed = 0xB0054B,
- /// A color described as Slime Green with a HEX value of #99CC04 .
- SlimeGreen = 0x99CC04,
- /// A color described as Baby Poop with a HEX value of #937C00 .
- BabyPoop = 0x937C00,
- /// A color described as Irish Green with a HEX value of #019529 .
- IrishGreen = 0x019529,
- /// A color described as Pink/Purple with a HEX value of #EF1DE7 .
- PinkPurple = 0xEF1DE7,
- /// A color described as Dark Navy with a HEX value of #000435 .
- DarkNavy = 0x000435,
- /// A color described as Greeny Blue with a HEX value of #42B395 .
- GreenyBlue = 0x42B395,
- /// A color described as Light Plum with a HEX value of #9D5783 .
- LightPlum = 0x9D5783,
- /// A color described as Pinkish Grey with a HEX value of #C8ACA9 .
- PinkishGrey = 0xC8ACA9,
- /// A color described as Dirty Orange with a HEX value of #C87606 .
- DirtyOrange = 0xC87606,
- /// A color described as Rust Red with a HEX value of #AA2704 .
- RustRed = 0xAA2704,
- /// A color described as Pale Lilac with a HEX value of #E4CBFF .
- PaleLilac = 0xE4CBFF,
- /// A color described as Orangey Red with a HEX value of #FA4224 .
- OrangeyRed = 0xFA4224,
- /// A color described as Primary Blue with a HEX value of #0804F9 .
- PrimaryBlue = 0x0804F9,
- /// A color described as Kermit Green with a HEX value of #5CB200 .
- KermitGreen = 0x5CB200,
- /// A color described as Brownish Purple with a HEX value of #76424E .
- BrownishPurple = 0x76424E,
- /// A color described as Murky Green with a HEX value of #6C7A0E .
- MurkyGreen = 0x6C7A0E,
- /// A color described as Wheat with a HEX value of #FBDD7E .
- Wheat = 0xFBDD7E,
- /// A color described as Very Dark Purple with a HEX value of #2A0134 .
- VeryDarkPurple = 0x2A0134,
- /// A color described as Bottle Green with a HEX value of #044A05 .
- BottleGreen = 0x044A05,
- /// A color described as Watermelon with a HEX value of #FD4659 .
- Watermelon = 0xFD4659,
- /// A color described as Deep Sky Blue with a HEX value of #0D75F8 .
- DeepSkyBlue = 0x0D75F8,
- /// A color described as Fire Engine Red with a HEX value of #FE0002 .
- FireEngineRed = 0xFE0002,
- /// A color described as Yellow Ochre with a HEX value of #CB9D06 .
- YellowOchre = 0xCB9D06,
- /// A color described as Pumpkin Orange with a HEX value of #FB7D07 .
- PumpkinOrange = 0xFB7D07,
- /// A color described as Pale Olive with a HEX value of #B9CC81 .
- PaleOlive = 0xB9CC81,
- /// A color described as Light Lilac with a HEX value of #EDC8FF .
- LightLilac = 0xEDC8FF,
- /// A color described as Lightish Green with a HEX value of #61E160 .
- LightishGreen = 0x61E160,
- /// A color described as Carolina Blue with a HEX value of #8AB8FE .
- CarolinaBlue = 0x8AB8FE,
- /// A color described as Mulberry with a HEX value of #920A4E .
- Mulberry = 0x920A4E,
- /// A color described as Shocking Pink with a HEX value of #FE02A2 .
- ShockingPink = 0xFE02A2,
- /// A color described as Auburn with a HEX value of #9A3001 .
- Auburn = 0x9A3001,
- /// A color described as Bright Lime Green with a HEX value of #65FE08 .
- BrightLimeGreen = 0x65FE08,
- /// A color described as Celadon with a HEX value of #BEFDB7 .
- Celadon = 0xBEFDB7,
- /// A color described as Pinkish Brown with a HEX value of #B17261 .
- PinkishBrown = 0xB17261,
- /// A color described as Poo Brown with a HEX value of #885F01 .
- PooBrown = 0x885F01,
- /// A color described as Bright Sky Blue with a HEX value of #02CCFE .
- BrightSkyBlue = 0x02CCFE,
- /// A color described as Celery with a HEX value of #C1FD95 .
- Celery = 0xC1FD95,
- /// A color described as Dirt Brown with a HEX value of #836539 .
- DirtBrown = 0x836539,
- /// A color described as Strawberry with a HEX value of #FB2943 .
- Strawberry = 0xFB2943,
- /// A color described as Dark Lime with a HEX value of #84B701 .
- DarkLime = 0x84B701,
- /// A color described as Copper with a HEX value of #B66325 .
- Copper = 0xB66325,
- /// A color described as Medium Brown with a HEX value of #7F5112 .
- MediumBrown = 0x7F5112,
- /// A color described as Muted Green with a HEX value of #5FA052 .
- MutedGreen = 0x5FA052,
- /// A color described as Robin'S Egg with a HEX value of #6DEDFD .
- RobinsEgg = 0x6DEDFD,
- /// A color described as Bright Aqua with a HEX value of #0BF9EA .
- BrightAqua = 0x0BF9EA,
- /// A color described as Bright Lavender with a HEX value of #C760FF .
- BrightLavender = 0xC760FF,
- /// A color described as Ivory with a HEX value of #FFFFCB .
- Ivory = 0xFFFFCB,
- /// A color described as Very Light Purple with a HEX value of #F6CEFC .
- VeryLightPurple = 0xF6CEFC,
- /// A color described as Light Navy with a HEX value of #155084 .
- LightNavy = 0x155084,
- /// A color described as Pink Red with a HEX value of #F5054F .
- PinkRed = 0xF5054F,
- /// A color described as Olive Brown with a HEX value of #645403 .
- OliveBrown = 0x645403,
- /// A color described as Poop Brown with a HEX value of #7A5901 .
- PoopBrown = 0x7A5901,
- /// A color described as Mustard Green with a HEX value of #A8B504 .
- MustardGreen = 0xA8B504,
- /// A color described as Ocean Green with a HEX value of #3D9973 .
- OceanGreen = 0x3D9973,
- /// A color described as Very Dark Blue with a HEX value of #000133 .
- VeryDarkBlue = 0x000133,
- /// A color described as Dusty Green with a HEX value of #76A973 .
- DustyGreen = 0x76A973,
- /// A color described as Light Navy Blue with a HEX value of #2E5A88 .
- LightNavyBlue = 0x2E5A88,
- /// A color described as Minty Green with a HEX value of #0BF77D .
- MintyGreen = 0x0BF77D,
- /// A color described as Adobe with a HEX value of #BD6C48 .
- Adobe = 0xBD6C48,
- /// A color described as Barney with a HEX value of #AC1DB8 .
- Barney = 0xAC1DB8,
- /// A color described as Jade Green with a HEX value of #2BAF6A .
- JadeGreen = 0x2BAF6A,
- /// A color described as Bright Light Blue with a HEX value of #26F7FD .
- BrightLightBlue = 0x26F7FD,
- /// A color described as Light Lime with a HEX value of #AEFD6C .
- LightLime = 0xAEFD6C,
- /// A color described as Dark Khaki with a HEX value of #9B8F55 .
- DarkKhaki = 0x9B8F55,
- /// A color described as Orange Yellow with a HEX value of #FFAD01 .
- OrangeYellow = 0xFFAD01,
- /// A color described as Ocre with a HEX value of #C69C04 .
- Ocre = 0xC69C04,
- /// A color described as Maize with a HEX value of #F4D054 .
- Maize = 0xF4D054,
- /// A color described as Faded Pink with a HEX value of #DE9DAC .
- FadedPink = 0xDE9DAC,
- /// A color described as British Racing Green with a HEX value of #05480D .
- BritishRacingGreen = 0x05480D,
- /// A color described as Sandstone with a HEX value of #C9AE74 .
- Sandstone = 0xC9AE74,
- /// A color described as Mud Brown with a HEX value of #60460F .
- MudBrown = 0x60460F,
- /// A color described as Light Sea Green with a HEX value of #98F6B0 .
- LightSeaGreen = 0x98F6B0,
- /// A color described as Robin Egg Blue with a HEX value of #8AF1FE .
- RobinEggBlue = 0x8AF1FE,
- /// A color described as Aqua Marine with a HEX value of #2EE8BB .
- AquaMarine = 0x2EE8BB,
- /// A color described as Dark Sea Green with a HEX value of #11875D .
- DarkSeaGreen = 0x11875D,
- /// A color described as Soft Pink with a HEX value of #FDB0C0 .
- SoftPink = 0xFDB0C0,
- /// A color described as Orangey Brown with a HEX value of #B16002 .
- OrangeyBrown = 0xB16002,
- /// A color described as Cherry Red with a HEX value of #F7022A .
- CherryRed = 0xF7022A,
- /// A color described as Burnt Yellow with a HEX value of #D5AB09 .
- BurntYellow = 0xD5AB09,
- /// A color described as Brownish Grey with a HEX value of #86775F .
- BrownishGrey = 0x86775F,
- /// A color described as Camel with a HEX value of #C69F59 .
- Camel = 0xC69F59,
- /// A color described as Purplish Grey with a HEX value of #7A687F .
- PurplishGrey = 0x7A687F,
- /// A color described as Marine with a HEX value of #042E60 .
- Marine = 0x042E60,
- /// A color described as Greyish Pink with a HEX value of #C88D94 .
- GreyishPink = 0xC88D94,
- /// A color described as Pale Turquoise with a HEX value of #A5FBD5 .
- PaleTurquoise = 0xA5FBD5,
- /// A color described as Pastel Yellow with a HEX value of #FFFE71 .
- PastelYellow = 0xFFFE71,
- /// A color described as Bluey Purple with a HEX value of #6241C7 .
- BlueyPurple = 0x6241C7,
- /// A color described as Canary Yellow with a HEX value of #FFFE40 .
- CanaryYellow = 0xFFFE40,
- /// A color described as Faded Red with a HEX value of #D3494E .
- FadedRed = 0xD3494E,
- /// A color described as Sepia with a HEX value of #985E2B .
- Sepia = 0x985E2B,
- /// A color described as Coffee with a HEX value of #A6814C .
- Coffee = 0xA6814C,
- /// A color described as Bright Magenta with a HEX value of #FF08E8 .
- BrightMagenta = 0xFF08E8,
- /// A color described as Mocha with a HEX value of #9D7651 .
- Mocha = 0x9D7651,
- /// A color described as Ecru with a HEX value of #FEFFCA .
- Ecru = 0xFEFFCA,
- /// A color described as Purpleish with a HEX value of #98568D .
- Purpleish = 0x98568D,
- /// A color described as Cranberry with a HEX value of #9E003A .
- Cranberry = 0x9E003A,
- /// A color described as Darkish Green with a HEX value of #287C37 .
- DarkishGreen = 0x287C37,
- /// A color described as Brown Orange with a HEX value of #B96902 .
- BrownOrange = 0xB96902,
- /// A color described as Dusky Rose with a HEX value of #BA6873 .
- DuskyRose = 0xBA6873,
- /// A color described as Melon with a HEX value of #FF7855 .
- Melon = 0xFF7855,
- /// A color described as Sickly Green with a HEX value of #94B21C .
- SicklyGreen = 0x94B21C,
- /// A color described as Silver with a HEX value of #C5C9C7 .
- Silver = 0xC5C9C7,
- /// A color described as Purply Blue with a HEX value of #661AEE .
- PurplyBlue = 0x661AEE,
- /// A color described as Purpleish Blue with a HEX value of #6140EF .
- PurpleishBlue = 0x6140EF,
- /// A color described as Hospital Green with a HEX value of #9BE5AA .
- HospitalGreen = 0x9BE5AA,
- /// A color described as Shit Brown with a HEX value of #7B5804 .
- ShitBrown = 0x7B5804,
- /// A color described as Mid Blue with a HEX value of #276AB3 .
- MidBlue = 0x276AB3,
- /// A color described as Amber with a HEX value of #FEB308 .
- Amber = 0xFEB308,
- /// A color described as Easter Green with a HEX value of #8CFD7E .
- EasterGreen = 0x8CFD7E,
- /// A color described as Soft Blue with a HEX value of #6488EA .
- SoftBlue = 0x6488EA,
- /// A color described as Cerulean Blue with a HEX value of #056EEE .
- CeruleanBlue = 0x056EEE,
- /// A color described as Golden Brown with a HEX value of #B27A01 .
- GoldenBrown = 0xB27A01,
- /// A color described as Bright Turquoise with a HEX value of #0FFEF9 .
- BrightTurquoise = 0x0FFEF9,
- /// A color described as Red Pink with a HEX value of #FA2A55 .
- RedPink = 0xFA2A55,
- /// A color described as Red Purple with a HEX value of #820747 .
- RedPurple = 0x820747,
- /// A color described as Greyish Brown with a HEX value of #7A6A4F .
- GreyishBrown = 0x7A6A4F,
- /// A color described as Vermillion with a HEX value of #F4320C .
- Vermillion = 0xF4320C,
- /// A color described as Russet with a HEX value of #A13905 .
- Russet = 0xA13905,
- /// A color described as Steel Grey with a HEX value of #6F828A .
- SteelGrey = 0x6F828A,
- /// A color described as Lighter Purple with a HEX value of #A55AF4 .
- LighterPurple = 0xA55AF4,
- /// A color described as Bright Violet with a HEX value of #AD0AFD .
- BrightViolet = 0xAD0AFD,
- /// A color described as Prussian Blue with a HEX value of #004577 .
- PrussianBlue = 0x004577,
- /// A color described as Slate Green with a HEX value of #658D6D .
- SlateGreen = 0x658D6D,
- /// A color described as Dirty Pink with a HEX value of #CA7B80 .
- DirtyPink = 0xCA7B80,
- /// A color described as Dark Blue Green with a HEX value of #005249 .
- DarkBlueGreen = 0x005249,
- /// A color described as Pine with a HEX value of #2B5D34 .
- Pine = 0x2B5D34,
- /// A color described as Yellowy Green with a HEX value of #BFF128 .
- YellowyGreen = 0xBFF128,
- /// A color described as Dark Gold with a HEX value of #B59410 .
- DarkGold = 0xB59410,
- /// A color described as Bluish with a HEX value of #2976BB .
- Bluish = 0x2976BB,
- /// A color described as Darkish Blue with a HEX value of #014182 .
- DarkishBlue = 0x014182,
- /// A color described as Dull Red with a HEX value of #BB3F3F .
- DullRed = 0xBB3F3F,
- /// A color described as Pinky Red with a HEX value of #FC2647 .
- PinkyRed = 0xFC2647,
- /// A color described as Bronze with a HEX value of #A87900 .
- Bronze = 0xA87900,
- /// A color described as Pale Teal with a HEX value of #82CBB2 .
- PaleTeal = 0x82CBB2,
- /// A color described as Military Green with a HEX value of #667C3E .
- MilitaryGreen = 0x667C3E,
- /// A color described as Barbie Pink with a HEX value of #FE46A5 .
- BarbiePink = 0xFE46A5,
- /// A color described as Bubblegum Pink with a HEX value of #FE83CC .
- BubblegumPink = 0xFE83CC,
- /// A color described as Pea Soup Green with a HEX value of #94A617 .
- PeaSoupGreen = 0x94A617,
- /// A color described as Dark Mustard with a HEX value of #A88905 .
- DarkMustard = 0xA88905,
- /// A color described as Shit with a HEX value of #7F5F00 .
- Shit = 0x7F5F00,
- /// A color described as Medium Purple with a HEX value of #9E43A2 .
- MediumPurple = 0x9E43A2,
- /// A color described as Very Dark Green with a HEX value of #062E03 .
- VeryDarkGreen = 0x062E03,
- /// A color described as Dirt with a HEX value of #8A6E45 .
- Dirt = 0x8A6E45,
- /// A color described as Dusky Pink with a HEX value of #CC7A8B .
- DuskyPink = 0xCC7A8B,
- /// A color described as Red Violet with a HEX value of #9E0168 .
- RedViolet = 0x9E0168,
- /// A color described as Lemon Yellow with a HEX value of #FDFF38 .
- LemonYellow = 0xFDFF38,
- /// A color described as Pistachio with a HEX value of #C0FA8B .
- Pistachio = 0xC0FA8B,
- /// A color described as Dull Yellow with a HEX value of #EEDC5B .
- DullYellow = 0xEEDC5B,
- /// A color described as Dark Lime Green with a HEX value of #7EBD01 .
- DarkLimeGreen = 0x7EBD01,
- /// A color described as Denim Blue with a HEX value of #3B5B92 .
- DenimBlue = 0x3B5B92,
- /// A color described as Teal Blue with a HEX value of #01889F .
- TealBlue = 0x01889F,
- /// A color described as Lightish Blue with a HEX value of #3D7AFD .
- LightishBlue = 0x3D7AFD,
- /// A color described as Purpley Blue with a HEX value of #5F34E7 .
- PurpleyBlue = 0x5F34E7,
- /// A color described as Light Indigo with a HEX value of #6D5ACF .
- LightIndigo = 0x6D5ACF,
- /// A color described as Swamp Green with a HEX value of #748500 .
- SwampGreen = 0x748500,
- /// A color described as Brown Green with a HEX value of #706C11 .
- BrownGreen = 0x706C11,
- /// A color described as Dark Maroon with a HEX value of #3C0008 .
- DarkMaroon = 0x3C0008,
- /// A color described as Hot Purple with a HEX value of #CB00F5 .
- HotPurple = 0xCB00F5,
- /// A color described as Dark Forest Green with a HEX value of #002D04 .
- DarkForestGreen = 0x002D04,
- /// A color described as Faded Blue with a HEX value of #658CBB .
- FadedBlue = 0x658CBB,
- /// A color described as Drab Green with a HEX value of #749551 .
- DrabGreen = 0x749551,
- /// A color described as Light Lime Green with a HEX value of #B9FF66 .
- LightLimeGreen = 0xB9FF66,
- /// A color described as Snot Green with a HEX value of #9DC100 .
- SnotGreen = 0x9DC100,
- /// A color described as Yellowish with a HEX value of #FAEE66 .
- Yellowish = 0xFAEE66,
- /// A color described as Light Blue Green with a HEX value of #7EFBB3 .
- LightBlueGreen = 0x7EFBB3,
- /// A color described as Bordeaux with a HEX value of #7B002C .
- Bordeaux = 0x7B002C,
- /// A color described as Light Mauve with a HEX value of #C292A1 .
- LightMauve = 0xC292A1,
- /// A color described as Ocean with a HEX value of #017B92 .
- Ocean = 0x017B92,
- /// A color described as Marigold with a HEX value of #FCC006 .
- Marigold = 0xFCC006,
- /// A color described as Muddy Green with a HEX value of #657432 .
- MuddyGreen = 0x657432,
- /// A color described as Dull Orange with a HEX value of #D8863B .
- DullOrange = 0xD8863B,
- /// A color described as Steel with a HEX value of #738595 .
- Steel = 0x738595,
- /// A color described as Electric Purple with a HEX value of #AA23FF .
- ElectricPurple = 0xAA23FF,
- /// A color described as Fluorescent Green with a HEX value of #08FF08 .
- FluorescentGreen = 0x08FF08,
- /// A color described as Yellowish Brown with a HEX value of #9B7A01 .
- YellowishBrown = 0x9B7A01,
- /// A color described as Blush with a HEX value of #F29E8E .
- Blush = 0xF29E8E,
- /// A color described as Soft Green with a HEX value of #6FC276 .
- SoftGreen = 0x6FC276,
- /// A color described as Bright Orange with a HEX value of #FF5B00 .
- BrightOrange = 0xFF5B00,
- /// A color described as Lemon with a HEX value of #FDFF52 .
- Lemon = 0xFDFF52,
- /// A color described as Purple Grey with a HEX value of #866F85 .
- PurpleGrey = 0x866F85,
- /// A color described as Acid Green with a HEX value of #8FFE09 .
- AcidGreen = 0x8FFE09,
- /// A color described as Pale Lavender with a HEX value of #EECFFE .
- PaleLavender = 0xEECFFE,
- /// A color described as Violet Blue with a HEX value of #510AC9 .
- VioletBlue = 0x510AC9,
- /// A color described as Light Forest Green with a HEX value of #4F9153 .
- LightForestGreen = 0x4F9153,
- /// A color described as Burnt Red with a HEX value of #9F2305 .
- BurntRed = 0x9F2305,
- /// A color described as Khaki Green with a HEX value of #728639 .
- KhakiGreen = 0x728639,
- /// A color described as Cerise with a HEX value of #DE0C62 .
- Cerise = 0xDE0C62,
- /// A color described as Faded Purple with a HEX value of #916E99 .
- FadedPurple = 0x916E99,
- /// A color described as Apricot with a HEX value of #FFB16D .
- Apricot = 0xFFB16D,
- /// A color described as Dark Olive Green with a HEX value of #3C4D03 .
- DarkOliveGreen = 0x3C4D03,
- /// A color described as Grey Brown with a HEX value of #7F7053 .
- GreyBrown = 0x7F7053,
- /// A color described as Green Grey with a HEX value of #77926F .
- GreenGrey = 0x77926F,
- /// A color described as True Blue with a HEX value of #010FCC .
- TrueBlue = 0x010FCC,
- /// A color described as Pale Violet with a HEX value of #CEAEFA .
- PaleViolet = 0xCEAEFA,
- /// A color described as Periwinkle Blue with a HEX value of #8F99FB .
- PeriwinkleBlue = 0x8F99FB,
- /// A color described as Light Sky Blue with a HEX value of #C6FCFF .
- LightSkyBlue = 0xC6FCFF,
- /// A color described as Blurple with a HEX value of #5539CC .
- Blurple = 0x5539CC,
- /// A color described as Green Brown with a HEX value of #544E03 .
- GreenBrown = 0x544E03,
- /// A color described as Bluegreen with a HEX value of #017A79 .
- Bluegreen = 0x017A79,
- /// A color described as Bright Teal with a HEX value of #01F9C6 .
- BrightTeal = 0x01F9C6,
- /// A color described as Brownish Yellow with a HEX value of #C9B003 .
- BrownishYellow = 0xC9B003,
- /// A color described as Pea Soup with a HEX value of #929901 .
- PeaSoup = 0x929901,
- /// A color described as Forest with a HEX value of #0B5509 .
- Forest = 0x0B5509,
- /// A color described as Barney Purple with a HEX value of #A00498 .
- BarneyPurple = 0xA00498,
- /// A color described as Ultramarine with a HEX value of #2000B1 .
- Ultramarine = 0x2000B1,
- /// A color described as Purplish with a HEX value of #94568C .
- Purplish = 0x94568C,
- /// A color described as Puke Yellow with a HEX value of #C2BE0E .
- PukeYellow = 0xC2BE0E,
- /// A color described as Bluish Grey with a HEX value of #748B97 .
- BluishGrey = 0x748B97,
- /// A color described as Dark Periwinkle with a HEX value of #665FD1 .
- DarkPeriwinkle = 0x665FD1,
- /// A color described as Dark Lilac with a HEX value of #9C6DA5 .
- DarkLilac = 0x9C6DA5,
- /// A color described as Reddish with a HEX value of #C44240 .
- Reddish = 0xC44240,
- /// A color described as Light Maroon with a HEX value of #A24857 .
- LightMaroon = 0xA24857,
- /// A color described as Dusty Purple with a HEX value of #825F87 .
- DustyPurple = 0x825F87,
- /// A color described as Terra Cotta with a HEX value of #C9643B .
- TerraCotta = 0xC9643B,
- /// A color described as Avocado with a HEX value of #90B134 .
- Avocado = 0x90B134,
- /// A color described as Marine Blue with a HEX value of #01386A .
- MarineBlue = 0x01386A,
- /// A color described as Teal Green with a HEX value of #25A36F .
- TealGreen = 0x25A36F,
- /// A color described as Slate Grey with a HEX value of #59656D .
- SlateGrey = 0x59656D,
- /// A color described as Lighter Green with a HEX value of #75FD63 .
- LighterGreen = 0x75FD63,
- /// A color described as Electric Green with a HEX value of #21FC0D .
- ElectricGreen = 0x21FC0D,
- /// A color described as Dusty Blue with a HEX value of #5A86AD .
- DustyBlue = 0x5A86AD,
- /// A color described as Golden Yellow with a HEX value of #FEC615 .
- GoldenYellow = 0xFEC615,
- /// A color described as Bright Yellow with a HEX value of #FFFD01 .
- BrightYellow = 0xFFFD01,
- /// A color described as Light Lavender with a HEX value of #DFC5FE .
- LightLavender = 0xDFC5FE,
- /// A color described as Umber with a HEX value of #B26400 .
- Umber = 0xB26400,
- /// A color described as Poop with a HEX value of #7F5E00 .
- Poop = 0x7F5E00,
- /// A color described as Dark Peach with a HEX value of #DE7E5D .
- DarkPeach = 0xDE7E5D,
- /// A color described as Jungle Green with a HEX value of #048243 .
- JungleGreen = 0x048243,
- /// A color described as Eggshell with a HEX value of #FFFFD4 .
- Eggshell = 0xFFFFD4,
- /// A color described as Denim with a HEX value of #3B638C .
- Denim = 0x3B638C,
- /// A color described as Yellow Brown with a HEX value of #B79400 .
- YellowBrown = 0xB79400,
- /// A color described as Dull Purple with a HEX value of #84597E .
- DullPurple = 0x84597E,
- /// A color described as Chocolate Brown with a HEX value of #411900 .
- ChocolateBrown = 0x411900,
- /// A color described as Wine Red with a HEX value of #7B0323 .
- WineRed = 0x7B0323,
- /// A color described as Neon Blue with a HEX value of #04D9FF .
- NeonBlue = 0x04D9FF,
- /// A color described as Dirty Green with a HEX value of #667E2C .
- DirtyGreen = 0x667E2C,
- /// A color described as Light Tan with a HEX value of #FBEEAC .
- LightTan = 0xFBEEAC,
- /// A color described as Ice Blue with a HEX value of #D7FFFE .
- IceBlue = 0xD7FFFE,
- /// A color described as Cadet Blue with a HEX value of #4E7496 .
- CadetBlue = 0x4E7496,
- /// A color described as Dark Mauve with a HEX value of #874C62 .
- DarkMauve = 0x874C62,
- /// A color described as Very Light Blue with a HEX value of #D5FFFF .
- VeryLightBlue = 0xD5FFFF,
- /// A color described as Grey Purple with a HEX value of #826D8C .
- GreyPurple = 0x826D8C,
- /// A color described as Pastel Pink with a HEX value of #FFBACD .
- PastelPink = 0xFFBACD,
- /// A color described as Very Light Green with a HEX value of #D1FFBD .
- VeryLightGreen = 0xD1FFBD,
- /// A color described as Dark Sky Blue with a HEX value of #448EE4 .
- DarkSkyBlue = 0x448EE4,
- /// A color described as Evergreen with a HEX value of #05472A .
- Evergreen = 0x05472A,
- /// A color described as Dull Pink with a HEX value of #D5869D .
- DullPink = 0xD5869D,
- /// A color described as Aubergine with a HEX value of #3D0734 .
- Aubergine = 0x3D0734,
- /// A color described as Mahogany with a HEX value of #4A0100 .
- Mahogany = 0x4A0100,
- /// A color described as Reddish Orange with a HEX value of #F8481C .
- ReddishOrange = 0xF8481C,
- /// A color described as Deep Green with a HEX value of #02590F .
- DeepGreen = 0x02590F,
- /// A color described as Vomit Green with a HEX value of #89A203 .
- VomitGreen = 0x89A203,
- /// A color described as Purple Pink with a HEX value of #E03FD8 .
- PurplePinkAlternate = 0xE03FD8,
- /// A color described as Dusty Pink with a HEX value of #D58A94 .
- DustyPink = 0xD58A94,
- /// A color described as Faded Green with a HEX value of #7BB274 .
- FadedGreen = 0x7BB274,
- /// A color described as Camo Green with a HEX value of #526525 .
- CamoGreen = 0x526525,
- /// A color described as Pinky Purple with a HEX value of #C94CBE .
- PinkyPurple = 0xC94CBE,
- /// A color described as Pink Purple with a HEX value of #DB4BDA .
- PinkPurpleAlternate = 0xDB4BDA,
- /// A color described as Brownish Red with a HEX value of #9E3623 .
- BrownishRed = 0x9E3623,
- /// A color described as Dark Rose with a HEX value of #B5485D .
- DarkRose = 0xB5485D,
- /// A color described as Mud with a HEX value of #735C12 .
- Mud = 0x735C12,
- /// A color described as Brownish with a HEX value of #9C6D57 .
- Brownish = 0x9C6D57,
- /// A color described as Emerald Green with a HEX value of #028F1E .
- EmeraldGreen = 0x028F1E,
- /// A color described as Pale Brown with a HEX value of #B1916E .
- PaleBrown = 0xB1916E,
- /// A color described as Dull Blue with a HEX value of #49759C .
- DullBlue = 0x49759C,
- /// A color described as Burnt Umber with a HEX value of #A0450E .
- BurntUmber = 0xA0450E,
- /// A color described as Medium Green with a HEX value of #39AD48 .
- MediumGreen = 0x39AD48,
- /// A color described as Clay with a HEX value of #B66A50 .
- Clay = 0xB66A50,
- /// A color described as Light Aqua with a HEX value of #8CFFDB .
- LightAqua = 0x8CFFDB,
- /// A color described as Light Olive Green with a HEX value of #A4BE5C .
- LightOliveGreen = 0xA4BE5C,
- /// A color described as Brownish Orange with a HEX value of #CB7723 .
- BrownishOrange = 0xCB7723,
- /// A color described as Dark Aqua with a HEX value of #05696B .
- DarkAqua = 0x05696B,
- /// A color described as Purplish Pink with a HEX value of #CE5DAE .
- PurplishPink = 0xCE5DAE,
- /// A color described as Dark Salmon with a HEX value of #C85A53 .
- DarkSalmon = 0xC85A53,
- /// A color described as Greenish Grey with a HEX value of #96AE8D .
- GreenishGrey = 0x96AE8D,
- /// A color described as Jade with a HEX value of #1FA774 .
- Jade = 0x1FA774,
- /// A color described as Ugly Green with a HEX value of #7A9703 .
- UglyGreen = 0x7A9703,
- /// A color described as Dark Beige with a HEX value of #AC9362 .
- DarkBeige = 0xAC9362,
- /// A color described as Emerald with a HEX value of #01A049 .
- Emerald = 0x01A049,
- /// A color described as Pale Red with a HEX value of #D9544D .
- PaleRed = 0xD9544D,
- /// A color described as Light Magenta with a HEX value of #FA5FF7 .
- LightMagenta = 0xFA5FF7,
- /// A color described as Sky with a HEX value of #82CAFC .
- Sky = 0x82CAFC,
- /// A color described as Light Cyan with a HEX value of #ACFFFC .
- LightCyan = 0xACFFFC,
- /// A color described as Yellow Orange with a HEX value of #FCB001 .
- YellowOrange = 0xFCB001,
- /// A color described as Reddish Purple with a HEX value of #910951 .
- ReddishPurple = 0x910951,
- /// A color described as Reddish Pink with a HEX value of #FE2C54 .
- ReddishPink = 0xFE2C54,
- /// A color described as Orchid with a HEX value of #C875C4 .
- Orchid = 0xC875C4,
- /// A color described as Dirty Yellow with a HEX value of #CDC50A .
- DirtyYellow = 0xCDC50A,
- /// A color described as Orange Red with a HEX value of #FD411E .
- OrangeRed = 0xFD411E,
- /// A color described as Deep Red with a HEX value of #9A0200 .
- DeepRed = 0x9A0200,
- /// A color described as Orange Brown with a HEX value of #BE6400 .
- OrangeBrown = 0xBE6400,
- /// A color described as Cobalt Blue with a HEX value of #030AA7 .
- CobaltBlue = 0x030AA7,
- /// A color described as Neon Pink with a HEX value of #FE019A .
- NeonPink = 0xFE019A,
- /// A color described as Rose Pink with a HEX value of #F7879A .
- RosePink = 0xF7879A,
- /// A color described as Greyish Purple with a HEX value of #887191 .
- GreyishPurple = 0x887191,
- /// A color described as Raspberry with a HEX value of #B00149 .
- Raspberry = 0xB00149,
- /// A color described as Aqua Green with a HEX value of #12E193 .
- AquaGreen = 0x12E193,
- /// A color described as Salmon Pink with a HEX value of #FE7B7C .
- SalmonPink = 0xFE7B7C,
- /// A color described as Tangerine with a HEX value of #FF9408 .
- Tangerine = 0xFF9408,
- /// A color described as Brownish Green with a HEX value of #6A6E09 .
- BrownishGreen = 0x6A6E09,
- /// A color described as Red Brown with a HEX value of #8B2E16 .
- RedBrown = 0x8B2E16,
- /// A color described as Greenish Brown with a HEX value of #696112 .
- GreenishBrown = 0x696112,
- /// A color described as Pumpkin with a HEX value of #E17701 .
- Pumpkin = 0xE17701,
- /// A color described as Pine Green with a HEX value of #0A481E .
- PineGreen = 0x0A481E,
- /// A color described as Charcoal with a HEX value of #343837 .
- Charcoal = 0x343837,
- /// A color described as Baby Pink with a HEX value of #FFB7CE .
- BabyPink = 0xFFB7CE,
- /// A color described as Cornflower with a HEX value of #6A79F7 .
- Cornflower = 0x6A79F7,
- /// A color described as Blue Violet with a HEX value of #5D06E9 .
- BlueViolet = 0x5D06E9,
- /// A color described as Chocolate with a HEX value of #3D1C02 .
- Chocolate = 0x3D1C02,
- /// A color described as Greyish Green with a HEX value of #82A67D .
- GreyishGreen = 0x82A67D,
- /// A color described as Scarlet with a HEX value of #BE0119 .
- Scarlet = 0xBE0119,
- /// A color described as Green Yellow with a HEX value of #C9FF27 .
- GreenYellowAlternate = 0xC9FF27,
- /// A color described as Dark Olive with a HEX value of #373E02 .
- DarkOlive = 0x373E02,
- /// A color described as Sienna with a HEX value of #A9561E .
- Sienna = 0xA9561E,
- /// A color described as Pastel Purple with a HEX value of #CAA0FF .
- PastelPurple = 0xCAA0FF,
- /// A color described as Terracotta with a HEX value of #CA6641 .
- Terracotta = 0xCA6641,
- /// A color described as Aqua Blue with a HEX value of #02D8E9 .
- AquaBlue = 0x02D8E9,
- /// A color described as Sage Green with a HEX value of #88B378 .
- SageGreen = 0x88B378,
- /// A color described as Blood Red with a HEX value of #980002 .
- BloodRed = 0x980002,
- /// A color described as Deep Pink with a HEX value of #CB0162 .
- DeepPink = 0xCB0162,
- /// A color described as Grass with a HEX value of #5CAC2D .
- Grass = 0x5CAC2D,
- /// A color described as Moss with a HEX value of #769958 .
- Moss = 0x769958,
- /// A color described as Pastel Blue with a HEX value of #A2BFFE .
- PastelBlue = 0xA2BFFE,
- /// A color described as Bluish Green with a HEX value of #10A674 .
- BluishGreen = 0x10A674,
- /// A color described as Green Blue with a HEX value of #06B48B .
- GreenBlueAlternate = 0x06B48B,
- /// A color described as Dark Tan with a HEX value of #AF884A .
- DarkTan = 0xAF884A,
- /// A color described as Greenish Blue with a HEX value of #0B8B87 .
- GreenishBlue = 0x0B8B87,
- /// A color described as Pale Orange with a HEX value of #FFA756 .
- PaleOrange = 0xFFA756,
- /// A color described as Vomit with a HEX value of #A2A415 .
- Vomit = 0xA2A415,
- /// A color described as Forrest Green with a HEX value of #154406 .
- ForrestGreen = 0x154406,
- /// A color described as Dark Lavender with a HEX value of #856798 .
- DarkLavender = 0x856798,
- /// A color described as Dark Violet with a HEX value of #34013F .
- DarkViolet = 0x34013F,
- /// A color described as Purple Blue with a HEX value of #632DE9 .
- PurpleBlueAlternate = 0x632DE9,
- /// A color described as Dark Cyan with a HEX value of #0A888A .
- DarkCyan = 0x0A888A,
- /// A color described as Olive Drab with a HEX value of #6F7632 .
- OliveDrab = 0x6F7632,
- /// A color described as Pinkish with a HEX value of #D46A7E .
- Pinkish = 0xD46A7E,
- /// A color described as Cobalt with a HEX value of #1E488F .
- Cobalt = 0x1E488F,
- /// A color described as Neon Purple with a HEX value of #BC13FE .
- NeonPurple = 0xBC13FE,
- /// A color described as Light Turquoise with a HEX value of #7EF4CC .
- LightTurquoise = 0x7EF4CC,
- /// A color described as Apple Green with a HEX value of #76CD26 .
- AppleGreen = 0x76CD26,
- /// A color described as Dull Green with a HEX value of #74A662 .
- DullGreen = 0x74A662,
- /// A color described as Wine with a HEX value of #80013F .
- Wine = 0x80013F,
- /// A color described as Powder Blue with a HEX value of #B1D1FC .
- PowderBlue = 0xB1D1FC,
- /// A color described as Off White with a HEX value of #FFFFE4 .
- OffWhite = 0xFFFFE4,
- /// A color described as Electric Blue with a HEX value of #0652FF .
- ElectricBlue = 0x0652FF,
- /// A color described as Dark Turquoise with a HEX value of #045C5A .
- DarkTurquoise = 0x045C5A,
- /// A color described as Blue Purple with a HEX value of #5729CE .
- BluePurpleAlternate = 0x5729CE,
- /// A color described as Azure with a HEX value of #069AF3 .
- Azure = 0x069AF3,
- /// A color described as Bright Red with a HEX value of #FF000D .
- BrightRed = 0xFF000D,
- /// A color described as Pinkish Red with a HEX value of #F10C45 .
- PinkishRed = 0xF10C45,
- /// A color described as Cornflower Blue with a HEX value of #5170D7 .
- CornflowerBlue = 0x5170D7,
- /// A color described as Light Olive with a HEX value of #ACBF69 .
- LightOlive = 0xACBF69,
- /// A color described as Grape with a HEX value of #6C3461 .
- Grape = 0x6C3461,
- /// A color described as Greyish Blue with a HEX value of #5E819D .
- GreyishBlue = 0x5E819D,
- /// A color described as Purplish Blue with a HEX value of #601EF9 .
- PurplishBlue = 0x601EF9,
- /// A color described as Yellowish Green with a HEX value of #B0DD16 .
- YellowishGreen = 0xB0DD16,
- /// A color described as Greenish Yellow with a HEX value of #CDFD02 .
- GreenishYellow = 0xCDFD02,
- /// A color described as Medium Blue with a HEX value of #2C6FBB .
- MediumBlue = 0x2C6FBB,
- /// A color described as Dusty Rose with a HEX value of #C0737A .
- DustyRose = 0xC0737A,
- /// A color described as Light Violet with a HEX value of #D6B4FC .
- LightViolet = 0xD6B4FC,
- /// A color described as Midnight Blue with a HEX value of #020035 .
- MidnightBlue = 0x020035,
- /// A color described as Bluish Purple with a HEX value of #703BE7 .
- BluishPurple = 0x703BE7,
- /// A color described as Red Orange with a HEX value of #FD3C06 .
- RedOrange = 0xFD3C06,
- /// A color described as Dark Magenta with a HEX value of #960056 .
- DarkMagenta = 0x960056,
- /// A color described as Greenish with a HEX value of #40A368 .
- Greenish = 0x40A368,
- /// A color described as Ocean Blue with a HEX value of #03719C .
- OceanBlue = 0x03719C,
- /// A color described as Coral with a HEX value of #FC5A50 .
- Coral = 0xFC5A50,
- /// A color described as Cream with a HEX value of #FFFFC2 .
- Cream = 0xFFFFC2,
- /// A color described as Reddish Brown with a HEX value of #7F2B0A .
- ReddishBrown = 0x7F2B0A,
- /// A color described as Burnt Sienna with a HEX value of #B04E0F .
- BurntSienna = 0xB04E0F,
- /// A color described as Brick with a HEX value of #A03623 .
- Brick = 0xA03623,
- /// A color described as Sage with a HEX value of #87AE73 .
- Sage = 0x87AE73,
- /// A color described as Grey Green with a HEX value of #789B73 .
- GreyGreenAlternate = 0x789B73,
- /// A color described as White with a HEX value of #FFFFFF .
- White = 0xFFFFFF,
- /// A color described as Robin'S Egg Blue with a HEX value of #98EFF9 .
- RobinsEggBlue = 0x98EFF9,
- /// A color described as Moss Green with a HEX value of #658B38 .
- MossGreen = 0x658B38,
- /// A color described as Steel Blue with a HEX value of #5A7D9A .
- SteelBlue = 0x5A7D9A,
- /// A color described as Eggplant with a HEX value of #380835 .
- Eggplant = 0x380835,
- /// A color described as Light Yellow with a HEX value of #FFFE7A .
- LightYellow = 0xFFFE7A,
- /// A color described as Leaf Green with a HEX value of #5CA904 .
- LeafGreen = 0x5CA904,
- /// A color described as Light Grey with a HEX value of #D8DCD6 .
- LightGrey = 0xD8DCD6,
- /// A color described as Puke with a HEX value of #A5A502 .
- Puke = 0xA5A502,
- /// A color described as Pinkish Purple with a HEX value of #D648D7 .
- PinkishPurple = 0xD648D7,
- /// A color described as Sea Blue with a HEX value of #047495 .
- SeaBlue = 0x047495,
- /// A color described as Pale Purple with a HEX value of #B790D4 .
- PalePurple = 0xB790D4,
- /// A color described as Slate Blue with a HEX value of #5B7C99 .
- SlateBlue = 0x5B7C99,
- /// A color described as Blue Grey with a HEX value of #607C8E .
- BlueGreyAlternate = 0x607C8E,
- /// A color described as Hunter Green with a HEX value of #0B4008 .
- HunterGreen = 0x0B4008,
- /// A color described as Fuchsia with a HEX value of #ED0DD9 .
- Fuchsia = 0xED0DD9,
- /// A color described as Crimson with a HEX value of #8C000F .
- Crimson = 0x8C000F,
- /// A color described as Pale Yellow with a HEX value of #FFFF84 .
- PaleYellow = 0xFFFF84,
- /// A color described as Ochre with a HEX value of #BF9005 .
- Ochre = 0xBF9005,
- /// A color described as Mustard Yellow with a HEX value of #D2BD0A .
- MustardYellow = 0xD2BD0A,
- /// A color described as Light Red with a HEX value of #FF474C .
- LightRed = 0xFF474C,
- /// A color described as Cerulean with a HEX value of #0485D1 .
- Cerulean = 0x0485D1,
- /// A color described as Pale Pink with a HEX value of #FFCFDC .
- PalePink = 0xFFCFDC,
- /// A color described as Deep Blue with a HEX value of #040273 .
- DeepBlue = 0x040273,
- /// A color described as Rust with a HEX value of #A83C09 .
- Rust = 0xA83C09,
- /// A color described as Light Teal with a HEX value of #90E4C1 .
- LightTeal = 0x90E4C1,
- /// A color described as Slate with a HEX value of #516572 .
- Slate = 0x516572,
- /// A color described as Goldenrod with a HEX value of #FAC205 .
- Goldenrod = 0xFAC205,
- /// A color described as Dark Yellow with a HEX value of #D5B60A .
- DarkYellow = 0xD5B60A,
- /// A color described as Dark Grey with a HEX value of #363737 .
- DarkGrey = 0x363737,
- /// A color described as Army Green with a HEX value of #4B5D16 .
- ArmyGreen = 0x4B5D16,
- /// A color described as Grey Blue with a HEX value of #6B8BA4 .
- GreyBlueAlternate = 0x6B8BA4,
- /// A color described as Seafoam with a HEX value of #80F9AD .
- Seafoam = 0x80F9AD,
- /// A color described as Puce with a HEX value of #A57E52 .
- Puce = 0xA57E52,
- /// A color described as Spring Green with a HEX value of #A9F971 .
- SpringGreen = 0xA9F971,
- /// A color described as Dark Orange with a HEX value of #C65102 .
- DarkOrange = 0xC65102,
- /// A color described as Sand with a HEX value of #E2CA76 .
- Sand = 0xE2CA76,
- /// A color described as Pastel Green with a HEX value of #B0FF9D .
- PastelGreen = 0xB0FF9D,
- /// A color described as Mint with a HEX value of #9FFEB0 .
- Mint = 0x9FFEB0,
- /// A color described as Light Orange with a HEX value of #FDAA48 .
- LightOrange = 0xFDAA48,
- /// A color described as Bright Pink with a HEX value of #FE01B1 .
- BrightPink = 0xFE01B1,
- /// A color described as Chartreuse with a HEX value of #C1F80A .
- Chartreuse = 0xC1F80A,
- /// A color described as Deep Purple with a HEX value of #36013F .
- DeepPurple = 0x36013F,
- /// A color described as Dark Brown with a HEX value of #341C02 .
- DarkBrown = 0x341C02,
- /// A color described as Taupe with a HEX value of #B9A281 .
- Taupe = 0xB9A281,
- /// A color described as Pea Green with a HEX value of #8EAB12 .
- PeaGreen = 0x8EAB12,
- /// A color described as Puke Green with a HEX value of #9AAE07 .
- PukeGreen = 0x9AAE07,
- /// A color described as Kelly Green with a HEX value of #02AB2E .
- KellyGreen = 0x02AB2E,
- /// A color described as Seafoam Green with a HEX value of #7AF9AB .
- SeafoamGreen = 0x7AF9AB,
- /// A color described as Blue Green with a HEX value of #137E6D .
- BlueGreenAlternate = 0x137E6D,
- /// A color described as Khaki with a HEX value of #AAA662 .
- Khaki = 0xAAA662,
- /// A color described as Burgundy with a HEX value of #610023 .
- Burgundy = 0x610023,
- /// A color described as Dark Teal with a HEX value of #014D4E .
- DarkTeal = 0x014D4E,
- /// A color described as Brick Red with a HEX value of #8F1402 .
- BrickRed = 0x8F1402,
- /// A color described as Royal Purple with a HEX value of #4B006E .
- RoyalPurple = 0x4B006E,
- /// A color described as Plum with a HEX value of #580F41 .
- Plum = 0x580F41,
- /// A color described as Mint Green with a HEX value of #8FFF9F .
- MintGreen = 0x8FFF9F,
- /// A color described as Gold with a HEX value of #DBB40C .
- Gold = 0xDBB40C,
- /// A color described as Baby Blue with a HEX value of #A2CFFE .
- BabyBlue = 0xA2CFFE,
- /// A color described as Yellow Green with a HEX value of #C0FB2D .
- YellowGreenAlternate = 0xC0FB2D,
- /// A color described as Bright Purple with a HEX value of #BE03FD .
- BrightPurple = 0xBE03FD,
- /// A color described as Dark Red with a HEX value of #840000 .
- DarkRed = 0x840000,
- /// A color described as Pale Blue with a HEX value of #D0FEFE .
- PaleBlue = 0xD0FEFE,
- /// A color described as Grass Green with a HEX value of #3F9B0B .
- GrassGreen = 0x3F9B0B,
- /// A color described as Navy with a HEX value of #01153E .
- Navy = 0x01153E,
- /// A color described as Aquamarine with a HEX value of #04D8B2 .
- Aquamarine = 0x04D8B2,
- /// A color described as Burnt Orange with a HEX value of #C04E01 .
- BurntOrange = 0xC04E01,
- /// A color described as Neon Green with a HEX value of #0CFF0C .
- NeonGreen = 0x0CFF0C,
- /// A color described as Bright Blue with a HEX value of #0165FC .
- BrightBlue = 0x0165FC,
- /// A color described as Rose with a HEX value of #CF6275 .
- Rose = 0xCF6275,
- /// A color described as Light Pink with a HEX value of #FFD1DF .
- LightPink = 0xFFD1DF,
- /// A color described as Mustard with a HEX value of #CEB301 .
- Mustard = 0xCEB301,
- /// A color described as Indigo with a HEX value of #380282 .
- Indigo = 0x380282,
- /// A color described as Lime with a HEX value of #AAFF32 .
- Lime = 0xAAFF32,
- /// A color described as Sea Green with a HEX value of #53FCA1 .
- SeaGreen = 0x53FCA1,
- /// A color described as Periwinkle with a HEX value of #8E82FE .
- Periwinkle = 0x8E82FE,
- /// A color described as Dark Pink with a HEX value of #CB416B .
- DarkPink = 0xCB416B,
- /// A color described as Olive Green with a HEX value of #677A04 .
- OliveGreen = 0x677A04,
- /// A color described as Peach with a HEX value of #FFB07C .
- Peach = 0xFFB07C,
- /// A color described as Pale Green with a HEX value of #C7FDB5 .
- PaleGreen = 0xC7FDB5,
- /// A color described as Light Brown with a HEX value of #AD8150 .
- LightBrown = 0xAD8150,
- /// A color described as Hot Pink with a HEX value of #FF028D .
- HotPink = 0xFF028D,
- /// A color described as Black with a HEX value of #000000 .
- Black = 0x000000,
- /// A color described as Lilac with a HEX value of #CEA2FD .
- Lilac = 0xCEA2FD,
- /// A color described as Navy Blue with a HEX value of #001146 .
- NavyBlue = 0x001146,
- /// A color described as Royal Blue with a HEX value of #0504AA .
- RoyalBlue = 0x0504AA,
- /// A color described as Beige with a HEX value of #E6DAA6 .
- Beige = 0xE6DAA6,
- /// A color described as Salmon with a HEX value of #FF796C .
- Salmon = 0xFF796C,
- /// A color described as Olive with a HEX value of #6E750E .
- Olive = 0x6E750E,
- /// A color described as Maroon with a HEX value of #650021 .
- Maroon = 0x650021,
- /// A color described as Bright Green with a HEX value of #01FF07 .
- BrightGreen = 0x01FF07,
- /// A color described as Dark Purple with a HEX value of #35063E .
- DarkPurple = 0x35063E,
- /// A color described as Mauve with a HEX value of #AE7181 .
- Mauve = 0xAE7181,
- /// A color described as Forest Green with a HEX value of #06470C .
- ForestGreen = 0x06470C,
- /// A color described as Aqua with a HEX value of #13EAC9 .
- Aqua = 0x13EAC9,
- /// A color described as Cyan with a HEX value of #00FFFF .
- Cyan = 0x00FFFF,
- /// A color described as Tan with a HEX value of #D1B26F .
- Tan = 0xD1B26F,
- /// A color described as Dark Blue with a HEX value of #00035B .
- DarkBlue = 0x00035B,
- /// A color described as Lavender with a HEX value of #C79FEF .
- Lavender = 0xC79FEF,
- /// A color described as Turquoise with a HEX value of #06C2AC .
- Turquoise = 0x06C2AC,
- /// A color described as Dark Green with a HEX value of #033500 .
- DarkGreen = 0x033500,
- /// A color described as Violet with a HEX value of #9A0EEA .
- Violet = 0x9A0EEA,
- /// A color described as Light Purple with a HEX value of #BF77F6 .
- LightPurple = 0xBF77F6,
- /// A color described as Lime Green with a HEX value of #89FE05 .
- LimeGreen = 0x89FE05,
- /// A color described as Grey with a HEX value of #929591 .
- Grey = 0x929591,
- /// A color described as Sky Blue with a HEX value of #75BBFD .
- SkyBlue = 0x75BBFD,
- /// A color described as Yellow with a HEX value of #FFFF14 .
- Yellow = 0xFFFF14,
- /// A color described as Magenta with a HEX value of #C20078 .
- Magenta = 0xC20078,
- /// A color described as Light Green with a HEX value of #96F97B .
- LightGreen = 0x96F97B,
- /// A color described as Orange with a HEX value of #F97306 .
- Orange = 0xF97306,
- /// A color described as Teal with a HEX value of #029386 .
- Teal = 0x029386,
- /// A color described as Light Blue with a HEX value of #95D0FC .
- LightBlue = 0x95D0FC,
- /// A color described as Red with a HEX value of #E50000 .
- Red = 0xE50000,
- /// A color described as Brown with a HEX value of #653700 .
- Brown = 0x653700,
- /// A color described as Pink with a HEX value of #FF81C0 .
- Pink = 0xFF81C0,
- /// A color described as Blue with a HEX value of #0343DF .
- Blue = 0x0343DF,
- /// A color described as Green with a HEX value of #15B01A .
- Green = 0x15B01A,
- /// A color described as Purple with a HEX value of #7E1E9C .
- Purple = 0x7E1E9C,
- Purple2 = 0x7E1E9C,
+ /// A color described as Cloudy Blue with a HEX value of #ACC2D9 .
+ CloudyBlue = 0xACC2D9,
- }
-}
+ /// A color described as Dark Pastel Green with a HEX value of #56AE57 .
+ DarkPastelGreen = 0x56AE57,
+
+ /// A color described as Dust with a HEX value of #B2996E .
+ Dust = 0xB2996E,
+
+ /// A color described as Electric Lime with a HEX value of #A8FF04 .
+ ElectricLime = 0xA8FF04,
+
+ /// A color described as Fresh Green with a HEX value of #69D84F .
+ FreshGreen = 0x69D84F,
+
+ /// A color described as Light Eggplant with a HEX value of #894585 .
+ LightEggplant = 0x894585,
+
+ /// A color described as Nasty Green with a HEX value of #70B23F .
+ NastyGreen = 0x70B23F,
+
+ /// A color described as Really Light Blue with a HEX value of #D4FFFF .
+ ReallyLightBlue = 0xD4FFFF,
+
+ /// A color described as Tea with a HEX value of #65AB7C .
+ Tea = 0x65AB7C,
+
+ /// A color described as Warm Purple with a HEX value of #952E8F .
+ WarmPurple = 0x952E8F,
+
+ /// A color described as Yellowish Tan with a HEX value of #FCFC81 .
+ YellowishTan = 0xFCFC81,
+
+ /// A color described as Cement with a HEX value of #A5A391 .
+ Cement = 0xA5A391,
+
+ /// A color described as Dark Grass Green with a HEX value of #388004 .
+ DarkGrassGreen = 0x388004,
+
+ /// A color described as Dusty Teal with a HEX value of #4C9085 .
+ DustyTeal = 0x4C9085,
+
+ /// A color described as Grey Teal with a HEX value of #5E9B8A .
+ GreyTeal = 0x5E9B8A,
+
+ /// A color described as Macaroni And Cheese with a HEX value of #EFB435 .
+ MacaroniAndCheese = 0xEFB435,
+
+ /// A color described as Pinkish Tan with a HEX value of #D99B82 .
+ PinkishTan = 0xD99B82,
+
+ /// A color described as Spruce with a HEX value of #0A5F38 .
+ Spruce = 0x0A5F38,
+
+ /// A color described as Strong Blue with a HEX value of #0C06F7 .
+ StrongBlue = 0x0C06F7,
+
+ /// A color described as Toxic Green with a HEX value of #61DE2A .
+ ToxicGreen = 0x61DE2A,
+
+ /// A color described as Windows Blue with a HEX value of #3778BF .
+ WindowsBlue = 0x3778BF,
+
+ /// A color described as Blue Blue with a HEX value of #2242C7 .
+ BlueBlue = 0x2242C7,
+
+ /// A color described as Blue With A Hint Of Purple with a HEX value of #533CC6 .
+ BlueWithAHintOfPurple = 0x533CC6,
+
+ /// A color described as Booger with a HEX value of #9BB53C .
+ Booger = 0x9BB53C,
+
+ /// A color described as Bright Sea Green with a HEX value of #05FFA6 .
+ BrightSeaGreen = 0x05FFA6,
+
+ /// A color described as Dark Green Blue with a HEX value of #1F6357 .
+ DarkGreenBlue = 0x1F6357,
+
+ /// A color described as Deep Turquoise with a HEX value of #017374 .
+ DeepTurquoise = 0x017374,
+
+ /// A color described as Green Teal with a HEX value of #0CB577 .
+ GreenTeal = 0x0CB577,
+
+ /// A color described as Strong Pink with a HEX value of #FF0789 .
+ StrongPink = 0xFF0789,
+
+ /// A color described as Bland with a HEX value of #AFA88B .
+ Bland = 0xAFA88B,
+
+ /// A color described as Deep Aqua with a HEX value of #08787F .
+ DeepAqua = 0x08787F,
+
+ /// A color described as Lavender Pink with a HEX value of #DD85D7 .
+ LavenderPink = 0xDD85D7,
+
+ /// A color described as Light Moss Green with a HEX value of #A6C875 .
+ LightMossGreen = 0xA6C875,
+
+ /// A color described as Light Seafoam Green with a HEX value of #A7FFB5 .
+ LightSeafoamGreen = 0xA7FFB5,
+
+ /// A color described as Olive Yellow with a HEX value of #C2B709 .
+ OliveYellow = 0xC2B709,
+
+ /// A color described as Pig Pink with a HEX value of #E78EA5 .
+ PigPink = 0xE78EA5,
+
+ /// A color described as Deep Lilac with a HEX value of #966EBD .
+ DeepLilac = 0x966EBD,
+
+ /// A color described as Desert with a HEX value of #CCAD60 .
+ Desert = 0xCCAD60,
+
+ /// A color described as Dusty Lavender with a HEX value of #AC86A8 .
+ DustyLavender = 0xAC86A8,
+
+ /// A color described as Purpley Grey with a HEX value of #947E94 .
+ PurpleyGrey = 0x947E94,
+
+ /// A color described as Purply with a HEX value of #983FB2 .
+ Purply = 0x983FB2,
+
+ /// A color described as Candy Pink with a HEX value of #FF63E9 .
+ CandyPink = 0xFF63E9,
+
+ /// A color described as Light Pastel Green with a HEX value of #B2FBA5 .
+ LightPastelGreen = 0xB2FBA5,
+
+ /// A color described as Boring Green with a HEX value of #63B365 .
+ BoringGreen = 0x63B365,
+
+ /// A color described as Kiwi Green with a HEX value of #8EE53F .
+ KiwiGreen = 0x8EE53F,
+
+ /// A color described as Light Grey Green with a HEX value of #B7E1A1 .
+ LightGreyGreen = 0xB7E1A1,
+
+ /// A color described as Orange Pink with a HEX value of #FF6F52 .
+ OrangePink = 0xFF6F52,
+
+ /// A color described as Tea Green with a HEX value of #BDF8A3 .
+ TeaGreen = 0xBDF8A3,
+
+ /// A color described as Very Light Brown with a HEX value of #D3B683 .
+ VeryLightBrown = 0xD3B683,
+
+ /// A color described as Egg Shell with a HEX value of #FFFCC4 .
+ EggShell = 0xFFFCC4,
+
+ /// A color described as Eggplant Purple with a HEX value of #430541 .
+ EggplantPurple = 0x430541,
+
+ /// A color described as Powder Pink with a HEX value of #FFB2D0 .
+ PowderPink = 0xFFB2D0,
+
+ /// A color described as Reddish Grey with a HEX value of #997570 .
+ ReddishGrey = 0x997570,
+
+ /// A color described as Baby Shit Brown with a HEX value of #AD900D .
+ BabyShitBrown = 0xAD900D,
+
+ /// A color described as Liliac with a HEX value of #C48EFD .
+ Liliac = 0xC48EFD,
+
+ /// A color described as Stormy Blue with a HEX value of #507B9C .
+ StormyBlue = 0x507B9C,
+
+ /// A color described as Ugly Brown with a HEX value of #7D7103 .
+ UglyBrown = 0x7D7103,
+
+ /// A color described as Custard with a HEX value of #FFFD78 .
+ Custard = 0xFFFD78,
+
+ /// A color described as Darkish Pink with a HEX value of #DA467D .
+ DarkishPink = 0xDA467D,
+
+ /// A color described as Deep Brown with a HEX value of #410200 .
+ DeepBrown = 0x410200,
+
+ /// A color described as Greenish Beige with a HEX value of #C9D179 .
+ GreenishBeige = 0xC9D179,
+
+ /// A color described as Manilla with a HEX value of #FFFA86 .
+ Manilla = 0xFFFA86,
+
+ /// A color described as Off Blue with a HEX value of #5684AE .
+ OffBlue = 0x5684AE,
+
+ /// A color described as Battleship Grey with a HEX value of #6B7C85 .
+ BattleshipGrey = 0x6B7C85,
+
+ /// A color described as Browny Green with a HEX value of #6F6C0A .
+ BrownyGreen = 0x6F6C0A,
+
+ /// A color described as Bruise with a HEX value of #7E4071 .
+ Bruise = 0x7E4071,
+
+ /// A color described as Kelley Green with a HEX value of #009337 .
+ KelleyGreen = 0x009337,
+
+ /// A color described as Sickly Yellow with a HEX value of #D0E429 .
+ SicklyYellow = 0xD0E429,
+
+ /// A color described as Sunny Yellow with a HEX value of #FFF917 .
+ SunnyYellow = 0xFFF917,
+
+ /// A color described as Azul with a HEX value of #1D5DEC .
+ Azul = 0x1D5DEC,
+
+ /// A color described as Darkgreen with a HEX value of #054907 .
+ Darkgreen = 0x054907,
+
+ /// A color described as Green/Yellow with a HEX value of #B5CE08 .
+ GreenYellow = 0xB5CE08,
+
+ /// A color described as Lichen with a HEX value of #8FB67B .
+ Lichen = 0x8FB67B,
+
+ /// A color described as Light Light Green with a HEX value of #C8FFB0 .
+ LightLightGreen = 0xC8FFB0,
+
+ /// A color described as Pale Gold with a HEX value of #FDDE6C .
+ PaleGold = 0xFDDE6C,
+
+ /// A color described as Sun Yellow with a HEX value of #FFDF22 .
+ SunYellow = 0xFFDF22,
+
+ /// A color described as Tan Green with a HEX value of #A9BE70 .
+ TanGreen = 0xA9BE70,
+
+ /// A color described as Burple with a HEX value of #6832E3 .
+ Burple = 0x6832E3,
+
+ /// A color described as Butterscotch with a HEX value of #FDB147 .
+ Butterscotch = 0xFDB147,
+
+ /// A color described as Toupe with a HEX value of #C7AC7D .
+ Toupe = 0xC7AC7D,
+
+ /// A color described as Dark Cream with a HEX value of #FFF39A .
+ DarkCream = 0xFFF39A,
+
+ /// A color described as Indian Red with a HEX value of #850E04 .
+ IndianRed = 0x850E04,
+
+ /// A color described as Light Lavendar with a HEX value of #EFC0FE .
+ LightLavendar = 0xEFC0FE,
+
+ /// A color described as Poison Green with a HEX value of #40FD14 .
+ PoisonGreen = 0x40FD14,
+
+ /// A color described as Baby Puke Green with a HEX value of #B6C406 .
+ BabyPukeGreen = 0xB6C406,
+
+ /// A color described as Bright Yellow Green with a HEX value of #9DFF00 .
+ BrightYellowGreen = 0x9DFF00,
+
+ /// A color described as Charcoal Grey with a HEX value of #3C4142 .
+ CharcoalGrey = 0x3C4142,
+
+ /// A color described as Squash with a HEX value of #F2AB15 .
+ Squash = 0xF2AB15,
+
+ /// A color described as Cinnamon with a HEX value of #AC4F06 .
+ Cinnamon = 0xAC4F06,
+
+ /// A color described as Light Pea Green with a HEX value of #C4FE82 .
+ LightPeaGreen = 0xC4FE82,
+
+ /// A color described as Radioactive Green with a HEX value of #2CFA1F .
+ RadioactiveGreen = 0x2CFA1F,
+
+ /// A color described as Raw Sienna with a HEX value of #9A6200 .
+ RawSienna = 0x9A6200,
+
+ /// A color described as Baby Purple with a HEX value of #CA9BF7 .
+ BabyPurple = 0xCA9BF7,
+
+ /// A color described as Cocoa with a HEX value of #875F42 .
+ Cocoa = 0x875F42,
+
+ /// A color described as Light Royal Blue with a HEX value of #3A2EFE .
+ LightRoyalBlue = 0x3A2EFE,
+
+ /// A color described as Orangeish with a HEX value of #FD8D49 .
+ Orangeish = 0xFD8D49,
+
+ /// A color described as Rust Brown with a HEX value of #8B3103 .
+ RustBrown = 0x8B3103,
+
+ /// A color described as Sand Brown with a HEX value of #CBA560 .
+ SandBrown = 0xCBA560,
+
+ /// A color described as Swamp with a HEX value of #698339 .
+ Swamp = 0x698339,
+
+ /// A color described as Tealish Green with a HEX value of #0CDC73 .
+ TealishGreen = 0x0CDC73,
+
+ /// A color described as Burnt Siena with a HEX value of #B75203 .
+ BurntSiena = 0xB75203,
+
+ /// A color described as Camo with a HEX value of #7F8F4E .
+ Camo = 0x7F8F4E,
+
+ /// A color described as Dusk Blue with a HEX value of #26538D .
+ DuskBlue = 0x26538D,
+
+ /// A color described as Fern with a HEX value of #63A950 .
+ Fern = 0x63A950,
+
+ /// A color described as Old Rose with a HEX value of #C87F89 .
+ OldRose = 0xC87F89,
+
+ /// A color described as Pale Light Green with a HEX value of #B1FC99 .
+ PaleLightGreen = 0xB1FC99,
+
+ /// A color described as Peachy Pink with a HEX value of #FF9A8A .
+ PeachyPink = 0xFF9A8A,
+
+ /// A color described as Rosy Pink with a HEX value of #F6688E .
+ RosyPink = 0xF6688E,
+
+ /// A color described as Light Bluish Green with a HEX value of #76FDA8 .
+ LightBluishGreen = 0x76FDA8,
+
+ /// A color described as Light Bright Green with a HEX value of #53FE5C .
+ LightBrightGreen = 0x53FE5C,
+
+ /// A color described as Light Neon Green with a HEX value of #4EFD54 .
+ LightNeonGreen = 0x4EFD54,
+
+ /// A color described as Light Seafoam with a HEX value of #A0FEBF .
+ LightSeafoam = 0xA0FEBF,
+
+ /// A color described as Tiffany Blue with a HEX value of #7BF2DA .
+ TiffanyBlue = 0x7BF2DA,
+
+ /// A color described as Washed Out Green with a HEX value of #BCF5A6 .
+ WashedOutGreen = 0xBCF5A6,
+
+ /// A color described as Browny Orange with a HEX value of #CA6B02 .
+ BrownyOrange = 0xCA6B02,
+
+ /// A color described as Nice Blue with a HEX value of #107AB0 .
+ NiceBlue = 0x107AB0,
+
+ /// A color described as Sapphire with a HEX value of #2138AB .
+ Sapphire = 0x2138AB,
+
+ /// A color described as Greyish Teal with a HEX value of #719F91 .
+ GreyishTeal = 0x719F91,
+
+ /// A color described as Orangey Yellow with a HEX value of #FDB915 .
+ OrangeyYellow = 0xFDB915,
+
+ /// A color described as Parchment with a HEX value of #FEFCAF .
+ Parchment = 0xFEFCAF,
+
+ /// A color described as Straw with a HEX value of #FCF679 .
+ Straw = 0xFCF679,
+
+ /// A color described as Very Dark Brown with a HEX value of #1D0200 .
+ VeryDarkBrown = 0x1D0200,
+
+ /// A color described as Terracota with a HEX value of #CB6843 .
+ Terracota = 0xCB6843,
+
+ /// A color described as Ugly Blue with a HEX value of #31668A .
+ UglyBlue = 0x31668A,
+
+ /// A color described as Clear Blue with a HEX value of #247AFD .
+ ClearBlue = 0x247AFD,
+
+ /// A color described as Creme with a HEX value of #FFFFB6 .
+ Creme = 0xFFFFB6,
+
+ /// A color described as Foam Green with a HEX value of #90FDA9 .
+ FoamGreen = 0x90FDA9,
+
+ /// A color described as Grey/Green with a HEX value of #86A17D .
+ GreyGreen = 0x86A17D,
+
+ /// A color described as Light Gold with a HEX value of #FDDC5C .
+ LightGold = 0xFDDC5C,
+
+ /// A color described as Seafoam Blue with a HEX value of #78D1B6 .
+ SeafoamBlue = 0x78D1B6,
+
+ /// A color described as Topaz with a HEX value of #13BBAF .
+ Topaz = 0x13BBAF,
+
+ /// A color described as Violet Pink with a HEX value of #FB5FFC .
+ VioletPink = 0xFB5FFC,
+
+ /// A color described as Wintergreen with a HEX value of #20F986 .
+ Wintergreen = 0x20F986,
+
+ /// A color described as Yellow Tan with a HEX value of #FFE36E .
+ YellowTan = 0xFFE36E,
+
+ /// A color described as Dark Fuchsia with a HEX value of #9D0759 .
+ DarkFuchsia = 0x9D0759,
+
+ /// A color described as Indigo Blue with a HEX value of #3A18B1 .
+ IndigoBlue = 0x3A18B1,
+
+ /// A color described as Light Yellowish Green with a HEX value of #C2FF89 .
+ LightYellowishGreen = 0xC2FF89,
+
+ /// A color described as Pale Magenta with a HEX value of #D767AD .
+ PaleMagenta = 0xD767AD,
+
+ /// A color described as Rich Purple with a HEX value of #720058 .
+ RichPurple = 0x720058,
+
+ /// A color described as Sunflower Yellow with a HEX value of #FFDA03 .
+ SunflowerYellow = 0xFFDA03,
+
+ /// A color described as Green/Blue with a HEX value of #01C08D .
+ GreenBlue = 0x01C08D,
+
+ /// A color described as Leather with a HEX value of #AC7434 .
+ Leather = 0xAC7434,
+
+ /// A color described as Racing Green with a HEX value of #014600 .
+ RacingGreen = 0x014600,
+
+ /// A color described as Vivid Purple with a HEX value of #9900FA .
+ VividPurple = 0x9900FA,
+
+ /// A color described as Dark Royal Blue with a HEX value of #02066F .
+ DarkRoyalBlue = 0x02066F,
+
+ /// A color described as Hazel with a HEX value of #8E7618 .
+ Hazel = 0x8E7618,
+
+ /// A color described as Muted Pink with a HEX value of #D1768F .
+ MutedPink = 0xD1768F,
+
+ /// A color described as Booger Green with a HEX value of #96B403 .
+ BoogerGreen = 0x96B403,
+
+ /// A color described as Canary with a HEX value of #FDFF63 .
+ Canary = 0xFDFF63,
+
+ /// A color described as Cool Grey with a HEX value of #95A3A6 .
+ CoolGrey = 0x95A3A6,
+
+ /// A color described as Dark Taupe with a HEX value of #7F684E .
+ DarkTaupe = 0x7F684E,
+
+ /// A color described as Darkish Purple with a HEX value of #751973 .
+ DarkishPurple = 0x751973,
+
+ /// A color described as True Green with a HEX value of #089404 .
+ TrueGreen = 0x089404,
+
+ /// A color described as Coral Pink with a HEX value of #FF6163 .
+ CoralPink = 0xFF6163,
+
+ /// A color described as Dark Sage with a HEX value of #598556 .
+ DarkSage = 0x598556,
+
+ /// A color described as Dark Slate Blue with a HEX value of #214761 .
+ DarkSlateBlue = 0x214761,
+
+ /// A color described as Flat Blue with a HEX value of #3C73A8 .
+ FlatBlue = 0x3C73A8,
+
+ /// A color described as Mushroom with a HEX value of #BA9E88 .
+ Mushroom = 0xBA9E88,
+
+ /// A color described as Rich Blue with a HEX value of #021BF9 .
+ RichBlue = 0x021BF9,
+
+ /// A color described as Dirty Purple with a HEX value of #734A65 .
+ DirtyPurple = 0x734A65,
+
+ /// A color described as Greenblue with a HEX value of #23C48B .
+ Greenblue = 0x23C48B,
+
+ /// A color described as Icky Green with a HEX value of #8FAE22 .
+ IckyGreen = 0x8FAE22,
+
+ /// A color described as Light Khaki with a HEX value of #E6F2A2 .
+ LightKhaki = 0xE6F2A2,
+
+ /// A color described as Warm Blue with a HEX value of #4B57DB .
+ WarmBlue = 0x4B57DB,
+
+ /// A color described as Dark Hot Pink with a HEX value of #D90166 .
+ DarkHotPink = 0xD90166,
+
+ /// A color described as Deep Sea Blue with a HEX value of #015482 .
+ DeepSeaBlue = 0x015482,
+
+ /// A color described as Carmine with a HEX value of #9D0216 .
+ Carmine = 0x9D0216,
+
+ /// A color described as Dark Yellow Green with a HEX value of #728F02 .
+ DarkYellowGreen = 0x728F02,
+
+ /// A color described as Pale Peach with a HEX value of #FFE5AD .
+ PalePeach = 0xFFE5AD,
+
+ /// A color described as Plum Purple with a HEX value of #4E0550 .
+ PlumPurple = 0x4E0550,
+
+ /// A color described as Golden Rod with a HEX value of #F9BC08 .
+ GoldenRod = 0xF9BC08,
+
+ /// A color described as Neon Red with a HEX value of #FF073A .
+ NeonRed = 0xFF073A,
+
+ /// A color described as Old Pink with a HEX value of #C77986 .
+ OldPink = 0xC77986,
+
+ /// A color described as Very Pale Blue with a HEX value of #D6FFFE .
+ VeryPaleBlue = 0xD6FFFE,
+
+ /// A color described as Blood Orange with a HEX value of #FE4B03 .
+ BloodOrange = 0xFE4B03,
+
+ /// A color described as Grapefruit with a HEX value of #FD5956 .
+ Grapefruit = 0xFD5956,
+
+ /// A color described as Sand Yellow with a HEX value of #FCE166 .
+ SandYellow = 0xFCE166,
+
+ /// A color described as Clay Brown with a HEX value of #B2713D .
+ ClayBrown = 0xB2713D,
+
+ /// A color described as Dark Blue Grey with a HEX value of #1F3B4D .
+ DarkBlueGrey = 0x1F3B4D,
+
+ /// A color described as Flat Green with a HEX value of #699D4C .
+ FlatGreen = 0x699D4C,
+
+ /// A color described as Light Green Blue with a HEX value of #56FCA2 .
+ LightGreenBlue = 0x56FCA2,
+
+ /// A color described as Warm Pink with a HEX value of #FB5581 .
+ WarmPink = 0xFB5581,
+
+ /// A color described as Dodger Blue with a HEX value of #3E82FC .
+ DodgerBlue = 0x3E82FC,
+
+ /// A color described as Gross Green with a HEX value of #A0BF16 .
+ GrossGreen = 0xA0BF16,
+
+ /// A color described as Ice with a HEX value of #D6FFFA .
+ Ice = 0xD6FFFA,
+
+ /// A color described as Metallic Blue with a HEX value of #4F738E .
+ MetallicBlue = 0x4F738E,
+
+ /// A color described as Pale Salmon with a HEX value of #FFB19A .
+ PaleSalmon = 0xFFB19A,
+
+ /// A color described as Sap Green with a HEX value of #5C8B15 .
+ SapGreen = 0x5C8B15,
+
+ /// A color described as Algae with a HEX value of #54AC68 .
+ Algae = 0x54AC68,
+
+ /// A color described as Bluey Grey with a HEX value of #89A0B0 .
+ BlueyGrey = 0x89A0B0,
+
+ /// A color described as Greeny Grey with a HEX value of #7EA07A .
+ GreenyGrey = 0x7EA07A,
+
+ /// A color described as Highlighter Green with a HEX value of #1BFC06 .
+ HighlighterGreen = 0x1BFC06,
+
+ /// A color described as Light Light Blue with a HEX value of #CAFFFB .
+ LightLightBlue = 0xCAFFFB,
+
+ /// A color described as Light Mint with a HEX value of #B6FFBB .
+ LightMint = 0xB6FFBB,
+
+ /// A color described as Raw Umber with a HEX value of #A75E09 .
+ RawUmber = 0xA75E09,
+
+ /// A color described as Vivid Blue with a HEX value of #152EFF .
+ VividBlue = 0x152EFF,
+
+ /// A color described as Deep Lavender with a HEX value of #8D5EB7 .
+ DeepLavender = 0x8D5EB7,
+
+ /// A color described as Dull Teal with a HEX value of #5F9E8F .
+ DullTeal = 0x5F9E8F,
+
+ /// A color described as Light Greenish Blue with a HEX value of #63F7B4 .
+ LightGreenishBlue = 0x63F7B4,
+
+ /// A color described as Mud Green with a HEX value of #606602 .
+ MudGreen = 0x606602,
+
+ /// A color described as Pinky with a HEX value of #FC86AA .
+ Pinky = 0xFC86AA,
+
+ /// A color described as Red Wine with a HEX value of #8C0034 .
+ RedWine = 0x8C0034,
+
+ /// A color described as Shit Green with a HEX value of #758000 .
+ ShitGreen = 0x758000,
+
+ /// A color described as Tan Brown with a HEX value of #AB7E4C .
+ TanBrown = 0xAB7E4C,
+
+ /// A color described as Darkblue with a HEX value of #030764 .
+ Darkblue = 0x030764,
+
+ /// A color described as Rosa with a HEX value of #FE86A4 .
+ Rosa = 0xFE86A4,
+
+ /// A color described as Lipstick with a HEX value of #D5174E .
+ Lipstick = 0xD5174E,
+
+ /// A color described as Pale Mauve with a HEX value of #FED0FC .
+ PaleMauve = 0xFED0FC,
+
+ /// A color described as Claret with a HEX value of #680018 .
+ Claret = 0x680018,
+
+ /// A color described as Dandelion with a HEX value of #FEDF08 .
+ Dandelion = 0xFEDF08,
+
+ /// A color described as Orangered with a HEX value of #FE420F .
+ Orangered = 0xFE420F,
+
+ /// A color described as Poop Green with a HEX value of #6F7C00 .
+ PoopGreen = 0x6F7C00,
+
+ /// A color described as Ruby with a HEX value of #CA0147 .
+ Ruby = 0xCA0147,
+
+ /// A color described as Dark with a HEX value of #1B2431 .
+ Dark = 0x1B2431,
+
+ /// A color described as Greenish Turquoise with a HEX value of #00FBB0 .
+ GreenishTurquoise = 0x00FBB0,
+
+ /// A color described as Pastel Red with a HEX value of #DB5856 .
+ PastelRed = 0xDB5856,
+
+ /// A color described as Piss Yellow with a HEX value of #DDD618 .
+ PissYellow = 0xDDD618,
+
+ /// A color described as Bright Cyan with a HEX value of #41FDFE .
+ BrightCyan = 0x41FDFE,
+
+ /// A color described as Dark Coral with a HEX value of #CF524E .
+ DarkCoral = 0xCF524E,
+
+ /// A color described as Algae Green with a HEX value of #21C36F .
+ AlgaeGreen = 0x21C36F,
+
+ /// A color described as Darkish Red with a HEX value of #A90308 .
+ DarkishRed = 0xA90308,
+
+ /// A color described as Reddy Brown with a HEX value of #6E1005 .
+ ReddyBrown = 0x6E1005,
+
+ /// A color described as Blush Pink with a HEX value of #FE828C .
+ BlushPink = 0xFE828C,
+
+ /// A color described as Camouflage Green with a HEX value of #4B6113 .
+ CamouflageGreen = 0x4B6113,
+
+ /// A color described as Lawn Green with a HEX value of #4DA409 .
+ LawnGreen = 0x4DA409,
+
+ /// A color described as Putty with a HEX value of #BEAE8A .
+ Putty = 0xBEAE8A,
+
+ /// A color described as Vibrant Blue with a HEX value of #0339F8 .
+ VibrantBlue = 0x0339F8,
+
+ /// A color described as Dark Sand with a HEX value of #A88F59 .
+ DarkSand = 0xA88F59,
+
+ /// A color described as Purple/Blue with a HEX value of #5D21D0 .
+ PurpleBlue = 0x5D21D0,
+
+ /// A color described as Saffron with a HEX value of #FEB209 .
+ Saffron = 0xFEB209,
+
+ /// A color described as Twilight with a HEX value of #4E518B .
+ Twilight = 0x4E518B,
+
+ /// A color described as Warm Brown with a HEX value of #964E02 .
+ WarmBrown = 0x964E02,
+
+ /// A color described as Bluegrey with a HEX value of #85A3B2 .
+ Bluegrey = 0x85A3B2,
+
+ /// A color described as Bubble Gum Pink with a HEX value of #FF69AF .
+ BubbleGumPink = 0xFF69AF,
+
+ /// A color described as Duck Egg Blue with a HEX value of #C3FBF4 .
+ DuckEggBlue = 0xC3FBF4,
+
+ /// A color described as Greenish Cyan with a HEX value of #2AFEB7 .
+ GreenishCyan = 0x2AFEB7,
+
+ /// A color described as Petrol with a HEX value of #005F6A .
+ Petrol = 0x005F6A,
+
+ /// A color described as Royal with a HEX value of #0C1793 .
+ Royal = 0x0C1793,
+
+ /// A color described as Butter with a HEX value of #FFFF81 .
+ Butter = 0xFFFF81,
+
+ /// A color described as Dusty Orange with a HEX value of #F0833A .
+ DustyOrange = 0xF0833A,
+
+ /// A color described as Off Yellow with a HEX value of #F1F33F .
+ OffYellow = 0xF1F33F,
+
+ /// A color described as Pale Olive Green with a HEX value of #B1D27B .
+ PaleOliveGreen = 0xB1D27B,
+
+ /// A color described as Orangish with a HEX value of #FC824A .
+ Orangish = 0xFC824A,
+
+ /// A color described as Leaf with a HEX value of #71AA34 .
+ Leaf = 0x71AA34,
+
+ /// A color described as Light Blue Grey with a HEX value of #B7C9E2 .
+ LightBlueGrey = 0xB7C9E2,
+
+ /// A color described as Dried Blood with a HEX value of #4B0101 .
+ DriedBlood = 0x4B0101,
+
+ /// A color described as Lightish Purple with a HEX value of #A552E6 .
+ LightishPurple = 0xA552E6,
+
+ /// A color described as Rusty Red with a HEX value of #AF2F0D .
+ RustyRed = 0xAF2F0D,
+
+ /// A color described as Lavender Blue with a HEX value of #8B88F8 .
+ LavenderBlue = 0x8B88F8,
+
+ /// A color described as Light Grass Green with a HEX value of #9AF764 .
+ LightGrassGreen = 0x9AF764,
+
+ /// A color described as Light Mint Green with a HEX value of #A6FBB2 .
+ LightMintGreen = 0xA6FBB2,
+
+ /// A color described as Sunflower with a HEX value of #FFC512 .
+ Sunflower = 0xFFC512,
+
+ /// A color described as Velvet with a HEX value of #750851 .
+ Velvet = 0x750851,
+
+ /// A color described as Brick Orange with a HEX value of #C14A09 .
+ BrickOrange = 0xC14A09,
+
+ /// A color described as Lightish Red with a HEX value of #FE2F4A .
+ LightishRed = 0xFE2F4A,
+
+ /// A color described as Pure Blue with a HEX value of #0203E2 .
+ PureBlue = 0x0203E2,
+
+ /// A color described as Twilight Blue with a HEX value of #0A437A .
+ TwilightBlue = 0x0A437A,
+
+ /// A color described as Violet Red with a HEX value of #A50055 .
+ VioletRed = 0xA50055,
+
+ /// A color described as Yellowy Brown with a HEX value of #AE8B0C .
+ YellowyBrown = 0xAE8B0C,
+
+ /// A color described as Carnation with a HEX value of #FD798F .
+ Carnation = 0xFD798F,
+
+ /// A color described as Muddy Yellow with a HEX value of #BFAC05 .
+ MuddyYellow = 0xBFAC05,
+
+ /// A color described as Dark Seafoam Green with a HEX value of #3EAF76 .
+ DarkSeafoamGreen = 0x3EAF76,
+
+ /// A color described as Deep Rose with a HEX value of #C74767 .
+ DeepRose = 0xC74767,
+
+ /// A color described as Dusty Red with a HEX value of #B9484E .
+ DustyRed = 0xB9484E,
+
+ /// A color described as Grey/Blue with a HEX value of #647D8E .
+ GreyBlue = 0x647D8E,
+
+ /// A color described as Lemon Lime with a HEX value of #BFFE28 .
+ LemonLime = 0xBFFE28,
+
+ /// A color described as Purple/Pink with a HEX value of #D725DE .
+ PurplePink = 0xD725DE,
+
+ /// A color described as Brown Yellow with a HEX value of #B29705 .
+ BrownYellow = 0xB29705,
+
+ /// A color described as Purple Brown with a HEX value of #673A3F .
+ PurpleBrown = 0x673A3F,
+
+ /// A color described as Wisteria with a HEX value of #A87DC2 .
+ Wisteria = 0xA87DC2,
+
+ /// A color described as Banana Yellow with a HEX value of #FAFE4B .
+ BananaYellow = 0xFAFE4B,
+
+ /// A color described as Lipstick Red with a HEX value of #C0022F .
+ LipstickRed = 0xC0022F,
+
+ /// A color described as Water Blue with a HEX value of #0E87CC .
+ WaterBlue = 0x0E87CC,
+
+ /// A color described as Brown Grey with a HEX value of #8D8468 .
+ BrownGrey = 0x8D8468,
+
+ /// A color described as Vibrant Purple with a HEX value of #AD03DE .
+ VibrantPurple = 0xAD03DE,
+
+ /// A color described as Baby Green with a HEX value of #8CFF9E .
+ BabyGreen = 0x8CFF9E,
+
+ /// A color described as Barf Green with a HEX value of #94AC02 .
+ BarfGreen = 0x94AC02,
+
+ /// A color described as Eggshell Blue with a HEX value of #C4FFF7 .
+ EggshellBlue = 0xC4FFF7,
+
+ /// A color described as Sandy Yellow with a HEX value of #FDEE73 .
+ SandyYellow = 0xFDEE73,
+
+ /// A color described as Cool Green with a HEX value of #33B864 .
+ CoolGreen = 0x33B864,
+
+ /// A color described as Pale with a HEX value of #FFF9D0 .
+ Pale = 0xFFF9D0,
+
+ /// A color described as Blue/Grey with a HEX value of #758DA3 .
+ BlueGrey = 0x758DA3,
+
+ /// A color described as Hot Magenta with a HEX value of #F504C9 .
+ HotMagenta = 0xF504C9,
+
+ /// A color described as Greyblue with a HEX value of #77A1B5 .
+ Greyblue = 0x77A1B5,
+
+ /// A color described as Purpley with a HEX value of #8756E4 .
+ Purpley = 0x8756E4,
+
+ /// A color described as Baby Shit Green with a HEX value of #889717 .
+ BabyShitGreen = 0x889717,
+
+ /// A color described as Brownish Pink with a HEX value of #C27E79 .
+ BrownishPink = 0xC27E79,
+
+ /// A color described as Dark Aquamarine with a HEX value of #017371 .
+ DarkAquamarine = 0x017371,
+
+ /// A color described as Diarrhea with a HEX value of #9F8303 .
+ Diarrhea = 0x9F8303,
+
+ /// A color described as Light Mustard with a HEX value of #F7D560 .
+ LightMustard = 0xF7D560,
+
+ /// A color described as Pale Sky Blue with a HEX value of #BDF6FE .
+ PaleSkyBlue = 0xBDF6FE,
+
+ /// A color described as Turtle Green with a HEX value of #75B84F .
+ TurtleGreen = 0x75B84F,
+
+ /// A color described as Bright Olive with a HEX value of #9CBB04 .
+ BrightOlive = 0x9CBB04,
+
+ /// A color described as Dark Grey Blue with a HEX value of #29465B .
+ DarkGreyBlue = 0x29465B,
+
+ /// A color described as Greeny Brown with a HEX value of #696006 .
+ GreenyBrown = 0x696006,
+
+ /// A color described as Lemon Green with a HEX value of #ADF802 .
+ LemonGreen = 0xADF802,
+
+ /// A color described as Light Periwinkle with a HEX value of #C1C6FC .
+ LightPeriwinkle = 0xC1C6FC,
+
+ /// A color described as Seaweed Green with a HEX value of #35AD6B .
+ SeaweedGreen = 0x35AD6B,
+
+ /// A color described as Sunshine Yellow with a HEX value of #FFFD37 .
+ SunshineYellow = 0xFFFD37,
+
+ /// A color described as Ugly Purple with a HEX value of #A442A0 .
+ UglyPurple = 0xA442A0,
+
+ /// A color described as Medium Pink with a HEX value of #F36196 .
+ MediumPink = 0xF36196,
+
+ /// A color described as Puke Brown with a HEX value of #947706 .
+ PukeBrown = 0x947706,
+
+ /// A color described as Very Light Pink with a HEX value of #FFF4F2 .
+ VeryLightPink = 0xFFF4F2,
+
+ /// A color described as Viridian with a HEX value of #1E9167 .
+ Viridian = 0x1E9167,
+
+ /// A color described as Bile with a HEX value of #B5C306 .
+ Bile = 0xB5C306,
+
+ /// A color described as Faded Yellow with a HEX value of #FEFF7F .
+ FadedYellow = 0xFEFF7F,
+
+ /// A color described as Very Pale Green with a HEX value of #CFFDBC .
+ VeryPaleGreen = 0xCFFDBC,
+
+ /// A color described as Vibrant Green with a HEX value of #0ADD08 .
+ VibrantGreen = 0x0ADD08,
+
+ /// A color described as Bright Lime with a HEX value of #87FD05 .
+ BrightLime = 0x87FD05,
+
+ /// A color described as Spearmint with a HEX value of #1EF876 .
+ Spearmint = 0x1EF876,
+
+ /// A color described as Light Aquamarine with a HEX value of #7BFDC7 .
+ LightAquamarine = 0x7BFDC7,
+
+ /// A color described as Light Sage with a HEX value of #BCECAC .
+ LightSage = 0xBCECAC,
+
+ /// A color described as Yellowgreen with a HEX value of #BBF90F .
+ Yellowgreen = 0xBBF90F,
+
+ /// A color described as Baby Poo with a HEX value of #AB9004 .
+ BabyPoo = 0xAB9004,
+
+ /// A color described as Dark Seafoam with a HEX value of #1FB57A .
+ DarkSeafoam = 0x1FB57A,
+
+ /// A color described as Deep Teal with a HEX value of #00555A .
+ DeepTeal = 0x00555A,
+
+ /// A color described as Heather with a HEX value of #A484AC .
+ Heather = 0xA484AC,
+
+ /// A color described as Rust Orange with a HEX value of #C45508 .
+ RustOrange = 0xC45508,
+
+ /// A color described as Dirty Blue with a HEX value of #3F829D .
+ DirtyBlue = 0x3F829D,
+
+ /// A color described as Fern Green with a HEX value of #548D44 .
+ FernGreen = 0x548D44,
+
+ /// A color described as Bright Lilac with a HEX value of #C95EFB .
+ BrightLilac = 0xC95EFB,
+
+ /// A color described as Weird Green with a HEX value of #3AE57F .
+ WeirdGreen = 0x3AE57F,
+
+ /// A color described as Peacock Blue with a HEX value of #016795 .
+ PeacockBlue = 0x016795,
+
+ /// A color described as Avocado Green with a HEX value of #87A922 .
+ AvocadoGreen = 0x87A922,
+
+ /// A color described as Faded Orange with a HEX value of #F0944D .
+ FadedOrange = 0xF0944D,
+
+ /// A color described as Grape Purple with a HEX value of #5D1451 .
+ GrapePurple = 0x5D1451,
+
+ /// A color described as Hot Green with a HEX value of #25FF29 .
+ HotGreen = 0x25FF29,
+
+ /// A color described as Lime Yellow with a HEX value of #D0FE1D .
+ LimeYellow = 0xD0FE1D,
+
+ /// A color described as Mango with a HEX value of #FFA62B .
+ Mango = 0xFFA62B,
+
+ /// A color described as Shamrock with a HEX value of #01B44C .
+ Shamrock = 0x01B44C,
+
+ /// A color described as Bubblegum with a HEX value of #FF6CB5 .
+ Bubblegum = 0xFF6CB5,
+
+ /// A color described as Purplish Brown with a HEX value of #6B4247 .
+ PurplishBrown = 0x6B4247,
+
+ /// A color described as Vomit Yellow with a HEX value of #C7C10C .
+ VomitYellow = 0xC7C10C,
+
+ /// A color described as Pale Cyan with a HEX value of #B7FFFA .
+ PaleCyan = 0xB7FFFA,
+
+ /// A color described as Key Lime with a HEX value of #AEFF6E .
+ KeyLime = 0xAEFF6E,
+
+ /// A color described as Tomato Red with a HEX value of #EC2D01 .
+ TomatoRed = 0xEC2D01,
+
+ /// A color described as Lightgreen with a HEX value of #76FF7B .
+ Lightgreen = 0x76FF7B,
+
+ /// A color described as Merlot with a HEX value of #730039 .
+ Merlot = 0x730039,
+
+ /// A color described as Night Blue with a HEX value of #040348 .
+ NightBlue = 0x040348,
+
+ /// A color described as Purpleish Pink with a HEX value of #DF4EC8 .
+ PurpleishPink = 0xDF4EC8,
+
+ /// A color described as Apple with a HEX value of #6ECB3C .
+ Apple = 0x6ECB3C,
+
+ /// A color described as Baby Poop Green with a HEX value of #8F9805 .
+ BabyPoopGreen = 0x8F9805,
+
+ /// A color described as Green Apple with a HEX value of #5EDC1F .
+ GreenApple = 0x5EDC1F,
+
+ /// A color described as Heliotrope with a HEX value of #D94FF5 .
+ Heliotrope = 0xD94FF5,
+
+ /// A color described as Yellow/Green with a HEX value of #C8FD3D .
+ YellowGreen = 0xC8FD3D,
+
+ /// A color described as Almost Black with a HEX value of #070D0D .
+ AlmostBlack = 0x070D0D,
+
+ /// A color described as Cool Blue with a HEX value of #4984B8 .
+ CoolBlue = 0x4984B8,
+
+ /// A color described as Leafy Green with a HEX value of #51B73B .
+ LeafyGreen = 0x51B73B,
+
+ /// A color described as Mustard Brown with a HEX value of #AC7E04 .
+ MustardBrown = 0xAC7E04,
+
+ /// A color described as Dusk with a HEX value of #4E5481 .
+ Dusk = 0x4E5481,
+
+ /// A color described as Dull Brown with a HEX value of #876E4B .
+ DullBrown = 0x876E4B,
+
+ /// A color described as Frog Green with a HEX value of #58BC08 .
+ FrogGreen = 0x58BC08,
+
+ /// A color described as Vivid Green with a HEX value of #2FEF10 .
+ VividGreen = 0x2FEF10,
+
+ /// A color described as Bright Light Green with a HEX value of #2DFE54 .
+ BrightLightGreen = 0x2DFE54,
+
+ /// A color described as Fluro Green with a HEX value of #0AFF02 .
+ FluroGreen = 0x0AFF02,
+
+ /// A color described as Kiwi with a HEX value of #9CEF43 .
+ Kiwi = 0x9CEF43,
+
+ /// A color described as Seaweed with a HEX value of #18D17B .
+ Seaweed = 0x18D17B,
+
+ /// A color described as Navy Green with a HEX value of #35530A .
+ NavyGreen = 0x35530A,
+
+ /// A color described as Ultramarine Blue with a HEX value of #1805DB .
+ UltramarineBlue = 0x1805DB,
+
+ /// A color described as Iris with a HEX value of #6258C4 .
+ Iris = 0x6258C4,
+
+ /// A color described as Pastel Orange with a HEX value of #FF964F .
+ PastelOrange = 0xFF964F,
+
+ /// A color described as Yellowish Orange with a HEX value of #FFAB0F .
+ YellowishOrange = 0xFFAB0F,
+
+ /// A color described as Perrywinkle with a HEX value of #8F8CE7 .
+ Perrywinkle = 0x8F8CE7,
+
+ /// A color described as Tealish with a HEX value of #24BCA8 .
+ Tealish = 0x24BCA8,
+
+ /// A color described as Dark Plum with a HEX value of #3F012C .
+ DarkPlum = 0x3F012C,
+
+ /// A color described as Pear with a HEX value of #CBF85F .
+ Pear = 0xCBF85F,
+
+ /// A color described as Pinkish Orange with a HEX value of #FF724C .
+ PinkishOrange = 0xFF724C,
+
+ /// A color described as Midnight Purple with a HEX value of #280137 .
+ MidnightPurple = 0x280137,
+
+ /// A color described as Light Urple with a HEX value of #B36FF6 .
+ LightUrple = 0xB36FF6,
+
+ /// A color described as Dark Mint with a HEX value of #48C072 .
+ DarkMint = 0x48C072,
+
+ /// A color described as Greenish Tan with a HEX value of #BCCB7A .
+ GreenishTan = 0xBCCB7A,
+
+ /// A color described as Light Burgundy with a HEX value of #A8415B .
+ LightBurgundy = 0xA8415B,
+
+ /// A color described as Turquoise Blue with a HEX value of #06B1C4 .
+ TurquoiseBlue = 0x06B1C4,
+
+ /// A color described as Ugly Pink with a HEX value of #CD7584 .
+ UglyPink = 0xCD7584,
+
+ /// A color described as Sandy with a HEX value of #F1DA7A .
+ Sandy = 0xF1DA7A,
+
+ /// A color described as Electric Pink with a HEX value of #FF0490 .
+ ElectricPink = 0xFF0490,
+
+ /// A color described as Muted Purple with a HEX value of #805B87 .
+ MutedPurple = 0x805B87,
+
+ /// A color described as Mid Green with a HEX value of #50A747 .
+ MidGreen = 0x50A747,
+
+ /// A color described as Greyish with a HEX value of #A8A495 .
+ Greyish = 0xA8A495,
+
+ /// A color described as Neon Yellow with a HEX value of #CFFF04 .
+ NeonYellow = 0xCFFF04,
+
+ /// A color described as Banana with a HEX value of #FFFF7E .
+ Banana = 0xFFFF7E,
+
+ /// A color described as Carnation Pink with a HEX value of #FF7FA7 .
+ CarnationPink = 0xFF7FA7,
+
+ /// A color described as Tomato with a HEX value of #EF4026 .
+ Tomato = 0xEF4026,
+
+ /// A color described as Sea with a HEX value of #3C9992 .
+ Sea = 0x3C9992,
+
+ /// A color described as Muddy Brown with a HEX value of #886806 .
+ MuddyBrown = 0x886806,
+
+ /// A color described as Turquoise Green with a HEX value of #04F489 .
+ TurquoiseGreen = 0x04F489,
+
+ /// A color described as Buff with a HEX value of #FEF69E .
+ Buff = 0xFEF69E,
+
+ /// A color described as Fawn with a HEX value of #CFAF7B .
+ Fawn = 0xCFAF7B,
+
+ /// A color described as Muted Blue with a HEX value of #3B719F .
+ MutedBlue = 0x3B719F,
+
+ /// A color described as Pale Rose with a HEX value of #FDC1C5 .
+ PaleRose = 0xFDC1C5,
+
+ /// A color described as Dark Mint Green with a HEX value of #20C073 .
+ DarkMintGreen = 0x20C073,
+
+ /// A color described as Amethyst with a HEX value of #9B5FC0 .
+ Amethyst = 0x9B5FC0,
+
+ /// A color described as Blue/Green with a HEX value of #0F9B8E .
+ BlueGreen = 0x0F9B8E,
+
+ /// A color described as Chestnut with a HEX value of #742802 .
+ Chestnut = 0x742802,
+
+ /// A color described as Sick Green with a HEX value of #9DB92C .
+ SickGreen = 0x9DB92C,
+
+ /// A color described as Pea with a HEX value of #A4BF20 .
+ Pea = 0xA4BF20,
+
+ /// A color described as Rusty Orange with a HEX value of #CD5909 .
+ RustyOrange = 0xCD5909,
+
+ /// A color described as Stone with a HEX value of #ADA587 .
+ Stone = 0xADA587,
+
+ /// A color described as Rose Red with a HEX value of #BE013C .
+ RoseRed = 0xBE013C,
+
+ /// A color described as Pale Aqua with a HEX value of #B8FFEB .
+ PaleAqua = 0xB8FFEB,
+
+ /// A color described as Deep Orange with a HEX value of #DC4D01 .
+ DeepOrange = 0xDC4D01,
+
+ /// A color described as Earth with a HEX value of #A2653E .
+ Earth = 0xA2653E,
+
+ /// A color described as Mossy Green with a HEX value of #638B27 .
+ MossyGreen = 0x638B27,
+
+ /// A color described as Grassy Green with a HEX value of #419C03 .
+ GrassyGreen = 0x419C03,
+
+ /// A color described as Pale Lime Green with a HEX value of #B1FF65 .
+ PaleLimeGreen = 0xB1FF65,
+
+ /// A color described as Light Grey Blue with a HEX value of #9DBCD4 .
+ LightGreyBlue = 0x9DBCD4,
+
+ /// A color described as Pale Grey with a HEX value of #FDFDFE .
+ PaleGrey = 0xFDFDFE,
+
+ /// A color described as Asparagus with a HEX value of #77AB56 .
+ Asparagus = 0x77AB56,
+
+ /// A color described as Blueberry with a HEX value of #464196 .
+ Blueberry = 0x464196,
+
+ /// A color described as Purple Red with a HEX value of #990147 .
+ PurpleRed = 0x990147,
+
+ /// A color described as Pale Lime with a HEX value of #BEFD73 .
+ PaleLime = 0xBEFD73,
+
+ /// A color described as Greenish Teal with a HEX value of #32BF84 .
+ GreenishTeal = 0x32BF84,
+
+ /// A color described as Caramel with a HEX value of #AF6F09 .
+ Caramel = 0xAF6F09,
+
+ /// A color described as Deep Magenta with a HEX value of #A0025C .
+ DeepMagenta = 0xA0025C,
+
+ /// A color described as Light Peach with a HEX value of #FFD8B1 .
+ LightPeach = 0xFFD8B1,
+
+ /// A color described as Milk Chocolate with a HEX value of #7F4E1E .
+ MilkChocolate = 0x7F4E1E,
+
+ /// A color described as Ocher with a HEX value of #BF9B0C .
+ Ocher = 0xBF9B0C,
+
+ /// A color described as Off Green with a HEX value of #6BA353 .
+ OffGreen = 0x6BA353,
+
+ /// A color described as Purply Pink with a HEX value of #F075E6 .
+ PurplyPink = 0xF075E6,
+
+ /// A color described as Lightblue with a HEX value of #7BC8F6 .
+ Lightblue = 0x7BC8F6,
+
+ /// A color described as Dusky Blue with a HEX value of #475F94 .
+ DuskyBlue = 0x475F94,
+
+ /// A color described as Golden with a HEX value of #F5BF03 .
+ Golden = 0xF5BF03,
+
+ /// A color described as Light Beige with a HEX value of #FFFEB6 .
+ LightBeige = 0xFFFEB6,
+
+ /// A color described as Butter Yellow with a HEX value of #FFFD74 .
+ ButterYellow = 0xFFFD74,
+
+ /// A color described as Dusky Purple with a HEX value of #895B7B .
+ DuskyPurple = 0x895B7B,
+
+ /// A color described as French Blue with a HEX value of #436BAD .
+ FrenchBlue = 0x436BAD,
+
+ /// A color described as Ugly Yellow with a HEX value of #D0C101 .
+ UglyYellow = 0xD0C101,
+
+ /// A color described as Greeny Yellow with a HEX value of #C6F808 .
+ GreenyYellow = 0xC6F808,
+
+ /// A color described as Orangish Red with a HEX value of #F43605 .
+ OrangishRed = 0xF43605,
+
+ /// A color described as Shamrock Green with a HEX value of #02C14D .
+ ShamrockGreen = 0x02C14D,
+
+ /// A color described as Orangish Brown with a HEX value of #B25F03 .
+ OrangishBrown = 0xB25F03,
+
+ /// A color described as Tree Green with a HEX value of #2A7E19 .
+ TreeGreen = 0x2A7E19,
+
+ /// A color described as Deep Violet with a HEX value of #490648 .
+ DeepViolet = 0x490648,
+
+ /// A color described as Gunmetal with a HEX value of #536267 .
+ Gunmetal = 0x536267,
+
+ /// A color described as Blue/Purple with a HEX value of #5A06EF .
+ BluePurple = 0x5A06EF,
+
+ /// A color described as Cherry with a HEX value of #CF0234 .
+ Cherry = 0xCF0234,
+
+ /// A color described as Sandy Brown with a HEX value of #C4A661 .
+ SandyBrown = 0xC4A661,
+
+ /// A color described as Warm Grey with a HEX value of #978A84 .
+ WarmGrey = 0x978A84,
+
+ /// A color described as Dark Indigo with a HEX value of #1F0954 .
+ DarkIndigo = 0x1F0954,
+
+ /// A color described as Midnight with a HEX value of #03012D .
+ Midnight = 0x03012D,
+
+ /// A color described as Bluey Green with a HEX value of #2BB179 .
+ BlueyGreen = 0x2BB179,
+
+ /// A color described as Grey Pink with a HEX value of #C3909B .
+ GreyPink = 0xC3909B,
+
+ /// A color described as Soft Purple with a HEX value of #A66FB5 .
+ SoftPurple = 0xA66FB5,
+
+ /// A color described as Blood with a HEX value of #770001 .
+ Blood = 0x770001,
+
+ /// A color described as Brown Red with a HEX value of #922B05 .
+ BrownRed = 0x922B05,
+
+ /// A color described as Medium Grey with a HEX value of #7D7F7C .
+ MediumGrey = 0x7D7F7C,
+
+ /// A color described as Berry with a HEX value of #990F4B .
+ Berry = 0x990F4B,
+
+ /// A color described as Poo with a HEX value of #8F7303 .
+ Poo = 0x8F7303,
+
+ /// A color described as Purpley Pink with a HEX value of #C83CB9 .
+ PurpleyPink = 0xC83CB9,
+
+ /// A color described as Light Salmon with a HEX value of #FEA993 .
+ LightSalmon = 0xFEA993,
+
+ /// A color described as Snot with a HEX value of #ACBB0D .
+ Snot = 0xACBB0D,
+
+ /// A color described as Easter Purple with a HEX value of #C071FE .
+ EasterPurple = 0xC071FE,
+
+ /// A color described as Light Yellow Green with a HEX value of #CCFD7F .
+ LightYellowGreen = 0xCCFD7F,
+
+ /// A color described as Dark Navy Blue with a HEX value of #00022E .
+ DarkNavyBlue = 0x00022E,
+
+ /// A color described as Drab with a HEX value of #828344 .
+ Drab = 0x828344,
+
+ /// A color described as Light Rose with a HEX value of #FFC5CB .
+ LightRose = 0xFFC5CB,
+
+ /// A color described as Rouge with a HEX value of #AB1239 .
+ Rouge = 0xAB1239,
+
+ /// A color described as Purplish Red with a HEX value of #B0054B .
+ PurplishRed = 0xB0054B,
+
+ /// A color described as Slime Green with a HEX value of #99CC04 .
+ SlimeGreen = 0x99CC04,
+
+ /// A color described as Baby Poop with a HEX value of #937C00 .
+ BabyPoop = 0x937C00,
+
+ /// A color described as Irish Green with a HEX value of #019529 .
+ IrishGreen = 0x019529,
+
+ /// A color described as Pink/Purple with a HEX value of #EF1DE7 .
+ PinkPurple = 0xEF1DE7,
+
+ /// A color described as Dark Navy with a HEX value of #000435 .
+ DarkNavy = 0x000435,
+
+ /// A color described as Greeny Blue with a HEX value of #42B395 .
+ GreenyBlue = 0x42B395,
+
+ /// A color described as Light Plum with a HEX value of #9D5783 .
+ LightPlum = 0x9D5783,
+
+ /// A color described as Pinkish Grey with a HEX value of #C8ACA9 .
+ PinkishGrey = 0xC8ACA9,
+
+ /// A color described as Dirty Orange with a HEX value of #C87606 .
+ DirtyOrange = 0xC87606,
+
+ /// A color described as Rust Red with a HEX value of #AA2704 .
+ RustRed = 0xAA2704,
+
+ /// A color described as Pale Lilac with a HEX value of #E4CBFF .
+ PaleLilac = 0xE4CBFF,
+
+ /// A color described as Orangey Red with a HEX value of #FA4224 .
+ OrangeyRed = 0xFA4224,
+
+ /// A color described as Primary Blue with a HEX value of #0804F9 .
+ PrimaryBlue = 0x0804F9,
+
+ /// A color described as Kermit Green with a HEX value of #5CB200 .
+ KermitGreen = 0x5CB200,
+
+ /// A color described as Brownish Purple with a HEX value of #76424E .
+ BrownishPurple = 0x76424E,
+
+ /// A color described as Murky Green with a HEX value of #6C7A0E .
+ MurkyGreen = 0x6C7A0E,
+
+ /// A color described as Wheat with a HEX value of #FBDD7E .
+ Wheat = 0xFBDD7E,
+
+ /// A color described as Very Dark Purple with a HEX value of #2A0134 .
+ VeryDarkPurple = 0x2A0134,
+
+ /// A color described as Bottle Green with a HEX value of #044A05 .
+ BottleGreen = 0x044A05,
+
+ /// A color described as Watermelon with a HEX value of #FD4659 .
+ Watermelon = 0xFD4659,
+
+ /// A color described as Deep Sky Blue with a HEX value of #0D75F8 .
+ DeepSkyBlue = 0x0D75F8,
+
+ /// A color described as Fire Engine Red with a HEX value of #FE0002 .
+ FireEngineRed = 0xFE0002,
+
+ /// A color described as Yellow Ochre with a HEX value of #CB9D06 .
+ YellowOchre = 0xCB9D06,
+
+ /// A color described as Pumpkin Orange with a HEX value of #FB7D07 .
+ PumpkinOrange = 0xFB7D07,
+
+ /// A color described as Pale Olive with a HEX value of #B9CC81 .
+ PaleOlive = 0xB9CC81,
+
+ /// A color described as Light Lilac with a HEX value of #EDC8FF .
+ LightLilac = 0xEDC8FF,
+
+ /// A color described as Lightish Green with a HEX value of #61E160 .
+ LightishGreen = 0x61E160,
+
+ /// A color described as Carolina Blue with a HEX value of #8AB8FE .
+ CarolinaBlue = 0x8AB8FE,
+
+ /// A color described as Mulberry with a HEX value of #920A4E .
+ Mulberry = 0x920A4E,
+
+ /// A color described as Shocking Pink with a HEX value of #FE02A2 .
+ ShockingPink = 0xFE02A2,
+
+ /// A color described as Auburn with a HEX value of #9A3001 .
+ Auburn = 0x9A3001,
+
+ /// A color described as Bright Lime Green with a HEX value of #65FE08 .
+ BrightLimeGreen = 0x65FE08,
+
+ /// A color described as Celadon with a HEX value of #BEFDB7 .
+ Celadon = 0xBEFDB7,
+
+ /// A color described as Pinkish Brown with a HEX value of #B17261 .
+ PinkishBrown = 0xB17261,
+
+ /// A color described as Poo Brown with a HEX value of #885F01 .
+ PooBrown = 0x885F01,
+
+ /// A color described as Bright Sky Blue with a HEX value of #02CCFE .
+ BrightSkyBlue = 0x02CCFE,
+
+ /// A color described as Celery with a HEX value of #C1FD95 .
+ Celery = 0xC1FD95,
+
+ /// A color described as Dirt Brown with a HEX value of #836539 .
+ DirtBrown = 0x836539,
+
+ /// A color described as Strawberry with a HEX value of #FB2943 .
+ Strawberry = 0xFB2943,
+
+ /// A color described as Dark Lime with a HEX value of #84B701 .
+ DarkLime = 0x84B701,
+
+ /// A color described as Copper with a HEX value of #B66325 .
+ Copper = 0xB66325,
+
+ /// A color described as Medium Brown with a HEX value of #7F5112 .
+ MediumBrown = 0x7F5112,
+
+ /// A color described as Muted Green with a HEX value of #5FA052 .
+ MutedGreen = 0x5FA052,
+
+ /// A color described as Robin'S Egg with a HEX value of #6DEDFD .
+ RobinsEgg = 0x6DEDFD,
+
+ /// A color described as Bright Aqua with a HEX value of #0BF9EA .
+ BrightAqua = 0x0BF9EA,
+
+ /// A color described as Bright Lavender with a HEX value of #C760FF .
+ BrightLavender = 0xC760FF,
+
+ /// A color described as Ivory with a HEX value of #FFFFCB .
+ Ivory = 0xFFFFCB,
+
+ /// A color described as Very Light Purple with a HEX value of #F6CEFC .
+ VeryLightPurple = 0xF6CEFC,
+
+ /// A color described as Light Navy with a HEX value of #155084 .
+ LightNavy = 0x155084,
+
+ /// A color described as Pink Red with a HEX value of #F5054F .
+ PinkRed = 0xF5054F,
+
+ /// A color described as Olive Brown with a HEX value of #645403 .
+ OliveBrown = 0x645403,
+
+ /// A color described as Poop Brown with a HEX value of #7A5901 .
+ PoopBrown = 0x7A5901,
+
+ /// A color described as Mustard Green with a HEX value of #A8B504 .
+ MustardGreen = 0xA8B504,
+
+ /// A color described as Ocean Green with a HEX value of #3D9973 .
+ OceanGreen = 0x3D9973,
+
+ /// A color described as Very Dark Blue with a HEX value of #000133 .
+ VeryDarkBlue = 0x000133,
+
+ /// A color described as Dusty Green with a HEX value of #76A973 .
+ DustyGreen = 0x76A973,
+
+ /// A color described as Light Navy Blue with a HEX value of #2E5A88 .
+ LightNavyBlue = 0x2E5A88,
+
+ /// A color described as Minty Green with a HEX value of #0BF77D .
+ MintyGreen = 0x0BF77D,
+
+ /// A color described as Adobe with a HEX value of #BD6C48 .
+ Adobe = 0xBD6C48,
+
+ /// A color described as Barney with a HEX value of #AC1DB8 .
+ Barney = 0xAC1DB8,
+
+ /// A color described as Jade Green with a HEX value of #2BAF6A .
+ JadeGreen = 0x2BAF6A,
+
+ /// A color described as Bright Light Blue with a HEX value of #26F7FD .
+ BrightLightBlue = 0x26F7FD,
+
+ /// A color described as Light Lime with a HEX value of #AEFD6C .
+ LightLime = 0xAEFD6C,
+
+ /// A color described as Dark Khaki with a HEX value of #9B8F55 .
+ DarkKhaki = 0x9B8F55,
+
+ /// A color described as Orange Yellow with a HEX value of #FFAD01 .
+ OrangeYellow = 0xFFAD01,
+
+ /// A color described as Ocre with a HEX value of #C69C04 .
+ Ocre = 0xC69C04,
+
+ /// A color described as Maize with a HEX value of #F4D054 .
+ Maize = 0xF4D054,
+
+ /// A color described as Faded Pink with a HEX value of #DE9DAC .
+ FadedPink = 0xDE9DAC,
+
+ /// A color described as British Racing Green with a HEX value of #05480D .
+ BritishRacingGreen = 0x05480D,
+
+ /// A color described as Sandstone with a HEX value of #C9AE74 .
+ Sandstone = 0xC9AE74,
+
+ /// A color described as Mud Brown with a HEX value of #60460F .
+ MudBrown = 0x60460F,
+
+ /// A color described as Light Sea Green with a HEX value of #98F6B0 .
+ LightSeaGreen = 0x98F6B0,
+
+ /// A color described as Robin Egg Blue with a HEX value of #8AF1FE .
+ RobinEggBlue = 0x8AF1FE,
+
+ /// A color described as Aqua Marine with a HEX value of #2EE8BB .
+ AquaMarine = 0x2EE8BB,
+
+ /// A color described as Dark Sea Green with a HEX value of #11875D .
+ DarkSeaGreen = 0x11875D,
+
+ /// A color described as Soft Pink with a HEX value of #FDB0C0 .
+ SoftPink = 0xFDB0C0,
+
+ /// A color described as Orangey Brown with a HEX value of #B16002 .
+ OrangeyBrown = 0xB16002,
+
+ /// A color described as Cherry Red with a HEX value of #F7022A .
+ CherryRed = 0xF7022A,
+
+ /// A color described as Burnt Yellow with a HEX value of #D5AB09 .
+ BurntYellow = 0xD5AB09,
+
+ /// A color described as Brownish Grey with a HEX value of #86775F .
+ BrownishGrey = 0x86775F,
+
+ /// A color described as Camel with a HEX value of #C69F59 .
+ Camel = 0xC69F59,
+
+ /// A color described as Purplish Grey with a HEX value of #7A687F .
+ PurplishGrey = 0x7A687F,
+
+ /// A color described as Marine with a HEX value of #042E60 .
+ Marine = 0x042E60,
+
+ /// A color described as Greyish Pink with a HEX value of #C88D94 .
+ GreyishPink = 0xC88D94,
+
+ /// A color described as Pale Turquoise with a HEX value of #A5FBD5 .
+ PaleTurquoise = 0xA5FBD5,
+
+ /// A color described as Pastel Yellow with a HEX value of #FFFE71 .
+ PastelYellow = 0xFFFE71,
+
+ /// A color described as Bluey Purple with a HEX value of #6241C7 .
+ BlueyPurple = 0x6241C7,
+
+ /// A color described as Canary Yellow with a HEX value of #FFFE40 .
+ CanaryYellow = 0xFFFE40,
+
+ /// A color described as Faded Red with a HEX value of #D3494E .
+ FadedRed = 0xD3494E,
+
+ /// A color described as Sepia with a HEX value of #985E2B .
+ Sepia = 0x985E2B,
+
+ /// A color described as Coffee with a HEX value of #A6814C .
+ Coffee = 0xA6814C,
+
+ /// A color described as Bright Magenta with a HEX value of #FF08E8 .
+ BrightMagenta = 0xFF08E8,
+
+ /// A color described as Mocha with a HEX value of #9D7651 .
+ Mocha = 0x9D7651,
+
+ /// A color described as Ecru with a HEX value of #FEFFCA .
+ Ecru = 0xFEFFCA,
+
+ /// A color described as Purpleish with a HEX value of #98568D .
+ Purpleish = 0x98568D,
+
+ /// A color described as Cranberry with a HEX value of #9E003A .
+ Cranberry = 0x9E003A,
+
+ /// A color described as Darkish Green with a HEX value of #287C37 .
+ DarkishGreen = 0x287C37,
+
+ /// A color described as Brown Orange with a HEX value of #B96902 .
+ BrownOrange = 0xB96902,
+
+ /// A color described as Dusky Rose with a HEX value of #BA6873 .
+ DuskyRose = 0xBA6873,
+
+ /// A color described as Melon with a HEX value of #FF7855 .
+ Melon = 0xFF7855,
+
+ /// A color described as Sickly Green with a HEX value of #94B21C .
+ SicklyGreen = 0x94B21C,
+
+ /// A color described as Silver with a HEX value of #C5C9C7 .
+ Silver = 0xC5C9C7,
+
+ /// A color described as Purply Blue with a HEX value of #661AEE .
+ PurplyBlue = 0x661AEE,
+
+ /// A color described as Purpleish Blue with a HEX value of #6140EF .
+ PurpleishBlue = 0x6140EF,
+
+ /// A color described as Hospital Green with a HEX value of #9BE5AA .
+ HospitalGreen = 0x9BE5AA,
+
+ /// A color described as Shit Brown with a HEX value of #7B5804 .
+ ShitBrown = 0x7B5804,
+
+ /// A color described as Mid Blue with a HEX value of #276AB3 .
+ MidBlue = 0x276AB3,
+
+ /// A color described as Amber with a HEX value of #FEB308 .
+ Amber = 0xFEB308,
+
+ /// A color described as Easter Green with a HEX value of #8CFD7E .
+ EasterGreen = 0x8CFD7E,
+
+ /// A color described as Soft Blue with a HEX value of #6488EA .
+ SoftBlue = 0x6488EA,
+
+ /// A color described as Cerulean Blue with a HEX value of #056EEE .
+ CeruleanBlue = 0x056EEE,
+
+ /// A color described as Golden Brown with a HEX value of #B27A01 .
+ GoldenBrown = 0xB27A01,
+
+ /// A color described as Bright Turquoise with a HEX value of #0FFEF9 .
+ BrightTurquoise = 0x0FFEF9,
+
+ /// A color described as Red Pink with a HEX value of #FA2A55 .
+ RedPink = 0xFA2A55,
+
+ /// A color described as Red Purple with a HEX value of #820747 .
+ RedPurple = 0x820747,
+
+ /// A color described as Greyish Brown with a HEX value of #7A6A4F .
+ GreyishBrown = 0x7A6A4F,
+
+ /// A color described as Vermillion with a HEX value of #F4320C .
+ Vermillion = 0xF4320C,
+
+ /// A color described as Russet with a HEX value of #A13905 .
+ Russet = 0xA13905,
+
+ /// A color described as Steel Grey with a HEX value of #6F828A .
+ SteelGrey = 0x6F828A,
+
+ /// A color described as Lighter Purple with a HEX value of #A55AF4 .
+ LighterPurple = 0xA55AF4,
+
+ /// A color described as Bright Violet with a HEX value of #AD0AFD .
+ BrightViolet = 0xAD0AFD,
+
+ /// A color described as Prussian Blue with a HEX value of #004577 .
+ PrussianBlue = 0x004577,
+
+ /// A color described as Slate Green with a HEX value of #658D6D .
+ SlateGreen = 0x658D6D,
+
+ /// A color described as Dirty Pink with a HEX value of #CA7B80 .
+ DirtyPink = 0xCA7B80,
+
+ /// A color described as Dark Blue Green with a HEX value of #005249 .
+ DarkBlueGreen = 0x005249,
+
+ /// A color described as Pine with a HEX value of #2B5D34 .
+ Pine = 0x2B5D34,
+
+ /// A color described as Yellowy Green with a HEX value of #BFF128 .
+ YellowyGreen = 0xBFF128,
+
+ /// A color described as Dark Gold with a HEX value of #B59410 .
+ DarkGold = 0xB59410,
+
+ /// A color described as Bluish with a HEX value of #2976BB .
+ Bluish = 0x2976BB,
+
+ /// A color described as Darkish Blue with a HEX value of #014182 .
+ DarkishBlue = 0x014182,
+
+ /// A color described as Dull Red with a HEX value of #BB3F3F .
+ DullRed = 0xBB3F3F,
+
+ /// A color described as Pinky Red with a HEX value of #FC2647 .
+ PinkyRed = 0xFC2647,
+
+ /// A color described as Bronze with a HEX value of #A87900 .
+ Bronze = 0xA87900,
+
+ /// A color described as Pale Teal with a HEX value of #82CBB2 .
+ PaleTeal = 0x82CBB2,
+
+ /// A color described as Military Green with a HEX value of #667C3E .
+ MilitaryGreen = 0x667C3E,
+
+ /// A color described as Barbie Pink with a HEX value of #FE46A5 .
+ BarbiePink = 0xFE46A5,
+
+ /// A color described as Bubblegum Pink with a HEX value of #FE83CC .
+ BubblegumPink = 0xFE83CC,
+
+ /// A color described as Pea Soup Green with a HEX value of #94A617 .
+ PeaSoupGreen = 0x94A617,
+
+ /// A color described as Dark Mustard with a HEX value of #A88905 .
+ DarkMustard = 0xA88905,
+
+ /// A color described as Shit with a HEX value of #7F5F00 .
+ Shit = 0x7F5F00,
+
+ /// A color described as Medium Purple with a HEX value of #9E43A2 .
+ MediumPurple = 0x9E43A2,
+
+ /// A color described as Very Dark Green with a HEX value of #062E03 .
+ VeryDarkGreen = 0x062E03,
+
+ /// A color described as Dirt with a HEX value of #8A6E45 .
+ Dirt = 0x8A6E45,
+
+ /// A color described as Dusky Pink with a HEX value of #CC7A8B .
+ DuskyPink = 0xCC7A8B,
+
+ /// A color described as Red Violet with a HEX value of #9E0168 .
+ RedViolet = 0x9E0168,
+
+ /// A color described as Lemon Yellow with a HEX value of #FDFF38 .
+ LemonYellow = 0xFDFF38,
+
+ /// A color described as Pistachio with a HEX value of #C0FA8B .
+ Pistachio = 0xC0FA8B,
+
+ /// A color described as Dull Yellow with a HEX value of #EEDC5B .
+ DullYellow = 0xEEDC5B,
+
+ /// A color described as Dark Lime Green with a HEX value of #7EBD01 .
+ DarkLimeGreen = 0x7EBD01,
+
+ /// A color described as Denim Blue with a HEX value of #3B5B92 .
+ DenimBlue = 0x3B5B92,
+
+ /// A color described as Teal Blue with a HEX value of #01889F .
+ TealBlue = 0x01889F,
+
+ /// A color described as Lightish Blue with a HEX value of #3D7AFD .
+ LightishBlue = 0x3D7AFD,
+
+ /// A color described as Purpley Blue with a HEX value of #5F34E7 .
+ PurpleyBlue = 0x5F34E7,
+
+ /// A color described as Light Indigo with a HEX value of #6D5ACF .
+ LightIndigo = 0x6D5ACF,
+
+ /// A color described as Swamp Green with a HEX value of #748500 .
+ SwampGreen = 0x748500,
+
+ /// A color described as Brown Green with a HEX value of #706C11 .
+ BrownGreen = 0x706C11,
+
+ /// A color described as Dark Maroon with a HEX value of #3C0008 .
+ DarkMaroon = 0x3C0008,
+
+ /// A color described as Hot Purple with a HEX value of #CB00F5 .
+ HotPurple = 0xCB00F5,
+
+ /// A color described as Dark Forest Green with a HEX value of #002D04 .
+ DarkForestGreen = 0x002D04,
+
+ /// A color described as Faded Blue with a HEX value of #658CBB .
+ FadedBlue = 0x658CBB,
+
+ /// A color described as Drab Green with a HEX value of #749551 .
+ DrabGreen = 0x749551,
+
+ /// A color described as Light Lime Green with a HEX value of #B9FF66 .
+ LightLimeGreen = 0xB9FF66,
+
+ /// A color described as Snot Green with a HEX value of #9DC100 .
+ SnotGreen = 0x9DC100,
+
+ /// A color described as Yellowish with a HEX value of #FAEE66 .
+ Yellowish = 0xFAEE66,
+
+ /// A color described as Light Blue Green with a HEX value of #7EFBB3 .
+ LightBlueGreen = 0x7EFBB3,
+
+ /// A color described as Bordeaux with a HEX value of #7B002C .
+ Bordeaux = 0x7B002C,
+
+ /// A color described as Light Mauve with a HEX value of #C292A1 .
+ LightMauve = 0xC292A1,
+
+ /// A color described as Ocean with a HEX value of #017B92 .
+ Ocean = 0x017B92,
+
+ /// A color described as Marigold with a HEX value of #FCC006 .
+ Marigold = 0xFCC006,
+
+ /// A color described as Muddy Green with a HEX value of #657432 .
+ MuddyGreen = 0x657432,
+
+ /// A color described as Dull Orange with a HEX value of #D8863B .
+ DullOrange = 0xD8863B,
+
+ /// A color described as Steel with a HEX value of #738595 .
+ Steel = 0x738595,
+
+ /// A color described as Electric Purple with a HEX value of #AA23FF .
+ ElectricPurple = 0xAA23FF,
+
+ /// A color described as Fluorescent Green with a HEX value of #08FF08 .
+ FluorescentGreen = 0x08FF08,
+
+ /// A color described as Yellowish Brown with a HEX value of #9B7A01 .
+ YellowishBrown = 0x9B7A01,
+
+ /// A color described as Blush with a HEX value of #F29E8E .
+ Blush = 0xF29E8E,
+
+ /// A color described as Soft Green with a HEX value of #6FC276 .
+ SoftGreen = 0x6FC276,
+
+ /// A color described as Bright Orange with a HEX value of #FF5B00 .
+ BrightOrange = 0xFF5B00,
+
+ /// A color described as Lemon with a HEX value of #FDFF52 .
+ Lemon = 0xFDFF52,
+
+ /// A color described as Purple Grey with a HEX value of #866F85 .
+ PurpleGrey = 0x866F85,
+
+ /// A color described as Acid Green with a HEX value of #8FFE09 .
+ AcidGreen = 0x8FFE09,
+
+ /// A color described as Pale Lavender with a HEX value of #EECFFE .
+ PaleLavender = 0xEECFFE,
+
+ /// A color described as Violet Blue with a HEX value of #510AC9 .
+ VioletBlue = 0x510AC9,
+
+ /// A color described as Light Forest Green with a HEX value of #4F9153 .
+ LightForestGreen = 0x4F9153,
+
+ /// A color described as Burnt Red with a HEX value of #9F2305 .
+ BurntRed = 0x9F2305,
+
+ /// A color described as Khaki Green with a HEX value of #728639 .
+ KhakiGreen = 0x728639,
+
+ /// A color described as Cerise with a HEX value of #DE0C62 .
+ Cerise = 0xDE0C62,
+
+ /// A color described as Faded Purple with a HEX value of #916E99 .
+ FadedPurple = 0x916E99,
+
+ /// A color described as Apricot with a HEX value of #FFB16D .
+ Apricot = 0xFFB16D,
+
+ /// A color described as Dark Olive Green with a HEX value of #3C4D03 .
+ DarkOliveGreen = 0x3C4D03,
+
+ /// A color described as Grey Brown with a HEX value of #7F7053 .
+ GreyBrown = 0x7F7053,
+
+ /// A color described as Green Grey with a HEX value of #77926F .
+ GreenGrey = 0x77926F,
+
+ /// A color described as True Blue with a HEX value of #010FCC .
+ TrueBlue = 0x010FCC,
+
+ /// A color described as Pale Violet with a HEX value of #CEAEFA .
+ PaleViolet = 0xCEAEFA,
+
+ /// A color described as Periwinkle Blue with a HEX value of #8F99FB .
+ PeriwinkleBlue = 0x8F99FB,
+
+ /// A color described as Light Sky Blue with a HEX value of #C6FCFF .
+ LightSkyBlue = 0xC6FCFF,
+
+ /// A color described as Blurple with a HEX value of #5539CC .
+ Blurple = 0x5539CC,
+
+ /// A color described as Green Brown with a HEX value of #544E03 .
+ GreenBrown = 0x544E03,
+
+ /// A color described as Bluegreen with a HEX value of #017A79 .
+ Bluegreen = 0x017A79,
+
+ /// A color described as Bright Teal with a HEX value of #01F9C6 .
+ BrightTeal = 0x01F9C6,
+
+ /// A color described as Brownish Yellow with a HEX value of #C9B003 .
+ BrownishYellow = 0xC9B003,
+
+ /// A color described as Pea Soup with a HEX value of #929901 .
+ PeaSoup = 0x929901,
+
+ /// A color described as Forest with a HEX value of #0B5509 .
+ Forest = 0x0B5509,
+
+ /// A color described as Barney Purple with a HEX value of #A00498 .
+ BarneyPurple = 0xA00498,
+
+ /// A color described as Ultramarine with a HEX value of #2000B1 .
+ Ultramarine = 0x2000B1,
+
+ /// A color described as Purplish with a HEX value of #94568C .
+ Purplish = 0x94568C,
+
+ /// A color described as Puke Yellow with a HEX value of #C2BE0E .
+ PukeYellow = 0xC2BE0E,
+
+ /// A color described as Bluish Grey with a HEX value of #748B97 .
+ BluishGrey = 0x748B97,
+
+ /// A color described as Dark Periwinkle with a HEX value of #665FD1 .
+ DarkPeriwinkle = 0x665FD1,
+
+ /// A color described as Dark Lilac with a HEX value of #9C6DA5 .
+ DarkLilac = 0x9C6DA5,
+
+ /// A color described as Reddish with a HEX value of #C44240 .
+ Reddish = 0xC44240,
+
+ /// A color described as Light Maroon with a HEX value of #A24857 .
+ LightMaroon = 0xA24857,
+
+ /// A color described as Dusty Purple with a HEX value of #825F87 .
+ DustyPurple = 0x825F87,
+
+ /// A color described as Terra Cotta with a HEX value of #C9643B .
+ TerraCotta = 0xC9643B,
+
+ /// A color described as Avocado with a HEX value of #90B134 .
+ Avocado = 0x90B134,
+
+ /// A color described as Marine Blue with a HEX value of #01386A .
+ MarineBlue = 0x01386A,
+
+ /// A color described as Teal Green with a HEX value of #25A36F .
+ TealGreen = 0x25A36F,
+
+ /// A color described as Slate Grey with a HEX value of #59656D .
+ SlateGrey = 0x59656D,
+
+ /// A color described as Lighter Green with a HEX value of #75FD63 .
+ LighterGreen = 0x75FD63,
+
+ /// A color described as Electric Green with a HEX value of #21FC0D .
+ ElectricGreen = 0x21FC0D,
+
+ /// A color described as Dusty Blue with a HEX value of #5A86AD .
+ DustyBlue = 0x5A86AD,
+
+ /// A color described as Golden Yellow with a HEX value of #FEC615 .
+ GoldenYellow = 0xFEC615,
+
+ /// A color described as Bright Yellow with a HEX value of #FFFD01 .
+ BrightYellow = 0xFFFD01,
+
+ /// A color described as Light Lavender with a HEX value of #DFC5FE .
+ LightLavender = 0xDFC5FE,
+
+ /// A color described as Umber with a HEX value of #B26400 .
+ Umber = 0xB26400,
+
+ /// A color described as Poop with a HEX value of #7F5E00 .
+ Poop = 0x7F5E00,
+
+ /// A color described as Dark Peach with a HEX value of #DE7E5D .
+ DarkPeach = 0xDE7E5D,
+
+ /// A color described as Jungle Green with a HEX value of #048243 .
+ JungleGreen = 0x048243,
+
+ /// A color described as Eggshell with a HEX value of #FFFFD4 .
+ Eggshell = 0xFFFFD4,
+
+ /// A color described as Denim with a HEX value of #3B638C .
+ Denim = 0x3B638C,
+
+ /// A color described as Yellow Brown with a HEX value of #B79400 .
+ YellowBrown = 0xB79400,
+
+ /// A color described as Dull Purple with a HEX value of #84597E .
+ DullPurple = 0x84597E,
+
+ /// A color described as Chocolate Brown with a HEX value of #411900 .
+ ChocolateBrown = 0x411900,
+
+ /// A color described as Wine Red with a HEX value of #7B0323 .
+ WineRed = 0x7B0323,
+
+ /// A color described as Neon Blue with a HEX value of #04D9FF .
+ NeonBlue = 0x04D9FF,
+
+ /// A color described as Dirty Green with a HEX value of #667E2C .
+ DirtyGreen = 0x667E2C,
+
+ /// A color described as Light Tan with a HEX value of #FBEEAC .
+ LightTan = 0xFBEEAC,
+
+ /// A color described as Ice Blue with a HEX value of #D7FFFE .
+ IceBlue = 0xD7FFFE,
+
+ /// A color described as Cadet Blue with a HEX value of #4E7496 .
+ CadetBlue = 0x4E7496,
+
+ /// A color described as Dark Mauve with a HEX value of #874C62 .
+ DarkMauve = 0x874C62,
+
+ /// A color described as Very Light Blue with a HEX value of #D5FFFF .
+ VeryLightBlue = 0xD5FFFF,
+
+ /// A color described as Grey Purple with a HEX value of #826D8C .
+ GreyPurple = 0x826D8C,
+
+ /// A color described as Pastel Pink with a HEX value of #FFBACD .
+ PastelPink = 0xFFBACD,
+
+ /// A color described as Very Light Green with a HEX value of #D1FFBD .
+ VeryLightGreen = 0xD1FFBD,
+
+ /// A color described as Dark Sky Blue with a HEX value of #448EE4 .
+ DarkSkyBlue = 0x448EE4,
+
+ /// A color described as Evergreen with a HEX value of #05472A .
+ Evergreen = 0x05472A,
+
+ /// A color described as Dull Pink with a HEX value of #D5869D .
+ DullPink = 0xD5869D,
+
+ /// A color described as Aubergine with a HEX value of #3D0734 .
+ Aubergine = 0x3D0734,
+
+ /// A color described as Mahogany with a HEX value of #4A0100 .
+ Mahogany = 0x4A0100,
+
+ /// A color described as Reddish Orange with a HEX value of #F8481C .
+ ReddishOrange = 0xF8481C,
+
+ /// A color described as Deep Green with a HEX value of #02590F .
+ DeepGreen = 0x02590F,
+
+ /// A color described as Vomit Green with a HEX value of #89A203 .
+ VomitGreen = 0x89A203,
+
+ /// A color described as Purple Pink with a HEX value of #E03FD8 .
+ PurplePinkAlternate = 0xE03FD8,
+
+ /// A color described as Dusty Pink with a HEX value of #D58A94 .
+ DustyPink = 0xD58A94,
+
+ /// A color described as Faded Green with a HEX value of #7BB274 .
+ FadedGreen = 0x7BB274,
+
+ /// A color described as Camo Green with a HEX value of #526525 .
+ CamoGreen = 0x526525,
+
+ /// A color described as Pinky Purple with a HEX value of #C94CBE .
+ PinkyPurple = 0xC94CBE,
+
+ /// A color described as Pink Purple with a HEX value of #DB4BDA .
+ PinkPurpleAlternate = 0xDB4BDA,
+
+ /// A color described as Brownish Red with a HEX value of #9E3623 .
+ BrownishRed = 0x9E3623,
+
+ /// A color described as Dark Rose with a HEX value of #B5485D .
+ DarkRose = 0xB5485D,
+
+ /// A color described as Mud with a HEX value of #735C12 .
+ Mud = 0x735C12,
+
+ /// A color described as Brownish with a HEX value of #9C6D57 .
+ Brownish = 0x9C6D57,
+
+ /// A color described as Emerald Green with a HEX value of #028F1E .
+ EmeraldGreen = 0x028F1E,
+
+ /// A color described as Pale Brown with a HEX value of #B1916E .
+ PaleBrown = 0xB1916E,
+
+ /// A color described as Dull Blue with a HEX value of #49759C .
+ DullBlue = 0x49759C,
+
+ /// A color described as Burnt Umber with a HEX value of #A0450E .
+ BurntUmber = 0xA0450E,
+
+ /// A color described as Medium Green with a HEX value of #39AD48 .
+ MediumGreen = 0x39AD48,
+
+ /// A color described as Clay with a HEX value of #B66A50 .
+ Clay = 0xB66A50,
+
+ /// A color described as Light Aqua with a HEX value of #8CFFDB .
+ LightAqua = 0x8CFFDB,
+
+ /// A color described as Light Olive Green with a HEX value of #A4BE5C .
+ LightOliveGreen = 0xA4BE5C,
+
+ /// A color described as Brownish Orange with a HEX value of #CB7723 .
+ BrownishOrange = 0xCB7723,
+
+ /// A color described as Dark Aqua with a HEX value of #05696B .
+ DarkAqua = 0x05696B,
+
+ /// A color described as Purplish Pink with a HEX value of #CE5DAE .
+ PurplishPink = 0xCE5DAE,
+
+ /// A color described as Dark Salmon with a HEX value of #C85A53 .
+ DarkSalmon = 0xC85A53,
+
+ /// A color described as Greenish Grey with a HEX value of #96AE8D .
+ GreenishGrey = 0x96AE8D,
+
+ /// A color described as Jade with a HEX value of #1FA774 .
+ Jade = 0x1FA774,
+
+ /// A color described as Ugly Green with a HEX value of #7A9703 .
+ UglyGreen = 0x7A9703,
+
+ /// A color described as Dark Beige with a HEX value of #AC9362 .
+ DarkBeige = 0xAC9362,
+
+ /// A color described as Emerald with a HEX value of #01A049 .
+ Emerald = 0x01A049,
+
+ /// A color described as Pale Red with a HEX value of #D9544D .
+ PaleRed = 0xD9544D,
+
+ /// A color described as Light Magenta with a HEX value of #FA5FF7 .
+ LightMagenta = 0xFA5FF7,
+
+ /// A color described as Sky with a HEX value of #82CAFC .
+ Sky = 0x82CAFC,
+
+ /// A color described as Light Cyan with a HEX value of #ACFFFC .
+ LightCyan = 0xACFFFC,
+
+ /// A color described as Yellow Orange with a HEX value of #FCB001 .
+ YellowOrange = 0xFCB001,
+
+ /// A color described as Reddish Purple with a HEX value of #910951 .
+ ReddishPurple = 0x910951,
+
+ /// A color described as Reddish Pink with a HEX value of #FE2C54 .
+ ReddishPink = 0xFE2C54,
+
+ /// A color described as Orchid with a HEX value of #C875C4 .
+ Orchid = 0xC875C4,
+
+ /// A color described as Dirty Yellow with a HEX value of #CDC50A .
+ DirtyYellow = 0xCDC50A,
+
+ /// A color described as Orange Red with a HEX value of #FD411E .
+ OrangeRed = 0xFD411E,
+
+ /// A color described as Deep Red with a HEX value of #9A0200 .
+ DeepRed = 0x9A0200,
+
+ /// A color described as Orange Brown with a HEX value of #BE6400 .
+ OrangeBrown = 0xBE6400,
+
+ /// A color described as Cobalt Blue with a HEX value of #030AA7 .
+ CobaltBlue = 0x030AA7,
+
+ /// A color described as Neon Pink with a HEX value of #FE019A .
+ NeonPink = 0xFE019A,
+
+ /// A color described as Rose Pink with a HEX value of #F7879A .
+ RosePink = 0xF7879A,
+
+ /// A color described as Greyish Purple with a HEX value of #887191 .
+ GreyishPurple = 0x887191,
+
+ /// A color described as Raspberry with a HEX value of #B00149 .
+ Raspberry = 0xB00149,
+
+ /// A color described as Aqua Green with a HEX value of #12E193 .
+ AquaGreen = 0x12E193,
+
+ /// A color described as Salmon Pink with a HEX value of #FE7B7C .
+ SalmonPink = 0xFE7B7C,
+
+ /// A color described as Tangerine with a HEX value of #FF9408 .
+ Tangerine = 0xFF9408,
+
+ /// A color described as Brownish Green with a HEX value of #6A6E09 .
+ BrownishGreen = 0x6A6E09,
+
+ /// A color described as Red Brown with a HEX value of #8B2E16 .
+ RedBrown = 0x8B2E16,
+
+ /// A color described as Greenish Brown with a HEX value of #696112 .
+ GreenishBrown = 0x696112,
+
+ /// A color described as Pumpkin with a HEX value of #E17701 .
+ Pumpkin = 0xE17701,
+
+ /// A color described as Pine Green with a HEX value of #0A481E .
+ PineGreen = 0x0A481E,
+
+ /// A color described as Charcoal with a HEX value of #343837 .
+ Charcoal = 0x343837,
+
+ /// A color described as Baby Pink with a HEX value of #FFB7CE .
+ BabyPink = 0xFFB7CE,
+
+ /// A color described as Cornflower with a HEX value of #6A79F7 .
+ Cornflower = 0x6A79F7,
+
+ /// A color described as Blue Violet with a HEX value of #5D06E9 .
+ BlueViolet = 0x5D06E9,
+
+ /// A color described as Chocolate with a HEX value of #3D1C02 .
+ Chocolate = 0x3D1C02,
+
+ /// A color described as Greyish Green with a HEX value of #82A67D .
+ GreyishGreen = 0x82A67D,
+
+ /// A color described as Scarlet with a HEX value of #BE0119 .
+ Scarlet = 0xBE0119,
+
+ /// A color described as Green Yellow with a HEX value of #C9FF27 .
+ GreenYellowAlternate = 0xC9FF27,
+
+ /// A color described as Dark Olive with a HEX value of #373E02 .
+ DarkOlive = 0x373E02,
+
+ /// A color described as Sienna with a HEX value of #A9561E .
+ Sienna = 0xA9561E,
+
+ /// A color described as Pastel Purple with a HEX value of #CAA0FF .
+ PastelPurple = 0xCAA0FF,
+
+ /// A color described as Terracotta with a HEX value of #CA6641 .
+ Terracotta = 0xCA6641,
+
+ /// A color described as Aqua Blue with a HEX value of #02D8E9 .
+ AquaBlue = 0x02D8E9,
+
+ /// A color described as Sage Green with a HEX value of #88B378 .
+ SageGreen = 0x88B378,
+
+ /// A color described as Blood Red with a HEX value of #980002 .
+ BloodRed = 0x980002,
+
+ /// A color described as Deep Pink with a HEX value of #CB0162 .
+ DeepPink = 0xCB0162,
+
+ /// A color described as Grass with a HEX value of #5CAC2D .
+ Grass = 0x5CAC2D,
+
+ /// A color described as Moss with a HEX value of #769958 .
+ Moss = 0x769958,
+
+ /// A color described as Pastel Blue with a HEX value of #A2BFFE .
+ PastelBlue = 0xA2BFFE,
+
+ /// A color described as Bluish Green with a HEX value of #10A674 .
+ BluishGreen = 0x10A674,
+
+ /// A color described as Green Blue with a HEX value of #06B48B .
+ GreenBlueAlternate = 0x06B48B,
+
+ /// A color described as Dark Tan with a HEX value of #AF884A .
+ DarkTan = 0xAF884A,
+
+ /// A color described as Greenish Blue with a HEX value of #0B8B87 .
+ GreenishBlue = 0x0B8B87,
+
+ /// A color described as Pale Orange with a HEX value of #FFA756 .
+ PaleOrange = 0xFFA756,
+
+ /// A color described as Vomit with a HEX value of #A2A415 .
+ Vomit = 0xA2A415,
+
+ /// A color described as Forrest Green with a HEX value of #154406 .
+ ForrestGreen = 0x154406,
+
+ /// A color described as Dark Lavender with a HEX value of #856798 .
+ DarkLavender = 0x856798,
+
+ /// A color described as Dark Violet with a HEX value of #34013F .
+ DarkViolet = 0x34013F,
+
+ /// A color described as Purple Blue with a HEX value of #632DE9 .
+ PurpleBlueAlternate = 0x632DE9,
+
+ /// A color described as Dark Cyan with a HEX value of #0A888A .
+ DarkCyan = 0x0A888A,
+
+ /// A color described as Olive Drab with a HEX value of #6F7632 .
+ OliveDrab = 0x6F7632,
+
+ /// A color described as Pinkish with a HEX value of #D46A7E .
+ Pinkish = 0xD46A7E,
+
+ /// A color described as Cobalt with a HEX value of #1E488F .
+ Cobalt = 0x1E488F,
+
+ /// A color described as Neon Purple with a HEX value of #BC13FE .
+ NeonPurple = 0xBC13FE,
+
+ /// A color described as Light Turquoise with a HEX value of #7EF4CC .
+ LightTurquoise = 0x7EF4CC,
+
+ /// A color described as Apple Green with a HEX value of #76CD26 .
+ AppleGreen = 0x76CD26,
+
+ /// A color described as Dull Green with a HEX value of #74A662 .
+ DullGreen = 0x74A662,
+
+ /// A color described as Wine with a HEX value of #80013F .
+ Wine = 0x80013F,
+
+ /// A color described as Powder Blue with a HEX value of #B1D1FC .
+ PowderBlue = 0xB1D1FC,
+
+ /// A color described as Off White with a HEX value of #FFFFE4 .
+ OffWhite = 0xFFFFE4,
+
+ /// A color described as Electric Blue with a HEX value of #0652FF .
+ ElectricBlue = 0x0652FF,
+
+ /// A color described as Dark Turquoise with a HEX value of #045C5A .
+ DarkTurquoise = 0x045C5A,
+
+ /// A color described as Blue Purple with a HEX value of #5729CE .
+ BluePurpleAlternate = 0x5729CE,
+
+ /// A color described as Azure with a HEX value of #069AF3 .
+ Azure = 0x069AF3,
+
+ /// A color described as Bright Red with a HEX value of #FF000D .
+ BrightRed = 0xFF000D,
+
+ /// A color described as Pinkish Red with a HEX value of #F10C45 .
+ PinkishRed = 0xF10C45,
+
+ /// A color described as Cornflower Blue with a HEX value of #5170D7 .
+ CornflowerBlue = 0x5170D7,
+
+ /// A color described as Light Olive with a HEX value of #ACBF69 .
+ LightOlive = 0xACBF69,
+
+ /// A color described as Grape with a HEX value of #6C3461 .
+ Grape = 0x6C3461,
+
+ /// A color described as Greyish Blue with a HEX value of #5E819D .
+ GreyishBlue = 0x5E819D,
+
+ /// A color described as Purplish Blue with a HEX value of #601EF9 .
+ PurplishBlue = 0x601EF9,
+
+ /// A color described as Yellowish Green with a HEX value of #B0DD16 .
+ YellowishGreen = 0xB0DD16,
+
+ /// A color described as Greenish Yellow with a HEX value of #CDFD02 .
+ GreenishYellow = 0xCDFD02,
+
+ /// A color described as Medium Blue with a HEX value of #2C6FBB .
+ MediumBlue = 0x2C6FBB,
+
+ /// A color described as Dusty Rose with a HEX value of #C0737A .
+ DustyRose = 0xC0737A,
+
+ /// A color described as Light Violet with a HEX value of #D6B4FC .
+ LightViolet = 0xD6B4FC,
+
+ /// A color described as Midnight Blue with a HEX value of #020035 .
+ MidnightBlue = 0x020035,
+
+ /// A color described as Bluish Purple with a HEX value of #703BE7 .
+ BluishPurple = 0x703BE7,
+
+ /// A color described as Red Orange with a HEX value of #FD3C06 .
+ RedOrange = 0xFD3C06,
+
+ /// A color described as Dark Magenta with a HEX value of #960056 .
+ DarkMagenta = 0x960056,
+
+ /// A color described as Greenish with a HEX value of #40A368 .
+ Greenish = 0x40A368,
+
+ /// A color described as Ocean Blue with a HEX value of #03719C .
+ OceanBlue = 0x03719C,
+
+ /// A color described as Coral with a HEX value of #FC5A50 .
+ Coral = 0xFC5A50,
+
+ /// A color described as Cream with a HEX value of #FFFFC2 .
+ Cream = 0xFFFFC2,
+
+ /// A color described as Reddish Brown with a HEX value of #7F2B0A .
+ ReddishBrown = 0x7F2B0A,
+
+ /// A color described as Burnt Sienna with a HEX value of #B04E0F .
+ BurntSienna = 0xB04E0F,
+
+ /// A color described as Brick with a HEX value of #A03623 .
+ Brick = 0xA03623,
+
+ /// A color described as Sage with a HEX value of #87AE73 .
+ Sage = 0x87AE73,
+
+ /// A color described as Grey Green with a HEX value of #789B73 .
+ GreyGreenAlternate = 0x789B73,
+
+ /// A color described as White with a HEX value of #FFFFFF .
+ White = 0xFFFFFF,
+
+ /// A color described as Robin'S Egg Blue with a HEX value of #98EFF9 .
+ RobinsEggBlue = 0x98EFF9,
+
+ /// A color described as Moss Green with a HEX value of #658B38 .
+ MossGreen = 0x658B38,
+
+ /// A color described as Steel Blue with a HEX value of #5A7D9A .
+ SteelBlue = 0x5A7D9A,
+
+ /// A color described as Eggplant with a HEX value of #380835 .
+ Eggplant = 0x380835,
+
+ /// A color described as Light Yellow with a HEX value of #FFFE7A .
+ LightYellow = 0xFFFE7A,
+
+ /// A color described as Leaf Green with a HEX value of #5CA904 .
+ LeafGreen = 0x5CA904,
+
+ /// A color described as Light Grey with a HEX value of #D8DCD6 .
+ LightGrey = 0xD8DCD6,
+
+ /// A color described as Puke with a HEX value of #A5A502 .
+ Puke = 0xA5A502,
+
+ /// A color described as Pinkish Purple with a HEX value of #D648D7 .
+ PinkishPurple = 0xD648D7,
+
+ /// A color described as Sea Blue with a HEX value of #047495 .
+ SeaBlue = 0x047495,
+
+ /// A color described as Pale Purple with a HEX value of #B790D4 .
+ PalePurple = 0xB790D4,
+
+ /// A color described as Slate Blue with a HEX value of #5B7C99 .
+ SlateBlue = 0x5B7C99,
+
+ /// A color described as Blue Grey with a HEX value of #607C8E .
+ BlueGreyAlternate = 0x607C8E,
+
+ /// A color described as Hunter Green with a HEX value of #0B4008 .
+ HunterGreen = 0x0B4008,
+
+ /// A color described as Fuchsia with a HEX value of #ED0DD9 .
+ Fuchsia = 0xED0DD9,
+
+ /// A color described as Crimson with a HEX value of #8C000F .
+ Crimson = 0x8C000F,
+
+ /// A color described as Pale Yellow with a HEX value of #FFFF84 .
+ PaleYellow = 0xFFFF84,
+
+ /// A color described as Ochre with a HEX value of #BF9005 .
+ Ochre = 0xBF9005,
+
+ /// A color described as Mustard Yellow with a HEX value of #D2BD0A .
+ MustardYellow = 0xD2BD0A,
+
+ /// A color described as Light Red with a HEX value of #FF474C .
+ LightRed = 0xFF474C,
+
+ /// A color described as Cerulean with a HEX value of #0485D1 .
+ Cerulean = 0x0485D1,
+
+ /// A color described as Pale Pink with a HEX value of #FFCFDC .
+ PalePink = 0xFFCFDC,
+
+ /// A color described as Deep Blue with a HEX value of #040273 .
+ DeepBlue = 0x040273,
+
+ /// A color described as Rust with a HEX value of #A83C09 .
+ Rust = 0xA83C09,
+
+ /// A color described as Light Teal with a HEX value of #90E4C1 .
+ LightTeal = 0x90E4C1,
+
+ /// A color described as Slate with a HEX value of #516572 .
+ Slate = 0x516572,
+
+ /// A color described as Goldenrod with a HEX value of #FAC205 .
+ Goldenrod = 0xFAC205,
+
+ /// A color described as Dark Yellow with a HEX value of #D5B60A .
+ DarkYellow = 0xD5B60A,
+
+ /// A color described as Dark Grey with a HEX value of #363737 .
+ DarkGrey = 0x363737,
+
+ /// A color described as Army Green with a HEX value of #4B5D16 .
+ ArmyGreen = 0x4B5D16,
+
+ /// A color described as Grey Blue with a HEX value of #6B8BA4 .
+ GreyBlueAlternate = 0x6B8BA4,
+
+ /// A color described as Seafoam with a HEX value of #80F9AD .
+ Seafoam = 0x80F9AD,
+
+ /// A color described as Puce with a HEX value of #A57E52 .
+ Puce = 0xA57E52,
+
+ /// A color described as Spring Green with a HEX value of #A9F971 .
+ SpringGreen = 0xA9F971,
+
+ /// A color described as Dark Orange with a HEX value of #C65102 .
+ DarkOrange = 0xC65102,
+
+ /// A color described as Sand with a HEX value of #E2CA76 .
+ Sand = 0xE2CA76,
+
+ /// A color described as Pastel Green with a HEX value of #B0FF9D .
+ PastelGreen = 0xB0FF9D,
+
+ /// A color described as Mint with a HEX value of #9FFEB0 .
+ Mint = 0x9FFEB0,
+
+ /// A color described as Light Orange with a HEX value of #FDAA48 .
+ LightOrange = 0xFDAA48,
+
+ /// A color described as Bright Pink with a HEX value of #FE01B1 .
+ BrightPink = 0xFE01B1,
+
+ /// A color described as Chartreuse with a HEX value of #C1F80A .
+ Chartreuse = 0xC1F80A,
+
+ /// A color described as Deep Purple with a HEX value of #36013F .
+ DeepPurple = 0x36013F,
+
+ /// A color described as Dark Brown with a HEX value of #341C02 .
+ DarkBrown = 0x341C02,
+
+ /// A color described as Taupe with a HEX value of #B9A281 .
+ Taupe = 0xB9A281,
+
+ /// A color described as Pea Green with a HEX value of #8EAB12 .
+ PeaGreen = 0x8EAB12,
+
+ /// A color described as Puke Green with a HEX value of #9AAE07 .
+ PukeGreen = 0x9AAE07,
+
+ /// A color described as Kelly Green with a HEX value of #02AB2E .
+ KellyGreen = 0x02AB2E,
+
+ /// A color described as Seafoam Green with a HEX value of #7AF9AB .
+ SeafoamGreen = 0x7AF9AB,
+
+ /// A color described as Blue Green with a HEX value of #137E6D .
+ BlueGreenAlternate = 0x137E6D,
+
+ /// A color described as Khaki with a HEX value of #AAA662 .
+ Khaki = 0xAAA662,
+
+ /// A color described as Burgundy with a HEX value of #610023 .
+ Burgundy = 0x610023,
+
+ /// A color described as Dark Teal with a HEX value of #014D4E .
+ DarkTeal = 0x014D4E,
+
+ /// A color described as Brick Red with a HEX value of #8F1402 .
+ BrickRed = 0x8F1402,
+
+ /// A color described as Royal Purple with a HEX value of #4B006E .
+ RoyalPurple = 0x4B006E,
+
+ /// A color described as Plum with a HEX value of #580F41 .
+ Plum = 0x580F41,
+
+ /// A color described as Mint Green with a HEX value of #8FFF9F .
+ MintGreen = 0x8FFF9F,
+
+ /// A color described as Gold with a HEX value of #DBB40C .
+ Gold = 0xDBB40C,
+
+ /// A color described as Baby Blue with a HEX value of #A2CFFE .
+ BabyBlue = 0xA2CFFE,
+
+ /// A color described as Yellow Green with a HEX value of #C0FB2D .
+ YellowGreenAlternate = 0xC0FB2D,
+
+ /// A color described as Bright Purple with a HEX value of #BE03FD .
+ BrightPurple = 0xBE03FD,
+
+ /// A color described as Dark Red with a HEX value of #840000 .
+ DarkRed = 0x840000,
+
+ /// A color described as Pale Blue with a HEX value of #D0FEFE .
+ PaleBlue = 0xD0FEFE,
+
+ /// A color described as Grass Green with a HEX value of #3F9B0B .
+ GrassGreen = 0x3F9B0B,
+
+ /// A color described as Navy with a HEX value of #01153E .
+ Navy = 0x01153E,
+
+ /// A color described as Aquamarine with a HEX value of #04D8B2 .
+ Aquamarine = 0x04D8B2,
+
+ /// A color described as Burnt Orange with a HEX value of #C04E01 .
+ BurntOrange = 0xC04E01,
+
+ /// A color described as Neon Green with a HEX value of #0CFF0C .
+ NeonGreen = 0x0CFF0C,
+
+ /// A color described as Bright Blue with a HEX value of #0165FC .
+ BrightBlue = 0x0165FC,
+
+ /// A color described as Rose with a HEX value of #CF6275 .
+ Rose = 0xCF6275,
+
+ /// A color described as Light Pink with a HEX value of #FFD1DF .
+ LightPink = 0xFFD1DF,
+
+ /// A color described as Mustard with a HEX value of #CEB301 .
+ Mustard = 0xCEB301,
+
+ /// A color described as Indigo with a HEX value of #380282 .
+ Indigo = 0x380282,
+
+ /// A color described as Lime with a HEX value of #AAFF32 .
+ Lime = 0xAAFF32,
+
+ /// A color described as Sea Green with a HEX value of #53FCA1 .
+ SeaGreen = 0x53FCA1,
+
+ /// A color described as Periwinkle with a HEX value of #8E82FE .
+ Periwinkle = 0x8E82FE,
+
+ /// A color described as Dark Pink with a HEX value of #CB416B .
+ DarkPink = 0xCB416B,
+
+ /// A color described as Olive Green with a HEX value of #677A04 .
+ OliveGreen = 0x677A04,
+
+ /// A color described as Peach with a HEX value of #FFB07C .
+ Peach = 0xFFB07C,
+
+ /// A color described as Pale Green with a HEX value of #C7FDB5 .
+ PaleGreen = 0xC7FDB5,
+
+ /// A color described as Light Brown with a HEX value of #AD8150 .
+ LightBrown = 0xAD8150,
+
+ /// A color described as Hot Pink with a HEX value of #FF028D .
+ HotPink = 0xFF028D,
+
+ /// A color described as Black with a HEX value of #000000 .
+ Black = 0x000000,
+
+ /// A color described as Lilac with a HEX value of #CEA2FD .
+ Lilac = 0xCEA2FD,
+
+ /// A color described as Navy Blue with a HEX value of #001146 .
+ NavyBlue = 0x001146,
+
+ /// A color described as Royal Blue with a HEX value of #0504AA .
+ RoyalBlue = 0x0504AA,
+
+ /// A color described as Beige with a HEX value of #E6DAA6 .
+ Beige = 0xE6DAA6,
+
+ /// A color described as Salmon with a HEX value of #FF796C .
+ Salmon = 0xFF796C,
+
+ /// A color described as Olive with a HEX value of #6E750E .
+ Olive = 0x6E750E,
+
+ /// A color described as Maroon with a HEX value of #650021 .
+ Maroon = 0x650021,
+
+ /// A color described as Bright Green with a HEX value of #01FF07 .
+ BrightGreen = 0x01FF07,
+
+ /// A color described as Dark Purple with a HEX value of #35063E .
+ DarkPurple = 0x35063E,
+
+ /// A color described as Mauve with a HEX value of #AE7181 .
+ Mauve = 0xAE7181,
+
+ /// A color described as Forest Green with a HEX value of #06470C .
+ ForestGreen = 0x06470C,
+
+ /// A color described as Aqua with a HEX value of #13EAC9 .
+ Aqua = 0x13EAC9,
+
+ /// A color described as Cyan with a HEX value of #00FFFF .
+ Cyan = 0x00FFFF,
+
+ /// A color described as Tan with a HEX value of #D1B26F .
+ Tan = 0xD1B26F,
+
+ /// A color described as Dark Blue with a HEX value of #00035B .
+ DarkBlue = 0x00035B,
+
+ /// A color described as Lavender with a HEX value of #C79FEF .
+ Lavender = 0xC79FEF,
+
+ /// A color described as Turquoise with a HEX value of #06C2AC .
+ Turquoise = 0x06C2AC,
+
+ /// A color described as Dark Green with a HEX value of #033500 .
+ DarkGreen = 0x033500,
+
+ /// A color described as Violet with a HEX value of #9A0EEA .
+ Violet = 0x9A0EEA,
+
+ /// A color described as Light Purple with a HEX value of #BF77F6 .
+ LightPurple = 0xBF77F6,
+
+ /// A color described as Lime Green with a HEX value of #89FE05 .
+ LimeGreen = 0x89FE05,
+
+ /// A color described as Grey with a HEX value of #929591 .
+ Grey = 0x929591,
+
+ /// A color described as Sky Blue with a HEX value of #75BBFD .
+ SkyBlue = 0x75BBFD,
+
+ /// A color described as Yellow with a HEX value of #FFFF14 .
+ Yellow = 0xFFFF14,
+
+ /// A color described as Magenta with a HEX value of #C20078 .
+ Magenta = 0xC20078,
+
+ /// A color described as Light Green with a HEX value of #96F97B .
+ LightGreen = 0x96F97B,
+
+ /// A color described as Orange with a HEX value of #F97306 .
+ Orange = 0xF97306,
+
+ /// A color described as Teal with a HEX value of #029386 .
+ Teal = 0x029386,
+
+ /// A color described as Light Blue with a HEX value of #95D0FC .
+ LightBlue = 0x95D0FC,
+
+ /// A color described as Red with a HEX value of #E50000 .
+ Red = 0xE50000,
+
+ /// A color described as Brown with a HEX value of #653700 .
+ Brown = 0x653700,
+
+ /// A color described as Pink with a HEX value of #FF81C0 .
+ Pink = 0xFF81C0,
+
+ /// A color described as Blue with a HEX value of #0343DF .
+ Blue = 0x0343DF,
+
+ /// A color described as Green with a HEX value of #15B01A .
+ Green = 0x15B01A,
+
+ /// A color described as Purple with a HEX value of #7E1E9C .
+ Purple = 0x7E1E9C,
+ Purple2 = 0x7E1E9C
+}
\ No newline at end of file
diff --git a/CapyKit/Password.cs b/CapyKit/Password.cs
index 76ba48e..9e64e35 100644
--- a/CapyKit/Password.cs
+++ b/CapyKit/Password.cs
@@ -1,289 +1,295 @@
-using System;
-using System.Collections.Generic;
-using System.Data.SqlTypes;
-using System.Linq;
-using System.Reflection.Metadata.Ecma335;
-using System.Security.Cryptography;
-using System.Text;
-using System.Threading.Tasks;
+using System.Security.Cryptography;
-namespace CapyKit
+namespace CapyKit;
+
+///
+/// Represents a password with its hash, salt and algorithm used for encryption.
+///
+public class Password
{
- ///
- /// Represents a password with its hash, salt and algorithm used for encryption.
- ///
- public class Password
+ #region Members
+
+ private static readonly Lazy pbkdf2Algorithm = new(() => new Pbkdf2Algorithm());
+
+ #endregion
+
+ /// Constructor.
+ /// The password to be hashed.
+ /// The salt used for encryption.
+ /// The algorithm used for password encryption.
+ ///
+ /// A variable-length parameters list containing arguments to include for the
+ /// .
+ ///
+ public Password(string password, byte[] salt, IPasswordAlgorithm algorithm, params object[] args)
{
- #region Members
+ // We know there will always be a salt, so we can prepend it to h
+ var augmented = args.Prepend(salt).ToArray();
- private static Lazy pbkdf2Algorithm = new Lazy(() => new Pbkdf2Algorithm());
-
- #endregion
-
- #region Properties
-
- ///
- /// Gets or sets the hash of the password.
- ///
- public byte[] Hash { get; private set; }
-
- ///
- /// Gets or sets the salt used for encryption.
- ///
- public byte[] Salt { get; private set; }
-
- ///
- /// Gets or sets the algorithm used for password encryption.
- ///
- public IPasswordAlgorithm Algorithm { get; private set; }
-
- #region Preconfigued Password Algorithms
-
- /// Gets the preconfigured PBKDF2 algorithm.
- /// The preconfigured PBKDF2 algorithm.
- public static Pbkdf2Algorithm Pbkdf2Algorithm
- {
- get
- {
- return pbkdf2Algorithm.Value;
- }
- }
-
- #endregion
-
- #endregion
-
- /// Constructor.
- /// The password to be hashed.
- /// The salt used for encryption.
- /// The algorithm used for password encryption.
- /// A variable-length parameters list containing arguments to include for the .
- public Password(string password, byte[] salt, IPasswordAlgorithm algorithm, params object[] args)
- {
- // We know there will always be a salt, so we can prepend it to h
- var augmented = args.Prepend(salt).ToArray();
-
- this.Hash = algorithm.Encrypt(password, augmented);
- this.Salt = salt;
- this.Algorithm = algorithm;
- }
-
- public Password(string password, string salt, IPasswordAlgorithm algorithm, params object[] args)
- {
- // We know there will always be a salt, so we can prepend it to h
- var saltBytes = Convert.FromBase64String(salt);
- var augmented = args.Prepend(saltBytes).ToArray();
-
- this.Hash = algorithm.Encrypt(password, augmented);
- this.Salt = saltBytes;
- this.Algorithm = algorithm;
- }
-
- #region Methods
-
- ///
- public override bool Equals(object? obj)
- {
- if(obj == null) return false; // The object is null, and this object is not.
-
- if(ReferenceEquals(this, obj)) return true; // The object is literally this object.
-
- var objPassword = obj as Password;
-
- if (objPassword == null)
- {
- return base.Equals(obj); // Objects aren't the same type. We can fall back to the default comparison.
- }
-
- return this.Algorithm.AlgorithmName == objPassword.Algorithm.AlgorithmName
- && this.Hash.SequenceEqual(objPassword.Hash)
- && this.Salt.SequenceEqual(objPassword.Salt);
- }
-
- ///
- public override string ToString()
- {
- return string.Format("Hash: {0}, Salt: {1}, Algorithm: {2}", BitConverter.ToString(this.Hash), BitConverter.ToString(this.Salt), this.Algorithm?.AlgorithmName);
- }
-
- #endregion
-
- #region Operators
-
- ///
- public static bool operator ==(Password a, Password b)
- {
- return ReferenceEquals(a, b) // Literally the same object.
- || (ReferenceEquals(a, null) && ReferenceEquals(b,null)) // Both are null
- || a.Equals(b); // Both are not null but not the same object.
- }
-
- ///
- public static bool operator !=(Password a, Password b)
- {
- return !(a == b);
- }
-
- #endregion
+ this.Hash = algorithm.Encrypt(password, augmented);
+ this.Salt = salt;
+ this.Algorithm = algorithm;
}
- ///
- /// Defines the contract for password encryption algorithms.
- ///
- public interface IPasswordAlgorithm
+ public Password(string password, string salt, IPasswordAlgorithm algorithm, params object[] args)
{
- #region Properties
+ // We know there will always be a salt, so we can prepend it to h
+ var saltBytes = Convert.FromBase64String(salt);
+ var augmented = args.Prepend(saltBytes).ToArray();
- ///
- /// Gets the name of the algorithm.
- ///
- string AlgorithmName { get; }
-
- #endregion
-
- #region Methods
-
- /// Encrypts the given password using a defined algorithm.
- /// The plaintext password.
- ///
- /// Additional arguments for the encryption process, such as salt and length.
- ///
- /// A byte array with the hashed .
- byte[] Encrypt(string password, params object[] args);
-
- ///
- /// Compares the given plaintext password with an encrypted value using PBKDF2 algorithm.
- ///
- /// The plaintext password to compare.
- /// The encrypted value to compare against.
- ///
- /// Additional arguments for the encryption process, such as salt and length.
- ///
- ///
- /// True if the given matches the ,
- /// false if they are different.
- ///
- bool Compare(string password, byte[] encryptedValue, params object[] args)
- {
- var challengedPassword = Encrypt(password, args);
-
- return encryptedValue.SequenceEqual(challengedPassword);
- }
-
- #endregion
+ this.Hash = algorithm.Encrypt(password, augmented);
+ this.Salt = saltBytes;
+ this.Algorithm = algorithm;
}
- #region Implementations
+ #region Properties
///
- /// Implements the PBKDF2 algorithm for password encryption.
+ /// Gets or sets the hash of the password.
///
- public class Pbkdf2Algorithm : IPasswordAlgorithm
+ public byte[] Hash { get; }
+
+ ///
+ /// Gets or sets the salt used for encryption.
+ ///
+ public byte[] Salt { get; }
+
+ ///
+ /// Gets or sets the algorithm used for password encryption.
+ ///
+ public IPasswordAlgorithm Algorithm { get; }
+
+ #region Preconfigued Password Algorithms
+
+ /// Gets the preconfigured PBKDF2 algorithm.
+ /// The preconfigured PBKDF2 algorithm.
+ public static Pbkdf2Algorithm Pbkdf2Algorithm
{
- #region Members
-
- /// (Immutable) The default length.
- /// This member is immutable.
- public const int LENGTH = 32;
+ get { return Password.pbkdf2Algorithm.Value; }
+ }
- /// The default number of iterations.
- /// This member is immutable.
- public const int ITERATIONS = 100000;
-
- #endregion
+ #endregion
- #region Properties
+ #endregion
- ///
- public string AlgorithmName
+ #region Methods
+
+ ///
+ public override bool Equals(object? obj)
+ {
+ if (obj == null)
{
- get
- {
- return "Pbkdf2";
- }
+ return false; // The object is null, and this object is not.
}
- #endregion
-
- #region Constructor
-
- /// Default constructor.
- public Pbkdf2Algorithm()
+ if (ReferenceEquals(this, obj))
{
- //
+ return true; // The object is literally this object.
}
- #endregion
+ var objPassword = obj as Password;
- #region Methods
-
- /// Encrypts the given password using a PBKDF2 algorithm.
- /// The plaintext password.
- ///
- /// Additional arguments for the encryption process, specifically
- ///
- /// salt
- /// length
- /// iterations
- ///
- ///
- /// A byte array with the hashed .
- public byte[] Encrypt(string password, params object[] args)
+ if (objPassword == null)
{
- if (args.Length == 0)
- {
- CapyEventReporter.EmitEvent(EventLevel.Error, "No arguments passed.");
- return new byte[0];
- }
+ return base.Equals(obj); // Objects aren't the same type. We can fall back to the default comparison.
+ }
- var salt = args[0] as byte[];
+ return this.Algorithm.AlgorithmName == objPassword.Algorithm.AlgorithmName
+ && this.Hash.SequenceEqual(objPassword.Hash)
+ && this.Salt.SequenceEqual(objPassword.Salt);
+ }
- if (salt == null)
- {
- CapyEventReporter.EmitEvent(EventLevel.Error, "The first parameters in the arguments wasn't a valid salt.");
- return new byte[0];
- }
+ ///
+ public override string ToString()
+ {
+ return string.Format("Hash: {0}, Salt: {1}, Algorithm: {2}", BitConverter.ToString(this.Hash),
+ BitConverter.ToString(this.Salt), this.Algorithm?.AlgorithmName);
+ }
- var length = 0;
- try
- {
- length = Convert.ToInt32(args[1]);
- }
- catch (Exception ex)
- {
- CapyEventReporter.EmitEvent(EventLevel.Error, "Could not convert the second parameter into an integer.");
- length = LENGTH;
- }
+ #endregion
- var iterations = 0;
- try
- {
- iterations = Convert.ToInt32(args[2]);
- }
- catch (Exception ex)
- {
- CapyEventReporter.EmitEvent(EventLevel.Error, "Could not convert the second parameter into an integer.");
- iterations = ITERATIONS;
- }
+ #region Operators
- var hash = new byte[0];
+ ///
+ public static bool operator ==(Password a, Password b)
+ {
+ return ReferenceEquals(a, b) // Literally the same object.
+ || (ReferenceEquals(a, null) && ReferenceEquals(b, null)) // Both are null
+ || a.Equals(b); // Both are not null but not the same object.
+ }
- using (var deriveBytes = new Rfc2898DeriveBytes(password, salt, iterations, HashAlgorithmName.SHA256))
- {
- hash = deriveBytes.GetBytes(length);
- }
-
- if (hash.Length == 0)
- {
- CapyEventReporter.EmitEvent(EventLevel.Error, "Hash could not be generated.");
- return new byte[0];
- }
-
- return hash;
- }
-
- #endregion
+ ///
+ public static bool operator !=(Password a, Password b)
+ {
+ return !(a == b);
}
#endregion
}
+
+///
+/// Defines the contract for password encryption algorithms.
+///
+public interface IPasswordAlgorithm
+{
+ #region Properties
+
+ ///
+ /// Gets the name of the algorithm.
+ ///
+ string AlgorithmName { get; }
+
+ #endregion
+
+ #region Methods
+
+ /// Encrypts the given password using a defined algorithm.
+ /// The plaintext password.
+ ///
+ /// Additional arguments for the encryption process, such as salt and length.
+ ///
+ /// A byte array with the hashed .
+ byte[] Encrypt(string password, params object[] args);
+
+ ///
+ /// Compares the given plaintext password with an encrypted value using PBKDF2 algorithm.
+ ///
+ /// The plaintext password to compare.
+ /// The encrypted value to compare against.
+ ///
+ /// Additional arguments for the encryption process, such as salt and length.
+ ///
+ ///
+ /// True if the given matches the ,
+ /// false if they are different.
+ ///
+ bool Compare(string password, byte[] encryptedValue, params object[] args)
+ {
+ var challengedPassword = Encrypt(password, args);
+
+ return encryptedValue.SequenceEqual(challengedPassword);
+ }
+
+ #endregion
+}
+
+#region Implementations
+
+///
+/// Implements the PBKDF2 algorithm for password encryption.
+///
+public class Pbkdf2Algorithm : IPasswordAlgorithm
+{
+ #region Constructor
+
+ /// Default constructor.
+ public Pbkdf2Algorithm()
+ {
+ //
+ }
+
+ #endregion
+
+ #region IPasswordAlgorithm Members
+
+ #region Properties
+
+ ///
+ public string AlgorithmName
+ {
+ get { return "Pbkdf2"; }
+ }
+
+ #endregion
+
+ #region Methods
+
+ /// Encrypts the given password using a PBKDF2 algorithm.
+ /// The plaintext password.
+ ///
+ /// Additional arguments for the encryption process, specifically
+ ///
+ /// -
+ ///
salt
+ ///
+ /// -
+ ///
length
+ ///
+ /// -
+ ///
iterations
+ ///
+ ///
+ ///
+ /// A byte array with the hashed .
+ public byte[] Encrypt(string password, params object[] args)
+ {
+ if (args.Length == 0)
+ {
+ CapyEventReporter.EmitEvent(EventLevel.Error, "No arguments passed.");
+ return new byte[0];
+ }
+
+ var salt = args[0] as byte[];
+
+ if (salt == null)
+ {
+ CapyEventReporter.EmitEvent(EventLevel.Error, "The first parameters in the arguments wasn't a valid salt.");
+ return new byte[0];
+ }
+
+ var length = 0;
+ try
+ {
+ length = Convert.ToInt32(args[1]);
+ }
+ catch (Exception ex)
+ {
+ CapyEventReporter.EmitEvent(EventLevel.Error, "Could not convert the second parameter into an integer.");
+ length = Pbkdf2Algorithm.LENGTH;
+ }
+
+ var iterations = 0;
+ try
+ {
+ iterations = Convert.ToInt32(args[2]);
+ }
+ catch (Exception ex)
+ {
+ CapyEventReporter.EmitEvent(EventLevel.Error, "Could not convert the second parameter into an integer.");
+ iterations = Pbkdf2Algorithm.ITERATIONS;
+ }
+
+ var hash = new byte[0];
+
+ using (var deriveBytes = new Rfc2898DeriveBytes(password, salt, iterations, HashAlgorithmName.SHA256))
+ {
+ hash = deriveBytes.GetBytes(length);
+ }
+
+ if (hash.Length == 0)
+ {
+ CapyEventReporter.EmitEvent(EventLevel.Error, "Hash could not be generated.");
+ return new byte[0];
+ }
+
+ return hash;
+ }
+
+ #endregion
+
+ #endregion
+
+ #region Members
+
+ /// (Immutable) The default length.
+ /// This member is immutable.
+ public const int LENGTH = 32;
+
+ /// The default number of iterations.
+ /// This member is immutable.
+ public const int ITERATIONS = 100000;
+
+ #endregion
+}
+
+#endregion
\ No newline at end of file
diff --git a/CapyKit/Pool.cs b/CapyKit/Pool.cs
index f7eeceb..b45b54f 100644
--- a/CapyKit/Pool.cs
+++ b/CapyKit/Pool.cs
@@ -1,271 +1,255 @@
-using System;
-using System.Collections.Concurrent;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using static System.Runtime.InteropServices.JavaScript.JSType;
+using System.Collections.Concurrent;
-namespace CapyKit
+namespace CapyKit;
+
+///
+/// A managed pool of resources. This class provides a thread-safe way to manage a collection of
+/// objects of type .
+///
+/// The type of objects to be managed by the pool.
+public class Pool
{
+ #region Members
+
+ /// The collection of pooled items.
+ private readonly ConcurrentBag> poolItemCollection;
+
+ /// (Immutable) The number of items in the pool.
+ private readonly int poolSize;
+
+ #endregion Members
+
+ #region Constructors
+
///
- /// A managed pool of resources. This class provides a thread-safe way to manage a collection of
- /// objects of type .
+ /// Initializes a new instance of the class with the specified pool size.
///
- /// The type of objects to be managed by the pool.
- public class Pool
+ /// The size of the pool.
+ public Pool(int poolSize)
{
- #region Members
-
- /// The collection of pooled items.
- private readonly ConcurrentBag> poolItemCollection;
-
- /// (Immutable) The number of items in the pool.
- private readonly int poolSize;
-
- #endregion Members
-
- #region Constructors
-
- ///
- /// Initializes a new instance of the class with the specified pool size.
- ///
- /// The size of the pool.
- public Pool(int poolSize)
- {
- this.poolSize = poolSize;
- this.poolItemCollection = new ConcurrentBag>();
- FillPoolItemCollection(poolSize);
- }
-
- ///
- /// Initializes a new instance of the class with the specified pool size
- /// and constructor selector.
- ///
- /// The size of the pool.
- ///
- /// The constructor selector used to create new instances of .
- ///
- public Pool(int poolSize, Func constructorSelector)
- {
- this.poolSize = poolSize;
- this.poolItemCollection = new ConcurrentBag>();
- FillPoolItemCollection(poolSize, constructorSelector);
- }
-
- ///
- /// Initializes a new instance of the class with the specified collection
- /// of items.
- ///
- ///
- /// The collection of items with which to seed the pool.
- ///
- public Pool(IEnumerable collection)
- {
- this.poolSize = collection.Count();
- this.poolItemCollection = new ConcurrentBag>();
- FillPoolItemCollection(collection);
- }
-
- #endregion Constructors
-
- #region Methods
-
- ///
- /// Initializes the pool with the specified number of items using the default constructor.
- ///
- /// The size of the pool.
- private void FillPoolItemCollection(int poolSize)
- {
- FillPoolItemCollection(poolSize, () => default(T));
- }
-
- ///
- /// Initializes the pool with the specified number of items using the specified constructor
- /// selector.
- ///
- /// The size of the pool.
- /// The constructor selector.
- private void FillPoolItemCollection(int poolSize, Func constructorSelector)
- {
- for (int i = 0; i < poolSize; i++)
- {
- this.poolItemCollection.Add(new PoolItem(constructorSelector(), i));
- }
- }
-
- /// Fill the pool item collection from an existing collection.
- /// The collection.
- private void FillPoolItemCollection(IEnumerable collection)
- {
- int index = 0;
- foreach (var item in collection)
- {
- this.poolItemCollection.Add(new PoolItem(item, index++));
- }
- }
-
- /// Gets the first available item from the pool and sets its lock.
- /// The first available item from the pool.
- public PoolItem GetAvailableItem()
- {
- lock (this.poolItemCollection)
- {
- if (this.poolItemCollection.Any(item => !item.Locked))
- {
- var firstAvailableItem = this.poolItemCollection.First(item => !item.Locked);
- firstAvailableItem.SetLock();
-
- CapyEventReporter.EmitEvent(EventLevel.Debug, "Accessed ppol and retrieved {0}", args: new[] { firstAvailableItem });
-
- return firstAvailableItem;
- }
- }
-
- CapyEventReporter.EmitEvent(EventLevel.Error, "Could not return an available item.");
- return null;
- }
-
- /// Releases the lock on the specified item and returns it to the pool.
- ///
- /// This method sets the flag to so that
- /// it can be retrieved by .
- ///
- /// The item to release.
- public void ReleaseItem(PoolItem item)
- {
- item.ReleaseLock();
- }
-
- #endregion Methods
+ this.poolSize = poolSize;
+ this.poolItemCollection = new ConcurrentBag>();
+ FillPoolItemCollection(poolSize);
}
- /// A pool item. This class cannot be inherited.
- /// The type of the pooled item.
- public sealed class PoolItem
+ ///
+ /// Initializes a new instance of the class with the specified pool size
+ /// and constructor selector.
+ ///
+ /// The size of the pool.
+ ///
+ /// The constructor selector used to create new instances of .
+ ///
+ public Pool(int poolSize, Func constructorSelector)
{
- #region Members
-
- /// The pooled item.
- private readonly T item;
-
- /// A flag indicating whether the item is locked or not.
- private bool locked;
-
- /// The zero-based index of the pooled item.
- private readonly int index;
-
- /// The name of the pooled item .
- private readonly string typeName;
-
- #endregion Members
-
- #region Properties
-
- /// Gets the pooled resource.
- /// The pooled resource.
- public T Item
- {
- get
- {
- return this.item;
- }
- }
-
- /// Gets a value indicating whether this object is locked or not.
- /// A value indicating whether this object is locked or not.
- public bool Locked
- {
- get
- {
- return this.locked;
- }
- }
-
- /// Gets the zero-based index of the pooled item.
- /// The index.
- public int Index
- {
- get
- {
- return this.index;
- }
- }
-
- /// Gets the name of the of the pooled item.
- /// The name of the of the pooled item.
- public string TypeName
- {
- get
- {
- return this.typeName;
- }
- }
-
- #endregion Properties
-
- #region Constructors
-
- ///
- /// Initializes a new instance of the class with the specified item and
- /// index.
- ///
- /// The pooled item.
- /// The zero-based index of the pooled item.
- internal PoolItem(T item, int index)
- {
- this.item = item;
- this.index = index;
- this.locked = false;
- this.typeName = typeof(T).Name;
- }
-
- #endregion Constructors
-
- #region Methods
-
- /// Sets the lock on the item indicating that it is in use.
- /// If the item is already locked, an error event is emitted.
- ///
- /// if the item is locked successfully, if it
- /// fails.
- ///
- public bool SetLock()
- {
- if (this.locked)
- {
- CapyEventReporter.EmitEvent(EventLevel.Error, "Lock requested for {0}, but the lock request failed.", args: new[] { this });
- return false;
- }
-
- this.locked = true;
-
- return true;
- }
-
- /// Releases the lock on the item.
- /// If the item is not locked, an error event is emitted.
- public void ReleaseLock()
- {
- if (!this.locked)
- {
- CapyEventReporter.EmitEvent(EventLevel.Error, "Lock release requested for {0}, but the lock was already released.", args: new[] { this } );
- }
-
- this.locked = false;
- }
-
- #endregion Methods
-
- #region Overrides
-
- /// Returns a string that represents the current object and its lock state.
- /// A string that represents the current object and its lock state.
- public override string ToString()
- {
- return string.Format("{0} {1} ({2})", this.typeName, this.index, this.locked ? "Locked" : "Unlocked");
- }
-
- #endregion Overrides
+ this.poolSize = poolSize;
+ this.poolItemCollection = new ConcurrentBag>();
+ FillPoolItemCollection(poolSize, constructorSelector);
}
+
+ ///
+ /// Initializes a new instance of the class with the specified collection
+ /// of items.
+ ///
+ ///
+ /// The collection of items with which to seed the pool.
+ ///
+ public Pool(IEnumerable collection)
+ {
+ this.poolSize = collection.Count();
+ this.poolItemCollection = new ConcurrentBag>();
+ FillPoolItemCollection(collection);
+ }
+
+ #endregion Constructors
+
+ #region Methods
+
+ ///
+ /// Initializes the pool with the specified number of items using the default constructor.
+ ///
+ /// The size of the pool.
+ private void FillPoolItemCollection(int poolSize)
+ {
+ FillPoolItemCollection(poolSize, () => default);
+ }
+
+ ///
+ /// Initializes the pool with the specified number of items using the specified constructor
+ /// selector.
+ ///
+ /// The size of the pool.
+ /// The constructor selector.
+ private void FillPoolItemCollection(int poolSize, Func constructorSelector)
+ {
+ for (var i = 0; i < poolSize; i++)
+ {
+ this.poolItemCollection.Add(new PoolItem(constructorSelector(), i));
+ }
+ }
+
+ /// Fill the pool item collection from an existing collection.
+ /// The collection.
+ private void FillPoolItemCollection(IEnumerable collection)
+ {
+ var index = 0;
+ foreach (var item in collection)
+ {
+ this.poolItemCollection.Add(new PoolItem(item, index++));
+ }
+ }
+
+ /// Gets the first available item from the pool and sets its lock.
+ /// The first available item from the pool.
+ public PoolItem GetAvailableItem()
+ {
+ lock (this.poolItemCollection)
+ {
+ if (this.poolItemCollection.Any(item => !item.Locked))
+ {
+ var firstAvailableItem = this.poolItemCollection.First(item => !item.Locked);
+ firstAvailableItem.SetLock();
+
+ CapyEventReporter.EmitEvent(EventLevel.Debug, "Accessed ppol and retrieved {0}",
+ args: new[] { firstAvailableItem });
+
+ return firstAvailableItem;
+ }
+ }
+
+ CapyEventReporter.EmitEvent(EventLevel.Error, "Could not return an available item.");
+ return null;
+ }
+
+ /// Releases the lock on the specified item and returns it to the pool.
+ ///
+ /// This method sets the flag to so that
+ /// it can be retrieved by .
+ ///
+ /// The item to release.
+ public void ReleaseItem(PoolItem item)
+ {
+ item.ReleaseLock();
+ }
+
+ #endregion Methods
}
+
+/// A pool item. This class cannot be inherited.
+/// The type of the pooled item.
+public sealed class PoolItem
+{
+ #region Constructors
+
+ ///
+ /// Initializes a new instance of the class with the specified item and
+ /// index.
+ ///
+ /// The pooled item.
+ /// The zero-based index of the pooled item.
+ internal PoolItem(T item, int index)
+ {
+ this.item = item;
+ this.index = index;
+ this.locked = false;
+ this.typeName = typeof(T).Name;
+ }
+
+ #endregion Constructors
+
+ #region Overrides
+
+ /// Returns a string that represents the current object and its lock state.
+ /// A string that represents the current object and its lock state.
+ public override string ToString()
+ {
+ return string.Format("{0} {1} ({2})", this.typeName, this.index, this.locked ? "Locked" : "Unlocked");
+ }
+
+ #endregion Overrides
+
+ #region Members
+
+ /// The pooled item.
+ private readonly T item;
+
+ /// A flag indicating whether the item is locked or not.
+ private bool locked;
+
+ /// The zero-based index of the pooled item.
+ private readonly int index;
+
+ /// The name of the pooled item .
+ private readonly string typeName;
+
+ #endregion Members
+
+ #region Properties
+
+ /// Gets the pooled resource.
+ /// The pooled resource.
+ public T Item
+ {
+ get { return this.item; }
+ }
+
+ /// Gets a value indicating whether this object is locked or not.
+ /// A value indicating whether this object is locked or not.
+ public bool Locked
+ {
+ get { return this.locked; }
+ }
+
+ /// Gets the zero-based index of the pooled item.
+ /// The index.
+ public int Index
+ {
+ get { return this.index; }
+ }
+
+ /// Gets the name of the of the pooled item.
+ /// The name of the of the pooled item.
+ public string TypeName
+ {
+ get { return this.typeName; }
+ }
+
+ #endregion Properties
+
+ #region Methods
+
+ /// Sets the lock on the item indicating that it is in use.
+ /// If the item is already locked, an error event is emitted.
+ ///
+ /// if the item is locked successfully, if it
+ /// fails.
+ ///
+ public bool SetLock()
+ {
+ if (this.locked)
+ {
+ CapyEventReporter.EmitEvent(EventLevel.Error, "Lock requested for {0}, but the lock request failed.",
+ args: new[] { this });
+ return false;
+ }
+
+ this.locked = true;
+
+ return true;
+ }
+
+ /// Releases the lock on the item.
+ /// If the item is not locked, an error event is emitted.
+ public void ReleaseLock()
+ {
+ if (!this.locked)
+ {
+ CapyEventReporter.EmitEvent(EventLevel.Error,
+ "Lock release requested for {0}, but the lock was already released.", args: new[] { this });
+ }
+
+ this.locked = false;
+ }
+
+ #endregion Methods
+}
\ No newline at end of file
diff --git a/CapyKit/PropertyComparer.cs b/CapyKit/PropertyComparer.cs
index 580cd34..0e136de 100644
--- a/CapyKit/PropertyComparer.cs
+++ b/CapyKit/PropertyComparer.cs
@@ -1,101 +1,93 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+namespace CapyKit;
-namespace CapyKit
+///
+/// A object comparer that can accept a lambda expression to compare properties.
+///
+/// Generic type parameter of the parent object.
+/// Generic type parameter of the property value.
+///
+/// using System;
+/// using System.Collections.Generic;
+/// using System.Linq;
+/// class Program
+/// {
+/// static void Main(string[] args)
+/// {
+/// var people = new List<Person>
+/// {
+/// new Person { Name = "Alice", Age = 30 }, new Person { Name = "Bob", Age = 30 }, new
+/// Person { Name = "Charlie", Age = 35 }
+/// };
+/// var comparer = new PropertyComparer<Person, int>(p => p.Age);
+/// var distinctPeople = people.Distinct(comparer).ToList();
+/// foreach (var person in distinctPeople)
+/// {
+/// Console.WriteLine($"{person.Name} - {person.Age}");
+/// }
+/// }
+/// }
+/// class Person
+/// {
+/// public string Name { get; set; }
+/// public int Age { get; set; }
+/// }
+///
+public class PropertyComparer : IEqualityComparer
{
- ///
- /// A object comparer that can accept a lambda expression to compare properties.
- ///
- /// Generic type parameter of the parent object.
- /// Generic type parameter of the property value.
- ///
- /// using System;
- /// using System.Collections.Generic;
- /// using System.Linq;
- ///
- /// class Program
- /// {
- /// static void Main(string[] args)
- /// {
- /// var people = new List<Person>
- /// {
- /// new Person { Name = "Alice", Age = 30 }, new Person { Name = "Bob", Age = 30 }, new
- /// Person { Name = "Charlie", Age = 35 }
- /// };
- ///
- /// var comparer = new PropertyComparer<Person, int>(p => p.Age);
- /// var distinctPeople = people.Distinct(comparer).ToList();
- ///
- /// foreach (var person in distinctPeople)
- /// {
- /// Console.WriteLine($"{person.Name} - {person.Age}");
- /// }
- /// }
- /// }
- ///
- /// class Person
- /// {
- /// public string Name { get; set; }
- /// public int Age { get; set; }
- /// }
- ///
- public class PropertyComparer : IEqualityComparer
+ /// The expression to retrieve the property.
+ private readonly Func expression;
+
+ /// Constructor.
+ /// The expression.
+ public PropertyComparer(Func expression)
{
- /// The expression to retrieve the property.
- private Func expression;
-
- /// Constructor.
- /// The expression.
- public PropertyComparer(Func expression)
- {
- this.expression = expression;
- }
-
- /// Determines whether the specified properties are equal.
- /// The first object of type to compare.
- /// The second object of type to compare.
- ///
- /// if the specified objects are equal; otherwise,
- /// .
- ///
- public bool Equals(T x, T y)
- {
- var left = expression.Invoke(x);
- var right = expression.Invoke(y);
-
- if (left == null && right == null)
- {
- return true;
- }
- if (left == null ^ right == null)
- {
- return false;
- }
- else
- {
- return left.Equals(right);
- }
- }
-
- /// Returns a hash code for the specified object.
- ///
- /// The for which a hash code is to be returned.
- ///
- /// A hash code for the specified object.
- ///
- /// ###
- /// The type of is a reference type and
- /// is
- /// .
- ///
- public int GetHashCode(T obj)
- {
- var property = expression(obj);
-
- return (property == null) ? 0 : property.GetHashCode();
- }
+ this.expression = expression;
}
-}
+
+ #region IEqualityComparer Members
+
+ /// Determines whether the specified properties are equal.
+ /// The first object of type to compare.
+ /// The second object of type to compare.
+ ///
+ /// if the specified objects are equal; otherwise,
+ /// .
+ ///
+ public bool Equals(T x, T y)
+ {
+ var left = this.expression.Invoke(x);
+ var right = this.expression.Invoke(y);
+
+ if (left == null && right == null)
+ {
+ return true;
+ }
+
+ if ((left == null) ^ (right == null))
+ {
+ return false;
+ }
+
+ return left.Equals(right);
+ }
+
+ /// Returns a hash code for the specified object.
+ ///
+ /// The for which a hash code is to be returned.
+ ///
+ /// A hash code for the specified object.
+ /// ###
+ ///
+ /// The type of is a reference type and
+ /// is
+ /// .
+ ///
+ public int GetHashCode(T obj)
+ {
+ var property = this.expression(obj);
+
+ return property == null ? 0 : property.GetHashCode();
+ }
+
+ #endregion
+}
\ No newline at end of file