From c921c6da5e362b74142939f86b435f1c2deb227b Mon Sep 17 00:00:00 2001 From: maxcapodi78 Date: Thu, 4 Jan 2024 18:05:11 +0100 Subject: [PATCH 1/8] Brand new AnsysReport which has replaced the c# classes with python class --- _unittest/test_01_pdf.py | 5 +- .../06-Multiphysics/Hfss_Icepak_Coupling.py | 3 - pyaedt/dlls/PDFReport/AnsysReport.deps.json | 396 - pyaedt/dlls/PDFReport/AnsysReport.dll | Bin 23552 -> 0 bytes pyaedt/dlls/PDFReport/AnsysTemplate.json | 40 - .../PDFReport/ICSharpCode.SharpZipLib.dll | Bin 204800 -> 0 bytes .../PDFReport/ICSharpCode.SharpZipLib.xml | 10977 ---- .../MigraDocCore.DocumentObjectModel.dll | Bin 238592 -> 0 bytes .../dlls/PDFReport/MigraDocCore.Rendering.dll | Bin 115712 -> 0 bytes pyaedt/dlls/PDFReport/Newtonsoft.Json.dll | Bin 705296 -> 0 bytes pyaedt/dlls/PDFReport/Newtonsoft.Json.xml | 11338 ---- .../dlls/PDFReport/PdfSharpCore.Charting.dll | Bin 80384 -> 0 bytes pyaedt/dlls/PDFReport/PdfSharpCore.dll | Bin 546816 -> 0 bytes pyaedt/dlls/PDFReport/SixLabors.Fonts.dll | Bin 367616 -> 0 bytes pyaedt/dlls/PDFReport/SixLabors.Fonts.xml | 10103 --- .../dlls/PDFReport/SixLabors.ImageSharp.dll | Bin 1229824 -> 0 bytes .../dlls/PDFReport/SixLabors.ImageSharp.xml | 53893 ---------------- pyaedt/dlls/PDFReport/System.Runtime.dll | Bin 120664 -> 0 bytes pyaedt/dlls/PDFReport/System.Runtime.xml | 15642 ----- .../PDFReport/de/PdfSharpCore.resources.dll | Bin 5632 -> 0 bytes .../de/System.Collections.NonGeneric.xml | 1553 - .../PDFReport/Images => generic}/Ansys.png | Bin pyaedt/generic/AnsysTemplate.json | 25 + pyaedt/generic/pdf.py | 496 +- 24 files changed, 402 insertions(+), 104069 deletions(-) delete mode 100644 pyaedt/dlls/PDFReport/AnsysReport.deps.json delete mode 100644 pyaedt/dlls/PDFReport/AnsysReport.dll delete mode 100644 pyaedt/dlls/PDFReport/AnsysTemplate.json delete mode 100644 pyaedt/dlls/PDFReport/ICSharpCode.SharpZipLib.dll delete mode 100644 pyaedt/dlls/PDFReport/ICSharpCode.SharpZipLib.xml delete mode 100644 pyaedt/dlls/PDFReport/MigraDocCore.DocumentObjectModel.dll delete mode 100644 pyaedt/dlls/PDFReport/MigraDocCore.Rendering.dll delete mode 100644 pyaedt/dlls/PDFReport/Newtonsoft.Json.dll delete mode 100644 pyaedt/dlls/PDFReport/Newtonsoft.Json.xml delete mode 100644 pyaedt/dlls/PDFReport/PdfSharpCore.Charting.dll delete mode 100644 pyaedt/dlls/PDFReport/PdfSharpCore.dll delete mode 100644 pyaedt/dlls/PDFReport/SixLabors.Fonts.dll delete mode 100644 pyaedt/dlls/PDFReport/SixLabors.Fonts.xml delete mode 100644 pyaedt/dlls/PDFReport/SixLabors.ImageSharp.dll delete mode 100644 pyaedt/dlls/PDFReport/SixLabors.ImageSharp.xml delete mode 100644 pyaedt/dlls/PDFReport/System.Runtime.dll delete mode 100644 pyaedt/dlls/PDFReport/System.Runtime.xml delete mode 100644 pyaedt/dlls/PDFReport/de/PdfSharpCore.resources.dll delete mode 100644 pyaedt/dlls/PDFReport/de/System.Collections.NonGeneric.xml rename pyaedt/{dlls/PDFReport/Images => generic}/Ansys.png (100%) create mode 100644 pyaedt/generic/AnsysTemplate.json diff --git a/_unittest/test_01_pdf.py b/_unittest/test_01_pdf.py index 8ed6a550bdc..d01ef23e4c3 100644 --- a/_unittest/test_01_pdf.py +++ b/_unittest/test_01_pdf.py @@ -4,7 +4,6 @@ from _unittest.conftest import local_path import pytest -from pyaedt import pyaedt_path from pyaedt.generic.pdf import AnsysReport tol = 1e-12 @@ -17,8 +16,7 @@ def desktop(): class TestClass(object): def test_create_pdf(self, local_scratch): - template_path = os.path.join(pyaedt_path, "dlls", "PDFReport", "AnsysTemplate.json") - report = AnsysReport(project_name="Coaxial", design_name="Design1", tempplate_json_file=template_path) + report = AnsysReport(project_name="Coaxial", design_name="Design1") report.aedt_version = desktop_version assert "AnsysTemplate" in report.template_name report.template_name = "AnsysTemplate" @@ -41,5 +39,4 @@ def test_create_pdf(self, local_scratch): report.add_table("MyTable", [["x", "y"], ["0", "1"], ["2", "3"], ["10", "20"]]) report.add_section() report.add_chart([0, 1, 2, 3, 4, 5], [10, 20, 4, 30, 40, 12], "Freq", "Val", "MyTable") - report.add_toc() assert os.path.exists(report.save_pdf(local_scratch.path, "my_firstpdf.pdf")) diff --git a/examples/06-Multiphysics/Hfss_Icepak_Coupling.py b/examples/06-Multiphysics/Hfss_Icepak_Coupling.py index 658b0e6186f..166d1251da7 100644 --- a/examples/06-Multiphysics/Hfss_Icepak_Coupling.py +++ b/examples/06-Multiphysics/Hfss_Icepak_Coupling.py @@ -331,8 +331,6 @@ # Generate a pdf report with output of simultion. report = AnsysReport(project_name=aedtapp.project_name, design_name=aedtapp.design_name,version=desktopVersion) report.create() - - report.add_section() report.add_chapter("Hfss Results") report.add_sub_chapter("Field Plot") @@ -348,7 +346,6 @@ report.add_text("This section contains Multiphysics temperature plot.") #report.add_image(os.path.join(results_folder, plot5.name+".jpg"), "Coaxial Cable Temperatures") -report.add_toc() report.save_pdf(results_folder, "AEDT_Results.pdf") diff --git a/pyaedt/dlls/PDFReport/AnsysReport.deps.json b/pyaedt/dlls/PDFReport/AnsysReport.deps.json deleted file mode 100644 index afeea7a6274..00000000000 --- a/pyaedt/dlls/PDFReport/AnsysReport.deps.json +++ /dev/null @@ -1,396 +0,0 @@ -{ - "runtimeTarget": { - "name": ".NETCoreApp,Version=v3.1", - "signature": "" - }, - "compilationOptions": {}, - "targets": { - ".NETCoreApp,Version=v3.1": { - "AnsysReport/1.0.0": { - "dependencies": { - "MigraDocCore.Rendering": "1.3.1", - "Newtonsoft.Json": "13.0.3", - "PdfSharpCore": "1.3.1" - }, - "runtime": { - "AnsysReport.dll": {} - } - }, - "Microsoft.NETCore.Platforms/1.1.0": {}, - "Microsoft.NETCore.Targets/1.1.0": {}, - "MigraDocCore.DocumentObjectModel/0.1.2": { - "dependencies": { - "PdfSharpCore": "1.3.1", - "System.Collections.NonGeneric": "4.3.0", - "System.Reflection.TypeExtensions": "4.3.0" - }, - "runtime": { - "lib/netstandard2.0/MigraDocCore.DocumentObjectModel.dll": { - "assemblyVersion": "0.1.2.0", - "fileVersion": "0.1.2.0" - } - } - }, - "MigraDocCore.Rendering/1.3.1": { - "dependencies": { - "MigraDocCore.DocumentObjectModel": "0.1.2", - "PdfSharpCore": "1.3.1", - "PdfSharpCore.Charting": "1.3.1", - "System.Diagnostics.Debug": "4.3.0", - "System.Diagnostics.Tracing": "4.3.0" - }, - "runtime": { - "lib/netcoreapp3.1/MigraDocCore.Rendering.dll": { - "assemblyVersion": "1.3.1.0", - "fileVersion": "1.3.1.0" - } - } - }, - "Newtonsoft.Json/13.0.3": { - "runtime": { - "lib/netstandard2.0/Newtonsoft.Json.dll": { - "assemblyVersion": "13.0.0.0", - "fileVersion": "13.0.3.27908" - } - } - }, - "PdfSharpCore/1.3.1": { - "dependencies": { - "SixLabors.Fonts": "1.0.0-beta0013", - "SixLabors.ImageSharp": "1.0.0" - }, - "runtime": { - "lib/netcoreapp3.1/PdfSharpCore.dll": { - "assemblyVersion": "1.3.1.0", - "fileVersion": "1.3.1.0" - } - }, - "resources": { - "lib/netcoreapp3.1/de/PdfSharpCore.resources.dll": { - "locale": "de" - } - } - }, - "PdfSharpCore.Charting/1.3.1": { - "dependencies": { - "PdfSharpCore": "1.3.1", - "System.Collections.NonGeneric": "4.3.0" - }, - "runtime": { - "lib/netcoreapp3.1/PdfSharpCore.Charting.dll": { - "assemblyVersion": "1.3.1.0", - "fileVersion": "1.3.1.0" - } - } - }, - "SixLabors.Fonts/1.0.0-beta0013": { - "dependencies": { - "System.Numerics.Vectors": "4.5.0", - "System.Runtime.CompilerServices.Unsafe": "4.7.0" - }, - "runtime": { - "lib/netstandard2.1/SixLabors.Fonts.dll": { - "assemblyVersion": "1.0.0.0", - "fileVersion": "1.0.0.0" - } - } - }, - "SixLabors.ImageSharp/1.0.0": { - "runtime": { - "lib/netcoreapp3.1/SixLabors.ImageSharp.dll": { - "assemblyVersion": "1.0.0.0", - "fileVersion": "1.0.0.0" - } - } - }, - "System.Collections.NonGeneric/4.3.0": { - "dependencies": { - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Threading": "4.3.0" - } - }, - "System.Diagnostics.Debug/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Diagnostics.Tracing/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Globalization/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.IO/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading.Tasks": "4.3.0" - } - }, - "System.Numerics.Vectors/4.5.0": {}, - "System.Reflection/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.IO": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Reflection.Primitives/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Reflection.TypeExtensions/4.3.0": { - "dependencies": { - "System.Reflection": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Resources.ResourceManager/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Globalization": "4.3.0", - "System.Reflection": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Runtime/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0" - } - }, - "System.Runtime.CompilerServices.Unsafe/4.7.0": {}, - "System.Runtime.Extensions/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Text.Encoding/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Threading/4.3.0": { - "dependencies": { - "System.Runtime": "4.3.0", - "System.Threading.Tasks": "4.3.0" - } - }, - "System.Threading.Tasks/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - } - } - }, - "libraries": { - "AnsysReport/1.0.0": { - "type": "project", - "serviceable": false, - "sha512": "" - }, - "Microsoft.NETCore.Platforms/1.1.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==", - "path": "microsoft.netcore.platforms/1.1.0", - "hashPath": "microsoft.netcore.platforms.1.1.0.nupkg.sha512" - }, - "Microsoft.NETCore.Targets/1.1.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg==", - "path": "microsoft.netcore.targets/1.1.0", - "hashPath": "microsoft.netcore.targets.1.1.0.nupkg.sha512" - }, - "MigraDocCore.DocumentObjectModel/0.1.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-zD8+VylwftZAiIPrPf0Jb02w2p/gkC3w82M8C4VEG87nD6AukEpkXU/Ij1xpgkHPBX5Xh7F/XIuFCc3twwZ0ZQ==", - "path": "migradoccore.documentobjectmodel/0.1.2", - "hashPath": "migradoccore.documentobjectmodel.0.1.2.nupkg.sha512" - }, - "MigraDocCore.Rendering/1.3.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-7RfL1BvBQC5de1v9BdP0ZHByf+iY2+xzwtBm1sh1vlXncJyPqaSSB5Q/040EZ4lcPS7CRWIObA5OD4zvytuQSQ==", - "path": "migradoccore.rendering/1.3.1", - "hashPath": "migradoccore.rendering.1.3.1.nupkg.sha512" - }, - "Newtonsoft.Json/13.0.3": { - "type": "package", - "serviceable": true, - "sha512": "sha512-HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==", - "path": "newtonsoft.json/13.0.3", - "hashPath": "newtonsoft.json.13.0.3.nupkg.sha512" - }, - "PdfSharpCore/1.3.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-QZP3MAx/OOCiSe4xpEmYgeqybjgRzsuoXlg6Lvg3NHy0HwNo7YKKEWweiwd92+1QOu9/DlB6HvTd5yPMQgwNpA==", - "path": "pdfsharpcore/1.3.1", - "hashPath": "pdfsharpcore.1.3.1.nupkg.sha512" - }, - "PdfSharpCore.Charting/1.3.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-MQHZY/QPpx0XHpbBaX0/+JemRmiOyN8a8OM/3D4KCsG1hSHCzfZ4q5xhmK4sROLEuZjcX2ZXvlm5BcRr8i+lRg==", - "path": "pdfsharpcore.charting/1.3.1", - "hashPath": "pdfsharpcore.charting.1.3.1.nupkg.sha512" - }, - "SixLabors.Fonts/1.0.0-beta0013": { - "type": "package", - "serviceable": true, - "sha512": "sha512-NaD8R8GdHqnPP/3GUI6IbJNt3EHjU05CIJw/1gz11NoUBaePhtgDogG1XFguR2nSoXofGJ35W+TgW1ZTVp5W1Q==", - "path": "sixlabors.fonts/1.0.0-beta0013", - "hashPath": "sixlabors.fonts.1.0.0-beta0013.nupkg.sha512" - }, - "SixLabors.ImageSharp/1.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-8amvsk8NXnCxZV0lvJppAZJknViWgBOO/2V59IGR6DVoD13mSmG+/Z9eg5IwrHQuRHp5RD9lfXBXDZyk8rTKDg==", - "path": "sixlabors.imagesharp/1.0.0", - "hashPath": "sixlabors.imagesharp.1.0.0.nupkg.sha512" - }, - "System.Collections.NonGeneric/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-prtjIEMhGUnQq6RnPEYLpFt8AtLbp9yq2zxOSrY7KJJZrw25Fi97IzBqY7iqssbM61Ek5b8f3MG/sG1N2sN5KA==", - "path": "system.collections.nongeneric/4.3.0", - "hashPath": "system.collections.nongeneric.4.3.0.nupkg.sha512" - }, - "System.Diagnostics.Debug/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-ZUhUOdqmaG5Jk3Xdb8xi5kIyQYAA4PnTNlHx1mu9ZY3qv4ELIdKbnL/akbGaKi2RnNUWaZsAs31rvzFdewTj2g==", - "path": "system.diagnostics.debug/4.3.0", - "hashPath": "system.diagnostics.debug.4.3.0.nupkg.sha512" - }, - "System.Diagnostics.Tracing/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-rswfv0f/Cqkh78rA5S8eN8Neocz234+emGCtTF3lxPY96F+mmmUen6tbn0glN6PMvlKQb9bPAY5e9u7fgPTkKw==", - "path": "system.diagnostics.tracing/4.3.0", - "hashPath": "system.diagnostics.tracing.4.3.0.nupkg.sha512" - }, - "System.Globalization/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==", - "path": "system.globalization/4.3.0", - "hashPath": "system.globalization.4.3.0.nupkg.sha512" - }, - "System.IO/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==", - "path": "system.io/4.3.0", - "hashPath": "system.io.4.3.0.nupkg.sha512" - }, - "System.Numerics.Vectors/4.5.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-QQTlPTl06J/iiDbJCiepZ4H//BVraReU4O4EoRw1U02H5TLUIT7xn3GnDp9AXPSlJUDyFs4uWjWafNX6WrAojQ==", - "path": "system.numerics.vectors/4.5.0", - "hashPath": "system.numerics.vectors.4.5.0.nupkg.sha512" - }, - "System.Reflection/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==", - "path": "system.reflection/4.3.0", - "hashPath": "system.reflection.4.3.0.nupkg.sha512" - }, - "System.Reflection.Primitives/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==", - "path": "system.reflection.primitives/4.3.0", - "hashPath": "system.reflection.primitives.4.3.0.nupkg.sha512" - }, - "System.Reflection.TypeExtensions/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-7u6ulLcZbyxB5Gq0nMkQttcdBTx57ibzw+4IOXEfR+sXYQoHvjW5LTLyNr8O22UIMrqYbchJQJnos4eooYzYJA==", - "path": "system.reflection.typeextensions/4.3.0", - "hashPath": "system.reflection.typeextensions.4.3.0.nupkg.sha512" - }, - "System.Resources.ResourceManager/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==", - "path": "system.resources.resourcemanager/4.3.0", - "hashPath": "system.resources.resourcemanager.4.3.0.nupkg.sha512" - }, - "System.Runtime/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==", - "path": "system.runtime/4.3.0", - "hashPath": "system.runtime.4.3.0.nupkg.sha512" - }, - "System.Runtime.CompilerServices.Unsafe/4.7.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-IpU1lcHz8/09yDr9N+Juc7SCgNUz+RohkCQI+KsWKR67XxpFr8Z6c8t1iENCXZuRuNCc4HBwme/MDHNVCwyAKg==", - "path": "system.runtime.compilerservices.unsafe/4.7.0", - "hashPath": "system.runtime.compilerservices.unsafe.4.7.0.nupkg.sha512" - }, - "System.Runtime.Extensions/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-guW0uK0fn5fcJJ1tJVXYd7/1h5F+pea1r7FLSOz/f8vPEqbR2ZAknuRDvTQ8PzAilDveOxNjSfr0CHfIQfFk8g==", - "path": "system.runtime.extensions/4.3.0", - "hashPath": "system.runtime.extensions.4.3.0.nupkg.sha512" - }, - "System.Text.Encoding/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==", - "path": "system.text.encoding/4.3.0", - "hashPath": "system.text.encoding.4.3.0.nupkg.sha512" - }, - "System.Threading/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-VkUS0kOBcUf3Wwm0TSbrevDDZ6BlM+b/HRiapRFWjM5O0NS0LviG0glKmFK+hhPDd1XFeSdU1GmlLhb2CoVpIw==", - "path": "system.threading/4.3.0", - "hashPath": "system.threading.4.3.0.nupkg.sha512" - }, - "System.Threading.Tasks/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==", - "path": "system.threading.tasks/4.3.0", - "hashPath": "system.threading.tasks.4.3.0.nupkg.sha512" - } - } -} \ No newline at end of file diff --git a/pyaedt/dlls/PDFReport/AnsysReport.dll b/pyaedt/dlls/PDFReport/AnsysReport.dll deleted file mode 100644 index d639e1b9a855028c7dd0690c1fbc0d6eed349229..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23552 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 REw@AajjP_Z3jJ?;;2&j)fwKSr diff --git a/pyaedt/dlls/PDFReport/ICSharpCode.SharpZipLib.xml b/pyaedt/dlls/PDFReport/ICSharpCode.SharpZipLib.xml deleted file mode 100644 index 141fda5a478..00000000000 --- a/pyaedt/dlls/PDFReport/ICSharpCode.SharpZipLib.xml +++ /dev/null @@ -1,10977 +0,0 @@ - - - - ICSharpCode.SharpZipLib - - - - - An example class to demonstrate compression and decompression of BZip2 streams. - - - - - Decompress the input writing - uncompressed data to the output stream - - The readable stream containing data to decompress. - The output stream to receive the decompressed data. - Both streams are closed on completion if true. - - - - Compress the input stream sending - result data to output stream - - The readable stream to compress. - The output stream to receive the compressed data. - Both streams are closed on completion if true. - Block size acts as compression level (1 to 9) with 1 giving - the lowest compression and 9 the highest. - - - - Defines internal values for both compression and decompression - - - - - Random numbers used to randomise repetitive blocks - - - - - When multiplied by compression parameter (1-9) gives the block size for compression - 9 gives the best compression but uses the most memory. - - - - - Backend constant - - - - - Backend constant - - - - - Backend constant - - - - - Backend constant - - - - - Backend constant - - - - - Backend constant - - - - - Backend constant - - - - - Backend constant - - - - - Backend constant - - - - - BZip2Exception represents exceptions specific to BZip2 classes and code. - - - - - Initialise a new instance of . - - - - - Initialise a new instance of with its message string. - - A that describes the error. - - - - Initialise a new instance of . - - A that describes the error. - The that caused this exception. - - - - Initializes a new instance of the BZip2Exception class with serialized data. - - - The System.Runtime.Serialization.SerializationInfo that holds the serialized - object data about the exception being thrown. - - - The System.Runtime.Serialization.StreamingContext that contains contextual information - about the source or destination. - - - - - An input stream that decompresses files in the BZip2 format - - - - - Construct instance for reading from stream - - Data source - - - - Get/set flag indicating ownership of underlying stream. - When the flag is true will close the underlying stream also. - - - - - Gets a value indicating if the stream supports reading - - - - - Gets a value indicating whether the current stream supports seeking. - - - - - Gets a value indicating whether the current stream supports writing. - This property always returns false - - - - - Gets the length in bytes of the stream. - - - - - Gets the current position of the stream. - Setting the position is not supported and will throw a NotSupportException. - - Any attempt to set the position. - - - - Flushes the stream. - - - - - Set the streams position. This operation is not supported and will throw a NotSupportedException - - A byte offset relative to the parameter. - A value of type indicating the reference point used to obtain the new position. - The new position of the stream. - Any access - - - - Sets the length of this stream to the given value. - This operation is not supported and will throw a NotSupportedExceptionortedException - - The new length for the stream. - Any access - - - - Writes a block of bytes to this stream using data from a buffer. - This operation is not supported and will throw a NotSupportedException - - The buffer to source data from. - The offset to start obtaining data from. - The number of bytes of data to write. - Any access - - - - Writes a byte to the current position in the file stream. - This operation is not supported and will throw a NotSupportedException - - The value to write. - Any access - - - - Read a sequence of bytes and advances the read position by one byte. - - Array of bytes to store values in - Offset in array to begin storing data - The maximum number of bytes to read - The total number of bytes read into the buffer. This might be less - than the number of bytes requested if that number of bytes are not - currently available or zero if the end of the stream is reached. - - - - - Closes the stream, releasing any associated resources. - - - - - Read a byte from stream advancing position - - byte read or -1 on end of stream - - - - An output stream that compresses into the BZip2 format - including file header chars into another stream. - - - - - Construct a default output stream with maximum block size - - The stream to write BZip data onto. - - - - Initialise a new instance of the - for the specified stream, using the given blocksize. - - The stream to write compressed data to. - The block size to use. - - Valid block sizes are in the range 1..9, with 1 giving - the lowest compression and 9 the highest. - - - - - Ensures that resources are freed and other cleanup operations - are performed when the garbage collector reclaims the BZip2OutputStream. - - - - - Gets or sets a flag indicating ownership of underlying stream. - When the flag is true will close the underlying stream also. - - The default value is true. - - - - Gets a value indicating whether the current stream supports reading - - - - - Gets a value indicating whether the current stream supports seeking - - - - - Gets a value indicating whether the current stream supports writing - - - - - Gets the length in bytes of the stream - - - - - Gets or sets the current position of this stream. - - - - - Sets the current position of this stream to the given value. - - The point relative to the offset from which to being seeking. - The reference point from which to begin seeking. - The new position in the stream. - - - - Sets the length of this stream to the given value. - - The new stream length. - - - - Read a byte from the stream advancing the position. - - The byte read cast to an int; -1 if end of stream. - - - - Read a block of bytes - - The buffer to read into. - The offset in the buffer to start storing data at. - The maximum number of bytes to read. - The total number of bytes read. This might be less than the number of bytes - requested if that number of bytes are not currently available, or zero - if the end of the stream is reached. - - - - Write a block of bytes to the stream - - The buffer containing data to write. - The offset of the first byte to write. - The number of bytes to write. - - - - Write a byte to the stream. - - The byte to write to the stream. - - - - Get the number of bytes written to output. - - - - - Get the number of bytes written to the output. - - - - - Releases the unmanaged resources used by the and optionally releases the managed resources. - - true to release both managed and unmanaged resources; false to release only unmanaged resources. - - - - Flush output buffers - - - - - Computes Adler32 checksum for a stream of data. An Adler32 - checksum is not as reliable as a CRC32 checksum, but a lot faster to - compute. - - The specification for Adler32 may be found in RFC 1950. - ZLIB Compressed Data Format Specification version 3.3) - - - From that document: - - "ADLER32 (Adler-32 checksum) - This contains a checksum value of the uncompressed data - (excluding any dictionary data) computed according to Adler-32 - algorithm. This algorithm is a 32-bit extension and improvement - of the Fletcher algorithm, used in the ITU-T X.224 / ISO 8073 - standard. - - Adler-32 is composed of two sums accumulated per byte: s1 is - the sum of all bytes, s2 is the sum of all s1 values. Both sums - are done modulo 65521. s1 is initialized to 1, s2 to zero. The - Adler-32 checksum is stored as s2*65536 + s1 in most- - significant-byte first (network) order." - - "8.2. The Adler-32 algorithm - - The Adler-32 algorithm is much faster than the CRC32 algorithm yet - still provides an extremely low probability of undetected errors. - - The modulo on unsigned long accumulators can be delayed for 5552 - bytes, so the modulo operation time is negligible. If the bytes - are a, b, c, the second sum is 3a + 2b + c + 3, and so is position - and order sensitive, unlike the first sum, which is just a - checksum. That 65521 is prime is important to avoid a possible - large class of two-byte errors that leave the check unchanged. - (The Fletcher checksum uses 255, which is not prime and which also - makes the Fletcher check insensitive to single byte changes 0 - - 255.) - - The sum s1 is initialized to 1 instead of zero to make the length - of the sequence part of s2, so that the length does not have to be - checked separately. (Any sequence of zeroes has a Fletcher - checksum of zero.)" - - - - - - - largest prime smaller than 65536 - - - - - The CRC data checksum so far. - - - - - Initialise a default instance of - - - - - Resets the Adler32 data checksum as if no update was ever called. - - - - - Returns the Adler32 data checksum computed so far. - - - - - Updates the checksum with the byte b. - - - The data value to add. The high byte of the int is ignored. - - - - - Updates the Adler32 data checksum with the bytes taken from - a block of data. - - Contains the data to update the checksum with. - - - - Update Adler32 data checksum based on a portion of a block of data - - - The chunk of data to add - - - - - CRC-32 with unreversed data and reversed output - - - Generate a table for a byte-wise 32-bit CRC calculation on the polynomial: - x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x^1+x^0. - - Polynomials over GF(2) are represented in binary, one bit per coefficient, - with the lowest powers in the most significant bit. Then adding polynomials - is just exclusive-or, and multiplying a polynomial by x is a right shift by - one. If we call the above polynomial p, and represent a byte as the - polynomial q, also with the lowest power in the most significant bit (so the - byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p, - where a mod b means the remainder after dividing a by b. - - This calculation is done using the shift-register method of multiplying and - taking the remainder. The register is initialized to zero, and for each - incoming bit, x^32 is added mod p to the register if the bit is a one (where - x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by - x (which is shifting right by one and adding x^32 mod p if the bit shifted - out is a one). We start with the highest power (least significant bit) of - q and repeat for all eight bits of q. - - This implementation uses sixteen lookup tables stored in one linear array - to implement the slicing-by-16 algorithm, a variant of the slicing-by-8 - algorithm described in this Intel white paper: - - https://web.archive.org/web/20120722193753/http://download.intel.com/technology/comms/perfnet/download/slicing-by-8.pdf - - The first lookup table is simply the CRC of all possible eight bit values. - Each successive lookup table is derived from the original table generated - by Sarwate's algorithm. Slicing a 16-bit input and XORing the outputs - together will produce the same output as a byte-by-byte CRC loop with - fewer arithmetic and bit manipulation operations, at the cost of increased - memory consumed by the lookup tables. (Slicing-by-16 requires a 16KB table, - which is still small enough to fit in most processors' L1 cache.) - - - - - The CRC data checksum so far. - - - - - Initialise a default instance of - - - - - Resets the CRC data checksum as if no update was ever called. - - - - - Returns the CRC data checksum computed so far. - - Reversed Out = true - - - - Updates the checksum with the int bval. - - - the byte is taken as the lower 8 bits of bval - - Reversed Data = false - - - - Updates the CRC data checksum with the bytes taken from - a block of data. - - Contains the data to update the CRC with. - - - - Update CRC data checksum based on a portion of a block of data - - - The chunk of data to add - - - - - Internal helper function for updating a block of data using slicing. - - The array containing the data to add - Range start for (inclusive) - The number of bytes to checksum starting from - - - - A non-inlined function for updating data that doesn't fit in a 16-byte - block. We don't expect to enter this function most of the time, and when - we do we're not here for long, so disabling inlining here improves - performance overall. - - The array containing the data to add - Range start for (inclusive) - Range end for (exclusive) - - - - CRC-32 with reversed data and unreversed output - - - Generate a table for a byte-wise 32-bit CRC calculation on the polynomial: - x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x^1+x^0. - - Polynomials over GF(2) are represented in binary, one bit per coefficient, - with the lowest powers in the most significant bit. Then adding polynomials - is just exclusive-or, and multiplying a polynomial by x is a right shift by - one. If we call the above polynomial p, and represent a byte as the - polynomial q, also with the lowest power in the most significant bit (so the - byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p, - where a mod b means the remainder after dividing a by b. - - This calculation is done using the shift-register method of multiplying and - taking the remainder. The register is initialized to zero, and for each - incoming bit, x^32 is added mod p to the register if the bit is a one (where - x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by - x (which is shifting right by one and adding x^32 mod p if the bit shifted - out is a one). We start with the highest power (least significant bit) of - q and repeat for all eight bits of q. - - This implementation uses sixteen lookup tables stored in one linear array - to implement the slicing-by-16 algorithm, a variant of the slicing-by-8 - algorithm described in this Intel white paper: - - https://web.archive.org/web/20120722193753/http://download.intel.com/technology/comms/perfnet/download/slicing-by-8.pdf - - The first lookup table is simply the CRC of all possible eight bit values. - Each successive lookup table is derived from the original table generated - by Sarwate's algorithm. Slicing a 16-bit input and XORing the outputs - together will produce the same output as a byte-by-byte CRC loop with - fewer arithmetic and bit manipulation operations, at the cost of increased - memory consumed by the lookup tables. (Slicing-by-16 requires a 16KB table, - which is still small enough to fit in most processors' L1 cache.) - - - - - The CRC data checksum so far. - - - - - Initialise a default instance of - - - - - Resets the CRC data checksum as if no update was ever called. - - - - - Returns the CRC data checksum computed so far. - - Reversed Out = false - - - - Updates the checksum with the int bval. - - - the byte is taken as the lower 8 bits of bval - - Reversed Data = true - - - - Updates the CRC data checksum with the bytes taken from - a block of data. - - Contains the data to update the CRC with. - - - - Update CRC data checksum based on a portion of a block of data - - - The chunk of data to add - - - - - Internal helper function for updating a block of data using slicing. - - The array containing the data to add - Range start for (inclusive) - The number of bytes to checksum starting from - - - - A non-inlined function for updating data that doesn't fit in a 16-byte - block. We don't expect to enter this function most of the time, and when - we do we're not here for long, so disabling inlining here improves - performance overall. - - The array containing the data to add - Range start for (inclusive) - Range end for (exclusive) - - - - The number of slicing lookup tables to generate. - - - - - Generates multiple CRC lookup tables for a given polynomial, stored - in a linear array of uints. The first block (i.e. the first 256 - elements) is the same as the byte-by-byte CRC lookup table. - - The generating CRC polynomial - Whether the polynomial is in reversed bit order - A linear array of 256 * elements - - This table could also be generated as a rectangular array, but the - JIT compiler generates slower code than if we use a linear array. - Known issue, see: https://github.com/dotnet/runtime/issues/30275 - - - - - Mixes the first four bytes of input with - using normal ordering before calling . - - Array of data to checksum - Offset to start reading from - The table to use for slicing-by-16 lookup - Checksum state before this update call - A new unfinalized checksum value - - - Assumes input[offset]..input[offset + 15] are valid array indexes. - For performance reasons, this must be checked by the caller. - - - - - Mixes the first four bytes of input with - using reflected ordering before calling . - - Array of data to checksum - Offset to start reading from - The table to use for slicing-by-16 lookup - Checksum state before this update call - A new unfinalized checksum value - - - Assumes input[offset]..input[offset + 15] are valid array indexes. - For performance reasons, this must be checked by the caller. - - - - - A shared method for updating an unfinalized CRC checksum using slicing-by-16. - - Array of data to checksum - Offset to start reading from - The table to use for slicing-by-16 lookup - First byte of input after mixing with the old CRC - Second byte of input after mixing with the old CRC - Third byte of input after mixing with the old CRC - Fourth byte of input after mixing with the old CRC - A new unfinalized checksum value - - - Even though the first four bytes of input are fed in as arguments, - should be the same value passed to this - function's caller (either or - ). This method will get inlined - into both functions, so using the same offset produces faster code. - - - Because most processors running C# have some kind of instruction-level - parallelism, the order of XOR operations can affect performance. This - ordering assumes that the assembly code generated by the just-in-time - compiler will emit a bunch of arithmetic operations for checking array - bounds. Then it opportunistically XORs a1 and a2 to keep the processor - busy while those other parts of the pipeline handle the range check - calculations. - - - - - - Interface to compute a data checksum used by checked input/output streams. - A data checksum can be updated by one byte or with a byte array. After each - update the value of the current checksum can be returned by calling - getValue. The complete checksum object can also be reset - so it can be used again with new data. - - - - - Resets the data checksum as if no update was ever called. - - - - - Returns the data checksum computed so far. - - - - - Adds one byte to the data checksum. - - - the data value to add. The high byte of the int is ignored. - - - - - Updates the data checksum with the bytes taken from the array. - - - buffer an array of bytes - - - - - Adds the byte array to the data checksum. - - - The chunk of data to add - - - - - Event arguments for scanning. - - - - - Initialise a new instance of - - The file or directory name. - - - - The file or directory name for this event. - - - - - Get set a value indicating if scanning should continue or not. - - - - - Event arguments during processing of a single file or directory. - - - - - Initialise a new instance of - - The file or directory name if known. - The number of bytes processed so far - The total number of bytes to process, 0 if not known - - - - The name for this event if known. - - - - - Get set a value indicating whether scanning should continue or not. - - - - - Get a percentage representing how much of the has been processed - - 0.0 to 100.0 percent; 0 if target is not known. - - - - The number of bytes processed so far - - - - - The number of bytes to process. - - Target may be 0 or negative if the value isnt known. - - - - Event arguments for directories. - - - - - Initialize an instance of . - - The name for this directory. - Flag value indicating if any matching files are contained in this directory. - - - - Get a value indicating if the directory contains any matching files or not. - - - - - Arguments passed when scan failures are detected. - - - - - Initialise a new instance of - - The name to apply. - The exception to use. - - - - The applicable name. - - - - - The applicable exception. - - - - - Get / set a value indicating whether scanning should continue. - - - - - Delegate invoked before starting to process a file. - - The source of the event - The event arguments. - - - - Delegate invoked during processing of a file or directory - - The source of the event - The event arguments. - - - - Delegate invoked when a file has been completely processed. - - The source of the event - The event arguments. - - - - Delegate invoked when a directory failure is detected. - - The source of the event - The event arguments. - - - - Delegate invoked when a file failure is detected. - - The source of the event - The event arguments. - - - - FileSystemScanner provides facilities scanning of files and directories. - - - - - Initialise a new instance of - - The file filter to apply when scanning. - - - - Initialise a new instance of - - The file filter to apply. - The directory filter to apply. - - - - Initialise a new instance of - - The file filter to apply. - - - - Initialise a new instance of - - The file filter to apply. - The directory filter to apply. - - - - Delegate to invoke when a directory is processed. - - - - - Delegate to invoke when a file is processed. - - - - - Delegate to invoke when processing for a file has finished. - - - - - Delegate to invoke when a directory failure is detected. - - - - - Delegate to invoke when a file failure is detected. - - - - - Raise the DirectoryFailure event. - - The directory name. - The exception detected. - - - - Raise the FileFailure event. - - The file name. - The exception detected. - - - - Raise the ProcessFile event. - - The file name. - - - - Raise the complete file event - - The file name - - - - Raise the ProcessDirectory event. - - The directory name. - Flag indicating if the directory has matching files. - - - - Scan a directory. - - The base directory to scan. - True to recurse subdirectories, false to scan a single directory. - - - - The file filter currently in use. - - - - - The directory filter currently in use. - - - - - Flag indicating if scanning should continue running. - - - - - INameTransform defines how file system names are transformed for use with archives, or vice versa. - - - - - Given a file name determine the transformed value. - - The name to transform. - The transformed file name. - - - - Given a directory name determine the transformed value. - - The name to transform. - The transformed directory name - - - - InvalidNameException is thrown for invalid names such as directory traversal paths and names with invalid characters - - - - - Initializes a new instance of the InvalidNameException class with a default error message. - - - - - Initializes a new instance of the InvalidNameException class with a specified error message. - - A message describing the exception. - - - - Initializes a new instance of the InvalidNameException class with a specified - error message and a reference to the inner exception that is the cause of this exception. - - A message describing the exception. - The inner exception - - - - Initializes a new instance of the InvalidNameException class with serialized data. - - - The System.Runtime.Serialization.SerializationInfo that holds the serialized - object data about the exception being thrown. - - - The System.Runtime.Serialization.StreamingContext that contains contextual information - about the source or destination. - - - - - Scanning filters support filtering of names. - - - - - Test a name to see if it 'matches' the filter. - - The name to test. - Returns true if the name matches the filter, false if it does not match. - - - - NameFilter is a string matching class which allows for both positive and negative - matching. - A filter is a sequence of independant regular expressions separated by semi-colons ';'. - To include a semi-colon it may be quoted as in \;. Each expression can be prefixed by a plus '+' sign or - a minus '-' sign to denote the expression is intended to include or exclude names. - If neither a plus or minus sign is found include is the default. - A given name is tested for inclusion before checking exclusions. Only names matching an include spec - and not matching an exclude spec are deemed to match the filter. - An empty filter matches any name. - - The following expression includes all name ending in '.dat' with the exception of 'dummy.dat' - "+\.dat$;-^dummy\.dat$" - - - - - Construct an instance based on the filter expression passed - - The filter expression. - - - - Test a string to see if it is a valid regular expression. - - The expression to test. - True if expression is a valid false otherwise. - - - - Test an expression to see if it is valid as a filter. - - The filter expression to test. - True if the expression is valid, false otherwise. - - - - Split a string into its component pieces - - The original string - Returns an array of values containing the individual filter elements. - - - - Convert this filter to its string equivalent. - - The string equivalent for this filter. - - - - Test a value to see if it is included by the filter. - - The value to test. - True if the value is included, false otherwise. - - - - Test a value to see if it is excluded by the filter. - - The value to test. - True if the value is excluded, false otherwise. - - - - Test a value to see if it matches the filter. - - The value to test. - True if the value matches, false otherwise. - - - - Compile this filter. - - - - - PathFilter filters directories and files using a form of regular expressions - by full path name. - See NameFilter for more detail on filtering. - - - - - Initialise a new instance of . - - The filter expression to apply. - - - - Test a name to see if it matches the filter. - - The name to test. - True if the name matches, false otherwise. - is used to get the full path before matching. - - - - ExtendedPathFilter filters based on name, file size, and the last write time of the file. - - Provides an example of how to customise filtering. - - - - Initialise a new instance of ExtendedPathFilter. - - The filter to apply. - The minimum file size to include. - The maximum file size to include. - - - - Initialise a new instance of ExtendedPathFilter. - - The filter to apply. - The minimum to include. - The maximum to include. - - - - Initialise a new instance of ExtendedPathFilter. - - The filter to apply. - The minimum file size to include. - The maximum file size to include. - The minimum to include. - The maximum to include. - - - - Test a filename to see if it matches the filter. - - The filename to test. - True if the filter matches, false otherwise. - The doesnt exist - - - - Get/set the minimum size/length for a file that will match this filter. - - The default value is zero. - value is less than zero; greater than - - - - Get/set the maximum size/length for a file that will match this filter. - - The default value is - value is less than zero or less than - - - - Get/set the minimum value that will match for this filter. - - Files with a LastWrite time less than this value are excluded by the filter. - - - - Get/set the maximum value that will match for this filter. - - Files with a LastWrite time greater than this value are excluded by the filter. - - - - NameAndSizeFilter filters based on name and file size. - - A sample showing how filters might be extended. - - - - Initialise a new instance of NameAndSizeFilter. - - The filter to apply. - The minimum file size to include. - The maximum file size to include. - - - - Test a filename to see if it matches the filter. - - The filename to test. - True if the filter matches, false otherwise. - - - - Get/set the minimum size for a file that will match this filter. - - - - - Get/set the maximum size for a file that will match this filter. - - - - - PathUtils provides simple utilities for handling paths. - - - - - Remove any path root present in the path - - A containing path information. - The path with the root removed if it was present; path otherwise. - - - - Returns a random file name in the users temporary directory, or in directory of if specified - - If specified, used as the base file name for the temporary file - Returns a temporary file name - - - - Provides simple " utilities. - - - - - Read from a ensuring all the required data is read. - - The stream to read. - The buffer to fill. - - - - - Read from a " ensuring all the required data is read. - - The stream to read data from. - The buffer to store data in. - The offset at which to begin storing data. - The number of bytes of data to store. - Required parameter is null - and or are invalid. - End of stream is encountered before all the data has been read. - - - - Read as much data as possible from a ", up to the requested number of bytes - - The stream to read data from. - The buffer to store data in. - The offset at which to begin storing data. - The number of bytes of data to store. - Required parameter is null - and or are invalid. - - - - Copy the contents of one to another. - - The stream to source data from. - The stream to write data to. - The buffer to use during copying. - - - - Copy the contents of one to another. - - The stream to source data from. - The stream to write data to. - The buffer to use during copying. - The progress handler delegate to use. - The minimum between progress updates. - The source for this event. - The name to use with the event. - This form is specialised for use within #Zip to support events during archive operations. - - - - Copy the contents of one to another. - - The stream to source data from. - The stream to write data to. - The buffer to use during copying. - The progress handler delegate to use. - The minimum between progress updates. - The source for this event. - The name to use with the event. - A predetermined fixed target value to use with progress updates. - If the value is negative the target is calculated by looking at the stream. - This form is specialised for use within #Zip to support events during archive operations. - - - - Initialise an instance of - - - - - SharpZipBaseException is the base exception class for SharpZipLib. - All library exceptions are derived from this. - - NOTE: Not all exceptions thrown will be derived from this class. - A variety of other exceptions are possible for example - - - - Initializes a new instance of the SharpZipBaseException class. - - - - - Initializes a new instance of the SharpZipBaseException class with a specified error message. - - A message describing the exception. - - - - Initializes a new instance of the SharpZipBaseException class with a specified - error message and a reference to the inner exception that is the cause of this exception. - - A message describing the exception. - The inner exception - - - - Initializes a new instance of the SharpZipBaseException class with serialized data. - - - The System.Runtime.Serialization.SerializationInfo that holds the serialized - object data about the exception being thrown. - - - The System.Runtime.Serialization.StreamingContext that contains contextual information - about the source or destination. - - - - - Indicates that an error occurred during decoding of a input stream due to corrupt - data or (unintentional) library incompatibility. - - - - - Initializes a new instance of the StreamDecodingException with a generic message - - - - - Initializes a new instance of the StreamDecodingException class with a specified error message. - - A message describing the exception. - - - - Initializes a new instance of the StreamDecodingException class with a specified - error message and a reference to the inner exception that is the cause of this exception. - - A message describing the exception. - The inner exception - - - - Initializes a new instance of the StreamDecodingException class with serialized data. - - - The System.Runtime.Serialization.SerializationInfo that holds the serialized - object data about the exception being thrown. - - - The System.Runtime.Serialization.StreamingContext that contains contextual information - about the source or destination. - - - - - Indicates that the input stream could not decoded due to known library incompability or missing features - - - - - Initializes a new instance of the StreamUnsupportedException with a generic message - - - - - Initializes a new instance of the StreamUnsupportedException class with a specified error message. - - A message describing the exception. - - - - Initializes a new instance of the StreamUnsupportedException class with a specified - error message and a reference to the inner exception that is the cause of this exception. - - A message describing the exception. - The inner exception - - - - Initializes a new instance of the StreamUnsupportedException class with serialized data. - - - The System.Runtime.Serialization.SerializationInfo that holds the serialized - object data about the exception being thrown. - - - The System.Runtime.Serialization.StreamingContext that contains contextual information - about the source or destination. - - - - - Indicates that the input stream could not decoded due to the stream ending before enough data had been provided - - - - - Initializes a new instance of the UnexpectedEndOfStreamException with a generic message - - - - - Initializes a new instance of the UnexpectedEndOfStreamException class with a specified error message. - - A message describing the exception. - - - - Initializes a new instance of the UnexpectedEndOfStreamException class with a specified - error message and a reference to the inner exception that is the cause of this exception. - - A message describing the exception. - The inner exception - - - - Initializes a new instance of the UnexpectedEndOfStreamException class with serialized data. - - - The System.Runtime.Serialization.SerializationInfo that holds the serialized - object data about the exception being thrown. - - - The System.Runtime.Serialization.StreamingContext that contains contextual information - about the source or destination. - - - - - Indicates that a value was outside of the expected range when decoding an input stream - - - - - Initializes a new instance of the ValueOutOfRangeException class naming the causing variable - - Name of the variable, use: nameof() - - - - Initializes a new instance of the ValueOutOfRangeException class naming the causing variable, - it's current value and expected range. - - Name of the variable, use: nameof() - The invalid value - Expected maximum value - Expected minimum value - - - - Initializes a new instance of the ValueOutOfRangeException class naming the causing variable, - it's current value and expected range. - - Name of the variable, use: nameof() - The invalid value - Expected maximum value - Expected minimum value - - - - Initializes a new instance of the ValueOutOfRangeException class with serialized data. - - - The System.Runtime.Serialization.SerializationInfo that holds the serialized - object data about the exception being thrown. - - - The System.Runtime.Serialization.StreamingContext that contains contextual information - about the source or destination. - - - - - PkzipClassic embodies the classic or original encryption facilities used in Pkzip archives. - While it has been superceded by more recent and more powerful algorithms, its still in use and - is viable for preventing casual snooping - - - - - Generates new encryption keys based on given seed - - The seed value to initialise keys with. - A new key value. - - - - PkzipClassicCryptoBase provides the low level facilities for encryption - and decryption using the PkzipClassic algorithm. - - - - - Transform a single byte - - - The transformed value - - - - - Set the key schedule for encryption/decryption. - - The data use to set the keys from. - - - - Update encryption keys - - - - - Reset the internal state. - - - - - PkzipClassic CryptoTransform for encryption. - - - - - Initialise a new instance of - - The key block to use. - - - - Transforms the specified region of the specified byte array. - - The input for which to compute the transform. - The offset into the byte array from which to begin using data. - The number of bytes in the byte array to use as data. - The computed transform. - - - - Transforms the specified region of the input byte array and copies - the resulting transform to the specified region of the output byte array. - - The input for which to compute the transform. - The offset into the input byte array from which to begin using data. - The number of bytes in the input byte array to use as data. - The output to which to write the transform. - The offset into the output byte array from which to begin writing data. - The number of bytes written. - - - - Gets a value indicating whether the current transform can be reused. - - - - - Gets the size of the input data blocks in bytes. - - - - - Gets the size of the output data blocks in bytes. - - - - - Gets a value indicating whether multiple blocks can be transformed. - - - - - Cleanup internal state. - - - - - PkzipClassic CryptoTransform for decryption. - - - - - Initialise a new instance of . - - The key block to decrypt with. - - - - Transforms the specified region of the specified byte array. - - The input for which to compute the transform. - The offset into the byte array from which to begin using data. - The number of bytes in the byte array to use as data. - The computed transform. - - - - Transforms the specified region of the input byte array and copies - the resulting transform to the specified region of the output byte array. - - The input for which to compute the transform. - The offset into the input byte array from which to begin using data. - The number of bytes in the input byte array to use as data. - The output to which to write the transform. - The offset into the output byte array from which to begin writing data. - The number of bytes written. - - - - Gets a value indicating whether the current transform can be reused. - - - - - Gets the size of the input data blocks in bytes. - - - - - Gets the size of the output data blocks in bytes. - - - - - Gets a value indicating whether multiple blocks can be transformed. - - - - - Cleanup internal state. - - - - - Defines a wrapper object to access the Pkzip algorithm. - This class cannot be inherited. - - - - - Get / set the applicable block size in bits. - - The only valid block size is 8. - - - - Get an array of legal key sizes. - - - - - Generate an initial vector. - - - - - Get an array of legal block sizes. - - - - - Get / set the key value applicable. - - - - - Generate a new random key. - - - - - Create an encryptor. - - The key to use for this encryptor. - Initialisation vector for the new encryptor. - Returns a new PkzipClassic encryptor - - - - Create a decryptor. - - Keys to use for this new decryptor. - Initialisation vector for the new decryptor. - Returns a new decryptor. - - - - Encrypts and decrypts AES ZIP - - - Based on information from http://www.winzip.com/aes_info.htm - and http://www.gladman.me.uk/cryptography_technology/fileencrypt/ - - - - - Constructor - - The stream on which to perform the cryptographic transformation. - Instance of ZipAESTransform - Read or Write - - - - Reads a sequence of bytes from the current CryptoStream into buffer, - and advances the position within the stream by the number of bytes read. - - - - - - - - Writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written. - - An array of bytes. This method copies count bytes from buffer to the current stream. - The byte offset in buffer at which to begin copying bytes to the current stream. - The number of bytes to be written to the current stream. - - - - Transforms stream using AES in CTR mode - - - - - Constructor. - - Password string - Random bytes, length depends on encryption strength. - 128 bits = 8 bytes, 192 bits = 12 bytes, 256 bits = 16 bytes. - The encryption strength, in bytes eg 16 for 128 bits. - True when creating a zip, false when reading. For the AuthCode. - - - - - Implement the ICryptoTransform method. - - - - - Returns the 2 byte password verifier - - - - - Returns the 10 byte AUTH CODE to be checked or appended immediately following the AES data stream. - - - - - Not implemented. - - - - - Gets the size of the input data blocks in bytes. - - - - - Gets the size of the output data blocks in bytes. - - - - - Gets a value indicating whether multiple blocks can be transformed. - - - - - Gets a value indicating whether the current transform can be reused. - - - - - Cleanup internal state. - - - - - An example class to demonstrate compression and decompression of GZip streams. - - - - - Decompress the input writing - uncompressed data to the output stream - - The readable stream containing data to decompress. - The output stream to receive the decompressed data. - Both streams are closed on completion if true. - Input or output stream is null - - - - Compress the input stream sending - result data to output stream - - The readable stream to compress. - The output stream to receive the compressed data. - Both streams are closed on completion if true. - Deflate buffer size, minimum 512 - Deflate compression level, 0-9 - Input or output stream is null - Buffer Size is smaller than 512 - Compression level outside 0-9 - - - - This class contains constants used for gzip. - - - - - First GZip identification byte - - - - - Second GZip identification byte - - - - - Deflate compression method - - - - - Get the GZip specified encoding (CP-1252 if supported, otherwise ASCII) - - - - - GZip header flags - - - - - Text flag hinting that the file is in ASCII - - - - - CRC flag indicating that a CRC16 preceeds the data - - - - - Extra flag indicating that extra fields are present - - - - - Filename flag indicating that the original filename is present - - - - - Flag bit mask indicating that a comment is present - - - - - GZipException represents exceptions specific to GZip classes and code. - - - - - Initialise a new instance of . - - - - - Initialise a new instance of with its message string. - - A that describes the error. - - - - Initialise a new instance of . - - A that describes the error. - The that caused this exception. - - - - Initializes a new instance of the GZipException class with serialized data. - - - The System.Runtime.Serialization.SerializationInfo that holds the serialized - object data about the exception being thrown. - - - The System.Runtime.Serialization.StreamingContext that contains contextual information - about the source or destination. - - - - - This filter stream is used to decompress a "GZIP" format stream. - The "GZIP" format is described baseInputStream RFC 1952. - - author of the original java version : John Leuner - - This sample shows how to unzip a gzipped file - - using System; - using System.IO; - - using ICSharpCode.SharpZipLib.Core; - using ICSharpCode.SharpZipLib.GZip; - - class MainClass - { - public static void Main(string[] args) - { - using (Stream inStream = new GZipInputStream(File.OpenRead(args[0]))) - using (FileStream outStream = File.Create(Path.GetFileNameWithoutExtension(args[0]))) { - byte[] buffer = new byte[4096]; - StreamUtils.Copy(inStream, outStream, buffer); - } - } - } - - - - - - CRC-32 value for uncompressed data - - - - - Flag to indicate if we've read the GZIP header yet for the current member (block of compressed data). - This is tracked per-block as the file is parsed. - - - - - Flag to indicate if at least one block in a stream with concatenated blocks was read successfully. - This allows us to exit gracefully if downstream data is not in gzip format. - - - - - Creates a GZipInputStream with the default buffer size - - - The stream to read compressed data from (baseInputStream GZIP format) - - - - - Creates a GZIPInputStream with the specified buffer size - - - The stream to read compressed data from (baseInputStream GZIP format) - - - Size of the buffer to use - - - - - Reads uncompressed data into an array of bytes - - - The buffer to read uncompressed data into - - - The offset indicating where the data should be placed - - - The number of uncompressed bytes to be read - - Returns the number of bytes actually read. - - - - Retrieves the filename header field for the block last read - - - - - - This filter stream is used to compress a stream into a "GZIP" stream. - The "GZIP" format is described in RFC 1952. - - author of the original java version : John Leuner - - This sample shows how to gzip a file - - using System; - using System.IO; - - using ICSharpCode.SharpZipLib.GZip; - using ICSharpCode.SharpZipLib.Core; - - class MainClass - { - public static void Main(string[] args) - { - using (Stream s = new GZipOutputStream(File.Create(args[0] + ".gz"))) - using (FileStream fs = File.OpenRead(args[0])) { - byte[] writeData = new byte[4096]; - Streamutils.Copy(s, fs, writeData); - } - } - } - } - - - - - - CRC-32 value for uncompressed data - - - - - Creates a GzipOutputStream with the default buffer size - - - The stream to read data (to be compressed) from - - - - - Creates a GZipOutputStream with the specified buffer size - - - The stream to read data (to be compressed) from - - - Size of the buffer to use - - - - - Sets the active compression level (0-9). The new level will be activated - immediately. - - The compression level to set. - - Level specified is not supported. - - - - - - Get the current compression level. - - The current compression level. - - - - Original filename - - - - - Write given buffer to output updating crc - - Buffer to write - Offset of first byte in buf to write - Number of bytes to write - - - - Writes remaining compressed output data to the output stream - and closes it. - - - - - Flushes the stream by ensuring the header is written, and then calling Flush - on the deflater. - - - - - Finish compression and write any footer information required to stream - - - - - This class contains constants used for LZW - - - - - Magic number found at start of LZW header: 0x1f 0x9d - - - - - Maximum number of bits per code - - - - - Mask for 'number of compression bits' - - - - - Indicates the presence of a fourth header byte - - - - - Reserved bits - - - - - Block compression: if table is full and compression rate is dropping, - clear the dictionary. - - - - - LZW file header size (in bytes) - - - - - Initial number of bits per code - - - - - LzwException represents exceptions specific to LZW classes and code. - - - - - Initialise a new instance of . - - - - - Initialise a new instance of with its message string. - - A that describes the error. - - - - Initialise a new instance of . - - A that describes the error. - The that caused this exception. - - - - Initializes a new instance of the LzwException class with serialized data. - - - The System.Runtime.Serialization.SerializationInfo that holds the serialized - object data about the exception being thrown. - - - The System.Runtime.Serialization.StreamingContext that contains contextual information - about the source or destination. - - - - - This filter stream is used to decompress a LZW format stream. - Specifically, a stream that uses the LZC compression method. - This file format is usually associated with the .Z file extension. - - See http://en.wikipedia.org/wiki/Compress - See http://wiki.wxwidgets.org/Development:_Z_File_Format - - The file header consists of 3 (or optionally 4) bytes. The first two bytes - contain the magic marker "0x1f 0x9d", followed by a byte of flags. - - Based on Java code by Ronald Tschalar, which in turn was based on the unlzw.c - code in the gzip package. - - This sample shows how to unzip a compressed file - - using System; - using System.IO; - - using ICSharpCode.SharpZipLib.Core; - using ICSharpCode.SharpZipLib.LZW; - - class MainClass - { - public static void Main(string[] args) - { - using (Stream inStream = new LzwInputStream(File.OpenRead(args[0]))) - using (FileStream outStream = File.Create(Path.GetFileNameWithoutExtension(args[0]))) { - byte[] buffer = new byte[4096]; - StreamUtils.Copy(inStream, outStream, buffer); - // OR - inStream.Read(buffer, 0, buffer.Length); - // now do something with the buffer - } - } - } - - - - - - Gets or sets a flag indicating ownership of underlying stream. - When the flag is true will close the underlying stream also. - - The default value is true. - - - - Creates a LzwInputStream - - - The stream to read compressed data from (baseInputStream LZW format) - - - - - See - - - - - - Reads decompressed data into the provided buffer byte array - - - The array to read and decompress data into - - - The offset indicating where the data should be placed - - - The number of bytes to decompress - - The number of bytes read. Zero signals the end of stream - - - - Moves the unread data in the buffer to the beginning and resets - the pointers. - - - - - - - Gets a value indicating whether the current stream supports reading - - - - - Gets a value of false indicating seeking is not supported for this stream. - - - - - Gets a value of false indicating that this stream is not writeable. - - - - - A value representing the length of the stream in bytes. - - - - - The current position within the stream. - Throws a NotSupportedException when attempting to set the position - - Attempting to set the position - - - - Flushes the baseInputStream - - - - - Sets the position within the current stream - Always throws a NotSupportedException - - The relative offset to seek to. - The defining where to seek from. - The new position in the stream. - Any access - - - - Set the length of the current stream - Always throws a NotSupportedException - - The new length value for the stream. - Any access - - - - Writes a sequence of bytes to stream and advances the current position - This method always throws a NotSupportedException - - The buffer containing data to write. - The offset of the first byte to write. - The number of bytes to write. - Any access - - - - Writes one byte to the current stream and advances the current position - Always throws a NotSupportedException - - The byte to write. - Any access - - - - Closes the input stream. When - is true the underlying stream is also closed. - - - - - Flag indicating wether this instance has been closed or not. - - - - - This exception is used to indicate that there is a problem - with a TAR archive header. - - - - - Initialise a new instance of the InvalidHeaderException class. - - - - - Initialises a new instance of the InvalidHeaderException class with a specified message. - - Message describing the exception cause. - - - - Initialise a new instance of InvalidHeaderException - - Message describing the problem. - The exception that is the cause of the current exception. - - - - Initializes a new instance of the InvalidHeaderException class with serialized data. - - - The System.Runtime.Serialization.SerializationInfo that holds the serialized - object data about the exception being thrown. - - - The System.Runtime.Serialization.StreamingContext that contains contextual information - about the source or destination. - - - - - Used to advise clients of 'events' while processing archives - - - - - The TarArchive class implements the concept of a - 'Tape Archive'. A tar archive is a series of entries, each of - which represents a file system object. Each entry in - the archive consists of a header block followed by 0 or more data blocks. - Directory entries consist only of the header block, and are followed by entries - for the directory's contents. File entries consist of a - header followed by the number of blocks needed to - contain the file's contents. All entries are written on - block boundaries. Blocks are 512 bytes long. - - TarArchives are instantiated in either read or write mode, - based upon whether they are instantiated with an InputStream - or an OutputStream. Once instantiated TarArchives read/write - mode can not be changed. - - There is currently no support for random access to tar archives. - However, it seems that subclassing TarArchive, and using the - TarBuffer.CurrentRecord and TarBuffer.CurrentBlock - properties, this would be rather trivial. - - - - - Client hook allowing detailed information to be reported during processing - - - - - Raises the ProgressMessage event - - The TarEntry for this event - message for this event. Null is no message - - - - Constructor for a default . - - - - - Initialise a TarArchive for input. - - The to use for input. - - - - Initialise a TarArchive for output. - - The to use for output. - - - - The InputStream based constructors create a TarArchive for the - purposes of extracting or listing a tar archive. Thus, use - these constructors when you wish to extract files from or list - the contents of an existing tar archive. - - The stream to retrieve archive data from. - Returns a new suitable for reading from. - - - - The InputStream based constructors create a TarArchive for the - purposes of extracting or listing a tar archive. Thus, use - these constructors when you wish to extract files from or list - the contents of an existing tar archive. - - The stream to retrieve archive data from. - The used for the Name fields, or null for ASCII only - Returns a new suitable for reading from. - - - - Create TarArchive for reading setting block factor - - A stream containing the tar archive contents - The blocking factor to apply - Returns a suitable for reading. - - - - Create TarArchive for reading setting block factor - - A stream containing the tar archive contents - The blocking factor to apply - The used for the Name fields, or null for ASCII only - Returns a suitable for reading. - - - - Create a TarArchive for writing to, using the default blocking factor - - The to write to - The used for the Name fields, or null for ASCII only - Returns a suitable for writing. - - - - Create a TarArchive for writing to, using the default blocking factor - - The to write to - Returns a suitable for writing. - - - - Create a tar archive for writing. - - The stream to write to - The blocking factor to use for buffering. - Returns a suitable for writing. - - - - Create a tar archive for writing. - - The stream to write to - The blocking factor to use for buffering. - The used for the Name fields, or null for ASCII only - Returns a suitable for writing. - - - - Set the flag that determines whether existing files are - kept, or overwritten during extraction. - - - If true, do not overwrite existing files. - - - - - Get/set the ascii file translation flag. If ascii file translation - is true, then the file is checked to see if it a binary file or not. - If the flag is true and the test indicates it is ascii text - file, it will be translated. The translation converts the local - operating system's concept of line ends into the UNIX line end, - '\n', which is the defacto standard for a TAR archive. This makes - text files compatible with UNIX. - - - - - Set the ascii file translation flag. - - - If true, translate ascii text files. - - - - - PathPrefix is added to entry names as they are written if the value is not null. - A slash character is appended after PathPrefix - - - - - RootPath is removed from entry names if it is found at the - beginning of the name. - - - - - Set user and group information that will be used to fill in the - tar archive's entry headers. This information is based on that available - for the linux operating system, which is not always available on other - operating systems. TarArchive allows the programmer to specify values - to be used in their place. - is set to true by this call. - - - The user id to use in the headers. - - - The user name to use in the headers. - - - The group id to use in the headers. - - - The group name to use in the headers. - - - - - Get or set a value indicating if overrides defined by SetUserInfo should be applied. - - If overrides are not applied then the values as set in each header will be used. - - - - Get the archive user id. - See ApplyUserInfoOverrides for detail - on how to allow setting values on a per entry basis. - - - The current user id. - - - - - Get the archive user name. - See ApplyUserInfoOverrides for detail - on how to allow setting values on a per entry basis. - - - The current user name. - - - - - Get the archive group id. - See ApplyUserInfoOverrides for detail - on how to allow setting values on a per entry basis. - - - The current group id. - - - - - Get the archive group name. - See ApplyUserInfoOverrides for detail - on how to allow setting values on a per entry basis. - - - The current group name. - - - - - Get the archive's record size. Tar archives are composed of - a series of RECORDS each containing a number of BLOCKS. - This allowed tar archives to match the IO characteristics of - the physical device being used. Archives are expected - to be properly "blocked". - - - The record size this archive is using. - - - - - Sets the IsStreamOwner property on the underlying stream. - Set this to false to prevent the Close of the TarArchive from closing the stream. - - - - - Close the archive. - - - - - Perform the "list" command for the archive contents. - - NOTE That this method uses the progress event to actually list - the contents. If the progress display event is not set, nothing will be listed! - - - - - Perform the "extract" command and extract the contents of the archive. - - - The destination directory into which to extract. - - - - - Perform the "extract" command and extract the contents of the archive. - - - The destination directory into which to extract. - - Allow parent directory traversal in file paths (e.g. ../file) - - - - Extract an entry from the archive. This method assumes that the - tarIn stream has been properly set with a call to GetNextEntry(). - - - The destination directory into which to extract. - - - The TarEntry returned by tarIn.GetNextEntry(). - - Allow parent directory traversal in file paths (e.g. ../file) - - - - Write an entry to the archive. This method will call the putNextEntry - and then write the contents of the entry, and finally call closeEntry() - for entries that are files. For directories, it will call putNextEntry(), - and then, if the recurse flag is true, process each entry that is a - child of the directory. - - - The TarEntry representing the entry to write to the archive. - - - If true, process the children of directory entries. - - - - - Write an entry to the archive. This method will call the putNextEntry - and then write the contents of the entry, and finally call closeEntry() - for entries that are files. For directories, it will call putNextEntry(), - and then, if the recurse flag is true, process each entry that is a - child of the directory. - - - The TarEntry representing the entry to write to the archive. - - - If true, process the children of directory entries. - - - - - Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. - - - - - Releases the unmanaged resources used by the FileStream and optionally releases the managed resources. - - true to release both managed and unmanaged resources; - false to release only unmanaged resources. - - - - Closes the archive and releases any associated resources. - - - - - Ensures that resources are freed and other cleanup operations are performed - when the garbage collector reclaims the . - - - - - The TarBuffer class implements the tar archive concept - of a buffered input stream. This concept goes back to the - days of blocked tape drives and special io devices. In the - C# universe, the only real function that this class - performs is to ensure that files have the correct "record" - size, or other tars will complain. -

- You should never have a need to access this class directly. - TarBuffers are created by Tar IO Streams. -

-
-
- - - The size of a block in a tar archive in bytes. - - This is 512 bytes. - - - - The number of blocks in a default record. - - - The default value is 20 blocks per record. - - - - - The size in bytes of a default record. - - - The default size is 10KB. - - - - - Get the record size for this buffer - - The record size in bytes. - This is equal to the multiplied by the - - - - Get the TAR Buffer's record size. - - The record size in bytes. - This is equal to the multiplied by the - - - - Get the Blocking factor for the buffer - - This is the number of blocks in each record. - - - - Get the TAR Buffer's block factor - - The block factor; the number of blocks per record. - - - - Construct a default TarBuffer - - - - - Create TarBuffer for reading with default BlockFactor - - Stream to buffer - A new suitable for input. - - - - Construct TarBuffer for reading inputStream setting BlockFactor - - Stream to buffer - Blocking factor to apply - A new suitable for input. - - - - Construct TarBuffer for writing with default BlockFactor - - output stream for buffer - A new suitable for output. - - - - Construct TarBuffer for writing Tar output to streams. - - Output stream to write to. - Blocking factor to apply - A new suitable for output. - - - - Initialization common to all constructors. - - - - - Determine if an archive block indicates End of Archive. End of - archive is indicated by a block that consists entirely of null bytes. - All remaining blocks for the record should also be null's - However some older tars only do a couple of null blocks (Old GNU tar for one) - and also partial records - - The data block to check. - Returns true if the block is an EOF block; false otherwise. - - - - Determine if an archive block indicates the End of an Archive has been reached. - End of archive is indicated by a block that consists entirely of null bytes. - All remaining blocks for the record should also be null's - However some older tars only do a couple of null blocks (Old GNU tar for one) - and also partial records - - The data block to check. - Returns true if the block is an EOF block; false otherwise. - - - - Skip over a block on the input stream. - - - - - Read a block from the input stream. - - - The block of data read. - - - - - Read a record from data stream. - - - false if End-Of-File, else true. - - - - - Get the current block number, within the current record, zero based. - - Block numbers are zero based values - - - - - Gets or sets a flag indicating ownership of underlying stream. - When the flag is true will close the underlying stream also. - - The default value is true. - - - - Get the current block number, within the current record, zero based. - - - The current zero based block number. - - - The absolute block number = (record number * block factor) + block number. - - - - - Get the current record number. - - - The current zero based record number. - - - - - Get the current record number. - - - The current zero based record number. - - - - - Write a block of data to the archive. - - - The data to write to the archive. - - - - - Write an archive record to the archive, where the record may be - inside of a larger array buffer. The buffer must be "offset plus - record size" long. - - - The buffer containing the record data to write. - - - The offset of the record data within buffer. - - - - - Write a TarBuffer record to the archive. - - - - - WriteFinalRecord writes the current record buffer to output any unwritten data is present. - - Any trailing bytes are set to zero which is by definition correct behaviour - for the end of a tar stream. - - - - Close the TarBuffer. If this is an output buffer, also flush the - current block before closing. - - - - - This class represents an entry in a Tar archive. It consists - of the entry's header, as well as the entry's File. Entries - can be instantiated in one of three ways, depending on how - they are to be used. -

- TarEntries that are created from the header bytes read from - an archive are instantiated with the TarEntry( byte[] ) - constructor. These entries will be used when extracting from - or listing the contents of an archive. These entries have their - header filled in using the header bytes. They also set the File - to null, since they reference an archive entry not a file.

-

- TarEntries that are created from files that are to be written - into an archive are instantiated with the CreateEntryFromFile(string) - pseudo constructor. These entries have their header filled in using - the File's information. They also keep a reference to the File - for convenience when writing entries.

-

- Finally, TarEntries can be constructed from nothing but a name. - This allows the programmer to construct the entry by hand, for - instance when only an InputStream is available for writing to - the archive, and the header information is constructed from - other information. In this case the header fields are set to - defaults and the File is set to null.

- -
-
- - - Initialise a default instance of . - - - - - Construct an entry from an archive's header bytes. File is set - to null. - - - The header bytes from a tar archive entry. - - - - - Construct an entry from an archive's header bytes. File is set - to null. - - - The header bytes from a tar archive entry. - - - The used for the Name fields, or null for ASCII only - - - - - Construct a TarEntry using the header provided - - Header details for entry - - - - Clone this tar entry. - - Returns a clone of this entry. - - - - Construct an entry with only a name. - This allows the programmer to construct the entry's header "by hand". - - The name to use for the entry - Returns the newly created - - - - Construct an entry for a file. File is set to file, and the - header is constructed from information from the file. - - The file name that the entry represents. - Returns the newly created - - - - Determine if the two entries are equal. Equality is determined - by the header names being equal. - - The to compare with the current Object. - - True if the entries are equal; false if not. - - - - - Derive a Hash value for the current - - A Hash code for the current - - - - Determine if the given entry is a descendant of this entry. - Descendancy is determined by the name of the descendant - starting with this entry's name. - - - Entry to be checked as a descendent of this. - - - True if entry is a descendant of this. - - - - - Get this entry's header. - - - This entry's TarHeader. - - - - - Get/Set this entry's name. - - - - - Get/set this entry's user id. - - - - - Get/set this entry's group id. - - - - - Get/set this entry's user name. - - - - - Get/set this entry's group name. - - - - - Convenience method to set this entry's group and user ids. - - - This entry's new user id. - - - This entry's new group id. - - - - - Convenience method to set this entry's group and user names. - - - This entry's new user name. - - - This entry's new group name. - - - - - Get/Set the modification time for this entry - - - - - Get this entry's file. - - - This entry's file. - - - - - Get/set this entry's recorded file size. - - - - - Return true if this entry represents a directory, false otherwise - - - True if this entry is a directory. - - - - - Fill in a TarHeader with information from a File. - - - The TarHeader to fill in. - - - The file from which to get the header information. - - - - - Get entries for all files present in this entries directory. - If this entry doesnt represent a directory zero entries are returned. - - - An array of TarEntry's for this entry's children. - - - - - Write an entry's header information to a header buffer. - - - The tar entry header buffer to fill in. - - - - - Write an entry's header information to a header buffer. - - - The tar entry header buffer to fill in. - - - The used for the Name fields, or null for ASCII only - - - - - Convenience method that will modify an entry's name directly - in place in an entry header buffer byte array. - - - The buffer containing the entry header to modify. - - - The new name to place into the header buffer. - - - - - Convenience method that will modify an entry's name directly - in place in an entry header buffer byte array. - - - The buffer containing the entry header to modify. - - - The new name to place into the header buffer. - - - The used for the Name fields, or null for ASCII only - - - - - Fill in a TarHeader given only the entry's name. - - - The TarHeader to fill in. - - - The tar entry name. - - - - - The name of the file this entry represents or null if the entry is not based on a file. - - - - - The entry's header information. - - - - - TarException represents exceptions specific to Tar classes and code. - - - - - Initialise a new instance of . - - - - - Initialise a new instance of with its message string. - - A that describes the error. - - - - Initialise a new instance of . - - A that describes the error. - The that caused this exception. - - - - Initializes a new instance of the TarException class with serialized data. - - - The System.Runtime.Serialization.SerializationInfo that holds the serialized - object data about the exception being thrown. - - - The System.Runtime.Serialization.StreamingContext that contains contextual information - about the source or destination. - - - - - Reads the extended header of a Tar stream - - - - - Creates a new . - - - - - Read bytes from - - - - - - - Returns the parsed headers as key-value strings - - - - - This class encapsulates the Tar Entry Header used in Tar Archives. - The class also holds a number of tar constants, used mostly in headers. - - - The tar format and its POSIX successor PAX have a long history which makes for compatability - issues when creating and reading files. - - This is further complicated by a large number of programs with variations on formats - One common issue is the handling of names longer than 100 characters. - GNU style long names are currently supported. - - This is the ustar (Posix 1003.1) header. - - struct header - { - char t_name[100]; // 0 Filename - char t_mode[8]; // 100 Permissions - char t_uid[8]; // 108 Numerical User ID - char t_gid[8]; // 116 Numerical Group ID - char t_size[12]; // 124 Filesize - char t_mtime[12]; // 136 st_mtime - char t_chksum[8]; // 148 Checksum - char t_typeflag; // 156 Type of File - char t_linkname[100]; // 157 Target of Links - char t_magic[6]; // 257 "ustar" or other... - char t_version[2]; // 263 Version fixed to 00 - char t_uname[32]; // 265 User Name - char t_gname[32]; // 297 Group Name - char t_devmajor[8]; // 329 Major for devices - char t_devminor[8]; // 337 Minor for devices - char t_prefix[155]; // 345 Prefix for t_name - char t_mfill[12]; // 500 Filler up to 512 - }; - - - - - The length of the name field in a header buffer. - - - - - The length of the mode field in a header buffer. - - - - - The length of the user id field in a header buffer. - - - - - The length of the group id field in a header buffer. - - - - - The length of the checksum field in a header buffer. - - - - - Offset of checksum in a header buffer. - - - - - The length of the size field in a header buffer. - - - - - The length of the magic field in a header buffer. - - - - - The length of the version field in a header buffer. - - - - - The length of the modification time field in a header buffer. - - - - - The length of the user name field in a header buffer. - - - - - The length of the group name field in a header buffer. - - - - - The length of the devices field in a header buffer. - - - - - The length of the name prefix field in a header buffer. - - - - - The "old way" of indicating a normal file. - - - - - Normal file type. - - - - - Link file type. - - - - - Symbolic link file type. - - - - - Character device file type. - - - - - Block device file type. - - - - - Directory file type. - - - - - FIFO (pipe) file type. - - - - - Contiguous file type. - - - - - Posix.1 2001 global extended header - - - - - Posix.1 2001 extended header - - - - - Solaris access control list file type - - - - - GNU dir dump file type - This is a dir entry that contains the names of files that were in the - dir at the time the dump was made - - - - - Solaris Extended Attribute File - - - - - Inode (metadata only) no file content - - - - - Identifies the next file on the tape as having a long link name - - - - - Identifies the next file on the tape as having a long name - - - - - Continuation of a file that began on another volume - - - - - For storing filenames that dont fit in the main header (old GNU) - - - - - GNU Sparse file - - - - - GNU Tape/volume header ignore on extraction - - - - - The magic tag representing a POSIX tar archive. (would be written with a trailing NULL) - - - - - The magic tag representing an old GNU tar archive where version is included in magic and overwrites it - - - - - Initialise a default TarHeader instance - - - - - Get/set the name for this tar entry. - - Thrown when attempting to set the property to null. - - - - Get the name of this entry. - - The entry's name. - - - - Get/set the entry's Unix style permission mode. - - - - - The entry's user id. - - - This is only directly relevant to unix systems. - The default is zero. - - - - - Get/set the entry's group id. - - - This is only directly relevant to linux/unix systems. - The default value is zero. - - - - - Get/set the entry's size. - - Thrown when setting the size to less than zero. - - - - Get/set the entry's modification time. - - - The modification time is only accurate to within a second. - - Thrown when setting the date time to less than 1/1/1970. - - - - Get the entry's checksum. This is only valid/updated after writing or reading an entry. - - - - - Get value of true if the header checksum is valid, false otherwise. - - - - - Get/set the entry's type flag. - - - - - The entry's link name. - - Thrown when attempting to set LinkName to null. - - - - Get/set the entry's magic tag. - - Thrown when attempting to set Magic to null. - - - - The entry's version. - - Thrown when attempting to set Version to null. - - - - The entry's user name. - - - - - Get/set the entry's group name. - - - This is only directly relevant to unix systems. - - - - - Get/set the entry's major device number. - - - - - Get/set the entry's minor device number. - - - - - Create a new that is a copy of the current instance. - - A new that is a copy of the current instance. - - - - Parse TarHeader information from a header buffer. - - - The tar entry header buffer to get information from. - - - The used for the Name field, or null for ASCII only - - - - - Parse TarHeader information from a header buffer. - - - The tar entry header buffer to get information from. - - - - - 'Write' header information to buffer provided, updating the check sum. - - output buffer for header information - - - - 'Write' header information to buffer provided, updating the check sum. - - output buffer for header information - The used for the Name field, or null for ASCII only - - - - Get a hash code for the current object. - - A hash code for the current object. - - - - Determines if this instance is equal to the specified object. - - The object to compare with. - true if the objects are equal, false otherwise. - - - - Set defaults for values used when constructing a TarHeader instance. - - Value to apply as a default for userId. - Value to apply as a default for userName. - Value to apply as a default for groupId. - Value to apply as a default for groupName. - - - - Parse an octal string from a header buffer. - - The header buffer from which to parse. - The offset into the buffer from which to parse. - The number of header bytes to parse. - The long equivalent of the octal string. - - - - Parse a name from a header buffer. - - - The header buffer from which to parse. - - - The offset into the buffer from which to parse. - - - The number of header bytes to parse. - - - The name parsed. - - - - - Parse a name from a header buffer. - - - The header buffer from which to parse. - - - The offset into the buffer from which to parse. - - - The number of header bytes to parse. - - - name encoding, or null for ASCII only - - - The name parsed. - - - - - Add name to the buffer as a collection of bytes - - The name to add - The offset of the first character - The buffer to add to - The index of the first byte to add - The number of characters/bytes to add - The next free index in the - - - - Add name to the buffer as a collection of bytes - - The name to add - The offset of the first character - The buffer to add to - The index of the first byte to add - The number of characters/bytes to add - The next free index in the - - - - Add name to the buffer as a collection of bytes - - The name to add - The offset of the first character - The buffer to add to - The index of the first byte to add - The number of characters/bytes to add - name encoding, or null for ASCII only - The next free index in the - - - - Add an entry name to the buffer - - - The name to add - - - The buffer to add to - - - The offset into the buffer from which to start adding - - - The number of header bytes to add - - - The index of the next free byte in the buffer - - TODO: what should be default behavior?(omit upper byte or UTF8?) - - - - Add an entry name to the buffer - - - The name to add - - - The buffer to add to - - - The offset into the buffer from which to start adding - - - The number of header bytes to add - - - - - The index of the next free byte in the buffer - - - - - Add an entry name to the buffer - - The name to add - The buffer to add to - The offset into the buffer from which to start adding - The number of header bytes to add - The index of the next free byte in the buffer - TODO: what should be default behavior?(omit upper byte or UTF8?) - - - - Add an entry name to the buffer - - The name to add - The buffer to add to - The offset into the buffer from which to start adding - The number of header bytes to add - - The index of the next free byte in the buffer - - - - Add a string to a buffer as a collection of ascii bytes. - - The string to add - The offset of the first character to add. - The buffer to add to. - The offset to start adding at. - The number of ascii characters to add. - The next free index in the buffer. - - - - Add a string to a buffer as a collection of ascii bytes. - - The string to add - The offset of the first character to add. - The buffer to add to. - The offset to start adding at. - The number of ascii characters to add. - String encoding, or null for ASCII only - The next free index in the buffer. - - - - Put an octal representation of a value into a buffer - - - the value to be converted to octal - - - buffer to store the octal string - - - The offset into the buffer where the value starts - - - The length of the octal string to create - - - The offset of the character next byte after the octal string - - - - - Put an octal or binary representation of a value into a buffer - - Value to be convert to octal - The buffer to update - The offset into the buffer to store the value - The length of the octal string. Must be 12. - Index of next byte - - - - Add the checksum integer to header buffer. - - - The header buffer to set the checksum for - The offset into the buffer for the checksum - The number of header bytes to update. - It's formatted differently from the other fields: it has 6 digits, a - null, then a space -- rather than digits, a space, then a null. - The final space is already there, from checksumming - - The modified buffer offset - - - - Compute the checksum for a tar entry header. - The checksum field must be all spaces prior to this happening - - The tar entry's header buffer. - The computed checksum. - - - - Make a checksum for a tar entry ignoring the checksum contents. - - The tar entry's header buffer. - The checksum for the buffer - - - - The TarInputStream reads a UNIX tar archive as an InputStream. - methods are provided to position at each successive entry in - the archive, and the read each entry as a normal input stream - using read(). - - - - - Construct a TarInputStream with default block factor - - stream to source data from - - - - Construct a TarInputStream with default block factor - - stream to source data from - The used for the Name fields, or null for ASCII only - - - - Construct a TarInputStream with user specified block factor - - stream to source data from - block factor to apply to archive - - - - Construct a TarInputStream with user specified block factor - - stream to source data from - block factor to apply to archive - The used for the Name fields, or null for ASCII only - - - - Gets or sets a flag indicating ownership of underlying stream. - When the flag is true will close the underlying stream also. - - The default value is true. - - - - Gets a value indicating whether the current stream supports reading - - - - - Gets a value indicating whether the current stream supports seeking - This property always returns false. - - - - - Gets a value indicating if the stream supports writing. - This property always returns false. - - - - - The length in bytes of the stream - - - - - Gets or sets the position within the stream. - Setting the Position is not supported and throws a NotSupportedExceptionNotSupportedException - - Any attempt to set position - - - - Flushes the baseInputStream - - - - - Set the streams position. This operation is not supported and will throw a NotSupportedException - - The offset relative to the origin to seek to. - The to start seeking from. - The new position in the stream. - Any access - - - - Sets the length of the stream - This operation is not supported and will throw a NotSupportedException - - The new stream length. - Any access - - - - Writes a block of bytes to this stream using data from a buffer. - This operation is not supported and will throw a NotSupportedException - - The buffer containing bytes to write. - The offset in the buffer of the frist byte to write. - The number of bytes to write. - Any access - - - - Writes a byte to the current position in the file stream. - This operation is not supported and will throw a NotSupportedException - - The byte value to write. - Any access - - - - Reads a byte from the current tar archive entry. - - A byte cast to an int; -1 if the at the end of the stream. - - - - Reads bytes from the current tar archive entry. - - This method is aware of the boundaries of the current - entry in the archive and will deal with them appropriately - - - The buffer into which to place bytes read. - - - The offset at which to place bytes read. - - - The number of bytes to read. - - - The number of bytes read, or 0 at end of stream/EOF. - - - - - Closes this stream. Calls the TarBuffer's close() method. - The underlying stream is closed by the TarBuffer. - - - - - Set the entry factory for this instance. - - The factory for creating new entries - - - - Get the record size being used by this stream's TarBuffer. - - - - - Get the record size being used by this stream's TarBuffer. - - - TarBuffer record size. - - - - - Get the available data that can be read from the current - entry in the archive. This does not indicate how much data - is left in the entire archive, only in the current entry. - This value is determined from the entry's size header field - and the amount of data already read from the current entry. - - - The number of available bytes for the current entry. - - - - - Skip bytes in the input buffer. This skips bytes in the - current entry's data, not the entire archive, and will - stop at the end of the current entry's data if the number - to skip extends beyond that point. - - - The number of bytes to skip. - - - - - Return a value of true if marking is supported; false otherwise. - - Currently marking is not supported, the return value is always false. - - - - Since we do not support marking just yet, we do nothing. - - - The limit to mark. - - - - - Since we do not support marking just yet, we do nothing. - - - - - Get the next entry in this tar archive. This will skip - over any remaining data in the current entry, if there - is one, and place the input stream at the header of the - next entry, and read the header and instantiate a new - TarEntry from the header bytes and return that entry. - If there are no more entries in the archive, null will - be returned to indicate that the end of the archive has - been reached. - - - The next TarEntry in the archive, or null. - - - - - Copies the contents of the current tar archive entry directly into - an output stream. - - - The OutputStream into which to write the entry's data. - - - - - This interface is provided, along with the method , to allow - the programmer to have their own subclass instantiated for the - entries return from . - - - - - Create an entry based on name alone - - - Name of the new EntryPointNotFoundException to create - - created TarEntry or descendant class - - - - Create an instance based on an actual file - - - Name of file to represent in the entry - - - Created TarEntry or descendant class - - - - - Create a tar entry based on the header information passed - - - Buffer containing header information to create an entry from. - - - Created TarEntry or descendant class - - - - - Standard entry factory class creating instances of the class TarEntry - - - - - Construct standard entry factory class with ASCII name encoding - - - - - Construct standard entry factory with name encoding - - The used for the Name fields, or null for ASCII only - - - - Create a based on named - - The name to use for the entry - A new - - - - Create a tar entry with details obtained from file - - The name of the file to retrieve details from. - A new - - - - Create an entry based on details in header - - The buffer containing entry details. - A new - - - - Flag set when last block has been read - - - - - Size of this entry as recorded in header - - - - - Number of bytes read for this entry so far - - - - - Buffer used with calls to Read() - - - - - Working buffer - - - - - Current entry being read - - - - - Factory used to create TarEntry or descendant class instance - - - - - Stream used as the source of input data. - - - - - The TarOutputStream writes a UNIX tar archive as an OutputStream. - Methods are provided to put entries, and then write their contents - by writing to this stream using write(). - - public - - - - Construct TarOutputStream using default block factor - - stream to write to - - - - Construct TarOutputStream using default block factor - - stream to write to - The used for the Name fields, or null for ASCII only - - - - Construct TarOutputStream with user specified block factor - - stream to write to - blocking factor - - - - Construct TarOutputStream with user specified block factor - - stream to write to - blocking factor - The used for the Name fields, or null for ASCII only - - - - Gets or sets a flag indicating ownership of underlying stream. - When the flag is true will close the underlying stream also. - - The default value is true. - - - - true if the stream supports reading; otherwise, false. - - - - - true if the stream supports seeking; otherwise, false. - - - - - true if stream supports writing; otherwise, false. - - - - - length of stream in bytes - - - - - gets or sets the position within the current stream. - - - - - set the position within the current stream - - The offset relative to the to seek to - The to seek from. - The new position in the stream. - - - - Set the length of the current stream - - The new stream length. - - - - Read a byte from the stream and advance the position within the stream - by one byte or returns -1 if at the end of the stream. - - The byte value or -1 if at end of stream - - - - read bytes from the current stream and advance the position within the - stream by the number of bytes read. - - The buffer to store read bytes in. - The index into the buffer to being storing bytes at. - The desired number of bytes to read. - The total number of bytes read, or zero if at the end of the stream. - The number of bytes may be less than the count - requested if data is not available. - - - - All buffered data is written to destination - - - - - Ends the TAR archive without closing the underlying OutputStream. - The result is that the EOF block of nulls is written. - - - - - Ends the TAR archive and closes the underlying OutputStream. - - This means that Finish() is called followed by calling the - TarBuffer's Close(). - - - - Get the record size being used by this stream's TarBuffer. - - - - - Get the record size being used by this stream's TarBuffer. - - - The TarBuffer record size. - - - - - Get a value indicating whether an entry is open, requiring more data to be written. - - - - - Put an entry on the output stream. This writes the entry's - header and positions the output stream for writing - the contents of the entry. Once this method is called, the - stream is ready for calls to write() to write the entry's - contents. Once the contents are written, closeEntry() - MUST be called to ensure that all buffered data - is completely written to the output stream. - - - The TarEntry to be written to the archive. - - - - - Close an entry. This method MUST be called for all file - entries that contain data. The reason is that we must - buffer data written to the stream in order to satisfy - the buffer's block based writes. Thus, there may be - data fragments still being assembled that must be written - to the output stream before this entry is closed and the - next entry written. - - - - - Writes a byte to the current tar archive entry. - This method simply calls Write(byte[], int, int). - - - The byte to be written. - - - - - Writes bytes to the current tar archive entry. This method - is aware of the current entry and will throw an exception if - you attempt to write bytes past the length specified for the - current entry. The method is also (painfully) aware of the - record buffering required by TarBuffer, and manages buffers - that are not a multiple of recordsize in length, including - assembling records from small buffers. - - - The buffer to write to the archive. - - - The offset in the buffer from which to get bytes. - - - The number of bytes to write. - - - - - Write an EOF (end of archive) block to the tar archive. - The end of the archive is indicated by two blocks consisting entirely of zero bytes. - - - - - bytes written for this entry so far - - - - - current 'Assembly' buffer length - - - - - Flag indicating whether this instance has been closed or not. - - - - - Size for the current entry - - - - - single block working buffer - - - - - 'Assembly' buffer used to assemble data before writing - - - - - TarBuffer used to provide correct blocking factor - - - - - the destination stream for the archive contents - - - - - name encoding - - - - - This is the Deflater class. The deflater class compresses input - with the deflate algorithm described in RFC 1951. It has several - compression levels and three different strategies described below. - - This class is not thread safe. This is inherent in the API, due - to the split of deflate and setInput. - - author of the original java version : Jochen Hoenicke - - - - - The best and slowest compression level. This tries to find very - long and distant string repetitions. - - - - - The worst but fastest compression level. - - - - - The default compression level. - - - - - This level won't compress at all but output uncompressed blocks. - - - - - The compression method. This is the only method supported so far. - There is no need to use this constant at all. - - - - - Compression Level as an enum for safer use - - - - - The best and slowest compression level. This tries to find very - long and distant string repetitions. - - - - - The worst but fastest compression level. - - - - - The default compression level. - - - - - This level won't compress at all but output uncompressed blocks. - - - - - The compression method. This is the only method supported so far. - There is no need to use this constant at all. - - - - - Creates a new deflater with default compression level. - - - - - Creates a new deflater with given compression level. - - - the compression level, a value between NO_COMPRESSION - and BEST_COMPRESSION, or DEFAULT_COMPRESSION. - - if lvl is out of range. - - - - Creates a new deflater with given compression level. - - - the compression level, a value between NO_COMPRESSION - and BEST_COMPRESSION. - - - true, if we should suppress the Zlib/RFC1950 header at the - beginning and the adler checksum at the end of the output. This is - useful for the GZIP/PKZIP formats. - - if lvl is out of range. - - - - Resets the deflater. The deflater acts afterwards as if it was - just created with the same compression level and strategy as it - had before. - - - - - Gets the current adler checksum of the data that was processed so far. - - - - - Gets the number of input bytes processed so far. - - - - - Gets the number of output bytes so far. - - - - - Flushes the current input block. Further calls to deflate() will - produce enough output to inflate everything in the current input - block. This is not part of Sun's JDK so I have made it package - private. It is used by DeflaterOutputStream to implement - flush(). - - - - - Finishes the deflater with the current input block. It is an error - to give more input after this method was called. This method must - be called to force all bytes to be flushed. - - - - - Returns true if the stream was finished and no more output bytes - are available. - - - - - Returns true, if the input buffer is empty. - You should then call setInput(). - NOTE: This method can also return true when the stream - was finished. - - - - - Sets the data which should be compressed next. This should be only - called when needsInput indicates that more input is needed. - If you call setInput when needsInput() returns false, the - previous input that is still pending will be thrown away. - The given byte array should not be changed, before needsInput() returns - true again. - This call is equivalent to setInput(input, 0, input.length). - - - the buffer containing the input data. - - - if the buffer was finished() or ended(). - - - - - Sets the data which should be compressed next. This should be - only called when needsInput indicates that more input is needed. - The given byte array should not be changed, before needsInput() returns - true again. - - - the buffer containing the input data. - - - the start of the data. - - - the number of data bytes of input. - - - if the buffer was Finish()ed or if previous input is still pending. - - - - - Sets the compression level. There is no guarantee of the exact - position of the change, but if you call this when needsInput is - true the change of compression level will occur somewhere near - before the end of the so far given input. - - - the new compression level. - - - - - Get current compression level - - Returns the current compression level - - - - Sets the compression strategy. Strategy is one of - DEFAULT_STRATEGY, HUFFMAN_ONLY and FILTERED. For the exact - position where the strategy is changed, the same as for - SetLevel() applies. - - - The new compression strategy. - - - - - Deflates the current input block with to the given array. - - - The buffer where compressed data is stored - - - The number of compressed bytes added to the output, or 0 if either - IsNeedingInput() or IsFinished returns true or length is zero. - - - - - Deflates the current input block to the given array. - - - Buffer to store the compressed data. - - - Offset into the output array. - - - The maximum number of bytes that may be stored. - - - The number of compressed bytes added to the output, or 0 if either - needsInput() or finished() returns true or length is zero. - - - If Finish() was previously called. - - - If offset or length don't match the array length. - - - - - Sets the dictionary which should be used in the deflate process. - This call is equivalent to setDictionary(dict, 0, dict.Length). - - - the dictionary. - - - if SetInput () or Deflate () were already called or another dictionary was already set. - - - - - Sets the dictionary which should be used in the deflate process. - The dictionary is a byte array containing strings that are - likely to occur in the data which should be compressed. The - dictionary is not stored in the compressed output, only a - checksum. To decompress the output you need to supply the same - dictionary again. - - - The dictionary data - - - The index where dictionary information commences. - - - The number of bytes in the dictionary. - - - If SetInput () or Deflate() were already called or another dictionary was already set. - - - - - Compression level. - - - - - If true no Zlib/RFC1950 headers or footers are generated - - - - - The current state. - - - - - The total bytes of output written. - - - - - The pending output. - - - - - The deflater engine. - - - - - This class contains constants used for deflation. - - - - - Set to true to enable debugging - - - - - Written to Zip file to identify a stored block - - - - - Identifies static tree in Zip file - - - - - Identifies dynamic tree in Zip file - - - - - Header flag indicating a preset dictionary for deflation - - - - - Sets internal buffer sizes for Huffman encoding - - - - - Internal compression engine constant - - - - - Internal compression engine constant - - - - - Internal compression engine constant - - - - - Internal compression engine constant - - - - - Internal compression engine constant - - - - - Internal compression engine constant - - - - - Internal compression engine constant - - - - - Internal compression engine constant - - - - - Internal compression engine constant - - - - - Internal compression engine constant - - - - - Internal compression engine constant - - - - - Internal compression engine constant - - - - - Internal compression engine constant - - - - - Internal compression engine constant - - - - - Internal compression engine constant - - - - - Internal compression engine constant - - - - - Internal compression engine constant - - - - - Internal compression engine constant - - - - - Internal compression engine constant - - - - - Internal compression engine constant - - - - - Internal compression engine constant - - - - - Strategies for deflater - - - - - The default strategy - - - - - This strategy will only allow longer string repetitions. It is - useful for random data with a small character set. - - - - - This strategy will not look for string repetitions at all. It - only encodes with Huffman trees (which means, that more common - characters get a smaller encoding. - - - - - Low level compression engine for deflate algorithm which uses a 32K sliding window - with secondary compression from Huffman/Shannon-Fano codes. - - - - - Construct instance with pending buffer - Adler calculation will be performed - - - Pending buffer to use - - - - - Construct instance with pending buffer - - - Pending buffer to use - - - If no adler calculation should be performed - - - - - Deflate drives actual compression of data - - True to flush input buffers - Finish deflation with the current input. - Returns true if progress has been made. - - - - Sets input data to be deflated. Should only be called when NeedsInput() - returns true - - The buffer containing input data. - The offset of the first byte of data. - The number of bytes of data to use as input. - - - - Determines if more input is needed. - - Return true if input is needed via SetInput - - - - Set compression dictionary - - The buffer containing the dictionary data - The offset in the buffer for the first byte of data - The length of the dictionary data. - - - - Reset internal state - - - - - Reset Adler checksum - - - - - Get current value of Adler checksum - - - - - Total data processed - - - - - Get/set the deflate strategy - - - - - Set the deflate level (0-9) - - The value to set the level to. - - - - Fill the window - - - - - Inserts the current string in the head hash and returns the previous - value for this hash. - - The previous hash value - - - - Find the best (longest) string in the window matching the - string starting at strstart. - - Preconditions: - - strstart + DeflaterConstants.MAX_MATCH <= window.length. - - - True if a match greater than the minimum length is found - - - - Hashtable, hashing three characters to an index for window, so - that window[index]..window[index+2] have this hash code. - Note that the array should really be unsigned short, so you need - to and the values with 0xffff. - - - - - prev[index & WMASK] points to the previous index that has the - same hash code as the string starting at index. This way - entries with the same hash code are in a linked list. - Note that the array should really be unsigned short, so you need - to and the values with 0xffff. - - - - - Points to the current character in the window. - - - - - lookahead is the number of characters starting at strstart in - window that are valid. - So window[strstart] until window[strstart+lookahead-1] are valid - characters. - - - - - This array contains the part of the uncompressed stream that - is of relevance. The current character is indexed by strstart. - - - - - The current compression function. - - - - - The input data for compression. - - - - - The total bytes of input read. - - - - - The offset into inputBuf, where input data starts. - - - - - The end offset of the input data. - - - - - The adler checksum - - - - - This is the DeflaterHuffman class. - - This class is not thread safe. This is inherent in the API, due - to the split of Deflate and SetInput. - - author of the original java version : Jochen Hoenicke - - - - - Resets the internal state of the tree - - - - - Check that all frequencies are zero - - - At least one frequency is non-zero - - - - - Set static codes and length - - new codes - length for new codes - - - - Build dynamic codes and lengths - - - - - Get encoded length - - Encoded length, the sum of frequencies * lengths - - - - Scan a literal or distance tree to determine the frequencies of the codes - in the bit length tree. - - - - - Write tree values - - Tree to write - - - - Pending buffer to use - - - - - Construct instance with pending buffer - - Pending buffer to use - - - - Reset internal state - - - - - Write all trees to pending buffer - - The number/rank of treecodes to send. - - - - Compress current buffer writing data to pending buffer - - - - - Flush block to output with no compression - - Data to write - Index of first byte to write - Count of bytes to write - True if this is the last block - - - - Flush block to output with compression - - Data to flush - Index of first byte to flush - Count of bytes to flush - True if this is the last block - - - - Get value indicating if internal buffer is full - - true if buffer is full - - - - Add literal to buffer - - Literal value to add to buffer. - Value indicating internal buffer is full - - - - Add distance code and length to literal and distance trees - - Distance code - Length - Value indicating if internal buffer is full - - - - Reverse the bits of a 16 bit value. - - Value to reverse bits - Value with bits reversed - - - - This class stores the pending output of the Deflater. - - author of the original java version : Jochen Hoenicke - - - - - Construct instance with default buffer size - - - - - Inflater is used to decompress data that has been compressed according - to the "deflate" standard described in rfc1951. - - By default Zlib (rfc1950) headers and footers are expected in the input. - You can use constructor public Inflater(bool noHeader) passing true - if there is no Zlib header information - - The usage is as following. First you have to set some input with - SetInput(), then Inflate() it. If inflate doesn't - inflate any bytes there may be three reasons: -
    -
  • IsNeedingInput() returns true because the input buffer is empty. - You have to provide more input with SetInput(). - NOTE: IsNeedingInput() also returns true when, the stream is finished. -
  • -
  • IsNeedingDictionary() returns true, you have to provide a preset - dictionary with SetDictionary().
  • -
  • IsFinished returns true, the inflater has finished.
  • -
- Once the first output byte is produced, a dictionary will not be - needed at a later stage. - - author of the original java version : John Leuner, Jochen Hoenicke -
-
- - - Copy lengths for literal codes 257..285 - - - - - Extra bits for literal codes 257..285 - - - - - Copy offsets for distance codes 0..29 - - - - - Extra bits for distance codes - - - - - These are the possible states for an inflater - - - - - This variable contains the current state. - - - - - The adler checksum of the dictionary or of the decompressed - stream, as it is written in the header resp. footer of the - compressed stream. - Only valid if mode is DECODE_DICT or DECODE_CHKSUM. - - - - - The number of bits needed to complete the current state. This - is valid, if mode is DECODE_DICT, DECODE_CHKSUM, - DECODE_HUFFMAN_LENBITS or DECODE_HUFFMAN_DISTBITS. - - - - - True, if the last block flag was set in the last block of the - inflated stream. This means that the stream ends after the - current block. - - - - - The total number of inflated bytes. - - - - - The total number of bytes set with setInput(). This is not the - value returned by the TotalIn property, since this also includes the - unprocessed input. - - - - - This variable stores the noHeader flag that was given to the constructor. - True means, that the inflated stream doesn't contain a Zlib header or - footer. - - - - - Creates a new inflater or RFC1951 decompressor - RFC1950/Zlib headers and footers will be expected in the input data - - - - - Creates a new inflater. - - - True if no RFC1950/Zlib header and footer fields are expected in the input data - - This is used for GZIPed/Zipped input. - - For compatibility with - Sun JDK you should provide one byte of input more than needed in - this case. - - - - - Resets the inflater so that a new stream can be decompressed. All - pending input and output will be discarded. - - - - - Decodes a zlib/RFC1950 header. - - - False if more input is needed. - - - The header is invalid. - - - - - Decodes the dictionary checksum after the deflate header. - - - False if more input is needed. - - - - - Decodes the huffman encoded symbols in the input stream. - - - false if more input is needed, true if output window is - full or the current block ends. - - - if deflated stream is invalid. - - - - - Decodes the adler checksum after the deflate stream. - - - false if more input is needed. - - - If checksum doesn't match. - - - - - Decodes the deflated stream. - - - false if more input is needed, or if finished. - - - if deflated stream is invalid. - - - - - Sets the preset dictionary. This should only be called, if - needsDictionary() returns true and it should set the same - dictionary, that was used for deflating. The getAdler() - function returns the checksum of the dictionary needed. - - - The dictionary. - - - - - Sets the preset dictionary. This should only be called, if - needsDictionary() returns true and it should set the same - dictionary, that was used for deflating. The getAdler() - function returns the checksum of the dictionary needed. - - - The dictionary. - - - The index into buffer where the dictionary starts. - - - The number of bytes in the dictionary. - - - No dictionary is needed. - - - The adler checksum for the buffer is invalid - - - - - Sets the input. This should only be called, if needsInput() - returns true. - - - the input. - - - - - Sets the input. This should only be called, if needsInput() - returns true. - - - The source of input data - - - The index into buffer where the input starts. - - - The number of bytes of input to use. - - - No input is needed. - - - The index and/or count are wrong. - - - - - Inflates the compressed stream to the output buffer. If this - returns 0, you should check, whether IsNeedingDictionary(), - IsNeedingInput() or IsFinished() returns true, to determine why no - further output is produced. - - - the output buffer. - - - The number of bytes written to the buffer, 0 if no further - output can be produced. - - - if buffer has length 0. - - - if deflated stream is invalid. - - - - - Inflates the compressed stream to the output buffer. If this - returns 0, you should check, whether needsDictionary(), - needsInput() or finished() returns true, to determine why no - further output is produced. - - - the output buffer. - - - the offset in buffer where storing starts. - - - the maximum number of bytes to output. - - - the number of bytes written to the buffer, 0 if no further output can be produced. - - - if count is less than 0. - - - if the index and / or count are wrong. - - - if deflated stream is invalid. - - - - - Returns true, if the input buffer is empty. - You should then call setInput(). - NOTE: This method also returns true when the stream is finished. - - - - - Returns true, if a preset dictionary is needed to inflate the input. - - - - - Returns true, if the inflater has finished. This means, that no - input is needed and no output can be produced. - - - - - Gets the adler checksum. This is either the checksum of all - uncompressed bytes returned by inflate(), or if needsDictionary() - returns true (and thus no output was yet produced) this is the - adler checksum of the expected dictionary. - - - the adler checksum. - - - - - Gets the total number of output bytes returned by Inflate(). - - - the total number of output bytes. - - - - - Gets the total number of processed compressed input bytes. - - - The total number of bytes of processed input bytes. - - - - - Gets the number of unprocessed input bytes. Useful, if the end of the - stream is reached and you want to further process the bytes after - the deflate stream. - - - The number of bytes of the input which have not been processed. - - - - - Continue decoding header from until more bits are needed or decoding has been completed - - Returns whether decoding could be completed - - - - Get literal/length huffman tree, must not be used before has returned true - - If hader has not been successfully read by the state machine - - - - Get distance huffman tree, must not be used before has returned true - - If hader has not been successfully read by the state machine - - - - Huffman tree used for inflation - - - - - Literal length tree - - - - - Distance tree - - - - - Constructs a Huffman tree from the array of code lengths. - - - the array of code lengths - - - - - Reads the next symbol from input. The symbol is encoded using the - huffman tree. - - - input the input source. - - - the next symbol, or -1 if not enough input is available. - - - - - This class is general purpose class for writing data to a buffer. - - It allows you to write bits as well as bytes - Based on DeflaterPending.java - - author of the original java version : Jochen Hoenicke - - - - - Internal work buffer - - - - - construct instance using default buffer size of 4096 - - - - - construct instance using specified buffer size - - - size to use for internal buffer - - - - - Clear internal state/buffers - - - - - Write a byte to buffer - - - The value to write - - - - - Write a short value to buffer LSB first - - - The value to write. - - - - - write an integer LSB first - - The value to write. - - - - Write a block of data to buffer - - data to write - offset of first byte to write - number of bytes to write - - - - The number of bits written to the buffer - - - - - Align internal buffer on a byte boundary - - - - - Write bits to internal buffer - - source of bits - number of bits to write - - - - Write a short value to internal buffer most significant byte first - - value to write - - - - Indicates if buffer has been flushed - - - - - Flushes the pending buffer into the given output array. If the - output array is to small, only a partial flush is done. - - The output array. - The offset into output array. - The maximum number of bytes to store. - The number of bytes flushed. - - - - Convert internal buffer to byte array. - Buffer is empty on completion - - - The internal buffer contents converted to a byte array. - - - - - A special stream deflating or compressing the bytes that are - written to it. It uses a Deflater to perform actual deflating.
- Authors of the original java version : Tom Tromey, Jochen Hoenicke -
-
- - - Creates a new DeflaterOutputStream with a default Deflater and default buffer size. - - - the output stream where deflated output should be written. - - - - - Creates a new DeflaterOutputStream with the given Deflater and - default buffer size. - - - the output stream where deflated output should be written. - - - the underlying deflater. - - - - - Creates a new DeflaterOutputStream with the given Deflater and - buffer size. - - - The output stream where deflated output is written. - - - The underlying deflater to use - - - The buffer size in bytes to use when deflating (minimum value 512) - - - bufsize is less than or equal to zero. - - - baseOutputStream does not support writing - - - deflater instance is null - - - - - Finishes the stream by calling finish() on the deflater. - - - Not all input is deflated - - - - - Gets or sets a flag indicating ownership of underlying stream. - When the flag is true will close the underlying stream also. - - The default value is true. - - - - Allows client to determine if an entry can be patched after its added - - - - - The CryptoTransform currently being used to encrypt the compressed data. - - - - - Returns the 10 byte AUTH CODE to be appended immediately following the AES data stream. - - - - - Encrypt a block of data - - - Data to encrypt. NOTE the original contents of the buffer are lost - - - Offset of first byte in buffer to encrypt - - - Number of bytes in buffer to encrypt - - - - - Deflates everything in the input buffers. This will call - def.deflate() until all bytes from the input buffers - are processed. - - - - - Gets value indicating stream can be read from - - - - - Gets a value indicating if seeking is supported for this stream - This property always returns false - - - - - Get value indicating if this stream supports writing - - - - - Get current length of stream - - - - - Gets the current position within the stream. - - Any attempt to set position - - - - Sets the current position of this stream to the given value. Not supported by this class! - - The offset relative to the to seek. - The to seek from. - The new position in the stream. - Any access - - - - Sets the length of this stream to the given value. Not supported by this class! - - The new stream length. - Any access - - - - Read a byte from stream advancing position by one - - The byte read cast to an int. THe value is -1 if at the end of the stream. - Any access - - - - Read a block of bytes from stream - - The buffer to store read data in. - The offset to start storing at. - The maximum number of bytes to read. - The actual number of bytes read. Zero if end of stream is detected. - Any access - - - - Flushes the stream by calling Flush on the deflater and then - on the underlying stream. This ensures that all bytes are flushed. - - - - - Calls and closes the underlying - stream when is true. - - - - - Get the Auth code for AES encrypted entries - - - - - Writes a single byte to the compressed output stream. - - - The byte value. - - - - - Writes bytes from an array to the compressed stream. - - - The byte array - - - The offset into the byte array where to start. - - - The number of bytes to write. - - - - - This buffer is used temporarily to retrieve the bytes from the - deflater and write them to the underlying output stream. - - - - - The deflater which is used to deflate the stream. - - - - - Base stream the deflater depends on. - - - - - An input buffer customised for use by - - - The buffer supports decryption of incoming data. - - - - - Initialise a new instance of with a default buffer size - - The stream to buffer. - - - - Initialise a new instance of - - The stream to buffer. - The size to use for the buffer - A minimum buffer size of 1KB is permitted. Lower sizes are treated as 1KB. - - - - Get the length of bytes in the - - - - - Get the contents of the raw data buffer. - - This may contain encrypted data. - - - - Get the number of useable bytes in - - - - - Get the contents of the clear text buffer. - - - - - Get/set the number of bytes available - - - - - Call passing the current clear text buffer contents. - - The inflater to set input for. - - - - Fill the buffer from the underlying input stream. - - - - - Read a buffer directly from the input stream - - The buffer to fill - Returns the number of bytes read. - - - - Read a buffer directly from the input stream - - The buffer to read into - The offset to start reading data into. - The number of bytes to read. - Returns the number of bytes read. - - - - Read clear text data from the input stream. - - The buffer to add data to. - The offset to start adding data at. - The number of bytes to read. - Returns the number of bytes actually read. - - - - Read a from the input stream. - - Returns the byte read. - - - - Read an in little endian byte order. - - The short value read case to an int. - - - - Read an in little endian byte order. - - The int value read. - - - - Read a in little endian byte order. - - The long value read. - - - - Get/set the to apply to any data. - - Set this value to null to have no transform applied. - - - - This filter stream is used to decompress data compressed using the "deflate" - format. The "deflate" format is described in RFC 1951. - - This stream may form the basis for other decompression filters, such - as the GZipInputStream. - - Author of the original java version : John Leuner. - - - - - Create an InflaterInputStream with the default decompressor - and a default buffer size of 4KB. - - - The InputStream to read bytes from - - - - - Create an InflaterInputStream with the specified decompressor - and a default buffer size of 4KB. - - - The source of input data - - - The decompressor used to decompress data read from baseInputStream - - - - - Create an InflaterInputStream with the specified decompressor - and the specified buffer size. - - - The InputStream to read bytes from - - - The decompressor to use - - - Size of the buffer to use - - - - - Gets or sets a flag indicating ownership of underlying stream. - When the flag is true will close the underlying stream also. - - The default value is true. - - - - Skip specified number of bytes of uncompressed data - - - Number of bytes to skip - - - The number of bytes skipped, zero if the end of - stream has been reached - - - The number of bytes to skip is less than or equal to zero. - - - - - Clear any cryptographic state. - - - - - Returns 0 once the end of the stream (EOF) has been reached. - Otherwise returns 1. - - - - - Fills the buffer with more data to decompress. - - - Stream ends early - - - - - Gets a value indicating whether the current stream supports reading - - - - - Gets a value of false indicating seeking is not supported for this stream. - - - - - Gets a value of false indicating that this stream is not writeable. - - - - - A value representing the length of the stream in bytes. - - - - - The current position within the stream. - Throws a NotSupportedException when attempting to set the position - - Attempting to set the position - - - - Flushes the baseInputStream - - - - - Sets the position within the current stream - Always throws a NotSupportedException - - The relative offset to seek to. - The defining where to seek from. - The new position in the stream. - Any access - - - - Set the length of the current stream - Always throws a NotSupportedException - - The new length value for the stream. - Any access - - - - Writes a sequence of bytes to stream and advances the current position - This method always throws a NotSupportedException - - The buffer containing data to write. - The offset of the first byte to write. - The number of bytes to write. - Any access - - - - Writes one byte to the current stream and advances the current position - Always throws a NotSupportedException - - The byte to write. - Any access - - - - Closes the input stream. When - is true the underlying stream is also closed. - - - - - Reads decompressed data into the provided buffer byte array - - - The array to read and decompress data into - - - The offset indicating where the data should be placed - - - The number of bytes to decompress - - The number of bytes read. Zero signals the end of stream - - Inflater needs a dictionary - - - - - Decompressor for this stream - - - - - Input buffer for this stream. - - - - - Base stream the inflater reads from. - - - - - The compressed size - - - - - Flag indicating whether this instance has been closed or not. - - - - - Contains the output from the Inflation process. - We need to have a window so that we can refer backwards into the output stream - to repeat stuff.
- Author of the original java version : John Leuner -
-
- - - Write a byte to this output window - - value to write - - if window is full - - - - - Append a byte pattern already in the window itself - - length of pattern to copy - distance from end of window pattern occurs - - If the repeated data overflows the window - - - - - Copy from input manipulator to internal window - - source of data - length of data to copy - the number of bytes copied - - - - Copy dictionary to window - - source dictionary - offset of start in source dictionary - length of dictionary - - If window isnt empty - - - - - Get remaining unfilled space in window - - Number of bytes left in window - - - - Get bytes available for output in window - - Number of bytes filled - - - - Copy contents of window to output - - buffer to copy to - offset to start at - number of bytes to count - The number of bytes copied - - If a window underflow occurs - - - - - Reset by clearing window so GetAvailable returns 0 - - - - - This class allows us to retrieve a specified number of bits from - the input buffer, as well as copy big byte blocks. - - It uses an int buffer to store up to 31 bits for direct - manipulation. This guarantees that we can get at least 16 bits, - but we only need at most 15, so this is all safe. - - There are some optimizations in this class, for example, you must - never peek more than 8 bits more than needed, and you must first - peek bits before you may drop them. This is not a general purpose - class but optimized for the behaviour of the Inflater. - - authors of the original java version : John Leuner, Jochen Hoenicke - - - - - Get the next sequence of bits but don't increase input pointer. bitCount must be - less or equal 16 and if this call succeeds, you must drop - at least n - 8 bits in the next call. - - The number of bits to peek. - - the value of the bits, or -1 if not enough bits available. */ - - - - - Tries to grab the next bits from the input and - sets to the value, adding . - - true if enough bits could be read, otherwise false - - - - Tries to grab the next bits from the input and - sets of to the value. - - true if enough bits could be read, otherwise false - - - - Drops the next n bits from the input. You should have called PeekBits - with a bigger or equal n before, to make sure that enough bits are in - the bit buffer. - - The number of bits to drop. - - - - Gets the next n bits and increases input pointer. This is equivalent - to followed by , except for correct error handling. - - The number of bits to retrieve. - - the value of the bits, or -1 if not enough bits available. - - - - - Gets the number of bits available in the bit buffer. This must be - only called when a previous PeekBits() returned -1. - - - the number of bits available. - - - - - Gets the number of bytes available. - - - The number of bytes available. - - - - - Skips to the next byte boundary. - - - - - Returns true when SetInput can be called - - - - - Copies bytes from input buffer to output buffer starting - at output[offset]. You have to make sure, that the buffer is - byte aligned. If not enough bytes are available, copies fewer - bytes. - - - The buffer to copy bytes to. - - - The offset in the buffer at which copying starts - - - The length to copy, 0 is allowed. - - - The number of bytes copied, 0 if no bytes were available. - - - Length is less than zero - - - Bit buffer isnt byte aligned - - - - - Resets state and empties internal buffers - - - - - Add more input for consumption. - Only call when IsNeedingInput returns true - - data to be input - offset of first byte of input - number of bytes of input to add. - - - - FastZipEvents supports all events applicable to FastZip operations. - - - - - Delegate to invoke when processing directories. - - - - - Delegate to invoke when processing files. - - - - - Delegate to invoke during processing of files. - - - - - Delegate to invoke when processing for a file has been completed. - - - - - Delegate to invoke when processing directory failures. - - - - - Delegate to invoke when processing file failures. - - - - - Raise the directory failure event. - - The directory causing the failure. - The exception for this event. - A boolean indicating if execution should continue or not. - - - - Fires the file failure handler delegate. - - The file causing the failure. - The exception for this failure. - A boolean indicating if execution should continue or not. - - - - Fires the ProcessFile delegate. - - The file being processed. - A boolean indicating if execution should continue or not. - - - - Fires the delegate - - The file whose processing has been completed. - A boolean indicating if execution should continue or not. - - - - Fires the process directory delegate. - - The directory being processed. - Flag indicating if the directory has matching files as determined by the current filter. - A of true if the operation should continue; false otherwise. - - - - The minimum timespan between events. - - The minimum period of time between events. - - The default interval is three seconds. - - - - FastZip provides facilities for creating and extracting zip files. - - - - - Defines the desired handling when overwriting files during extraction. - - - - - Prompt the user to confirm overwriting - - - - - Never overwrite files. - - - - - Always overwrite files. - - - - - Initialise a default instance of . - - - - - Initialise a new instance of using the specified - - The time setting to use when creating or extracting Zip entries. - Using TimeSetting.LastAccessTime[Utc] when - creating an archive will set the file time to the moment of reading. - - - - - Initialise a new instance of using the specified - - The time to set all values for created or extracted Zip Entries. - - - - Initialise a new instance of - - The events to use during operations. - - - - Get/set a value indicating whether empty directories should be created. - - - - - Get / set the password value. - - - - - Get / set the method of encrypting entries. - - - Only applies when is set. - Defaults to ZipCrypto for backwards compatibility purposes. - - - - - Get or set the active when creating Zip files. - - - - - - Get or set the active when creating Zip files. - - - - - Gets or sets the setting for Zip64 handling when writing. - - - The default value is dynamic which is not backwards compatible with old - programs and can cause problems with XP's built in compression which cant - read Zip64 archives. However it does avoid the situation were a large file - is added and cannot be completed correctly. - NOTE: Setting the size for entries before they are added is the best solution! - By default the EntryFactory used by FastZip will set the file size. - - - - - Get/set a value indicating whether file dates and times should - be restored when extracting files from an archive. - - The default value is false. - - - - Get/set a value indicating whether file attributes should - be restored during extract operations - - - - - Get/set the Compression Level that will be used - when creating the zip - - - - - Delegate called when confirming overwriting of files. - - - - - Create a zip file. - - The name of the zip file to create. - The directory to source files from. - True to recurse directories, false for no recursion. - The file filter to apply. - The directory filter to apply. - - - - Create a zip file/archive. - - The name of the zip file to create. - The directory to obtain files and directories from. - True to recurse directories, false for no recursion. - The file filter to apply. - - - - Create a zip archive sending output to the passed. - - The stream to write archive data to. - The directory to source files from. - True to recurse directories, false for no recursion. - The file filter to apply. - The directory filter to apply. - The is closed after creation. - - - - Create a zip archive sending output to the passed. - - The stream to write archive data to. - The directory to source files from. - True to recurse directories, false for no recursion. - The file filter to apply. - The directory filter to apply. - true to leave open after the zip has been created, false to dispose it. - - - - Create a zip file. - - The name of the zip file to create. - The directory to source files from. - True to recurse directories, false for no recursion. - The file filter to apply. - The directory filter to apply. - - - - Create a zip archive sending output to the passed. - - The stream to write archive data to. - The directory to source files from. - True to recurse directories, false for no recursion. - The file filter to apply. - The directory filter to apply. - true to leave open after the zip has been created, false to dispose it. - - - - Create a zip archive sending output to the passed. - - The stream to write archive data to. - The directory to source files from. - True to recurse directories, false for no recursion. - For performing the actual file system scan - true to leave open after the zip has been created, false to dispose it. - The is closed after creation. - - - - Extract the contents of a zip file. - - The zip file to extract from. - The directory to save extracted information in. - A filter to apply to files. - - - - Extract the contents of a zip file. - - The zip file to extract from. - The directory to save extracted information in. - The style of overwriting to apply. - A delegate to invoke when confirming overwriting. - A filter to apply to files. - A filter to apply to directories. - Flag indicating whether to restore the date and time for extracted files. - Allow parent directory traversal in file paths (e.g. ../file) - - - - Extract the contents of a zip file held in a stream. - - The seekable input stream containing the zip to extract from. - The directory to save extracted information in. - The style of overwriting to apply. - A delegate to invoke when confirming overwriting. - A filter to apply to files. - A filter to apply to directories. - Flag indicating whether to restore the date and time for extracted files. - Flag indicating whether the inputStream will be closed by this method. - Allow parent directory traversal in file paths (e.g. ../file) - - - - Defines factory methods for creating new values. - - - - - Create a for a file given its name - - The name of the file to create an entry for. - Returns a file entry based on the passed. - - - - Create a for a file given its name - - The name of the file to create an entry for. - If true get details from the file system if the file exists. - Returns a file entry based on the passed. - - - - Create a for a file given its actual name and optional override name - - The name of the file to create an entry for. - An alternative name to be used for the new entry. Null if not applicable. - If true get details from the file system if the file exists. - Returns a file entry based on the passed. - - - - Create a for a directory given its name - - The name of the directory to create an entry for. - Returns a directory entry based on the passed. - - - - Create a for a directory given its name - - The name of the directory to create an entry for. - If true get details from the file system for this directory if it exists. - Returns a directory entry based on the passed. - - - - Get/set the applicable. - - - - - Get the in use. - - - - - Get the value to use when is set to , - or if not specified, the value of when the class was the initialized - - - - - WindowsNameTransform transforms names to windows compatible ones. - - - - - The maximum windows path name permitted. - - This may not valid for all windows systems - CE?, etc but I cant find the equivalent in the CLR. - - - - In this case we need Windows' invalid path characters. - Path.GetInvalidPathChars() only returns a subset invalid on all platforms. - - - - - Initialises a new instance of - - - Allow parent directory traversal in file paths (e.g. ../file) - - - - Initialise a default instance of - - - - - Gets or sets a value containing the target directory to prefix values with. - - - - - Allow parent directory traversal in file paths (e.g. ../file) - - - - - Gets or sets a value indicating whether paths on incoming values should be removed. - - - - - Transform a Zip directory name to a windows directory name. - - The directory name to transform. - The transformed name. - - - - Transform a Zip format file name to a windows style one. - - The file name to transform. - The transformed name. - - - - Test a name to see if it is a valid name for a windows filename as extracted from a Zip archive. - - The name to test. - Returns true if the name is a valid zip name; false otherwise. - The filename isnt a true windows path in some fundamental ways like no absolute paths, no rooted paths etc. - - - - Force a name to be valid by replacing invalid characters with a fixed value - - The name to make valid - The replacement character to use for any invalid characters. - Returns a valid name - - - - Gets or set the character to replace invalid characters during transformations. - - - - - Determines how entries are tested to see if they should use Zip64 extensions or not. - - - - - Zip64 will not be forced on entries during processing. - - An entry can have this overridden if required - - - - Zip64 should always be used. - - - - - #ZipLib will determine use based on entry values when added to archive. - - - - - The kind of compression used for an entry in an archive - - - - - A direct copy of the file contents is held in the archive - - - - - Common Zip compression method using a sliding dictionary - of up to 32KB and secondary compression from Huffman/Shannon-Fano trees - - - - - An extension to deflate with a 64KB window. Not supported by #Zip currently - - - - - BZip2 compression. Not supported by #Zip. - - - - - LZMA compression. Not supported by #Zip. - - - - - PPMd compression. Not supported by #Zip. - - - - - WinZip special for AES encryption, Now supported by #Zip. - - - - - Identifies the encryption algorithm used for an entry - - - - - No encryption has been used. - - - - - Encrypted using PKZIP 2.0 or 'classic' encryption. - - - - - DES encryption has been used. - - - - - RC2 encryption has been used for encryption. - - - - - Triple DES encryption with 168 bit keys has been used for this entry. - - - - - Triple DES with 112 bit keys has been used for this entry. - - - - - AES 128 has been used for encryption. - - - - - AES 192 has been used for encryption. - - - - - AES 256 has been used for encryption. - - - - - RC2 corrected has been used for encryption. - - - - - Blowfish has been used for encryption. - - - - - Twofish has been used for encryption. - - - - - RC4 has been used for encryption. - - - - - An unknown algorithm has been used for encryption. - - - - - Defines the contents of the general bit flags field for an archive entry. - - - - - Bit 0 if set indicates that the file is encrypted - - - - - Bits 1 and 2 - Two bits defining the compression method (only for Method 6 Imploding and 8,9 Deflating) - - - - - Bit 3 if set indicates a trailing data descriptor is appended to the entry data - - - - - Bit 4 is reserved for use with method 8 for enhanced deflation - - - - - Bit 5 if set indicates the file contains Pkzip compressed patched data. - Requires version 2.7 or greater. - - - - - Bit 6 if set indicates strong encryption has been used for this entry. - - - - - Bit 7 is currently unused - - - - - Bit 8 is currently unused - - - - - Bit 9 is currently unused - - - - - Bit 10 is currently unused - - - - - Bit 11 if set indicates the filename and - comment fields for this file must be encoded using UTF-8. - - - - - Bit 12 is documented as being reserved by PKware for enhanced compression. - - - - - Bit 13 if set indicates that values in the local header are masked to hide - their actual values, and the central directory is encrypted. - - - Used when encrypting the central directory contents. - - - - - Bit 14 is documented as being reserved for use by PKware - - - - - Bit 15 is documented as being reserved for use by PKware - - - - - This class contains constants used for Zip format files - - - - - The version made by field for entries in the central header when created by this library - - - This is also the Zip version for the library when comparing against the version required to extract - for an entry. See . - - - - - The version made by field for entries in the central header when created by this library - - - This is also the Zip version for the library when comparing against the version required to extract - for an entry. See ZipInputStream.CanDecompressEntry. - - - - - The minimum version required to support strong encryption - - - - - The minimum version required to support strong encryption - - - - - Version indicating AES encryption - - - - - The version required for Zip64 extensions (4.5 or higher) - - - - - The version required for BZip2 compression (4.6 or higher) - - - - - Size of local entry header (excluding variable length fields at end) - - - - - Size of local entry header (excluding variable length fields at end) - - - - - Size of Zip64 data descriptor - - - - - Size of data descriptor - - - - - Size of data descriptor - - - - - Size of central header entry (excluding variable fields) - - - - - Size of central header entry - - - - - Size of end of central record (excluding variable fields) - - - - - Size of end of central record (excluding variable fields) - - - - - Size of 'classic' cryptographic header stored before any entry data - - - - - Size of cryptographic header stored before entry data - - - - - The size of the Zip64 central directory locator. - - - - - Signature for local entry header - - - - - Signature for local entry header - - - - - Signature for spanning entry - - - - - Signature for spanning entry - - - - - Signature for temporary spanning entry - - - - - Signature for temporary spanning entry - - - - - Signature for data descriptor - - - This is only used where the length, Crc, or compressed size isnt known when the - entry is created and the output stream doesnt support seeking. - The local entry cannot be 'patched' with the correct values in this case - so the values are recorded after the data prefixed by this header, as well as in the central directory. - - - - - Signature for data descriptor - - - This is only used where the length, Crc, or compressed size isnt known when the - entry is created and the output stream doesnt support seeking. - The local entry cannot be 'patched' with the correct values in this case - so the values are recorded after the data prefixed by this header, as well as in the central directory. - - - - - Signature for central header - - - - - Signature for central header - - - - - Signature for Zip64 central file header - - - - - Signature for Zip64 central file header - - - - - Signature for Zip64 central directory locator - - - - - Signature for archive extra data signature (were headers are encrypted). - - - - - Central header digital signature - - - - - Central header digital signature - - - - - End of central directory record signature - - - - - End of central directory record signature - - - - - Default encoding used for string conversion. 0 gives the default system OEM code page. - Using the default code page isnt the full solution necessarily - there are many variable factors, codepage 850 is often a good choice for - European users, however be careful about compatability. - - - - Deprecated wrapper for - - - Deprecated wrapper for - - - Deprecated wrapper for - - - Deprecated wrapper for - - - Deprecated wrapper for - - - Deprecated wrapper for - - - - The method of encrypting entries when creating zip archives. - - - - - No encryption will be used. - - - - - Encrypt entries with ZipCrypto. - - - - - Encrypt entries with AES 128. - - - - - Encrypt entries with AES 256. - - - - - Defines known values for the property. - - - - - Host system = MSDOS - - - - - Host system = Amiga - - - - - Host system = Open VMS - - - - - Host system = Unix - - - - - Host system = VMCms - - - - - Host system = Atari ST - - - - - Host system = OS2 - - - - - Host system = Macintosh - - - - - Host system = ZSystem - - - - - Host system = Cpm - - - - - Host system = Windows NT - - - - - Host system = MVS - - - - - Host system = VSE - - - - - Host system = Acorn RISC - - - - - Host system = VFAT - - - - - Host system = Alternate MVS - - - - - Host system = BEOS - - - - - Host system = Tandem - - - - - Host system = OS400 - - - - - Host system = OSX - - - - - Host system = WinZIP AES - - - - - This class represents an entry in a zip archive. This can be a file - or a directory - ZipFile and ZipInputStream will give you instances of this class as - information about the members in an archive. ZipOutputStream - uses an instance of this class when creating an entry in a Zip file. -
-
Author of the original java version : Jochen Hoenicke -
-
- - - Creates a zip entry with the given name. - - - The name for this entry. Can include directory components. - The convention for names is 'unix' style paths with relative names only. - There are with no device names and path elements are separated by '/' characters. - - - The name passed is null - - - - - Creates a zip entry with the given name and version required to extract - - - The name for this entry. Can include directory components. - The convention for names is 'unix' style paths with no device names and - path elements separated by '/' characters. This is not enforced see CleanName - on how to ensure names are valid if this is desired. - - - The minimum 'feature version' required this entry - - - The name passed is null - - - - - Initializes an entry with the given name and made by information - - Name for this entry - Version and HostSystem Information - Minimum required zip feature version required to extract this entry - Compression method for this entry. - - The name passed is null - - - versionRequiredToExtract should be 0 (auto-calculate) or > 10 - - - This constructor is used by the ZipFile class when reading from the central header - It is not generally useful, use the constructor specifying the name only. - - - - - Creates a deep copy of the given zip entry. - - - The entry to copy. - - - - - Get a value indicating whether the entry has a CRC value available. - - - - - Get/Set flag indicating if entry is encrypted. - A simple helper routine to aid interpretation of flags - - This is an assistant that interprets the flags property. - - - - Get / set a flag indicating whether entry name and comment text are - encoded in unicode UTF8. - - This is an assistant that interprets the flags property. - - - - Value used during password checking for PKZIP 2.0 / 'classic' encryption. - - - - - Get/Set general purpose bit flag for entry - - - General purpose bit flag
-
- Bit 0: If set, indicates the file is encrypted
- Bit 1-2 Only used for compression type 6 Imploding, and 8, 9 deflating
- Imploding:
- Bit 1 if set indicates an 8K sliding dictionary was used. If clear a 4k dictionary was used
- Bit 2 if set indicates 3 Shannon-Fanno trees were used to encode the sliding dictionary, 2 otherwise
-
- Deflating:
- Bit 2 Bit 1
- 0 0 Normal compression was used
- 0 1 Maximum compression was used
- 1 0 Fast compression was used
- 1 1 Super fast compression was used
-
- Bit 3: If set, the fields crc-32, compressed size - and uncompressed size are were not able to be written during zip file creation - The correct values are held in a data descriptor immediately following the compressed data.
- Bit 4: Reserved for use by PKZIP for enhanced deflating
- Bit 5: If set indicates the file contains compressed patch data
- Bit 6: If set indicates strong encryption was used.
- Bit 7-10: Unused or reserved
- Bit 11: If set the name and comments for this entry are in unicode.
- Bit 12-15: Unused or reserved
-
- - -
- - - Get/Set index of this entry in Zip file - - This is only valid when the entry is part of a - - - - Get/set offset for use in central header - - - - - Get/Set external file attributes as an integer. - The values of this are operating system dependent see - HostSystem for details - - - - - Get the version made by for this entry or zero if unknown. - The value / 10 indicates the major version number, and - the value mod 10 is the minor version number - - - - - Get a value indicating this entry is for a DOS/Windows system. - - - - - Test the external attributes for this to - see if the external attributes are Dos based (including WINNT and variants) - and match the values - - The attributes to test. - Returns true if the external attributes are known to be DOS/Windows - based and have the same attributes set as the value passed. - - - - Gets the compatibility information for the external file attribute - If the external file attributes are compatible with MS-DOS and can be read - by PKZIP for DOS version 2.04g then this value will be zero. Otherwise the value - will be non-zero and identify the host system on which the attributes are compatible. - - - - The values for this as defined in the Zip File format and by others are shown below. The values are somewhat - misleading in some cases as they are not all used as shown. You should consult the relevant documentation - to obtain up to date and correct information. The modified appnote by the infozip group is - particularly helpful as it documents a lot of peculiarities. The document is however a little dated. - - 0 - MS-DOS and OS/2 (FAT / VFAT / FAT32 file systems) - 1 - Amiga - 2 - OpenVMS - 3 - Unix - 4 - VM/CMS - 5 - Atari ST - 6 - OS/2 HPFS - 7 - Macintosh - 8 - Z-System - 9 - CP/M - 10 - Windows NTFS - 11 - MVS (OS/390 - Z/OS) - 12 - VSE - 13 - Acorn Risc - 14 - VFAT - 15 - Alternate MVS - 16 - BeOS - 17 - Tandem - 18 - OS/400 - 19 - OS/X (Darwin) - 99 - WinZip AES - remainder - unused - - - - - - Get minimum Zip feature version required to extract this entry - - - Minimum features are defined as:
- 1.0 - Default value
- 1.1 - File is a volume label
- 2.0 - File is a folder/directory
- 2.0 - File is compressed using Deflate compression
- 2.0 - File is encrypted using traditional encryption
- 2.1 - File is compressed using Deflate64
- 2.5 - File is compressed using PKWARE DCL Implode
- 2.7 - File is a patch data set
- 4.5 - File uses Zip64 format extensions
- 4.6 - File is compressed using BZIP2 compression
- 5.0 - File is encrypted using DES
- 5.0 - File is encrypted using 3DES
- 5.0 - File is encrypted using original RC2 encryption
- 5.0 - File is encrypted using RC4 encryption
- 5.1 - File is encrypted using AES encryption
- 5.1 - File is encrypted using corrected RC2 encryption
- 5.1 - File is encrypted using corrected RC2-64 encryption
- 6.1 - File is encrypted using non-OAEP key wrapping
- 6.2 - Central directory encryption (not confirmed yet)
- 6.3 - File is compressed using LZMA
- 6.3 - File is compressed using PPMD+
- 6.3 - File is encrypted using Blowfish
- 6.3 - File is encrypted using Twofish
-
- -
- - - Get a value indicating whether this entry can be decompressed by the library. - - This is based on the and - whether the compression method is supported. - - - - Force this entry to be recorded using Zip64 extensions. - - - - - Get a value indicating whether Zip64 extensions were forced. - - A value of true if Zip64 extensions have been forced on; false if not. - - - - Gets a value indicating if the entry requires Zip64 extensions - to store the full entry values. - - A value of true if a local header requires Zip64 extensions; false if not. - - - - Get a value indicating whether the central directory entry requires Zip64 extensions to be stored. - - - - - Get/Set DosTime value. - - - The MS-DOS date format can only represent dates between 1/1/1980 and 12/31/2107. - - - - - Gets/Sets the time of last modification of the entry. - - - The property is updated to match this as far as possible. - - - - - Returns the entry name. - - - The unix naming convention is followed. - Path components in the entry should always separated by forward slashes ('/'). - Dos device names like C: should also be removed. - See the class, or - - - - - Gets/Sets the size of the uncompressed data. - - - The size or -1 if unknown. - - Setting the size before adding an entry to an archive can help - avoid compatibility problems with some archivers which don't understand Zip64 extensions. - - - - Gets/Sets the size of the compressed data. - - - The compressed entry size or -1 if unknown. - - - - - Gets/Sets the crc of the uncompressed data. - - - Crc is not in the range 0..0xffffffffL - - - The crc value or -1 if unknown. - - - - - Gets/Sets the compression method. - - - The compression method for this entry - - - - - Gets the compression method for outputting to the local or central header. - Returns same value as CompressionMethod except when AES encrypting, which - places 99 in the method and places the real method in the extra data. - - - - - Gets/Sets the extra data. - - - Extra data is longer than 64KB (0xffff) bytes. - - - Extra data or null if not set. - - - - - For AES encrypted files returns or sets the number of bits of encryption (128, 192 or 256). - When setting, only 0 (off), 128 or 256 is supported. - - - - - AES Encryption strength for storage in extra data in entry header. - 1 is 128 bit, 2 is 192 bit, 3 is 256 bit. - - - - - Returns the length of the salt, in bytes - - Key size -> Salt length: 128 bits = 8 bytes, 192 bits = 12 bytes, 256 bits = 16 bytes. - - - - Number of extra bytes required to hold the AES Header fields (Salt, Pwd verify, AuthCode) - - File format: - Bytes | Content - ---------+--------------------------- - Variable | Salt value - 2 | Password verification value - Variable | Encrypted file data - 10 | Authentication code - - - - Number of extra bytes required to hold the encryption header fields. - - - - - Process extra data fields updating the entry based on the contents. - - True if the extra data fields should be handled - for a local header, rather than for a central header. - - - - - Gets/Sets the entry comment. - - - If comment is longer than 0xffff. - - - The comment or null if not set. - - - A comment is only available for entries when read via the class. - The class doesn't have the comment data available. - - - - - Gets a value indicating if the entry is a directory. - however. - - - A directory is determined by an entry name with a trailing slash '/'. - The external file attributes can also indicate an entry is for a directory. - Currently only dos/windows attributes are tested in this manner. - The trailing slash convention should always be followed. - - - - - Get a value of true if the entry appears to be a file; false otherwise - - - This only takes account of DOS/Windows attributes. Other operating systems are ignored. - For linux and others the result may be incorrect. - - - - - Test entry to see if data can be extracted. - - Returns true if data can be extracted for this entry; false otherwise. - - - - Creates a copy of this zip entry. - - An that is a copy of the current instance. - - - - Gets a string representation of this ZipEntry. - - A readable textual representation of this - - - - Test a compression method to see if this library - supports extracting data compressed with that method - - The compression method to test. - Returns true if the compression method is supported; false otherwise - - - - Cleans a name making it conform to Zip file conventions. - Devices names ('c:\') and UNC share names ('\\server\share') are removed - and forward slashes ('\') are converted to back slashes ('/'). - Names are made relative by trimming leading slashes which is compatible - with the ZIP naming convention. - - The name to clean - The 'cleaned' name. - - The Zip name transform class is more flexible. - - - - - General ZipEntry helper extensions - - - - - Efficiently check if a flag is set without enum un-/boxing - - - - Returns whether the flag was set - - - - Efficiently set a flag without enum un-/boxing - - - - Whether the passed flag should be set (1) or cleared (0) - - - - Basic implementation of - - - - - Defines the possible values to be used for the . - - - - - Use the recorded LastWriteTime value for the file. - - - - - Use the recorded LastWriteTimeUtc value for the file - - - - - Use the recorded CreateTime value for the file. - - - - - Use the recorded CreateTimeUtc value for the file. - - - - - Use the recorded LastAccessTime value for the file. - - - - - Use the recorded LastAccessTimeUtc value for the file. - - - - - Use a fixed value. - - The actual value used can be - specified via the constructor or - using the with the setting set - to which will use the when this class was constructed. - The property can also be used to set this value. - - - - Initialise a new instance of the class. - - A default , and the LastWriteTime for files is used. - - - - Initialise a new instance of using the specified - - The time setting to use when creating Zip entries. - - - - Initialise a new instance of using the specified - - The time to set all values to. - - - - Get / set the to be used when creating new values. - - - Setting this property to null will cause a default name transform to be used. - - - - - Get / set the in use. - - - - - Get / set the value to use when is set to - - - - - A bitmask defining the attributes to be retrieved from the actual file. - - The default is to get all possible attributes from the actual file. - - - - A bitmask defining which attributes are to be set on. - - By default no attributes are set on. - - - - Get set a value indicating whether unidoce text should be set on. - - - - - Make a new for a file. - - The name of the file to create a new entry for. - Returns a new based on the . - - - - Make a new for a file. - - The name of the file to create a new entry for. - If true entry detail is retrieved from the file system if the file exists. - Returns a new based on the . - - - - Make a new from a name. - - The name of the file to create a new entry for. - An alternative name to be used for the new entry. Null if not applicable. - If true entry detail is retrieved from the file system if the file exists. - Returns a new based on the . - - - - Make a new for a directory. - - The raw untransformed name for the new directory - Returns a new representing a directory. - - - - Make a new for a directory. - - The raw untransformed name for the new directory - If true entry detail is retrieved from the file system if the file exists. - Returns a new representing a directory. - - - - ZipException represents exceptions specific to Zip classes and code. - - - - - Initialise a new instance of . - - - - - Initialise a new instance of with its message string. - - A that describes the error. - - - - Initialise a new instance of . - - A that describes the error. - The that caused this exception. - - - - Initializes a new instance of the ZipException class with serialized data. - - - The System.Runtime.Serialization.SerializationInfo that holds the serialized - object data about the exception being thrown. - - - The System.Runtime.Serialization.StreamingContext that contains contextual information - about the source or destination. - - - - - ExtraData tagged value interface. - - - - - Get the ID for this tagged data value. - - - - - Set the contents of this instance from the data passed. - - The data to extract contents from. - The offset to begin extracting data from. - The number of bytes to extract. - - - - Get the data representing this instance. - - Returns the data for this instance. - - - - A raw binary tagged value - - - - - Initialise a new instance. - - The tag ID. - - - - Get the ID for this tagged data value. - - - - - Set the data from the raw values provided. - - The raw data to extract values from. - The index to start extracting values from. - The number of bytes available. - - - - Get the binary data representing this instance. - - The raw binary data representing this instance. - - - - Get /set the binary data representing this instance. - - The raw binary data representing this instance. - - - - The tag ID for this instance. - - - - - Class representing extended unix date time values. - - - - - Flags indicate which values are included in this instance. - - - - - The modification time is included - - - - - The access time is included - - - - - The create time is included. - - - - - Get the ID - - - - - Set the data from the raw values provided. - - The raw data to extract values from. - The index to start extracting values from. - The number of bytes available. - - - - Get the binary data representing this instance. - - The raw binary data representing this instance. - - - - Test a value to see if is valid and can be represented here. - - The value to test. - Returns true if the value is valid and can be represented; false if not. - The standard Unix time is a signed integer data type, directly encoding the Unix time number, - which is the number of seconds since 1970-01-01. - Being 32 bits means the values here cover a range of about 136 years. - The minimum representable time is 1901-12-13 20:45:52, - and the maximum representable time is 2038-01-19 03:14:07. - - - - - Get /set the Modification Time - - - - - - - Get / set the Access Time - - - - - - - Get / Set the Create Time - - - - - - - Get/set the values to include. - - - - - Class handling NT date time values. - - - - - Get the ID for this tagged data value. - - - - - Set the data from the raw values provided. - - The raw data to extract values from. - The index to start extracting values from. - The number of bytes available. - - - - Get the binary data representing this instance. - - The raw binary data representing this instance. - - - - Test a valuie to see if is valid and can be represented here. - - The value to test. - Returns true if the value is valid and can be represented; false if not. - - NTFS filetimes are 64-bit unsigned integers, stored in Intel - (least significant byte first) byte order. They determine the - number of 1.0E-07 seconds (1/10th microseconds!) past WinNT "epoch", - which is "01-Jan-1601 00:00:00 UTC". 28 May 60056 is the upper limit - - - - - Get/set the last modification time. - - - - - Get /set the create time - - - - - Get /set the last access time. - - - - - A factory that creates tagged data instances. - - - - - Get data for a specific tag value. - - The tag ID to find. - The data to search. - The offset to begin extracting data from. - The number of bytes to extract. - The located value found, or null if not found. - - - - - A class to handle the extra data field for Zip entries - - - Extra data contains 0 or more values each prefixed by a header tag and length. - They contain zero or more bytes of actual data. - The data is held internally using a copy on write strategy. This is more efficient but - means that for extra data created by passing in data can have the values modified by the caller - in some circumstances. - - - - - Initialise a default instance. - - - - - Initialise with known extra data. - - The extra data. - - - - Get the raw extra data value - - Returns the raw byte[] extra data this instance represents. - - - - Clear the stored data. - - - - - Gets the current extra data length. - - - - - Get a read-only for the associated tag. - - The tag to locate data for. - Returns a containing tag data or null if no tag was found. - - - - Get the tagged data for a tag. - - The tag to search for. - Returns a tagged value or null if none found. - - - - Get the length of the last value found by - - This is only valid if has previously returned true. - - - - Get the index for the current read value. - - This is only valid if has previously returned true. - Initially the result will be the index of the first byte of actual data. The value is updated after calls to - , and . - - - - Get the number of bytes remaining to be read for the current value; - - - - - Find an extra data value - - The identifier for the value to find. - Returns true if the value was found; false otherwise. - - - - Add a new entry to extra data. - - The value to add. - - - - Add a new entry to extra data - - The ID for this entry. - The data to add. - If the ID already exists its contents are replaced. - - - - Start adding a new entry. - - Add data using , , , or . - The new entry is completed and actually added by calling - - - - - Add entry data added since using the ID passed. - - The identifier to use for this entry. - - - - Add a byte of data to the pending new entry. - - The byte to add. - - - - - Add data to a pending new entry. - - The data to add. - - - - - Add a short value in little endian order to the pending new entry. - - The data to add. - - - - - Add an integer value in little endian order to the pending new entry. - - The data to add. - - - - - Add a long value in little endian order to the pending new entry. - - The data to add. - - - - - Delete an extra data field. - - The identifier of the field to delete. - Returns true if the field was found and deleted. - - - - Read a long in little endian form from the last found data value - - Returns the long value read. - - - - Read an integer in little endian form from the last found data value. - - Returns the integer read. - - - - Read a short value in little endian form from the last found data value. - - Returns the short value read. - - - - Read a byte from an extra data - - The byte value read or -1 if the end of data has been reached. - - - - Skip data during reading. - - The number of bytes to skip. - - - - Internal form of that reads data at any location. - - Returns the short value read. - - - - Dispose of this instance. - - - - - Arguments used with KeysRequiredEvent - - - - - Initialise a new instance of - - The name of the file for which keys are required. - - - - Initialise a new instance of - - The name of the file for which keys are required. - The current key value. - - - - Gets the name of the file for which keys are required. - - - - - Gets or sets the key value - - - - - The strategy to apply to testing. - - - - - Find the first error only. - - - - - Find all possible errors. - - - - - The operation in progress reported by a during testing. - - TestArchive - - - - Setting up testing. - - - - - Testing an individual entries header - - - - - Testing an individual entries data - - - - - Testing an individual entry has completed. - - - - - Running miscellaneous tests - - - - - Testing is complete - - - - - Status returned by during testing. - - TestArchive - - - - Initialise a new instance of - - The this status applies to. - - - - Get the current in progress. - - - - - Get the this status is applicable to. - - - - - Get the current/last entry tested. - - - - - Get the number of errors detected so far. - - - - - Get the number of bytes tested so far for the current entry. - - - - - Get a value indicating whether the last entry test was valid. - - - - - Delegate invoked during testing if supplied indicating current progress and status. - - If the message is non-null an error has occurred. If the message is null - the operation as found in status has started. - - - - The possible ways of applying updates to an archive. - - - - - Perform all updates on temporary files ensuring that the original file is saved. - - - - - Update the archive directly, which is faster but less safe. - - - - - This class represents a Zip archive. You can ask for the contained - entries, or get an input stream for a file entry. The entry is - automatically decompressed. - - You can also update the archive adding or deleting entries. - - This class is thread safe for input: You can open input streams for arbitrary - entries in different threads. -
-
Author of the original java version : Jochen Hoenicke -
- - - using System; - using System.Text; - using System.Collections; - using System.IO; - - using ICSharpCode.SharpZipLib.Zip; - - class MainClass - { - static public void Main(string[] args) - { - using (ZipFile zFile = new ZipFile(args[0])) { - Console.WriteLine("Listing of : " + zFile.Name); - Console.WriteLine(""); - Console.WriteLine("Raw Size Size Date Time Name"); - Console.WriteLine("-------- -------- -------- ------ ---------"); - foreach (ZipEntry e in zFile) { - if ( e.IsFile ) { - DateTime d = e.DateTime; - Console.WriteLine("{0, -10}{1, -10}{2} {3} {4}", e.Size, e.CompressedSize, - d.ToString("dd-MM-yy"), d.ToString("HH:mm"), - e.Name); - } - } - } - } - } - - -
- - - Delegate for handling keys/password setting during compression/decompression. - - - - - Event handler for handling encryption keys. - - - - - Handles getting of encryption keys when required. - - The file for which encryption keys are required. - - - - Get/set the encryption key value. - - - - - Password to be used for encrypting/decrypting files. - - Set to null if no password is required. - - - - Get a value indicating whether encryption keys are currently available. - - - - - Opens a Zip file with the given name for reading. - - The name of the file to open. - The argument supplied is null. - - An i/o error occurs - - - The file doesn't contain a valid zip archive. - - - - - Opens a Zip file reading the given . - - The to read archive data from. - The supplied argument is null. - - An i/o error occurs. - - - The file doesn't contain a valid zip archive. - - - - - Opens a Zip file reading the given . - - The to read archive data from. - true to leave the file open when the ZipFile is disposed, false to dispose of it - The supplied argument is null. - - An i/o error occurs. - - - The file doesn't contain a valid zip archive. - - - - - Opens a Zip file reading the given . - - The to read archive data from. - - An i/o error occurs - - - The stream doesn't contain a valid zip archive.
-
- - The stream doesnt support seeking. - - - The stream argument is null. - -
- - - Opens a Zip file reading the given . - - The to read archive data from. - true to leave the stream open when the ZipFile is disposed, false to dispose of it - - An i/o error occurs - - - The stream doesn't contain a valid zip archive.
-
- - The stream doesnt support seeking. - - - The stream argument is null. - -
- - - Initialises a default instance with no entries and no file storage. - - - - - Finalize this instance. - - - - - Closes the ZipFile. If the stream is owned then this also closes the underlying input stream. - Once closed, no further instance methods should be called. - - - An i/o error occurs. - - - - - Create a new whose data will be stored in a file. - - The name of the archive to create. - Returns the newly created - is null - - - - Create a new whose data will be stored on a stream. - - The stream providing data storage. - Returns the newly created - is null - doesnt support writing. - - - - Get/set a flag indicating if the underlying stream is owned by the ZipFile instance. - If the flag is true then the stream will be closed when Close is called. - - - The default value is true in all cases. - - - - - Get a value indicating whether - this archive is embedded in another file or not. - - - - - Get a value indicating that this archive is a new one. - - - - - Gets the comment for the zip file. - - - - - Gets the name of this zip file. - - - - - Gets the number of entries in this zip file. - - - The Zip file has been closed. - - - - - Get the number of entries contained in this . - - - - - Indexer property for ZipEntries - - - - - Gets an enumerator for the Zip entries in this Zip file. - - Returns an for this archive. - - The Zip file has been closed. - - - - - Return the index of the entry with a matching name - - Entry name to find - If true the comparison is case insensitive - The index position of the matching entry or -1 if not found - - The Zip file has been closed. - - - - - Searches for a zip entry in this archive with the given name. - String comparisons are case insensitive - - - The name to find. May contain directory components separated by slashes ('/'). - - - A clone of the zip entry, or null if no entry with that name exists. - - - The Zip file has been closed. - - - - - Gets an input stream for reading the given zip entry data in an uncompressed form. - Normally the should be an entry returned by GetEntry(). - - The to obtain a data for - An input containing data for this - - The ZipFile has already been closed - - - The compression method for the entry is unknown - - - The entry is not found in the ZipFile - - - - - Creates an input stream reading a zip entry - - The index of the entry to obtain an input stream for. - - An input containing data for this - - - The ZipFile has already been closed - - - The compression method for the entry is unknown - - - The entry is not found in the ZipFile - - - - - Test an archive for integrity/validity - - Perform low level data Crc check - true if all tests pass, false otherwise - Testing will terminate on the first error found. - - - - Test an archive for integrity/validity - - Perform low level data Crc check - The to apply. - The handler to call during testing. - true if all tests pass, false otherwise - The object has already been closed. - - - - Test a local header against that provided from the central directory - - - The entry to test against - - The type of tests to carry out. - The offset of the entries data in the file - - - - The kind of update to apply. - - - - - Get / set the to apply to names when updating. - - - - - Get/set the used to generate values - during updates. - - - - - Get /set the buffer size to be used when updating this zip file. - - - - - Get a value indicating an update has been started. - - - - - Get / set a value indicating how Zip64 Extension usage is determined when adding entries. - - - - - Begin updating this archive. - - The archive storage for use during the update. - The data source to utilise during updating. - ZipFile has been closed. - One of the arguments provided is null - ZipFile has been closed. - - - - Begin updating to this archive. - - The storage to use during the update. - - - - Begin updating this archive. - - - - - - - - Commit current updates, updating this archive. - - - - ZipFile has been closed. - - - - Abort updating leaving the archive unchanged. - - - - - - - Set the file comment to be recorded when the current update is commited. - - The comment to record. - ZipFile has been closed. - - - - Add a new entry to the archive. - - The name of the file to add. - The compression method to use. - Ensure Unicode text is used for name and comment for this entry. - Argument supplied is null. - ZipFile has been closed. - Compression method is not supported for creating entries. - - - - Add a new entry to the archive. - - The name of the file to add. - The compression method to use. - ZipFile has been closed. - Compression method is not supported for creating entries. - - - - Add a file to the archive. - - The name of the file to add. - Argument supplied is null. - - - - Add a file to the archive. - - The name of the file to add. - The name to use for the on the Zip file created. - Argument supplied is null. - - - - Add a file entry with data. - - The source of the data for this entry. - The name to give to the entry. - - - - Add a file entry with data. - - The source of the data for this entry. - The name to give to the entry. - The compression method to use. - Compression method is not supported for creating entries. - - - - Add a file entry with data. - - The source of the data for this entry. - The name to give to the entry. - The compression method to use. - Ensure Unicode text is used for name and comments for this entry. - Compression method is not supported for creating entries. - - - - Add a that contains no data. - - The entry to add. - This can be used to add directories, volume labels, or empty file entries. - - - - Add a with data. - - The source of the data for this entry. - The entry to add. - This can be used to add file entries with a custom data source. - - The encryption method specified in is unsupported. - - Compression method is not supported for creating entries. - - - - Add a directory entry to the archive. - - The directory to add. - - - - Check if the specified compression method is supported for adding a new entry. - - The compression method for the new entry. - - - - Delete an entry by name - - The filename to delete - True if the entry was found and deleted; false otherwise. - - - - Delete a from the archive. - - The entry to delete. - - - - Write an unsigned short in little endian byte order. - - - - - Write an int in little endian byte order. - - - - - Write an unsigned int in little endian byte order. - - - - - Write a long in little endian byte order. - - - - - Get a raw memory buffer. - - Returns a raw memory buffer. - - - - Get the size of the source descriptor for a . - - The update to get the size for. - Whether to include the signature size - The descriptor size, zero if there isn't one. - - - - Get an output stream for the specified - - The entry to get an output stream for. - The output stream obtained for the entry. - - - - Class used to sort updates. - - - - - Compares two objects and returns a value indicating whether one is - less than, equal to or greater than the other. - - First object to compare - Second object to compare. - Compare result. - - - - Represents a pending update to a Zip file. - - - - - Copy an existing entry. - - The existing entry to copy. - - - - Get the for this update. - - This is the source or original entry. - - - - Get the that will be written to the updated/new file. - - - - - Get the command for this update. - - - - - Get the filename if any for this update. Null if none exists. - - - - - Get/set the location of the size patch for this update. - - - - - Get /set the location of the crc patch for this update. - - - - - Get/set the size calculated by offset. - Specifically, the difference between this and next entry's starting offset. - - - - - Releases the unmanaged resources used by the this instance and optionally releases the managed resources. - - true to release both managed and unmanaged resources; - false to release only unmanaged resources. - - - - Read an unsigned short in little endian byte order. - - Returns the value read. - - The stream ends prematurely - - - - - Read a uint in little endian byte order. - - Returns the value read. - - An i/o error occurs. - - - The file ends prematurely - - - - - Search for and read the central directory of a zip file filling the entries array. - - - An i/o error occurs. - - - The central directory is malformed or cannot be found - - - - - Locate the data for a given entry. - - - The start offset of the data. - - - The stream ends prematurely - - - The local header signature is invalid, the entry and central header file name lengths are different - or the local and entry compression methods dont match - - - - - Represents a string from a which is stored as an array of bytes. - - - - - Initialise a with a string. - - The textual string form. - - - - Initialise a using a string in its binary 'raw' form. - - - - - - Get a value indicating the original source of data for this instance. - True if the source was a string; false if the source was binary data. - - - - - Get the length of the comment when represented as raw bytes. - - - - - Get the comment in its 'raw' form as plain bytes. - - - - - Reset the comment to its initial state. - - - - - Implicit conversion of comment to a string. - - The to convert to a string. - The textual equivalent for the input value. - - - - An enumerator for Zip entries - - - - - An is a stream that you can write uncompressed data - to and flush, but cannot read, seek or do anything else to. - - - - - Gets a value indicating whether the current stream supports reading. - - - - - Write any buffered data to underlying storage. - - - - - Gets a value indicating whether the current stream supports writing. - - - - - Gets a value indicating whether the current stream supports seeking. - - - - - Get the length in bytes of the stream. - - - - - Gets or sets the position within the current stream. - - - - - Reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read. - - An array of bytes. When this method returns, the buffer contains the specified byte array with the values between offset and (offset + count - 1) replaced by the bytes read from the current source. - The zero-based byte offset in buffer at which to begin storing the data read from the current stream. - The maximum number of bytes to be read from the current stream. - - The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many bytes are not currently available, or zero (0) if the end of the stream has been reached. - - The sum of offset and count is larger than the buffer length. - Methods were called after the stream was closed. - The stream does not support reading. - buffer is null. - An I/O error occurs. - offset or count is negative. - - - - Sets the position within the current stream. - - A byte offset relative to the origin parameter. - A value of type indicating the reference point used to obtain the new position. - - The new position within the current stream. - - An I/O error occurs. - The stream does not support seeking, such as if the stream is constructed from a pipe or console output. - Methods were called after the stream was closed. - - - - Sets the length of the current stream. - - The desired length of the current stream in bytes. - The stream does not support both writing and seeking, such as if the stream is constructed from a pipe or console output. - An I/O error occurs. - Methods were called after the stream was closed. - - - - Writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written. - - An array of bytes. This method copies count bytes from buffer to the current stream. - The zero-based byte offset in buffer at which to begin copying bytes to the current stream. - The number of bytes to be written to the current stream. - An I/O error occurs. - The stream does not support writing. - Methods were called after the stream was closed. - buffer is null. - The sum of offset and count is greater than the buffer length. - offset or count is negative. - - - - A is an - whose data is only a part or subsection of a file. - - - - - Initialise a new instance of the class. - - The containing the underlying stream to use for IO. - The start of the partial data. - The length of the partial data. - - - - Read a byte from this stream. - - Returns the byte read or -1 on end of stream. - - - - Reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read. - - An array of bytes. When this method returns, the buffer contains the specified byte array with the values between offset and (offset + count - 1) replaced by the bytes read from the current source. - The zero-based byte offset in buffer at which to begin storing the data read from the current stream. - The maximum number of bytes to be read from the current stream. - - The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many bytes are not currently available, or zero (0) if the end of the stream has been reached. - - The sum of offset and count is larger than the buffer length. - Methods were called after the stream was closed. - The stream does not support reading. - buffer is null. - An I/O error occurs. - offset or count is negative. - - - - Writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written. - - An array of bytes. This method copies count bytes from buffer to the current stream. - The zero-based byte offset in buffer at which to begin copying bytes to the current stream. - The number of bytes to be written to the current stream. - An I/O error occurs. - The stream does not support writing. - Methods were called after the stream was closed. - buffer is null. - The sum of offset and count is greater than the buffer length. - offset or count is negative. - - - - When overridden in a derived class, sets the length of the current stream. - - The desired length of the current stream in bytes. - The stream does not support both writing and seeking, such as if the stream is constructed from a pipe or console output. - An I/O error occurs. - Methods were called after the stream was closed. - - - - When overridden in a derived class, sets the position within the current stream. - - A byte offset relative to the origin parameter. - A value of type indicating the reference point used to obtain the new position. - - The new position within the current stream. - - An I/O error occurs. - The stream does not support seeking, such as if the stream is constructed from a pipe or console output. - Methods were called after the stream was closed. - - - - Clears all buffers for this stream and causes any buffered data to be written to the underlying device. - - An I/O error occurs. - - - - Gets or sets the position within the current stream. - - - The current position within the stream. - An I/O error occurs. - The stream does not support seeking. - Methods were called after the stream was closed. - - - - Gets the length in bytes of the stream. - - - A long value representing the length of the stream in bytes. - A class derived from Stream does not support seeking. - Methods were called after the stream was closed. - - - - Gets a value indicating whether the current stream supports writing. - - false - true if the stream supports writing; otherwise, false. - - - - Gets a value indicating whether the current stream supports seeking. - - true - true if the stream supports seeking; otherwise, false. - - - - Gets a value indicating whether the current stream supports reading. - - true. - true if the stream supports reading; otherwise, false. - - - - Gets a value that determines whether the current stream can time out. - - - A value that determines whether the current stream can time out. - - - - Provides a static way to obtain a source of data for an entry. - - - - - Get a source of data by creating a new stream. - - Returns a to use for compression input. - Ideally a new stream is created and opened to achieve this, to avoid locking problems. - - - - Represents a source of data that can dynamically provide - multiple data sources based on the parameters passed. - - - - - Get a data source. - - The to get a source for. - The name for data if known. - Returns a to use for compression input. - Ideally a new stream is created and opened to achieve this, to avoid locking problems. - - - - Default implementation of a for use with files stored on disk. - - - - - Initialise a new instance of - - The name of the file to obtain data from. - - - - Get a providing data. - - Returns a providing data. - - - - Default implementation of for files stored on disk. - - - - - Get a providing data for an entry. - - The entry to provide data for. - The file name for data if known. - Returns a stream providing data; or null if not available - - - - Defines facilities for data storage when updating Zip Archives. - - - - - Get the to apply during updates. - - - - - Get an empty that can be used for temporary output. - - Returns a temporary output - - - - - Convert a temporary output stream to a final stream. - - The resulting final - - - - - Make a temporary copy of the original stream. - - The to copy. - Returns a temporary output that is a copy of the input. - - - - Return a stream suitable for performing direct updates on the original source. - - The current stream. - Returns a stream suitable for direct updating. - This may be the current stream passed. - - - - Dispose of this instance. - - - - - An abstract suitable for extension by inheritance. - - - - - Initializes a new instance of the class. - - The update mode. - - - - Gets a temporary output - - Returns the temporary output stream. - - - - - Converts the temporary to its final form. - - Returns a that can be used to read - the final storage for the archive. - - - - - Make a temporary copy of a . - - The to make a copy of. - Returns a temporary output that is a copy of the input. - - - - Return a stream suitable for performing direct updates on the original source. - - The to open for direct update. - Returns a stream suitable for direct updating. - - - - Disposes this instance. - - - - - Gets the update mode applicable. - - The update mode. - - - - An implementation suitable for hard disks. - - - - - Initializes a new instance of the class. - - The file. - The update mode. - - - - Initializes a new instance of the class. - - The file. - - - - Gets a temporary output for performing updates on. - - Returns the temporary output stream. - - - - Converts a temporary to its final form. - - Returns a that can be used to read - the final storage for the archive. - - - - Make a temporary copy of a stream. - - The to copy. - Returns a temporary output that is a copy of the input. - - - - Return a stream suitable for performing direct updates on the original source. - - The current stream. - Returns a stream suitable for direct updating. - If the is not null this is used as is. - - - - Disposes this instance. - - - - - An implementation suitable for in memory streams. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - The to use - This constructor is for testing as memory streams dont really require safe mode. - - - - Get the stream returned by if this was in fact called. - - - - - Gets the temporary output - - Returns the temporary output stream. - - - - Converts the temporary to its final form. - - Returns a that can be used to read - the final storage for the archive. - - - - Make a temporary copy of the original stream. - - The to copy. - Returns a temporary output that is a copy of the input. - - - - Return a stream suitable for performing direct updates on the original source. - - The original source stream - Returns a stream suitable for direct updating. - If the passed is not null this is used; - otherwise a new is returned. - - - - Disposes this instance. - - - - - Holds data pertinent to a data descriptor. - - - - - Get /set the compressed size of data. - - - - - Get / set the uncompressed size of data - - - - - Get /set the crc value. - - - - - This class assists with writing/reading from Zip files. - - - - - Initialise an instance of this class. - - The name of the file to open. - - - - Initialise a new instance of . - - The stream to use. - - - - Get / set a value indicating whether the underlying stream is owned or not. - - If the stream is owned it is closed when this instance is closed. - - - - Close the stream. - - - The underlying stream is closed only if is true. - - - - - Locates a block with the desired . - - The signature to find. - Location, marking the end of block. - Minimum size of the block. - The maximum variable data. - Returns the offset of the first byte after the signature; -1 if not found - - - - Write Zip64 end of central directory records (File header and locator). - - The number of entries in the central directory. - The size of entries in the central directory. - The offset of the central directory. - - - - Write the required records to end the central directory. - - The number of entries in the directory. - The size of the entries in the directory. - The start of the central directory. - The archive comment. (This can be null). - - - - Read an unsigned short in little endian byte order. - - Returns the value read. - - An i/o error occurs. - - - The file ends prematurely - - - - - Read an int in little endian byte order. - - Returns the value read. - - An i/o error occurs. - - - The file ends prematurely - - - - - Read a long in little endian byte order. - - The value read. - - - - Write an unsigned short in little endian byte order. - - The value to write. - - - - Write a ushort in little endian byte order. - - The value to write. - - - - Write an int in little endian byte order. - - The value to write. - - - - Write a uint in little endian byte order. - - The value to write. - - - - Write a long in little endian byte order. - - The value to write. - - - - Write a ulong in little endian byte order. - - The value to write. - - - - Write a data descriptor. - - The entry to write a descriptor for. - Returns the number of descriptor bytes written. - - - - Read data descriptor at the end of compressed data. - - if set to true [zip64]. - The data to fill in. - Returns the number of bytes read in the descriptor. - - - - This is an InflaterInputStream that reads the files baseInputStream an zip archive - one after another. It has a special method to get the zip entry of - the next file. The zip entry contains information about the file name - size, compressed size, Crc, etc. - It includes support for Stored and Deflated entries. -
-
Author of the original java version : Jochen Hoenicke -
- - This sample shows how to read a zip file - - using System; - using System.Text; - using System.IO; - - using ICSharpCode.SharpZipLib.Zip; - - class MainClass - { - public static void Main(string[] args) - { - using ( ZipInputStream s = new ZipInputStream(File.OpenRead(args[0]))) { - - ZipEntry theEntry; - const int size = 2048; - byte[] data = new byte[2048]; - - while ((theEntry = s.GetNextEntry()) != null) { - if ( entry.IsFile ) { - Console.Write("Show contents (y/n) ?"); - if (Console.ReadLine() == "y") { - while (true) { - size = s.Read(data, 0, data.Length); - if (size > 0) { - Console.Write(new ASCIIEncoding().GetString(data, 0, size)); - } else { - break; - } - } - } - } - } - } - } - } - - -
- - - Delegate for reading bytes from a stream. - - - - - The current reader this instance. - - - - - Creates a new Zip input stream, for reading a zip archive. - - The underlying providing data. - - - - Creates a new Zip input stream, for reading a zip archive. - - The underlying providing data. - Size of the buffer. - - - - Optional password used for encryption when non-null - - A password for all encrypted entries in this - - - - Gets a value indicating if there is a current entry and it can be decompressed - - - The entry can only be decompressed if the library supports the zip features required to extract it. - See the ZipEntry Version property for more details. - - Since uses the local headers for extraction, entries with no compression combined with the - flag set, cannot be extracted as the end of the entry data cannot be deduced. - - - - - Is the compression method for the specified entry supported? - - - Uses entry.CompressionMethodForHeader so that entries of type WinZipAES will be rejected. - - the entry to check. - true if the compression method is supported, false if not. - - - - Advances to the next entry in the archive - - - The next entry in the archive or null if there are no more entries. - - - If the previous entry is still open CloseEntry is called. - - - Input stream is closed - - - Password is not set, password is invalid, compression method is invalid, - version required to extract is not supported - - - - - Read data descriptor at the end of compressed data. - - - - - Complete cleanup as the final part of closing. - - True if the crc value should be tested - - - - Closes the current zip entry and moves to the next one. - - - The stream is closed - - - The Zip stream ends early - - - - - Returns 1 if there is an entry available - Otherwise returns 0. - - - - - Returns the current size that can be read from the current entry if available - - Thrown if the entry size is not known. - Thrown if no entry is currently available. - - - - Reads a byte from the current zip entry. - - - The byte or -1 if end of stream is reached. - - - - - Handle attempts to read by throwing an . - - The destination array to store data in. - The offset at which data read should be stored. - The maximum number of bytes to read. - Returns the number of bytes actually read. - - - - Handle attempts to read from this entry by throwing an exception - - - - - Handle attempts to read from this entry by throwing an exception - - - - - Perform the initial read on an entry which may include - reading encryption headers and setting up inflation. - - The destination to fill with data read. - The offset to start reading at. - The maximum number of bytes to read. - The actual number of bytes read. - - - - Read a block of bytes from the stream. - - The destination for the bytes. - The index to start storing data. - The number of bytes to attempt to read. - Returns the number of bytes read. - Zero bytes read means end of stream. - - - - Reads a block of bytes from the current zip entry. - - - The number of bytes read (this may be less than the length requested, even before the end of stream), or 0 on end of stream. - - - An i/o error occurred. - - - The deflated stream is corrupted. - - - The stream is not open. - - - - - Closes the zip input stream - - - - - ZipNameTransform transforms names as per the Zip file naming convention. - - The use of absolute names is supported although its use is not valid - according to Zip naming conventions, and should not be used if maximum compatability is desired. - - - - Initialize a new instance of - - - - - Initialize a new instance of - - The string to trim from the front of paths if found. - - - - Static constructor. - - - - - Transform a windows directory name according to the Zip file naming conventions. - - The directory name to transform. - The transformed name. - - - - Transform a windows file name according to the Zip file naming conventions. - - The file name to transform. - The transformed name. - - - - Get/set the path prefix to be trimmed from paths if present. - - The prefix is trimmed before any conversion from - a windows path is done. - - - - Force a name to be valid by replacing invalid characters with a fixed value - - The name to force valid - The replacement character to use. - Returns a valid name - - - - Test a name to see if it is a valid name for a zip entry. - - The name to test. - If true checking is relaxed about windows file names and absolute paths. - Returns true if the name is a valid zip name; false otherwise. - Zip path names are actually in Unix format, and should only contain relative paths. - This means that any path stored should not contain a drive or - device letter, or a leading slash. All slashes should forward slashes '/'. - An empty name is valid for a file where the input comes from standard input. - A null name is not considered valid. - - - - - Test a name to see if it is a valid name for a zip entry. - - The name to test. - Returns true if the name is a valid zip name; false otherwise. - Zip path names are actually in unix format, - and should only contain relative paths if a path is present. - This means that the path stored should not contain a drive or - device letter, or a leading slash. All slashes should forward slashes '/'. - An empty name is valid where the input comes from standard input. - A null name is not considered valid. - - - - - An implementation of INameTransform that transforms entry paths as per the Zip file naming convention. - Strips path roots and puts directory separators in the correct format ('/') - - - - - Initialize a new instance of - - - - - Transform a windows directory name according to the Zip file naming conventions. - - The directory name to transform. - The transformed name. - - - - Transform a windows file name according to the Zip file naming conventions. - - The file name to transform. - The transformed name. - - - - This is a DeflaterOutputStream that writes the files into a zip - archive one after another. It has a special method to start a new - zip entry. The zip entries contains information about the file name - size, compressed size, CRC, etc. - - It includes support for Stored and Deflated entries. - This class is not thread safe. -
-
Author of the original java version : Jochen Hoenicke -
- This sample shows how to create a zip file - - using System; - using System.IO; - - using ICSharpCode.SharpZipLib.Core; - using ICSharpCode.SharpZipLib.Zip; - - class MainClass - { - public static void Main(string[] args) - { - string[] filenames = Directory.GetFiles(args[0]); - byte[] buffer = new byte[4096]; - - using ( ZipOutputStream s = new ZipOutputStream(File.Create(args[1])) ) { - - s.SetLevel(9); // 0 - store only to 9 - means best compression - - foreach (string file in filenames) { - ZipEntry entry = new ZipEntry(file); - s.PutNextEntry(entry); - - using (FileStream fs = File.OpenRead(file)) { - StreamUtils.Copy(fs, s, buffer); - } - } - } - } - } - - -
- - - Creates a new Zip output stream, writing a zip archive. - - - The output stream to which the archive contents are written. - - - - - Creates a new Zip output stream, writing a zip archive. - - The output stream to which the archive contents are written. - Size of the buffer to use. - - - - Gets a flag value of true if the central header has been added for this archive; false if it has not been added. - - No further entries can be added once this has been done. - - - - Set the zip file comment. - - - The comment text for the entire archive. - - - The converted comment is longer than 0xffff bytes. - - - - - Sets the compression level. The new level will be activated - immediately. - - The new compression level (1 to 9). - - Level specified is not supported. - - - - - - Get the current deflater compression level - - The current compression level - - - - Get / set a value indicating how Zip64 Extension usage is determined when adding entries. - - Older archivers may not understand Zip64 extensions. - If backwards compatability is an issue be careful when adding entries to an archive. - Setting this property to off is workable but less desirable as in those circumstances adding a file - larger then 4GB will fail. - - - - Used for transforming the names of entries added by . - Defaults to , set to null to disable transforms and use names as supplied. - - - - - Get/set the password used for encryption. - - When set to null or if the password is empty no encryption is performed - - - - Write an unsigned short in little endian byte order. - - - - - Write an int in little endian byte order. - - - - - Write an int in little endian byte order. - - - - - Starts a new Zip entry. It automatically closes the previous - entry if present. - All entry elements bar name are optional, but must be correct if present. - If the compression method is stored and the output is not patchable - the compression for that entry is automatically changed to deflate level 0 - - - the entry. - - - if entry passed is null. - - - if an I/O error occurred. - - - if stream was finished - - - Too many entries in the Zip file
- Entry name is too long
- Finish has already been called
-
- - The Compression method specified for the entry is unsupported. - -
- - - Closes the current entry, updating header and footer information as required - - - Invalid entry field values. - - - An I/O error occurs. - - - No entry is active. - - - - - Initializes encryption keys based on given . - - The password. - - - - Initializes encryption keys based on given password. - - - - - Writes the given buffer to the current entry. - - The buffer containing data to write. - The offset of the first byte to write. - The number of bytes to write. - Archive size is invalid - No entry is active. - - - - Finishes the stream. This will write the central directory at the - end of the zip file and flush the stream. - - - This is automatically called when the stream is closed. - - - An I/O error occurs. - - - Comment exceeds the maximum length
- Entry name exceeds the maximum length -
-
- - - Flushes the stream by calling Flush on the deflater stream unless - the current compression method is . Then it flushes the underlying output stream. - - - - - The entries for the archive. - - - - - Used to track the crc of data added to entries. - - - - - The current entry being added. - - - - - Used to track the size of data for an entry during writing. - - - - - Offset to be recorded for each entry in the central header. - - - - - Comment for the entire archive recorded in central header. - - - - - Flag indicating that header patching is required for the current entry. - - - - - Position to patch crc - - - - - Position to patch size. - - - - - The password to use when encrypting archive entries. - - - - - This static class contains functions for encoding and decoding zip file strings - - - - Code page backing field - - The original Zip specification (https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT) states - that file names should only be encoded with IBM Code Page 437 or UTF-8. - In practice, most zip apps use OEM or system encoding (typically cp437 on Windows). - Let's be good citizens and default to UTF-8 http://utf8everywhere.org/ - - - - Automatically select codepage while opening archive - see https://github.com/icsharpcode/SharpZipLib/pull/280#issuecomment-433608324 - - - - - Encoding used for string conversion. Setting this to 65001 (UTF-8) will - also set the Language encoding flag to indicate UTF-8 encoded file names. - - - - - Attempt to get the operating system default codepage, or failing that, to - the fallback code page IBM 437. - - - - - Get whether the default codepage is set to UTF-8. Setting this property to false will - set the to - - - Get OEM codepage from NetFX, which parses the NLP file with culture info table etc etc. - But sometimes it yields the special value of 1 which is nicknamed CodePageNoOEM in sources (might also mean CP_OEMCP, but Encoding puts it so). - This was observed on Ukranian and Hindu systems. - Given this value, throws an . - So replace it with , (IBM 437 which is the default code page in a default Windows installation console. - - - - - Convert a portion of a byte array to a string using - - - Data to convert to string - - - Number of bytes to convert starting from index 0 - - - data[0]..data[count - 1] converted to a string - - - - - Convert a byte array to a string using - - - Byte array to convert - - - dataconverted to a string - - - - - Convert a byte array to a string using - - The applicable general purpose bits flags - - Byte array to convert - - The number of bytes to convert. - - dataconverted to a string - - - - - Convert a byte array to a string using - - - Byte array to convert - - The applicable general purpose bits flags - - dataconverted to a string - - - - - Convert a string to a byte array using - - - String to convert to an array - - Converted array - - - - Convert a string to a byte array using - - The applicable general purpose bits flags - - String to convert to an array - - Converted array - -
-
diff --git a/pyaedt/dlls/PDFReport/MigraDocCore.DocumentObjectModel.dll b/pyaedt/dlls/PDFReport/MigraDocCore.DocumentObjectModel.dll deleted file mode 100644 index 2dd5eefb774a96f04c7efca19440e454ffeb9337..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 238592 zcmdqK37lL-wLjju_x9~&mZUS2o-B|V0tuJyp2;#SVG$xIAR@bv1qqu-AaJ24K}b&z z5hN;vMQ{Pc1r!ueSw-}@;ED_IBB&rB;)YKV1eGVECcp3ZoT_`PI}?`Q`@Q%1zyCmP z*IBCS)TvXa)?4>2OE1g#nM@|YzfGGmnY;1JzeVzV`Nvw2yZgV~ow>7c|2B6|IPm^$ zjyQS6$iNx(_#O4*P8&GkxYJLMR}CEh_JR89(+5_ZKJbQv4<9%!KJo2CU0ucPOwxzE zF_SrPf}h#-YZqK(b9*u~YoKGoyiDe5NS0UZ17AXT0O5NmZDx{$J(ZgX%CCP20na}_ zbL<6V<^Sog0g1w21L+>j0MdPLmVvgvC;dz(P%H2DGe@+MUKSikL>IO^;QgHlL#y6? z_A0;O%zk#hT)0xg#wH-j;Pa*FYPdYRA<;+&rei$?BmLY%?vv$bw7g6V|Wn9rfIUtfk;id(-Q(v7o- z5rPVGR-ADG`ZU4->Qz zsfg$(AWcLVFEZmZT8;-Jo-YxJT90fsq94Wuq&ugwZfskmFxb0+^(IC&atlOXORSJ8 zVlOLN?FE|J+zzWmsvXuOD0VoQVu#Y;+%yO$Wuwh!u*FVK`Jcv&{S0u{(1?b zT*bkT`lV3g2ntqQ<4v5fu}o5o!WH9(pxN@q2}ui}IYL3Aw?E?7qrFAaI7ljnjqOm* z+SZ{4VrV{W5~Xn1q)~^B*_Md`WnxGPmI;nRQ({1w7z!KmG%3xoObjR!Lt#UnhAFa4 z3@8&rVMCsV2~A0}V?dc03LElNCitx&bEc`c5!88ccKs@vpcFes%>!|*Af#l9xLFV) zpd!8`2q~5#z9R^cP7#j@LL?z#lMYODuUQWy(uPaV{^h1b|?B7K8+VKs6{r0zj~B3x@=N zU<((71kOS|fED!+0p`!J){0QUE;Y#xKmv0-zc<6ZXF`FxOJ*n-TE#;4Fdwi4m&1Kh!*2Fh+T+joX?gZJgJBG zMp-K=fu;dC?40aHV-zBGA*Qh{6y`<5y4?#a(oF;P=%nF7Ok*EOgIG5W*1eks>e5NW zg_y<)NrPB74H|@-#*Qs%xDeC0NYWtINkg2FIP1a5>IZy5^~NPIdg782GMlwrn^eWY|wt4C`+cVO2}-New`>w{*Fs#6Zh*xDLLt@O`meK@vXj=VmOpy zQ~**efRu|M3jvV6mLR19NU;bq8-UD*AcX=*sVcn~7N8|^Sdc}J6nW(A<|{?a6O=Wk%EW9^^%@V^xeYCF6+Tz6d2g${}6okOrWW=avt4 zIjA31${cJu5s((;ihc_TNh07!PZ6R&`3?q#=!;8ZFxXd7Cp>D$If)N| z_s_%m`Yo`uV$~Irl)r-VZ$d%CPsAU{krLK_LP}Ww1%BxEinTmy_yr6*D=xDXNQ$+H zBi1(3^UFzke$m(QbV=ZRet6sZFOjwvy#dOk(?DY?)}Lo~sJ>!x;UkQ+S@Cu-u@)f~ z+{DH*t5-%iZrp1ScgDp~&4k%yiE!QQJ}=rl&ULe=)?YxD*Ug^RD#&%Sr%QU*MQESJ zV)dZD=x)uW>{a^syi~)Bh2rDt*F0J4~f=KGmn$)fa{HucKx`g_og1Zw$ zMh4u2ATlx_T7qO`z�O6DlMP22eCZT|^M(Wx&@H%qQU91PckcPb&y32{5;^bIx1_ zhzxQndFAG5prQ9&$shjBqON8an{^;U{GMrk&oI9+f19V{=|u-anP^wJ%;9b64FKNc z_fIpT+&q21f9ml8lg}dg?%=>#2P_>XSovQi>62!deHq2PTmSRztUe<|a!;F>PQY_Yl*KIR^h+8E9;sxDX z%#Ky*b=y27q6H-47IUO6z*NLWqC;5eM|z3Wevs`BqPGx>y2@rAg5F@Z*0u&V0rsNf zfm~8FzzGC83~(ZW&M=pc(C~`#=qdM|5?Kb9nDz2#9|g9L65C(NG(aw|(7Y@AdS}9Qcw-{~ zqGM1@Od$j#W6R3N{M84*ZPvOx|9S?b;wzpnJwsIpGw zsCCr0g?}G`OT~=a_#kyEubvY&=Vi`=;vrJWUroVkXZzRl7acr{8_M&znpduveBY#X z5=zYs@2aW~r2>YlUW3XGOq0?uZO%*P+A6=lr2_da1@c=8w@|Dbltsqop`^?NYX8cLg<8PliqLJyIhVb562?Jo*w7h@niIo(wDYLwP(utT) zOK}G>a8=7^o``Xy!t`9rF_qN@%mC|dB?GKD39!~Az$#lw9rZv*@567AIua*R4Aq_G zw2@WR8+LdR{a~jT(F1lFukhSn;YtlY882G4q$kL&l*qXyD@(!B#Vb1U3g->nSx~rO z;I08=y(!1GpGVU#94k6gxx&moP-+L{8aoxz?)EOQrqvVe4VjA$3?nXfgyk56g<@xZ z1cTh-TE;7PRrd`GF$RdmRd`H*j0#E3_GBgTQg;0Tpv4%B6$g7t%& zI1s6{wgUT9)#JN(|>=lHtM8YnE37Tc4XoRgwNZ$?5KhtC(jX_ik7xt(pgVVmLF zcRSNo&d|LgEz%pMkJF*}fyhr5(JNzEB9&hKLHwQo9rBl!{NMVSOpjg0ficTJ}%QxOGBiw>*@Czky9JKDSAER)J^W;iq3R z;A(={qBG!G1b@8gTmxbyhEyB(Y=V!!@PeV9L-5q1d*8m8wBrv+EPaeLeGZU zB>1c9g$5iWSgBlZz;g+{=k6yAxR&52KDOL|Xotus5%N5OGgmxlsOJ+rKGrSbQi);}tB-pX;ZW9-L!N83--e|z} z1T!aE=8FlQ`o*sr>Lmm(%3Nf?O9{?B^{ocHOyaJ$LcX8ieG9HK)XRmM#Jz&xnh*Wn zP(MKMqOV+Pzz+)ey8R9KA%X`VJlB99CitTVtdLg{d?@n)L%oXN6}?uBs|jxUx@GS+^VTV+5aj$tLx2pmN1L>j|!1yVig=2=iJi^QQ^U-Sjy_{S3k967#;1;GHXM$~O@_ z`sn)&^UVa$%e>iup9R?eoC^FolGZ7#sYk4Y7(BB$Hsw1BZrb#uiTeeD558pE@?8WUdgviT{UX83p1sU~cN6@^T~>@Q z5nS^L3x1j4O}7si=6@sj(gW`?;8zG<_1${070NUf_|yykGT@I1W)jo=3BheIIn_{qD%9(3 zQV$FGMhiYd@TX_kR`4@|H~q)6ChnsIul&cA27HX*v(MgQz{d$*amHf?{5ip&{K=;L z1i>#oYQbL+-0K3{D4rzv!+R|Cmjr+QiJzOKens%9C#{|Qn&8@`et$y{$}r5oC3xwj zUoqfQ1b?~W^#=SM!Jao-hxs1_>uaqc{hr{lpZcp|{sY0IE*di6(*&P=!DjSFf`f;B z!cdi!48 zJD#v6`cHsUG~T~Rc_Hb*Hxfhzm}E8)TyX!@2Fzg3H5pClI2~SsXF)KR@p>y>{1%LE zieWhQgvA`V6g$eD3oikOmyZty*j4C1dZ*4p|JaS0s-Sc7JlDYj}zHhN4+dp@Ba<0B#!T@|{wVbOToM5VX z46qMn!ldQHy-r0Db21yRXgM%~kaCoZUJcVJmSc8tFsvVrG%8Mka`h!is^!k=ZfVJ8 z4fUW!8hI15^-d{dJN?0qF%9vAZzW>?hr|4;6};)i{@iKUhb&w z=;cHWo%#NOVW4t@6Z6qw;2tdJ`E7a0$$n8i;h4nEYeJ1wOi0v5X%dK=Dwo@fbhsigam-_EkXiPt`DGG{PV`P;aQz5 zILvW~JcApi+PSW7m*6N0kkeX`ML|w)MRrI^{YLWgdziBV0ui&L)Ilm$L~B#OOG~CPPZF#}1gLFfkDC zYO@I&ge}uV%fvwZ6gD`T422DOn!^Gg^BMv9`utk22K}Lq`UxN+q@$a~0f--PUeLNM9KfmS&gH!xku6}Dab4E2=|2BSf5yDRwAqKmG6sYyPl-7tf zSjieMLObV~px2?CnEy-ee*7$ugoLQj4W5(@Tg37k!>xzqdGsC%{}J%&U04O!F`|7$ ze>PiD1pMePgs{0!h0EqXhB2ys#krgN$ih1|bSf zG1*}wkZ!)wAQKXSlti;kNCZ+6%{19&BVe}KkQdE1DK-I9Y>;Ti$vFiA=9~gbNt2OM z{>GY-;@nb_hoxi_uy%3!1S|%?#(hWM@jsA;Uw;6Wp@#)x9G=8sullcu!8j#EPSJY& z`tbvJdZSdA?mlC4`H$f8qRT*VHkVa}azp?u#gHslkcExjobeJ>T9%ryV8RlvrwcGF zqEgGUSXe$x7CHpOBC7oZ3}p}*treE5$g)2dRI(_DQSsl%Qu6Dc7nYBJ#ZX1da{2)Y zd{d|&Wdi%z1h9n`Ae}jW9P-CnxTvCzrL|N?Y=){MKhA5EiTJ5}$oJyw5eRBn3X%2^ z#9sw$nvMe4V=l2)dpFSYI9qhY3W@zO#%ny(<3|{&X#nFL8m;;>^dpHsn~3(0f2ENK z^;`5pX_N2}TqEskp+V>xc;>Y7%p8{oMOzll?AF`m{IcblBN=L471>AwqLF%W3ZAz6GHoqZx92*AT%si zw+Ultzqkr2L(Z$;NO8JytN05)O;Zcww{l$Y@DrtQ^#ClpGhYky@sYqi&a@{Wx`*Cx zaCcT!CbMpAvf3gI%CSXag;aUTbn899m|$-joRS91X|Rt$Jq5Ax|2Dcg8(|F|1|+=) z#Yo&Jfz*vstb{}$B~i?TL?9(m?1V%hC9xO@iGU$NZ|r+-r#_{QMiWlsW5uKDDXa*? z=}?Dz^HB>pbzA?ZI3MEGHAVMq#*)v`lM-)OFgb5aWvZ|cZ&<#z8Ot1DAzoOL12yZ$ zrlK_PK-8*J>%Y|a5cSRN3Q1ODxt6z!@)oF(snKX zj8^_##^uMExpKS#X`-hTS=c~sqYRg%@a=$u)oe_)&Oi#|X<2r*^54N2yV)4=7h1tP z2^wB6{$dMs7a^2(I`zg8v;@xcYg_p-%UbL5z33;{u+g)%zR5YP9AJjABa5No<_tzZ z2>rmlh~u^3#66Yg=e=_L2Ntw9=^fa})&C=n%vPc=8S9czRKL~{=0=v-9N>@UV%o!G zx(cW*r{`NMywZ zyh+juwVaI1a}M%kTXkeY?=c@kZ;Fq(r=%h#06l6SQL}RTF-$a(?`5Ss5;gTG#I>@C zx{%%s^f?@>LvqtL)LsT<|CKTfdVLr!GZY_-+=|s1Exx|inTvmdga?Ci=M!5SFaLAv zq(fWGlBP4HS0c$r&D~Ez`-6Y9|;@tZ4{3I0rP`7V#0t-RWDo&;sOdwv>xH-j4@L=g9_GwTb4 zK7s|F=DL*iJ!$a03~IlOyjZ?dB-j6ud`*Y0`L6q)%U8u+7dFpA)PB>2DBFu_IUv!{zJ7vdQ5A1yEn>S<^2=ijF)Ak~nJ#CGn;C_rr9oYFC zA}0e8W^v%8X}X-4xPg;T;bb7f{1==wN9F97G%;oaC!a&zNRxpGgSD_)@keRJZmJld zf|pN8m4OJuL8Qu75XoFpCB?iCoO}u=0}-ao;AA7w!{&oHZ0^UHK!?T28FSd&g(M~s z5hiKYUY=8P$!xiPwjIBIwpbHe)cF=wOv1PtZB^hjSAmQ(uD(bZS3M-8rN@c|8&fhe zPFohoJ8WAr-jM)!#d5x?Vw2&WQ}HjE&gPDE<| zK{%6$)F88A|0H5k!vki3nAE)UA$CtP86wm60VIbn#}>niybOYYx}M$sLXhDY+Kiu9 zW60v|x}BHFh&RAUk0Z@h#ExD@!Ra-2y%NcL5vDp}M{ery_I~|XP7|bL8_Rox)^_+= z&uHhS4^ML{v)1X?&q6#yoJnF*og|)@60wH8pI^URa$(Uomf_aM&!v77xl*y?6Cq~( zRv`5Zw_nG&`i!s+Pox;h->s*}u};S)V%qgxNt!NDCrnOVVnt|!Q0ej9<*l@K!SblE z(AA}jMs9tB1up?We6~oJCA9#sz*&QZ?QA{!ZzD@;0ALC8WMLb1Q%TJMEHj0LF4AR5 z4GS#iW2oarY`5v#F@AjkB5I}i^_>~!G_}*!;1s;tiAc_z)emYr1+{%#CM*EAF>R+9 zx665Xr4M@%)m@IRU`H&kdk!e7YqBqI>ud{4mA~Pf95gD$0X zq426H^41<~xGPATG2a}0rHa-BSj*b6F@dDnGl5q!15JQ7pgj{4NQ{IDypoY<0<;kA z1eri$LQLS5Oh^+*dt4@v7#I_HB?H?vsG+uKT|L3%!09s+kZ&Z7YlHdZ9o+Z98(l{4&_$J`yB;%|qvNYo? z&XH${50yDGDcBFX5c$Yf4+HUM5V^^a66~D#V#~xp3>OU!LOfbTP3dxeB26pbsp8fu317O} z%Jc_R@+HgnmrxhI z8)ztw)e<|#2UaF@CzM^TG1Y@yl(A2{w8`!nYLhWPZ4q7%{khm8Nw7ueTy2qo7(1_F zlOZKoTYSG|Vjw=1)x=QPkf*UlnBUom?#JhXj+wVYL3|p)gm^k3*d|%ywJjtJ_EHiC zLn(l+G6mobQvjaLNgREY1HoxI5Ij&C4IaQDt#nCewUFM~0-fCgokJ)s=bBcq(F%^X zL~XVb$6APJO^$GJE9)68#4}ro^%mlY1I4QV%(2xFuXdqy-&O0+dWHWL5c~)2Rs09W zv1+}FbNvT-=%Hk&$~i4mAwc4xqT^|i9C%Pm1pJuOSsLprkvP^!V{ulS#NtpOC2<;? zkl4wmB+gqC61(q|#3^M$Vz-!*WX@tYMW~vq-*6`3jONr)UOf`zxn|rD1AHw+I=&m1nXBnXqgz$fdE5cL!N0L{~^>@ z(#I3fAqOi|ph5AV3NAg>$`d9^{J@v=sA4DqNJ-3RI8OYrdH-Cz!|0->AsT)!L!}Ldv)sp&e5-igWGV75xCh$CukqBY- z3SR^(%=%))9n97L2?)n`iUm8r{ZBMI-=5TX)^03ws6!2Gd8jj|wXKStTFxv;BfZTw zQmTlJl)tu-VmD{q*oT2YJ7tS;+9|O@!jg}+NS;-YVYeODP=C_)npUqmrcu2%Xh+ia z7>LhB>6;9NLa=R*7AQ;%C=)}Wn5Jc-@d*y_ZLkm3cDW5KjADs}jaeZT=UNzfXpNLET%$&S+%de-!&|0^K4h-+X`;v!_! zOh|FAiy)Sr8{1FPxe-W4&7*8Z$%#b*W-%Q(&}JnE8C?=moSOr&W?uhOw1pkm7Sil= zcD_5eSEtAtYkev^ub=T~!$M%!`1KkPGJdS@jgS{Ti5ji5-_zsaE5IeEl=WbB0_u{l zr{ez{^MS#EuzsYZ@GGQ%t1vc}=`ZvZY&27xQ>lZ?tE6yv}gMu=nO09x7!6RtBgF20vQ*btTJ+(go4R9iTmv*qo&RFefbFc9zyL1 z9M-@g$EZ$)>{sR4jRXwB^4ve+SjRk^2!z^;{o4-D_WFn75rn4 zmD6p^Bx$Gw(p@iRD!X11KznD_$*ExiX7fz?a#))Dd83k~G#)I+)}`@04})6I;+cgu zrkEV_{gANyg)Ficq-$}KnLRxFU152FEc>ClBo&MlKZRt_c32jt?GP)ZEsqozNa_8$ zS45lOco&IXuZfZ5Bu1=|V8P-<7QP4q z0-ZSmPXj=pGn@|K2~wtmLf}WF00?IS_%p~ zUld)6{zMC;`(5|E*TGdsUxst-r7q`Tmh%b+8;qA`WH?)LGMoc$?0k8CSCC&BU1CKn z0O1!L1Vl^6~@$^YR3?{MjyrR{}t=bqYcP zK(LJpLIOarr3yj1k%$7Y{dzQfFU6nwrWX60zj~B3qk@&mn}Sr zOdw5{Ej}R;NJ(t>iKYmoN~9l1Ms@^}WefPg37J_iCrr;VKlvf7PTsS@vRx^RzXMmQ zhi@_A<@r$cnOHEDzp*bOsonmD@W@8^^0fp7H$C14{1Pn3ej3c$V0|h)b#yt5BF-ha zSqZKq!Ocr>T?uZF1UE6krF^Ava6Jj`4N2T-E#U*Afiz41!n^QDWRmthW%)Y=K4`DBUDu zGG>zuiw**v0itZRYZ(*nKMP2+tnqzhXhy9T0K`CkR0b7d1q`a%MxFT_#?O<9&Q zE=75pgcRp4Wf04?SK4yA>_JFzE-$eh-moDiSrRZ=a+B*;yB0uZt_ASdt_5Il@Kt~^ zIFNwu1>BFei7puX3`FjB3qW)`NiL?_*&hz2_1r{Kbmv&xfL}j`o+s5y`ntEo_F9ie zu>7xj&%iX)2jD^c_@7X!dD{`o=4w1C1v9p(?e2rDvB2j zl#B9G3r6kLSkukNry#Gc!s-x7)s8Hz;%~eNQt+zJzYf1aUUcliZHHd844mS~;-e8F zW(hG%6$tZvOQLrWaSR@K$F7*eMO*SthP-fRyv9>VdcpZ2rO~9brR-)&1Cu75_3(xV zOCYa0yP4!lS}>}Tdd2Xmo=k&_`*(eJ1Zn8b2Y@c4W5*l^yS zyvQjpz6A3h=gUN|^j7Fjh@^VH8hIceIXhm5f#^C)FW#=P>rusz#%DvUj@%_HFkh;k zk}F)D&a(j8_OSO%f@`I7|+|BAA?lR=Sm|yxrp6oo)wfs z1)IIOt#-n4rTl5;^fQ!i3ey_*J!tONO6MC<|!cPJ@`VT88hY!Fw6p014f+ zz9-0mR^$&PlBD{>H2!^Q@PRb=?7ZI zKs4@hml!VvG>0R1660e@!`P4JnyktYFsm{cLb7}^gzUAYRh&D7BoAMTp{dI-Py&cd zHA`fS1j8mF#krA*r3`Ew$)XW~bkT^7B_R<=*QwZeBufcE1~wrVFoTltTbVE+#kmO+%d*f5BmxsK0^eZH1Ywuc!!0*{eH3G= z-Uv<)A1^TDX@$_v=zH;kt&H(870_z{oYQ!bF4V~@q8pf^xY1}0x`Y}oVEK6BbdCAR zT84Zct3eCQ$}{>E_CtA2{~8YeqpJ{UJzcF?1YxD?f{aEaoNWl!epl;OiFiFD?wv-Y zfw~b1XT^S#4|081B7U?jBJ0tONI2UNtj+N$iFjLEL{^y_k#JUOG|6$JM8x`Ji>R!8 zHzMJz*hUhu+(qSJMW`jB7`~%b!r6vktyXIi@kT~ur(?9rmgD9~I4cb+$?-sm`02JB zr3uSwl2!-dY(ubkD@p3{M2UDUBRWfB(!iaFgtHC7+K6Kk@sn*4#gd(fgtHC7+K5+5 zM9e!|a+EgfL?oPT2-ZftT_WDn7E%0wqgBG$hG2hX%J`r}{2U{)*H*38{|Kx-kssX* zq7FH{`bLK!&DaufYSzTqF3an)=w|(F{1L>B(aVKZOvDA(E1*}O)NLbR@1I`8?ETwA z|Levc1QN4Xc8t!bhFBpbXZjxo#*7o}nSMdFb-fr*vg?(x)phvAc+Z|6A_;x(Lr6&a zUIyX}L~k;r1lwa`-Cmg(h_9tHW+;>sY?kRKmWcsnVkm6L({!spwM-1?DOQHUhCEHT zs=f>7hcj?Xc0U0_T*&Li*dW6TgXQ@}+{LgY{w)NS8z-Visr4H{WY0>#oO?wtEKm^N z+(NvS5c*k(cbf}*)&)M_66toAbVmzG2C+%juMtB3K&?yvu!-s=q&T;KAeMazl`p)X zuvMWrmzO-`rS?-^LW*;Fi6t*9L3nRK(VB!5=kgNEK8og+EJqQryFr{M?S;C-d>3m= zWH+l5#p(_Uhw-P8zTRSl1Ege8lq?Wec$5MsC?3K_(W_4D2v|q0H7%mr)B2c^3kzL| z{AQtRfNk?X#cs@fWU}M(5F~|4BB;|igw|JiaK3ec+p4K{>mT-Z3DmJA9Oe>OeB%f7 z7B5*l_cMn;R{mjm?+y$Z=+-Lukh@QN!lM+W#Uil$wanDkyY0#=vzkM?%L{UCedcMqh6 za^Hz^d(rdAxmcZS?gya=W@Xb{Kk}5l6$Ceigt_FBDSI!-%$mJp>StPR%I%b!*fBm# zS&pL8@#jr#J_fAUKX5U7!sZhM2CyoYX+FuIT${m{?oUK*+PgfOa3_HmXv}Q$aX|iR zw1x>a6y&ccGw)uXT8^GJK^z{CAO?@jOa_k<0D_SPA%Vj@#VF%qNg7AuUE~r)e%WjM z3Q=pbz4{u67X1TxdG*H`Y+!J=9t~qcG|D9}Qe-XgK$PlrY_ERwH{dYie+%foJm*I4 zr4BQ2=4lfXL^B|do@06em}(BOHdkP>>+s7wb+sDgieJ`f%CSU{^&!R{W2wiZ zO4_7$ge0-Kjk- zsV_kJ`K6%ZlFsTmx%|8-g7M`HW0&MLX+rgIzkeVfzYARW*3XpT?F2l}g5yRR&~(aJ z@uu=MJs&6jRG>){yn-5(RJB&_?2hv5&cQvp{2a(HP>JRFFsc_-4WfsyLk}1b<8@7^ z(x(hTb*9*T+2~&^Vp8xx5f#mV1Bm4&?RnF)HGD&@1e?{;PMUzLa>RD&tb!fjo=h@)|B{D&uPpQ5PMh-bO%c@uEM=vk3H@%GHMM zM?%{Y+worX7sk?~tC~y)8}hzh34wSyOcOVOnox$}a@a_60QXA~S)O9ylUtSK{Y9jz@Z=!S?=>o)7 zd~O3=)dVL^EU`=E;Cd3|rSJX8y^aqo<0kPA+EP3cda{$Vk;HpXdp!DnC%>(2e!6xF z=hm9dzOC#BYmrCZ3qI~dILD3O2NZTFoD;`_F(t>j8FZ+69yxN$4=Eja28VLdh2V=X z!ehgnR@&s;hJ0%cOl^_g(NFzAXj|`z_IdYeaZYMheC7rD;QMLC_)r7mi#6~4~ zS!%#K)-rjmzYm3T*FTuLUeT0XCNYgHY+kZ_;GD5}3cMIyvlPxKlh`pnq~6eo<q+0sBL(XczegNdmta7) z)|(6|!7MqjAJX?FDd4M<%$M(($wg-RH8Xs#EMmFhf5$Wfy>Jk1U;w7{JLCs*7jpb@ zbd6kDP~J}v!X%ib)JgEyJP}!D&zFKK(rOx5O%1?=a^2=Fi3K44+;IJFBzu z9$2<3wX)!b;0nm{j&5gu@Ua$|MJI2!wlc~lA=j(b4s?p^O5N=VQ(yEmG@Tjh5pKd14|pd{+{K}&RB3!^vrpReJ0aUXV#kAsRpYhu zdJkwAYYav%pPP(?#97F(pp(T&4eQL0RYsQllL|?Q<`Udrr0O%c( z^%(-``b>~H$II|Lv!yZ5&jiKZj^0kJh$Jy&MZ`&N*AroiUc|a_q&?cTmQ*1q#Y0Ic zLJUQzL$M2y92Zry33cYBMWI$mj-a~`2fAa9Iv1`*Zm%LD#mR}m7#lyrNvtQp6ho48 z-u`xjj{0b`Ui>O`N@9rXp=m=$EqfX+4=UN}-IS^q5ons`+cp45PS~%y3jC z%`ESia+;YAl3#0P(DQvzs=Nc=ZaE#fLBF>ORZ6|&;@K$T9DDh^>@dZ$2=)ebe$EaO zKEg+4KQ9SrjmA^4BSiZrZrlh>E-SBOn%V|*RM-ptEA^*zk?25=b&iW+rSRY5>Rq-VTMVyHO-t&^OsXh z|JOh|?ElhlXY7R3{;$5B;YO5xc!XVcF?4$4Pz+ytfFYK)i!&x4g0Obz30q;Ps;wO7I#GG4I3*w!2Q?E7V*XhdPiDK;t&ZKhse4d z4zv!$)%K3yJK*8$z9t6%P#(J)?L|Uyv3=3k(4!dTNgf)*u$HAGaaluYQ_%+@UHl&Ny3QpW4FyF0wPume{AYuwOxT#@Q14^cME($<8=iVxQ5%{zbAg z&X(A>YGMCA*%@a`>|3|6KSp-O*%JHA7WQYz&Ny3Q?=Q6QZz4bY|IPVr-4uFXk!8j! zv+VH7EPUl#+VGZT*=5VAXrt?M8sPLeZFKl}nfZR2v^-Nb&OvY+3VbIPig>R|;%3ag z(h}rn4qr&u(2v( zf+?q;6#3N?rQGTPOzoY^<}13_)0>%P?ttgo56(MkzZ%4tvlIvC2C>cnYQ4~(pgOQV zjKWCr0Rr;r5fFE21`*p%dbC7)90Rs8BO~2KLO)KZ-E%= zxdd#^vq+ZqRVh74bP!pnIKv`YTb2n^n93n!p&E4o#tba|`b42J4_u<{-Xy#PUo}gI z>Zsm43`feSg#W;Ab$|2S4ZP^EK$)#f_!1B$ZIN@wqLVDa5l!idoRM z?dQY1=uhClHyR}}C-%H}3Jbe55>~lmB*Y4-vM1K+`1j&oYgvuS2^}~-+m!7I9YLk7 z@g&HA!kx-eTFY8Q%feultjS=NfStXoEnv4$_f=Cy-X#I&Kkzw_^c9BsGM0S>T`L?O zw`ftEE~JIxFdwHl#0sf$xz4q`VD@0=9Ou6OCN_Qo_>M{V(RH`Qn5G|O>@j_}V*~mW zO*vRE!76=kIC2$!*5KoCi0ncA;h&8DAD%@phNBL!MJy-n&BcZm6? zHgP~Yz;WWJch3|eAh0=`DA^h~;K@!gf5wo2o#CJBd4eA(T5 z7a`2WWEV@`(N@eU-YhDhMZU7iXLG?4DdpAc(Da;R-fOTx)vQEbiG5*PL{m1Xh(%Rj z>1D8ikvUlWFy*cljm_XP9OWy9VsB5S20* zd@HoAt$K%R(d(D4G+ZkysQ_E59r2~tLx5KyH@X3lyNKVd@Q=l=o}}_6c_xxCO=TT; z{W42OIVfSum9{G@^|-Y0O48S2Ef9wN0yeu|OhB_{Xvg;a~M2QfQ>7m`$Q7SOTvv=&U}a8jvFp_NEkTD1<#veGZxELMvS zwopIQ$14*$6W!Ajw@~XS!}pp$g7BT?J02Y81qT3Kk;nFW6@Kw zw(|Jbjel%4)tU9<(9>7y?~vzd@*I&TulK6R0-fps3uH1zAHxZ)0P=X+QB2Ng3r^m< z+ajM@+AH&E&-2QB+6rHpPpv`tX5bvuPEhP2(5;pO*T_PFxIU}DhFi8irC~Xp#@Bfx z^C4|68}<(kO~G?;Xd<4~p+YH$(BzA?ycyg6crx4b+P$QEf_lsWElFRi>ISe2^@&M6 z*bjIZ%bca`$m@Y!gM2VbEDE#iGImYQs2&PZK{6X3e0@RcNr62Jbyk-GyBF%LH3b$H zYWaek$Exj8sGpPIE7b+IwyHZ$&Zz!)ZJX9i71y$UskG^%m>AtuCjw+mKO~WqVa=&6=2z2~cH@37m>=rAfE%%X4^Z?Wlb*{^5!0 zk9_e;GBD=^=}I(mjuH;=(qW0uubCEcA|pjbn3>{xZelCg2;qG(cAW54ssVo{v*8Jq zbd2OXbliBRA5FgBJXI61?&km5jCj0={P(FUBL62AAN&e3-|Eah}9MAtu2k z$wm(LFJJS2b`uB_z{L;~)&F&r5EaR}F?}WG4)|75bw|83I@5HEm80S9P@iwhQ1}k_<*CHo8Mz8 z4o;S#>XGB{UazcD9D{;OrOKJ88_|Cp!TPWB{gpoXI_YXmzIcRhW*FZGrOXNC-ASlL z-^fs8wbPf){t)2kDqcbmipt7xyIIrUEAIS8rx&*qc+Xr1&jj-6mNq^H5c|a$>BG!hx0Od zrewE%G|yZqXYquB#+5u%wA)kyv)K#5zhH zOsvC+?}bjvl6^9ULyR&e|Vx{#m=(+UvAv^;1IXc(i>pb0Z49*!?)&SV%N z@quWFnIoCUAgqqxvZ}P^HdR}?=2q(p>o|0wudmfSA2-(i2n|+wI>P!d6QDD!Ka&86 zwal|@Jwa};m>k$_Aipk8VrKIp%b01W)PnMJHmnCr|2tj{~IeRapCZXK`?E|?T13GU&EQWe{hDu z)L|Uf3El|J$RZScp$z=rhu?*F;^Ct@tJAD8VMii}zK3G4r!zJE>xJuuZ?Q4O?QoiV zu@tAPkQ$LA_^?-~AlaUv+K-)U;lywfLrIe~wtjFqEg7)aJ@@hIJfw%~Pr$7GPY>RZ zDCH97T*Y2>Vw~{9y>ce$X6P2ZCHlpz6mJOdsgRWGYb@r%^*}hb?W;cV?c*R7J2$)s zzHCMXvx{>Z&~^?UU(94xIOL67!l_Ou7Z>9C2;`C^(YK`2N#4nR-p&pl@9%4ZNh4g) zw|Rbflf}2F|1=AHwv&V`8^K$7M z4nBPr>@ubCb&&J@az`0Ej7P)3V))VG_4{+s9}@gLK)DpCCs*#tSGO+ZO8KjM3Vtcf zEiM&g&wyj55|U##Rl-F*3my|{{0#gR8-U%J3}eV!TyQmIr<;+*gp%B=RPj_Y%h3^M|i-58p z;EAlTuvn5_#iV84+k@MTpw6Crxu>vjfV_E>3hN@p9&~Q~13T@2XJLs9N7IKeBd;-qGRHrKj?}sXng3(W* z6-*-@z)zQn%rl6%b2pTDl>%3@CDnp3t6g)C0^k30=7( zfl!kVfAqU81VT+d{871NLe}~igHV$Xe>AyTLh>NgU$*c z;g8;nXBvZ0lMi374B<-*k_RtXX!7CfwJizZ+a&PekA4SF`INQ9Ak^f;AN^qqfl!kV zfAj|=BvKJ-^5N?>GTR4wk1994kR~K-Oo#zxjvhuO`+6%*Hxj@L$${Jf#Ec1u7hpia=x5*$S65-6Zhg ze8pP`?;(K?=UeJRcrOWjR37lt*KCCJYm)fzM}LE-yj&v$Lh{m(`Ug+G#UO2UFdtx1 z3ojT>@JBiGN!1NjoecS-=(8OgO=eR5=l}^x>rAFq{^&L&U;?5VPUcw2xr-GTG)VrV z%%&|&)|NI={wVWLTZ~A}gYLk`brs7eYb=&; zJDVPMC%{M0@-dvGC(9^I548tAf|ieA!)NRL?W%UPt=7sWBs1UkI)#)vRc^Ne+Jwxf z+bf$@FB59!$$faCs0v4^fNN-Oc3#d$N1=b8b3#o%e7*8N=`3y`fe$~udR$!Ltt9Z_>t+5) zj5|o+!ymm9&(tRoYVsk=>t|u1)E~Wz3!#ZeA=KnU#^oPEJs(Hg8JtiV`5R`;#cne&aU)q!(qNu~UFGsOT3kVSn^@F57P{8v_noxb4+f@$YAD z4vk-vn?qy8{A%>(9`h4TI{68lCRRNyzj_T>vG%cwfyR-r z1yd@4j{@9L-Pd<+(B|fSgg(BA%RY3z%M7YG)X3BJj_7{81Ozd3TW=V~27^hx5%T3? z^0eNFYpFLbcb<^eo3Faeiz+*+q3A1_w_kzSsa>HC`A!e(u(LW%Rh~=b>4g1Ufr|0< zi>lMG{v+n}0TD}{vd=_wB9vEiGHYOyP}3)hT$rAO#b`F39pSFOfVg@~S%)A06u5HC zk3--~Qs&3pu&Iv&rJAj?NTm8Wk!o~y{ihacmLBquLIq2S!Sh)wfyc&<$I zA~wy-;Yst-OTqGfPVNJvdLBajT=X~;jh4^$=4JMQBKU{NA$`pn&~U!Fv)t1~nIb!lFs$O~mo%6pW_25UXc<_KmZie-6^XEsFTM&C+8lK%-L5S1IHC@JAM z5{NQ_T|1s&RtG1Xl8)`T7Id=6RYNWI4cE*9n)Uq z9j5>5$yKM6;E`B>Cb|6hql}uvK63@&;32p+-gJ9}4Z5UP4;V<-E3ooNNp;a8G9(8l zx5(mpAe)313BsXHO(k?u6e_++97uz$B&xhg9MYJNpTUWYfWyI<1maPhp+K#NnGmC} zEQSDs!G(!(I-?L|6apHB7=>j$BwfVa>yuc*#lFD8J$x#eJ8W1U9;K!VM#+WILlHae z3}6I_l8aDs!6=zrM#;r;PshTC(`xI`YU{+>b4R>{iFcXAyGEzCB;GTzG_f|TWVvt$PMp>XwF3J+4$}90m%m=qz=`oh*VPgq*MSBW|HV@tVvm zVJd3$Ss-^dXdXdr6u@rJ*DZ<9$5ekzR-q8q}ge5OR8jC38MTFWwmmGqSSe;@)HkLw8EJbLn z4(uUdqrVjFHNfoyRWuq?p;XjPpEY67rGm6|1C865G=97G*qD@3(n=~7MvtW6YuNdr zHvI-ReS#)&AYp#(l1?RwIHW;cqcI_ZG$w*>V^RjUF{y?$iZmuF%xz4{;5H_+b5_{v zEC0lHh>Vdr);fj$cyt%e3AnyDxU2ehoxjA-WX*^UujgY(L$|G44avqwM^0R6v5FNH z8DPu6veVD&*pdn78yr?*^0N>>oJ&X*#LppZ4km~V#egxC5V^j9-%}}9E$=s$GZL6GW@f7kQm|nQIjx@bl1Nlgaxc@E|u%I6{n%LekO| zupBBX7;nVL)3H zLrSn$@vW~Q;ParE+@PZnrd4wNt}x!#Lb}~0-O)mN_O(HxN2oJ%8ui%d zgK&d0%&jbM7JcGwo-m#T`I;mui|Aj!Lw~x&W1$B3bmQTS;cP7OZHI{7a34-(%K4KI z1I$TRCVJ3|O?3nQL9ZdIfh??BET0;gs5iXxt2f1nOb}>W3M3kB@W~g#Xky6=VFb(z zVK}MJ`cLm2BBVI?jv->1j0~6`fxE%MKmp7voHu#u?V%mI8eH`kVcc1q<9Tx0Ph7vU zxT(^pcyBQ6MkMIvT!WC}TwY=+ft&^Wt&xC$`Mf4ba%9hv2pAG_pt(s7H$XZuLB+W_ zkcT<2ttP4>;J!N-WOl*01OM|~?S#|3tNkx*mYWw=C!i!nN9}ssrp(51auPlgZ=e=Y zP5ORn>({NQZ1?L{reyXTeT6b3^KeW0jXt9n%d)kw@Cb{`B9+J426}}0u&{KKh0e^# zkzPrTTYp(S{$XDU##=eM<+&fG< zmT#0VxnFo&VDXM2J(ly1A+ck8aIf}pHe_7a8U36AdrJ%LU-rM)W@Bl4+c7QMW;q?h zA{pB(I)t!EqSxTFa-P?~)_X8mLSy_P(p*j6CQ(YLyyTY`ARV^#+Du;q&N1MQ`cY8m z2s{xE^83+ju;J$qOo`=yKy0^LLoV8mdA}FqkdYUm3wa+_&k@gmhO(1)8~lRb@|thi z&}Fo}c)D(E4khp1z~Va!BUVV-k6}Ms{!Hf-v1nuRfo6_P%^T;OhMOQ~5+=x*gNZg* zf^wA{*6M(j6c#Y(ymx-=e|KJO-QIz!V$oX@d7mMA`#!Y4iX`-VoP$Yk#envE3@O3( zR-DEN69d}sF{Be9%QW9IF`)e(LppCVOtucO^~U{2^c~xSWpKdQ)>}lTS_yV2wua-> zUXvWkr{_dCcbB;J6JS}=q-xu`33x&;HCVNBT)J{0Zc>85$h^y!X_rHl znGziy>pyXL1k%2NI!gNnLY}D7^_#?^O*Uvda+jh6fS?5lLIOb0jszhAxMgZr9X|w@ zd8Ojq@zDxCSvzj7Z5wlS`04_L(_8N!W~? z9^BV%r%bS|-VbD@Qa4hmm`O%Gx9`DQ)f<16DuUEN6vBiXF8rkKsWV%D1+@&u)~Eem34&B53%X% z6z#1kozr?#ubjr4n^6}_Q08#UBq%-G+ZZ%Go7&igD%SrO$+wN@%FwzGypnV`ip{(p!rlppN0qp}B3S~XSG97K17>Kul zoirH=8}c-BKh-Jgd_?-mgTaxE*A7R4%y_NA=p=d#J`sUFnSG?hlhK#$Bef|>Xx(4J|a(w-#% zUK(e@OCaT?u?nvQ5Sb<`2nirE4L9li2&BCqYcB0y33*bFuDrx@62=NldrCrzb9sqn z+1NmmzL-Ed(_-aHG6S~4J*jXv8S*e0Hm*d|1Z;=Py8UL_-zI#V2C zNHSi3%bIHKZ&@FSJNyZ9@uFi9IdzAos_Z1{*TQl=@*VPKBP%=~RdnlK2bVmxLJjo+ow(l~H?#`Z#U|c@fb|wEqo2X2X6?8q;WYl@ zV%n!(BsKx2hjked-?kjRGOWpFL9;Nem=YyTRDHquWJ!ibMp&DQ`hp9{;`jpUAW22P zRd{Y&Dxw~ninii+ktJ!xuQ&$de%j_^u&Y>VcMP`K_mRHLcG&iPBv$aNX@X|Yy*rbB zAL;EVE7~9p&uN3ij`3mIAcnZ|XPOH)P)*A_B@LdM23MxR(IR*=cY}w{tBGt8Rgx1GNg2uhij$+Ko^9DT|AV zxw9Nk#-lqMPe;?S?@SivKgsVA@c>zV{x_`8-QUY(R-@dSL5F0}8FVeI0k2sUG>5>) zYiLDa`5KyTUn2*8mVK8(Fg%QmCo$vcR9x7Nmp~B+yK`{|e!KJXm5d0Bd;EY-cRubS zHam6s)ZvAtte-~T3iwwYonL<6rI1Tw&wMShXD*+~%=2mVf!7kfUp_65?B^zBe@)r< z4=l&mjwnEyz-tp=(enO9sqi?1{^~V1uomXNT%KtPvtE4)_UJ@@&u9O&X_K7e&h2?W zf@n*HOdk^GA3U^NqS_5RPy_fNOoXF&IvE*$?+1jq9L2fAZ}O0r?NNBoCNCkyxxB=3 zs7^PXbiM@ANfEt~By*|tO`iBBHyQG9jgT&0`g;igK}RnL2>?NNF9-<$L8mVW2|#Q* zHp#CSYHboyoSPr9EF%4z@}j*q2`SFyC6+~Gmy*n*2$*>kNbF*g(i1SH=RAe?7~+4f zwZFnbvVfqQ>#&DIZ}oA7@>V%4?mcP)TjZD+!CvQ?6}gk!u=s@Q;lg>V5p_1GPN<^g;R?C24QcI(xVf6NZ1|Kt*iZ z3{BKf4S??=59z#bjI zxJj-KWs#E+IDvEo&VnZ-0x5}#NE#1;wDC|e35h^TqN0*^MZmNxG&w3R`o7ucCE!Ot zAOsQ>nUDyiBq}x`5ilfZmu>ZM(^kFFBxij$716pbS)5tD z=*zOq5SFjBu}DSOjAjeV-DIJmnv6t$516fkxx#V}Sq@5<4@8faWglVrW*dv>)3PiP zmT$MP*trSTbsJDOni}oMX==m@i7WVMXL#iX7}I<{&7cn5vC=*+wQb;yw-n^MX(l4Q zf&^d`Oe(Q50>;W@Zn)I6FTZ{c${^RN&oNP~qVak;>f(MD&Z!Hg-uB_HACe_+6>ZnI z*NuG!tSCMObc#=`kSZ^k3D1qdcw^!mZcc-rm7q**K9^!|VNm_V#{b*sZOt4bMcpHZ z6=$Y!TppESysL=Eyyf%AQ6>@$#CcGf3@O3R5zs5&1f=L+0?5)y%w z#Ih!}M!?h>x^8AGU3bn3p*XkeCJ#LV^_1j5z~sPt++RXDrGKtpO8Xt9{>A4w-%?zG z7VUgUQNWjP>QY?WFs_w`@o-DS@J6NBmgS4W^0PJ;DZaJ9e;1a=+AL6tW>fi-u>7Jm zm3nptZ2BP#hM+D{TWddyK91{e?}HxBLVb(FEBetLDDz<87ps$^J6Ze}`F%z3@*@5F zkXZfm_%4AayAZ1cKS8GP7eF?j0{RG8qTl0<34Ap<$Q7$|T%HJvO+|il*@>sPC$e*T zJD>2vN}ls1uHzw{%$l{CEZ_<2#%@LJpcT;?omNDwknmN>a`QGoxU=|n{@@~X_$W>{ zn|A=li^8=Ye82_5;)^pk(1~O1i$^jvmhR?BOuxL**Em5Hi z&KM5Gt99c#V+Nw9AW`)#{_1^E%G!<_1Q$UvKdR!1ud+F)Rb-0p0^W&>d#lpBkfYxr zIo!)EMaIz;YJ`=~g2^Bd*Q*k@p824eZk%!~1Hdu{=jLd_Wacj!ap`m4P|2G%)a6Yb zDtKEBWxcIs29JB-ev7=oH}V_)VtL?l=sN*E=mJ+H0Q5oKAlD3blS^JL@5!Ygtrt+o zpF|mP?`BypR4InIQnM?>?V9;euhqnN)2~62(R0i>Rgl*gVIkQl=TD?PYE;nY>osT5 zAAwCr!}z@Mwc_5NA(}doPEy}j;rb{Rz2whyOJ9IS%$n3)5|p0liwthSo8InN@NPlk zjwBcPB_i#nA=5wnzajm$j`28FFkB&JPdq9C<55x3EQ|PT2>`(o2|@yh%+e$SJOb$e zk7Y_o1Pn>)`CF!ZetjGIq8us>{i}##y&JTS{`DnRfYZN9s&*iAs<3!)_v`-;b6)}< zM{%q_npw@RR`+2Ywycpad99TeTe4(X@*!Vf8{amzWqfi&3=5LYB}=Kp=w)3Y<{wSo8Y-uv(Gw>4GO)!o(A)#vog z(4g)_Ms(657JZe1}+&x8kxm2+t2sVOTn6HjE7h~%b;Fk4UL1QE$k6QLrW$mt?d z7!XO#sP2X+DuTuLRRp>H1n7X-wpQu3wG*>Ee=EEfGUiUa{>sn1kIeqx0ruT5=ue3L zO3+fGzfPeK5!KCD^1|d!e&+v7UTO7yC{$PLL!N0nS>|dFW4PSF0L<0yfqpVqBa&PN zEA|mn0eaK-0WCx%`4N1+kC-iwC2OGvwGffyBNQTL%j3#=)`vM6lb1Q!N}ZYF`R8Pm zVMj#sdmRReRA0hM@PbIVL2y`Bia4wwV6bY0AqaG!_M*dwx-5$4*MTzJ{$U|R_F-Kl z#q-NjhOLVgFBu5}2CH8ff=JtmVj{_(nR-@|_juLap%DQ$Hd9YaQbhGiBhy605V~)> zTp9xw2KE*@t=qSW8MVkSMFgt^dkdXiiOATd=YN}MCM)(H%4^E2HN5~D6rWf@T)f!~ z>F5BdRCoJDb>Dg_Nh|6ASvTnbnoI>?+4nFAv{L${ua%N3L2@2^HA^Bad^&f5PTyW;iAP9=+6m+g9(huo&JLl3UI3emvWRZ?Iy)Jdq(H(vc>@qIx3Z zMPy={2n+9t%oUNzX(D15-9FWx&lHMydp>%HM4y&W?t{s?6g>GDY?d1Gb|OPGCOVq0 zF_GI(Aj_X8fM7lIBrm?@&r=M4%!~U*1~_$+y8ghJacIJ zy{vf-WEj>wqB7PzTV=|-6x>u3z?w&~myw-e&ExgSJ28XuPmz9)vbeqT(<$^1DfEvi z^iM?96e-Xr|F_djn+hF4)1w!nZeA}$A~kcMuF_)(f;yqb!Vm-u>MaaGz@YZR5Cru` zU%Vez{_xRs_CN0YSTfelTrE^q)3CIiJ5n=Wud_H(I*YY|Dls=PV^8EX5jiYPgsONV zTSerEG!d4^6S+-94he{)`jbCH6#WU!=j%_%?I%!s7$(n9%Fo@Gd=^12`dkX#l|uhQ zbZ56tRoyFjJ`?i=i6r})FQ?E~h{hg;(rNcU)V}EdPX2gxCl%25KaQk}!3y-_U*md8 zYQD`NjQh_(YZ>>6BribZK4L0BPo@8=g@`1NMHk#h%Fi$8LPV4hF}qiwd&m}JG!>OGdW%+D@%&>nW!T7Qes4FGL~6g5 z?%)NHNCnY7ydV;(Ai9eeL?RVLr|}vz3AaH*4Z4mOL?Sigpe>~|>$QDNv9G^0l;IkH zh80;^FOX6^zbv_wrF}*AuiDy*=a;1nWoh7)EGfnF%aTir()GPf84{^mU~CFr5D7O3 zPkb_`hC+Pqj!3iJ{S=xyw(yv!u!(^EF4?lHi@A2lcnFiHQ|Y_v7&P{>&8Q{2yLeRS zA(Trtd42P$T(`#cCUfCnPNHhjw5jmM6?6chdTKr3kJT4-q21U9*@wUJ* zF<|r1%OTn3(#s)wj}BlRc`GZ{n+{+tc>%0B9qbU1n;AQEm6=NeDCHno(e zg<0XI(qG=`;5{mQ5ggN9?YH_Lu%$w-BW zLe$kF>NM(Big>3{%}ruNtzT9Rdy7l7eyOR)+fWBy%ewP_o@&XDGvwH=)LLX`&BFPyPB4+mr zbcH_BLPV4hF}qiwEA+7zBBF$d*}Vc?p?_;3B1(vu-7C-)`a}y6Q9{J*UV*OAr&@@J z5+Y{z3Uq~bYat@Zk610l>|TMc5MRM`i?UMEE& z)k)D;q?3}fcBD*kDSszLE+;5-7Lommb|A&`%Tk82^qG__DaG^4l1o{-PD+-P;`wFC zr7S&2WLvaXDV|@JGL)qwiR>2bT#DzHr3_{1Pa->A`ZV+l;Zhi$)zm4 zD$ zSb85Ou*DccFt4S537ZJmgB6>uBy1vJk0M)5cO~76y>waOB1r_2Eh+)lfv|~yeV}5~ z+`=XT_BzF;Wra-y>>kBtr3;$~*yk!X{YKbCz`mU9)LeW##(+(j$5`DzM1UFF1{>y< z;9Gzk?&NlU_q%*cC+0huPn1cW>CyO?lEytqV+)5vcfgjq)05%nMC3k-_~y$}FIwcE zBJyCGi1aynOjr9G*FwadbG+rvgG*F@6F83Ao$vUjuyh7@3Y+%qaQ6_u9NkjSft&pS ztUVnt%OAk{(*bMz0jv`pkn{(zR&>DG{s7jw4!GPOz*^SVAwgbFNWv2JBDh z95S6@Ctr0MvET0@!fpg7!aR{pqLc34-o^`+&Db*t-NHI{yEoBIi>RZn&ryUm?)FZB z6%j4rwjn$!%`}*_H57ea-sqPt`9&P``NBhN@p8 zYA27F3efe7ftpM;Q1ebSDaG?wBDv~*NC)zg{YSNj!S(hgwNip)_`|`=#~CFKP$}?IHT_QI*#Y?!CUR?41z7%kdXK~5w*4< zrULZZX1o?6q6|jN?iHAtA5$yOlS!l+1QQio$|RVSDS7*CNiHWyOf_Y9Qi|u7C6{&& z$+tq3uV>X_Nb}!&^u1}(Tb2La^W@+QyqI}#gbeH#F+a~m)h1809KB;Z_^2>i(^p~S zN>DxDp>Zud+B<=Scfp`oiGFegBBEqARLQdf$u9HDc-|J7|Yv&QP1UASfKc~V3@ThqMpn7 zjQyE!mxjuCBI>!Eth7|9jVGd>%gGLk1p5bCOSzn>j=(>KAsJ>9^96m;y-%%YAm{W? zL0q^cE86FlZ*2z2|S z*+h4qpd+if8r~Iza12PHKD=c}qjN)u$j4H}%0@+Ahr zm-a^_@g*Y3iLgi?F%_VFX{Ht;q8yHx-78S}QtvD+L_|3pF%0Vz`o z=TC-QX30{eS^+7=^UIRUo|M%q-J&4SfmQ2GAxXGXNXW9PMOF|nSmDAD1d&1|P2 zR->u!|lfsN4x$n&PfVp$DhXl__);(e#(=tR_?6YLxmp=6^5Ww3#mMoWp}y9~@WC z78}dlg#j2>mO)n;SBR)J4lxy=M}y^Bh=>|jh}pdY-EpN$3lUM{3NgHBjnEZZqlJj5 zqo%}cdAYhPgsv}k1pLH1YD&UAYN~_uc~TX03!9P-`XLF7Mk+|0^@~&J&FK`3rLBOEv3PTVu=)l4d1Pr>dFa$vn>B8O!Mj|zWvA#qVIUP&Nl-l#FLau7t zA>$4VMteQK@i3MO8P0Erh4nb4c5mga`qJ?S*QT^)U~RgIh4O|mwP;xj5AqLVw2UXB z7A-5&L})8dL@ioYr-{&5o`_ns9FitNm+?f0H-A-bD`~s=7%$ES)hltuwsH9`49mf-NjMSp`Fltw}la}yR5xM;YSk#K8 z&7RW`x9@PW^uUfAI-F#1jA(|=SYYXWFowXcloq=ZNp98&sDPARMJ{;CZC60sGb&=PKu+ zY*x>?P$M;g(sPxsGR&Q;T*0{tb>GWe<$SS`o@;q?6>O(|k-5r|sx(y6R~mBr30NB0 zz3nz*=Rk+xgSa>;e-wpu?J>{#ZcCo_HhUS={VB|=Zo#=r-=o2W`6%kkklcO(&wSo& zR40yoG2iQZm7~yJoQu*=dQJ+MavyWi3t13(IKVd-Jx1xpTzqU-mpxXHDu&2$jCh=BlqHr++StnKAVwS zGCY%J`)A~?&&a(nBlo6^+&^aI{v#u|d_*SA5*fMkGIEd4$laEa`>TxH7c+A0x=fnY zXXGx($UQkD_tK2q2QzYC&B)CgnMt#TjNC~Xxf?QaFU-jOK}POl8M!ZJKBrp72E z*%Z44>6kH$NYVOpx-UdDGl|XHsKm8WXbibV>ziV~O^G+fe&i=^P7$rKJ4jeM(vDP6 zQ|x*_aZQS7$J3`-c$Fi*zy)UgEo#WhZpbmS`;NmP6wft#=HsrzRY=9|tXiC^HDdV3V-B*hU~uaB3Us^xby$YG zO~FuxA{mfue6Tewf+wH|*Gpy3zR3o-Mc!7B$Q44NExge~1|IDLva!AbjaF_8G`< zdGh-pqw)G4Y!*dNl|anzHsmwHtBg=&*1qEvY9wvv+H`M)cAw)}49)q|C3Z#zOctzw zcmx&mS7hfJxjON-Ywg^`OKH}IQ3s(qhobGEs%X<*dPMRt=$2cC_k^&ns}qiwzyPxr zr;Lq?3$W#uHKIJcE#@zVs?_r4qjb5xX#7;J_)uPQ0%~CZ{HLm%Jj|V#A<~ zd~z9@i8JCfe>;TvGW$rwBs-FfgNnCA8uBC39AX`)iH2%7PGxPeFFoka^sI0sIgx3& zWh{nc+p#=^>?-0HutxwhW1~o;UEzD@)oxwjQUJU0JILIBJQLN!IcXE{i=>aC?eOxI zL}Iw@G$kC{*)K8BcA66dY-dcO$aY#1xwbPpVcX7Fc|cUXPY5n$TrBb3);CJ(x-4oX zUx7bD&Gcqyr!~WuQTGjl?Bt&zE}K`m_#h66aO^dD;Yc@$I1Bm`IA-i`fQ|3EV$P`8 zE1=Qv11)n`5mzJW=5YJOV&jam)n*_{>7s_5y%69QkNeBXq)lrJBOlgLr!E7vAcT&FQ(aT>9C%db1fu^xCD zSLl*RWQU!m=DLWTJdJ7Z0MPjNefSN)4qd7~I z2To3$WIGGGW@zQ8aHc;RhrvI?^i|7gTFdO~s^i4X3fvFk9|@L@wvAun%C^yVBXbdF zKm%z=#B6lSEw(d3b>3KP88!GHfPWYMH0%QWWo)_#cnvh z&{S)8=fIwO;dZh60FvCAEsyPH_!tOg!7!LCSTTIu+KxM_Th^VLuMgDSTNA`8J7$0O z*=HPvqITn0H`jO^EnyX$xjgm;lUA9PBuW%kk;u`4W*MSAsp=&p-{QQC?KSx( zM=*P1C#t8R&ECLkZa8@i`p51>A$CjdXMgI16-z;R0aZm;MeId zV*_IlF}Xe<{cDQhRvc>4N^X!KHAb$c^}GbG_KR)YtJo`gj{u8EZr zI52Y{4QN_UQRdJg5}G{GP4@5pWV3@|Z~MboJ(v#ac<=bb9+fZ|y#p=yd}LA~E!fk1 zn~1VN|MaKuHIMx-A3J^$X1x%7&(Ay5wXq6%pFtVS9G?KOcm46=VEn_+7?{?DNS&(Q z!)`C*d#1msMJGJNkZjurqXhh!&Ow2Ro@&p9&82V}Y{A;e!;ykc zR|RI6muJq1ZFH8(2Kf|b$R{^}QsK0HDTS=-5CX82`tV&5M& z@HtQ88`}>>Q2?mHkC!NA-rnsix_YH4v-ixa*BWt`l+f zlOEZ9RUebg-PMM9YAsHo?-4VGn7j7jn%cO^b*h_(c?{}Y)r?yJvK%-Zlvf_tT;YZ& zr_RT-)2X*G_3jqT9jh9RgU>T+ICRm^o%#jGv#S*p7PlT788@&D!GqP>QVolxv@Dc_n*<7>js?gQ51p_n}y2b-1aW6OYIM*|<)P}LDGkL7@cd5k4zm%k--JK0~iR`RPz z-d)kiZphx2VRh(Zyk!^(cNykerjYAQ4lYx4UpgBWjYl60+#WRE1Kn!K2#u=74hX{!W#Z#8+VZpNod=+B(l4aT(*I|Tl&$lW3E zbzos%-<6yKchTwVUTBtP)QDoblGq6)u`8(M<3p4RHO-ZK6VY9J{R-3RRHaPbluDs~ z5Z3GGqJ-G{l6iF4O8x-Bs8x6E-Rd{F>nw*rkBk-WHsx_Djvf1m69i|xCjTvD+LC(D z$-bKFn+8tx%6ghU*bg1Q&ALik`{!X2bvgE>(l!7@k&0-1wlYv|xPmL~l0;S5X-ha* zB&1DR<3q}IPZTdlk{2_{kD)HMlAJct-)_9M{^j)Sy&XVRbH&Y`O9yujq#f<63|qfc z8QL?K!PTxjDrLBoN#Z>dQigV~3~C*EHSGDF4EEfkKz(ka6&TSi`2vERa;%H5(`y%) z7K@ccRmAClTBG+cZClE;jV89Ma5~10eG0vJ|8ZY~mEHIqvD?wmmA}t5{{DCyGSbE8 zf~;gEaw${0A+^DXB?%qwbObvbSC0J-_i%7q*tk+`g~H}acRm`J zus;nQg8gfmR>k64P`cQ7G{leEi^uLN!ft8$(%0K_U%y`OFX3z{bo(xJvy!)}=Bk>W zPbW@;)0>5B9XrW4{JGZgJXUd?i5YFOt7vcSG;ADtjMgh+WMSOJnCP`rr?58LH%&2} zDY0tw9@}C=0ktulT(v1Y1UxH=6)YCu-4|j|R2^&biByNBoX)9kUaBKk*WwA&J%%dMtd)&Dx7a}npOaRYN@wXL|khe3u{Do4U&zx+NiJO*ld=`vw_zP zVqXHoTUyr}#(3x6{ix0IMKm3Mj&7`q{5GsN(1f}DS(=TH5hZ37XQSI#4mh=IMn3G- zg#R@BaeKiy9Dm$Hkg;h9t{>o!^@ec+{=dW@Rc5@1f7?F*(z~2CN|)!iy~D6@@-7~2 zGm&rGUlijOGAuH1&V>>`^B7DUjGuZ8jD}?V#A9F-BI8bvalT^wLNnr<5PUr-RoGYv z8O4tR@5VIV67YVI#_I&{Ch(GN=*VK(jM@m+kI1@+ESs!-%R z(|eRDW1%sAC*fa(Kj+kg@Q2T$iqyvEVer$V@Gk*jat*+@L!|fCP8x~F7`$Wl%D%g*IzfHONS98W-yV|=S&)?IJ@nSyN zbP|s!L7}wG)7zVqA##QW2c2}A+q6lyId#4yldk*d&nw;g!26u1jvcG=c+zxA{WE6V zZM9;#@N(5Ws}t{-PMHXV8uSdfzRt8N)YgOSGk%0I=vwp(Wl>q}=em}WyYrTw^Teb%%*;1$-&dP2#@Psb0X3Xl z0Zr=SeS*&go?HVEKURB=xoK%@gX;FJ8m6!ef*pc)b9C!-F zN>Glr@krL*IWt3WA%ppaZF?u{G(C1Pga3^}**oV2VmFr9JLd#AD!U>^K3`>}?dR)y~ykW;{RmzCTUn9b{5f!1{VKAxM(BD;q-X!22I@ISQ?wK4;?N`8> z7vf(79My{Z4`Bm~Uiq1-@~RS;kg%-{lyfJwc(a?=HwK!voI6w5xiNQVspmRkZ4A`uo&3Z9l=E0QXLmH>yO`PJySFsI;qr zKFMuvJu3L>&gZ{s3&HItP+w{uQfmyIYBZ3fPV-?y>J-BLjn9yG)ZTCjitd)+2jFNA z@LS{aTZPIi#~3+U-G^gdpCGU6gL$!?)+vV>)cF&HD|f3?Cdl21VNx~!u-mKI8^}s# zqmPOA@5CiNn5-mL)^>c&PMrHn4<;*F&Y`Ds=j62DGHrwn3`wq~6sEHUzOh<2ehxRT zVdJ^o*RgvZ1&=*-R}CgKwf@mW$8fs~WtSr3(dSZjnTc{^Z>89^v}=2|@m=WD>@Qu@ zdcIj!rs|n{_`{G##AkaLUEPXS`neCLGf#CUb0RvE8zJxBi;&klxVM|CJMTeaO3U1E z_ai90y1mvK?taoETEgAWdc@dp_lq9U6z+c0BSz!P?6E33UK>x&n6ZI^Gl%Z?A=UE; z&Dvewpi#VFK_tEl30H~OTBxmWAv||B_^brH?JRSDBhBIv-AlQJa&npnmFRyH}AE1BmxTf3YzH3ze)EEX@#)Dg6TMUD~eOmua-Rr@1znznz z-}ZMIzB`Fj93E3XF5j;G47u;d_dsyAvAh=VgY%5heHcm*oclWZ-mqFYY1{l4HQ@Yv zTz>ffPy^IIG>CjT4b&kLx5{f_z0Yi?=#aJHnnTt`*7ndHP=OqGnqW+9O%}6F$&Zt6 zWx2GQl<9`dQ&ovK0(!OK@497OzC99)#}qmYg1mD?e;L$a)7pibmq4BB`ZztEu>T{DGs^B7uHSR#dZ}c z&Tc5NOYLxJI8qwPDa|Pkl}6(gUZSNo)|=tdNTf6;r!-n@7l(@@#W}^%*m0@$^AZ}( z5C2E{zyC<13G@SQ!QPpiYJCTHDdzLZ&J}L(^OKh!n_G)weHKQSu^e5-^6+xiWz<-) ztI?Fvb)fGsjg`3GgtBvucMg=Phsm0Z&$?Q>9U=7D(b*RH>J=%pgl7I zu(!p>l)}jaLEwwJWmsl%#)c=xCBRCK1EoSykG34+WnQu~7PT6RySJeGbwB2d%8o{D zPYrpsL$vC@ri=KEZH&WpBK;<$N>*j-jmpm{Sx+kzKeZjzM2lEGV@WDsJRE6aj|uY- z3~IJh?5)^JWth@4D(nhRQX<%KF7BFv>9Cy9kNU1S^dJwZ#LH}NJFy}+jtLYO+u?@0 zwg1Ci4g7HrHeT)KTiJ{qC+Y0s8mYh|H80@dZdG@Skpv&6XGL1c<)n1b!G2<8KyH;k z=ny}_Wv7?Ip(J>EpYwOK$|~=f1x{a*Po}NrZo_Z(`}B8>%5m4CU+t>?}qm>mxl4`Dn1<>gP?|yii4&@ zU3>U&Us;mRtL27ONFN?R3dM1!Qwcoh6Oi*G3sK)c-dlcd>c0F2?3rI~Jl~%>o(Fgy znb4mGjm|Q-^>Pc-?`cQLvE4HXm)u?OADpkn#!K|sa6Q*UCLXoODKhA@60Z?goZdh@ zta;E_dnPbmSfc0cDhoGYXIG-95{fX-EM#aJ1x8MVN{i_Z9HP@z?|Z^J7T=`nVLd{j z$$KiqbVR3!kyEVV@|99kA*stn{cwwP5B-?he^o!`F`ap|n-$3efS9o-QFy*thtAM| zw}6XNJO!p%rkv(U&kwQirXSM5@lfZ9ycC4`PLgYO-^p^d`%b~NzIz{$P{7jB*~URA zAAjAKqT8%?H@D4RCdaX&m+8r#)3y~2SvsA(aS7gy+9w1 z-ACcdAFO>E#jU>0yqLYb$n!3Jr;}0McLpyNeP=4_EM7u={k)jH4D0JvI0gDPDV$P$ zeZ*tOP>Bj@rypSgf%!-=5y%SVL(ub~Y|%@7V}#%t79iuE2Z#$*73+ zAh4kgOW1xODy0gQQZLOAy9(^6J^no8X1d{(65h6vEJ?)~+8l@e%4}yLf{dR^2`5)2 zTCE~=dXZwsL9j95rqI}o7w??I422DUqIyoex!K2Vs58y-*lC`kW-rTv9Zah#o;6Tq zAcs~|)IdRk76R(U*2l|Fu|tKoh)#3+h8 z`{DR|Y#pN1wH?JnB}$3T=IL(u&}M9$NCkSfIup_vY^BO2xhb>7^H4!&c-ly@F}^C7 zi5-Lh^-Ojz3WGT&#tJ%~CAZY_bDYMOyc{Q%CZpZLg>D+|%EK`lNg_M~rw%2V(hwd!JOMd1l-nht7)GS1nk7Xly7D6BqaU}$Rj7w0 z@6Nhi+Noa?Jjc0T%W+{R+EN-GkLNE9pdDx7+V(Xe@;kcaTH7@PeXY?9qTT)92O956 zF_5jt+YJ0XmwpD<>+v@se>JWcB8;{cNo`fjQT1e1EN?=)Xji!&uHT912?59Ki`o@m15V=!z{BuT}l$38;gU zB%iM#`G(=>%!ruIfW7o>&VYJ&KU;s_S1GvnK5!qMA5@y6+9n<<-LECjM)N4=Q`g1u z3OpE_02ghuRTMyYf+*4HA50;+EDX#YdN&*2T zZX!;!`AB5MX>h|RQ=Xr6JMu2Fa{Ya~vrLkJW!-+J4-ahy%|#n&P4>vpEf3s|<5vZ) zGM4nxnkYNJ2 zjvMHHmz%M#z)-GU(dL=jn6MGYrqmOujSJi^SXikZ7)?f-Q_dlX7vce6)s@#a7uk3} zhAKroALnjxHqSM27}X*lid77i78Ba`zQedSkW2;BC?Z!*-v^IT+b2GN# zI7-Bdgcs$o3FWd0)pEtCw8Jul!LHvnKIxK@#%!Gi)-^hfF1*LZF#P`lm)=*hce}~n zn95e=ulTG7W`HL5iYuY)sh*RTzDVSw@nNp3n41_OHSoDjlZC?C1!asj|K3e%Fx~*B zY86+`%1F}#bso4^DL*Au(~JRICR;N(sy@Wosp}>=c&mj3RVHzVD_YBCyt>``J4*3E zd5*XHOz-z!D7~judi(n|K?{vib*V30>5rIuW*dKi_88)zwoGef<~q6*y)Y$lpRb8&JuODVO@bHr{Fw~gf8 z2~(9&1D+&m+Z_T6u@|X&jQx?<6D=J55SGc)R%_AP7lZE-<&w~aCSHz{XW}&P0APtC zyod(xTBvLdDbnZ6t=;=){?Ad5gt7Hx#_d znulh@yeI*>oAT9GM9-Du;6woPNKQUT}Zj2jgMN5 zW=*}5hrYq&`40J+-A9_n@xETN4iA#4q?5s<6;~AvPb0Z=77=ZH)X8!CxHEKFRlkhM zT63*i;O;+TgCRAFyKUDwxZZYR%`q*sD=6d~qh?UYpytHNwrb`%+Q_fE5oKMYCTyxx zSAA|iJmGek4=McvtDE0oe#F(y9k{mLCq#Y+-sS?PySh0F1gE|HqsRAFH=4H@JXSC1 zcW}KP|B=A2#`Ssp+tz~!JDFBDQxS3lM0n-@65xT=&9z|2>W1$?+hcXJv8@ITyk1FIW( zFc=G*HY$lVjyy|%Wlq~x(v{IRDvZTW+gEulh_;=MtJ{4~^y+gT<8d9AK=Zi-n*HUX zVM$cUB~dAtLqs6l3Og%1UKZxM#LTt@h#q#1XekUkha_eLODt`hAiU!etHMsVT1U@8BeA=8rx@G`vgQ4CS}_Q)aKe z4y^I%Nag4PJgna6_C3+~@m00?7&Br|V!KXv=*w2{h7M(?nW&~(efT_#Oy5=MngC0R7$uj#1xZ-IJw0e zJVLyMjCl8mgq3`oln#0)5cDpoLvUM7qCpGWpWI#p>deaW*rhNL@7}l=?=e`${%{C5 zMRCuwC*!ju@;4k7T-V`N(;fhv%45GyPfSU<_CE$5?)=q^ATPwod9VGdNx z$^dhaVh#^5oso*$g=6@s_)bi5@r6S_ca-AR76iBriaRqez)dJ_BA8o~;!X;3_fyN60Jl?d&1ir-MRBWxDNIt_M36gGaVG@1 z(-e0}kUL#**9W;X6t_Rf-CuFP8RQ#l0t(!hwqW zSdcqMai0xx=PGVrIxJRPW50mx z62&bGat~76p9a%iqqy}!*`pP=Eyz7aac2g(lNGl!63}6(;x^<2xCbll!9h>$Qrtzs zbXO|w${=@@;&unQs}*;1kXx*{=La<_QQQlI+)~B8FKC@I#cc}87Ah_mSUx{1Qrvg( zmSG>aTyZZAYF44R-wblyKJ|(qw_3@Lu>$E1R^0CfWos07TafE0?sY+KrQ+TgcZ`M4aD95p`qxEzxlH9q;c9FrV1KKZyD zlN>cZ`M4aD95p`qxEzxlH9q;c9FrV1KKZyDlN>cZ`M4aD95p`qxEzxlH9q;c9FrV1 zKKZyDlN>cZ`M4aD95p`qxEzxlH9q;c9FrV1KKZyDlN>cZ`M4aD95p`qxEzxlH9q;c z9FrV1KKZyDlN>cZ2^Ujwxrc#GYU6IKH~QI+naSC*^lHR;o4XL9Tpq1$3}H)WKePKG z9|yZNgU#;W`8b23@m$>43Wv9!kGZ?t%;vu2V5EN!)91Y2lpa+w!6VRSS-q{^`;X0X zu2H$(%!8Pm9IEd(d-Fk9@{pk=N~>UXT#2WZC~V0=q>bM~resMJ$w9Gnl53g%`R?H( z#xrBssfhMG575U*t_nC3xCAWR5h*0Itgi?cZW9;qicjA3337zl^L?y<`YOGcxa)Z* zS6nrwJnyXSi(LcbUX(xNB$7Qy809XO&k=;=a|As&_JCJz=i23C%6NcE?l2c^VC$JhZbbn_dlfmq=N92%C#;6)8&iA^!PK7yj~LBRT{s?3&@ z8BdF&)&fQdBxWVE7)SZ?70~zo|G2)9jo2VH8zYg8NZ)Lzzj5%7L;lPW~;X1>o* zOY-z}eoiCqO@tdFIpHKu3EK5JN!$-qdYZ;0=!tfLJxNw>avNgtWZfu5hm+TWkqjZx zMy#PJqFAb|?gx>ck}{h{JJR~qo@wE}TPk8+M5UJN>e`4KC2lf*tl*XpMU}nj>7?YH zdpnT!14!G7y#Pl_{uLk^Z?cnr1A>z#F>F1>ary)|iQ^T`1H+M+4J>9s@q9CR2MUps zyauq&PT~|}wDCdzX;aG?n|uY_(h#2Mh)>4j?%7wA+QqmFz*I}ac<^4OTf=7~QYn{W z3y4VYSwB$rrMc+Uciw#(idb5{Te82*S z3j-p!A@fUQu;l=3tklmlt?fjDX$%OYF#u_FTN^K)*j6HyKa4!&FNMv5I zS5e;jpB5T1Oz&}Cr!Y&9diUCZT0t1|28S1tV#+GLOZ=_hYvc=@aRxrYry9XNrMN(@T>@`?^~+Uajqf zu_ut0Dw;^Xu8Z~<_);_?ESfM>(U?CtytqYUDlFO}Pl29?z}n0&s^d#}p}xUDP-QiW zE(_3bRR&8D1zBPCQm_^!-^?3-id6UZW+;1L$DX38r$b^#Lh}ZkG*Wq}U`tNRsyF|7 zLEQ^W@feEq*BGyMK}|8^Oqx;jYceHgMYQ{LK>=^^kvK9WN+?$B4Vq4I@IH7Fu=qDz zi}Px2Cyc$o9L1TKTkK6rvfneka|rOB=O85JCqnZJLu|ovTavLVb1}sK2q_5h0wv4E z-I$NKo0P`v`5jYYyQxJ2cmkl8R|!)#7Pc1-H+u;Y#DFRLh>W(65U>xgk`A)2F?(K= ze4rHL(+1ykZNRIwoiO$`gTw}mtZcvr^*Z=cY$7bSFqGFZIdFJEMr=?_g(aLSxl6{I z9Tsk>**g^1Mq7qYR0=66yCA6ce=vQt9+|iFxxr-$aplX9GPJ+k)t*;tJ7Mf&MlPob z8IhmQn?DR zdIT>xfL;(-l$8%F($WH0}V!)NBm4$b*50%$u;51@SSjNkp zQlkMWwxx6_>1_g1?6}gU#J&M3+*H^@%Hw%@c^vAMr}UE6mP)GxA7g-(^TRnQ-Q`6b zsTXS`|B13Ta2-ch!-6Lpg z4qKt@f>1$r>{F_)RGHpq(P`yefG6HFpLV3>OE0iFQ43Ar}dAvNnv?(lT5jZ>h*L!6WNa~SE* zLEfE!C%=+EKr}bNPJW2=aV#J`XXM44)8Z(pkEox16T7`l1nZP7Y@X5BQxBZXPnFb7 zGx@_Wt%e(ApIY#Y*fi+yaJnr%-`Z}OU2BW2_pETH-}66S-y3l*0ACkrC?Ldfc*w#(3;PgJ&iSxQmZWXF;ZxVeXf#jELo2(%aj)e z67{Bf(2eZ=QBxyAjYHj^cR4OgUCYci)mOB!&cfyg#(Nv99UsezVI1KzaIrxc z3NUS|#RWr965W}-;Yt(`#3shpvmznfPhj)B>JiX`Kc7_pXjHp;etSUogV=BDehM4G zu|IK7L43;Ut{KgDDm%zb4vloT@E*X?h$e?hx>tGRA_)3ETpTU0Kc{~b)WNrlshy0z zJvXD3Y$jKNutTIuSifhXh2<7nm-4%ADH-OKl7w4I)=Nmv-c5v$bT5ZSQFD_gtx7wF zo?c~lcT2%WvS6b6+2G?55WD+)76gM9-XdiuKLellc}4?bqi(1{_Jh>$ee{Db{*5eos`Bmbsn`@Xm2k>N+A8Pt zH$wrKghlb0gj@-#U%K-u9Tda#G`g7@dxmNOk!C1ir5Wmb%1|-!bC=je!Iae|xK<7TOOScuVX<*=I>Ye!^d1?~}P+r22ZdvcKb8AY)bp789x3ns#|o!yVf zwW|ARxen}plh@5m8H=Y_E7IgbB{q(TcHeC*Nt%zEW5h?j@~BD)`Y1L0TpvBBzZIFI zHkgaAHprErz3X*N2EB&==kyw<^kObPy~yn+@cf|-gljtVa2tu%kGq ze>`$VB~UA0Vab)Cy;s6^sf0lPb>e@n4%(Gk%*3Y_x%~utSL-@aE7-4o^FOCohti9= z`1B&TpFqY>?C}_naSqflvi5;1t50XsEyD}W=c7ll*VSH@Wn`^zpL9;n1+VFEsaFYD zeG`$4IiPO>QyZ!g=|^WE-N%`3FJ+SdMpQia{s}I~AXn{@*11nmGddnLeBDlBfRAn; zfE8a}i5dG81fDF12cprhrmLQhdjv{YvQ&hd!){39X@sTFVluUgjRXTb1e3IG1O5>o za~;-i7}N2x@Y;3weBj~@-A5mHB$q+PVaI0~_n;>mcFyw927(WxmTIOua&B+DvaaOYdRhj#-`0v1WYh%hcW_80UtM2$Cc z&))xB<8@dJ>$jCmvv&;PF2V0?r2JHgwb-z;uQ8TSq2#NQ%ixJyaT~p9#UF-5jgO`h z&aU~x5af%LZKJQ9@Rbgx)+edmCF%UR>g*2Nc(;n0mv(#r=(JGts;a-?wm|zp!UtMt zhvy}i!`io+D0>58r{G1%7xtMzI0IVQ#_q9{A1C-EiTkYR@QWeT;qOw4%M9Xo3?;l& z@S`RDf zMCN;IDSz=A%6v!i>M59uuPZbNzD!E7GftVOYgtFHW--l!^2m9&gLwV~+U*aL%P$4q zeE?I-sb=WmQpSkD<(1^mg>TR^zb%fbT3wM*pFJdd3Vb)qI2|wEh_@)p1YKlgb=()5 zfcLd3>XidY4ae8J8Ft77Qe!dW%R;;v2%CbhmCiD9K;7ASUu>1}70i+;xpWT0HsE_* zlzgV0R8|(7Z;`Qh;C-=EK%FdMZ!Bk;p{&gkuW#;su}++R-!9a~7KW8(-EN$Ycy}&f zDpgqz3iZMmh7HPkRwQ$0Gpsu6-$>Iio-4jDwiVQ8LVc&4)Nq&jcmSzJP>5)(EG0F@ zrP@qVce~U*(@A~o#yfa4scciFSyx0V;!?Lset9l+|7wPnxKx4UUhYz_7BZ~br4Fhf zHO!@+l^p7Iyip8mbg4(@k!o|Pre&mNxYSirqS-FhASIgXQX@oitxL6{9<~~XyVN1D z=T>9AOFdsks>h|?5UqQKDl)EKL0g|r3iWVq6{+*hfiQKEamgxD7nx&(I&~7M%gjEZ zYT*SFjBlA&3Ds6d>O1DmLOlaNn__&=d`+mErKZ1Uz9rPd!zsDl{79(rZKSRz5*V-pUPgz5(hkp>BcX@T>~!VWEEIQjbe2$5n2aQ-rW5CG56Qk58X~cpnN?IqUK1 zoyKs>39)i8m32e{N42|JJ! z((GK#H0Qfi{XFKk#yUyD))z4B2y2T_$K^e;|CX#C>sHC(vH_3mztz}eJtWj2#iTa7 z)LliS&T%OxM(RA58ak5H1uiwCiPWVo^~ceqzU@*MNt)Y8LC;|e9@!tBnku0B2$=j?CgqkYU&n-KfsSJnK@H(qhs8AVGdBlomGnKO?l_#v3 z5;jNj`@MCrP$$m3dG7UD&sfI@^}|9^uUTIc>WzbMp1URM9qUS={6UNNEN!&x+YSUE;ULd2fNgn%NRDqr9LetHNvH;MRGJL zl<$Q7sacCl{WFKuxX^17_Mt_pBlLk#bt_0s4dvL3ckOgi`-cVyb?2Cy=XM&4LSuz$ znM-PMs6(j1AxbU@O%v)bVwZKHuLyO4q;h!ZB%y{&ydy)W33Y!p;~f<`N2ucuV4BB- zzJ|$IkrA1G^Ry|(S3;NCn^6zfnWT;l;o%{K&7H8(B!$;=fx5JLqj`go3^j+T_1t!b z9UtOnJBy5$J4y9~W(u`x4yjW^2ZkB%p$<~Lp#>6VPb76g=$tTXrDfDcbE|Pt=(}M9 z)Z#d)ue(%tIVmF>VfZbd#&}Us%n78{hf#|LV*OX1EM zsLNdn_qjlAaH;YLHTxvuOq*cDvIhxut5EgX!y~j=a)2{!tI?3%AYt`6lpF(!xgStT zYHW6^giS%%S!QeYWT7rWDrcGFvZo96h)`|WvxLI?c@Wl~y-=vNLUm*>#mC|BEf4&s z7!$G&j+n@yaEhW<3dQ;C6k}5Mx(K>VjZvNU{&skl}k7O5R#VhK*1@MmNB}dAMlA` zX9C{Sc^=@Vwo@vLjsDOU;E#^G1n}rZgy%F8E?7c%YAfNbV+r?`&WLeLv$&D)`Gthe z;xqB}!=px>=%(Llyg%X_m955ujfD5d32&Z6Sd~S1RfzE2;e-da63$sdcxN5qj|5I! zNc`g!gvSphJW1fwlJXsZmNBlBWqfqSRyW_Jn{TTBF6?lPNjOK~;R0_FI7{Gd0)Hm( zsVF5&a|!3i2y+SvKUqjPVKHH!;1?_+zDnS=!vFOga+XaXoFQ@NNopNq$!QUI)llMH zZG_(zJaQ26_l1+3NBq46p(XMU2!5}?qt<*Ej=XmuZNZ1UV9#3VKrf*itzFf;m2i!Qz{8B&L=FWA^i7n!U0jjyCl~1g~Xp3 zOL&m*zbgC}ByN_ZxqBo-PZj?6M-V?$j-wK=~ z>EAtyaaV~Zf1O19=OW)Iutn^4vgFk-^7DoNn&h}z>f#~Eae?So-Nh8{5S2@f1hIDNtn^gLP1ZUTI=z?_(LdvY4OxQb(uyP?G^HMU|#*nUi zp~Dtu2jGQsAE>nL2hB&&hhz_U6tJL>@ck8pm$nj~E$|iLybY-3Pa5|GLJwO+cv>Uj zj>UxSF~W|Kgx8HFOtwDZ#VX1FJvcY!5uOOh)V2dJto{>VqKfeH5aGvVgi|UBFU}_{ zs3H9KaKZsm!n-8a^o7Kq8B2JO@V_ej7bI?$q`7+}Lr)d{_eT&vROE*wh>sI~so=*- z3X|86f4*?$N{(lWR!0lxr=rhM5lJ(faE7E7m(VInZK$NMU38c)8h#@A-YB6nB{V7c zp~CMFJ#UZ{rb}K^TAA`<;qS;HeuC(Bki`ADNOr9zzeHeR9q}_npFgw^-?5f(q3Hi) zJMry93BN9Jt49;ROmz52>{G3Bm(&(WF5eYSwxqm3%6Ncqek!p>i_C1n50_Y#WlVF8 z$UH0XTq(;+iTf`J?GpJOvEG(K%D0K+Na3F>_^o2ME2Jz}3je`4B_9_46Z;WAKrB0d7CY?06##m?&;#?6;flt_6mXe8$_$^BB% z^Ezc)DNCpD?-BeUfxi_vN7BE06yvTEP5wHG_|HYYQDBSM?PSTTU*zWt|24^RwbaE! zlH&r=t-6aT+#xzI7GFAL9y!a!0{2QukCD`FLu$H(UTi-HnP!2pV&dPQN4UI%FeIE0 z1`~g=obZ_@!jlAEH-z|WHG~g_2^$s?ezcZwhsghF4)MQB`iF_ke1S&@=Tw3F6;fuK z;GfhJZxb0q;BSOKT=1U>{;a@a;e4l&@|^<+Z&^n8nrMDSKJl9-6Rwuf(?=8U5UoxW zJ4qH?RPWwc{9g7LiT2ttSt{hqh&LI=Zgu`*_{Sj5*JlIHhf1L2< zNrY8dgja&fiO*R=cxN5qj|5I!Nc`g!gvSphJW1fwlKvflDGh57+CGtR z$6~^xN7i_u=S>?1&W&>k&zw%Uc?MzSI>M(`4D%$f%ZY(=jld5>#NQM6d>QdwfI7$Q z0gd1k6cQdhjqtKC;aNioPZ!t^sO9TcG=cxX1VVEt;kN{T(QK-+j9sOifiyZ?>-{K) zvzO08gs+!zZlhM0R~}4G51^jOTsU_e;y#kgxT8x5PhQYbr9-!`=tQXEUpRM$$4^OG znAIu~ceG&r>R>l|RkZ!nwVP`airKy#3rt< z3K@fzK7zIXrh^{gjC3_&c*F@+S;mdCi4Ttw-j3C7mT_C_iO5myDkz_MD_fV>GG1E4 zP*sC(&F?_I*am%B~?4gc53*YkS3Ti=)cq36rgaWorm~CKJ9e=Mt~KI&9H5!D*jJxMT4*J$`cKx4~J~N;qxpw>|zz0p zrVhUY_BlO^a225DpBK3coU?`!zOsVwZGq1LYMFw<`#t=S2@gT0U^L+)`wYM2XOXZNqBLT zuwx|Q8sVG^j+R{9_$>I@0|yC%437h5uiu~Wl^L|^iv3geSN%^#Gd)&~cdw3SSyY>1Ytp$Z zKlk@nN6#!pnn{5h1^#ACB{*L{U@+hcYbao`z_9|)6nMSBM+IhuMndMLsnq;snbrI( z)&S0qnAT9|e)58phDwL`n;45)DH-i`SA@q5#Lk9IIH7gSK+V6ctQDM5CZR3x-7Mlw zf|m;%Ch$Y>b*%P@9gsP+lJK@1!n*-=X!d|ka3Tj0nl+ss|FA_fz}c~wuzlhTkDonY zHaNd8AUta*VSbeG{S}07&Lupjg7DKeLZguIE_1doh56t_^9YLtzA$G#EXKOlw({4J zpYQi!e=nEn{d5X`$w*DA^-Z6<1bL~MgJ0&)HT0Pr_%LQrlX(YZyxa##pms1v%2=m5 zuT*Oaj)wm9Gi!^UR>oqExjHpncI_>SA2PdHe0;x0hP zQGmzJITrA}&ThaH+fM=<)~$If{GaF@*47J;8-Y>+wIsYoZw_z3r>vW!12C;a;`hTbZY-x0|xMe-(@*Zp1K z(+Nthh@TEk<_p|Zeh%;-m2oDcbZ(ybHE^mYU+nXoP4JmVTL?d@C49RRntS`1r-O5{ zL-<-f;eZ;#`zr}=63(d|#6Ma}_@|MCPYe8&z$*k^FYv0N4E?siPZkoNu$Zt<@Cz0Z zUnTHb;a^uqPRm%r4uRGC5r1kG*L;Vi;}(S-G)N#|Bn27$IfoM!?5 zet{nf{AUh117{K@1Wpxr?R0XEKY*}K>~@_Qp_9c6$ zMo~l}8WbW+L`6!HibA#)#=eClN|qXhM?wfuzt89TeCBrgdg|Zve}0SCYcA(~U-x}q z`*knpKIfdX;mbChP#>3zURmCvqFs?CkwwLt()j+}xgI#y+7w&@GtcPab75>=gX5o@SSLSE#bNY zXP6Ehv97N6*Z}##CAsN7QS}o@tABe8-|2wi)1^Ow{6FvcHnMFDJQyLeBInf)f%&J) zpR~$qBE)6G9z$a7nxbgLZm$wWSWm%|nM%ZxJSz*Pg37Sg7d!xK)?!T!{{qU?j5Ry_ z7^pKV5PuSCvNtOwJ_j^7ce}d(f^Uq-%-yc;Wzc9=mBN|O8q-*xIH{loR@o{~^bIKE za;u5(jly@mdBn$YScdGp51BksdBtffDtlhhB_89bw0Xq=t1R(*jRH~mgeL*xvY_lm zqVkJKt8Jn~pBQ*HJ3JBN&d8YhQK0EoS)zBz5YRl5XG@jc-u&VN*6u2iu$Qf@KJ9jU z3y71f2irwP6%dzL^V4>F3&PKl+0;Et(;}k^3NP#7_Pf1dq6%wN`^cy;(S+3l(t{^a zSwkVcaPcT>R;At0&t|Y*uM`B^MY7hl zJL!!SF|57qazG_nzqCK;Eg{OYLObMuYOt#2%kg?e7uHSaFHxcoD__U~ZWTfVl?ru|)yC=)>pQ#V9abgN-qaIL72Ic*=U)<4koBNK6=!{B6~pRnl|~ZF z>ix@GPi(W=0W)Bxs3(e4r+mIrcO2xUBI{C8R#XE~$JGl_O+*XU)Orh|T8KxisK2xl zW3907!gKOs(x2k?)W;NZ0cgJF&&p0dG5TkYtZ5?Zq(`&P(mZ8P-YoC5jH>JnNG0fVYFV%1ZR7ijLwo ztD66Sx1%ud8I#-*&u^Rms155} zrJYgT#ZcCjO8Y=#Sid$p9Mwa-#8Qoqf!<=xse01eQ@qc53+C3IVm-@W?Nn4R@hPi8 zxwD{stj^^wfWBsV!Y@bl7C*A$!mop_vlbNkEvk=DO{qky;WDd_2xm2}epoyp{H#9J zC8!kZlekRLS5#x|i-RMTXu|4NFIDst9aux_9q{%O53u~rLwx@hH`9afJ4Z||U z05RW+=D`7?a5K!=8F{gO5#K;j&5CBl!J?ZL^}4~LuN58p2aBN;=SfeC@;xXSn@cSYBp5P#2zN70YwgFjI^a zYgrFB3>B ztfr~w#53Y1Yi4RVoMYr^gDLEgP2m_fNkp(_!qIS&h_}k}jE#-~m10ebt`4Gq*d#B<0gs1U9-Km72KlkJ@;(ntd9dX`veMYF~%5#FB4R~OFiXA8g8nb5LnWk97^?b0g3 zZ=%;A$x4vIJdw^y>QPa=Bs#NF1J&Uf=>e>=&FYAk#bd0x(GA5yF@e>=X$YTwdx6yx zYT^~K$ZDQA5;52JirB;QbbZD5nmEnMiFm`eSk&!+xuy~Rx=8<%KC_~^?sZYEWA2*o z`j(1)uENEeqE#mw2kpMrw@mb~nkW`_+XT9kL2(PaZTBq~H}UI8;QR%z$KDoB7gF8A z;h-X{wt3cFnGV98dylR%j}G%CtP|<`m7*o*}rylpM7LRwuGSE!4T8y{CYlM@&4@CW5HqKsQt`YsLs2$db3073|Ys6w# z;qa^7YiUiW>vO(!Vw)9>v2`K^KR^#77LPgWL}gcLpoT0w%6uf+vheuuk?6%5=3Mfv z7sFg#_iYeQy1L`rD5j7+H(SQ~Hia3VQTeP*JI?EPoIBr{#58}46=2naMZxe@HmGbWpr&u#Q75qEJMb=JF zHPCHVozS}eT_R6kn-`Hcv@xhCt7m8nP%LYeryZz_tInWWtmM#M{@tQEYjBA{{yn0L zt8>1+VgRd8&xiec#bdc~J&XDGiSe#Rf@ZiH=ie_Dxti=hAXd1V;s0E0a5dk5NbGX; zy8jFD6{~pC3jdeltgF@jqv9G1`_eI?`cc_?*V^bmF2Y@H^?xm*UG4Rs5T#um@_#F8 zvG(LW=07ExvlbcngtF+u`XT`}kTuLX=|3$-xH{`UBc5?}(f^&8>FO8%_u^GoxBWR{ zr7IaYD>l0F1bz^^T!jUG6h~bZ3!D= zO|zP4=hiD?0So8WE8;C)6X({eVhs!D)~jMG3+L8f#OExWTYnMXvT$y_CN8jWZoMXM zvT$y_E}Q|jd>))zuZtoqoLg^*7#7a0H$)j0&aJlvZi}dam=~HSeiOB<=$!Vh=w(GS?Oid}isp&CVj;!BJkdDt zyI5{T^Th8W{~%jFJGcHWO1Mh%{VtMOcqaabsO&1kCu9Q_&bvakVc}R2vL_4A%cUH` z!dVzT&+V#3K*=mu*L_;fadpRM2Lj!tR8(D2a3q9tigRA0u8gGvKN*6tf;gRGI1EDK;SG)9~D{f_&1|UVoCD!orz7SYT5NT*Sh;po(0J(o)kS}GdBoK({u=T-SGWB&PA<$6vA=%?tBRQ6Z$FW9o8Vk?$8_NYOJRUWcZ?RG% zo(VLOYgiQ{CWE%JaGq}}PqJ{HZz?Za(O5~BhcmH6G&-8eYgRwV*ak&>&1B?ojGHGO zD!f3nkn34HYD^EbmTe!UI8}XapuOC0H5=Ak6zC|ASkV~kEKmGNVUOWO>Y)kSqD*iU8C#zlY_dr8gvnrhQc9oB@-l&iR8q0dAN2=&1r?OV{IN?Mbd zyjQ+nvg_k0EZ?c9-g2dhC6}-WVhTk;f~+{IheJx!%6QznaMf|@7WBLqgfec zPkIN*39SBQb3o6rk|A!ee34ZR;s(owtg#UHpj^s&9^xL9D_L(s+z`2jwHD%r$d6ei z;P^09?qOB0bHF=P9%DUHJ5>ymXIU@SKHwcDe_=JschdWi{EgKa-f4PBn$c9Bqap5L znV&Tc;vSX}tai;(#UnC~)vwtB?<2At>xG0=ktu7l-by&&&6F)z8(W_W43}M4yIY?H z4P@c5_)+;73y;N*%1I=V5AOXwCf8Wa_V}w^3_K=xJ&F0G9{HF|eag!Ar4h2F74^sw za)=f6$PscX#X(<6@{N@9t>_3eQr_V>JOYiBdB@qB5O@T7T$XTE%0Egbv+xKsT2^tj z(LY8ua&^c*R(5c;*FR1^z``TY)AA7(9)ZTor&xGxF4wX5p38RC(9cYX5UG|I<`Fy$}Buq&5#XPc&wTs+pzFhHAD7b;jwCle9%>A&=V{?R=psfW#O@Erkw5SoNty~ z%)(>UEcqS_k5w z#d10e&v2K>w^?|GyF_ka;nC@J`6UaFPOrtd#RvIQ~}3I+JjpS$6!rD_glL<$quHVBxj>DmmEI zR{v@_%hg{0hjO8-L;f}LO%{&7b@D^jA|shdh*Y;ezU z{`GRatI7Tia;d8s{*7{ttNH%Ta=WY7{h!EVEF6EI$vduA`?tuHEK0%N3z98aIR3WD z!7Lnq+vGGBj=$}4ISa?%cDap(<8Qk>&BF1wUEXok85A>_(!=q$L$+n%_}eMRyE^CF zB^R-9{OyvTSnYs&3EAG=a+ekLmp$@2$&TllRFn&r#f%sv*()|ORu;UActmbz4RfkQe<_c! z@QIhB@(jrn+PQZ0QF)0~ymLd)9oEnmMWVivk79@(Su>+gdcT!xSc{``Kp(RXhP918Dfh5)!a9MDv7V{CG;m5@W4%zhd-N%3 zrcr5crSy$HEeo;omK+R>vZu0-ZQcW>u1R4cd`NN56I_tvIT2%^dr&V z%R#JN(IY`munyKb>CKT(vrg5@0Zm~oE`HK`R?cLtDxL#c!1|+kD!i-n25WcovC%)s z&sayBKLa|*8dNG({3yR=jVg7(`=k7q74_Y7GIBbW9k2VRMxU2^XQF84yC{FMqS@`D zgtuRCP3YIz-ixxR6`rZS6ZMl!u%e#)lRUz4rQ!X!pQL#ax1&4cKgmL_(tJP3Xjc_| zmt+|h-qX1(Yq`qsU6IXLcu(hw%wXYrv{z(57LL>_aySd`@LZMSSa^r$s+{JkMc^0t zva9R9YjU}(JHG33ovZeN8*&@TbExX6s9)u2)~Tvutd8)G!yS2o z)gS8Rj>NCJ&OKMWBac|o@$arIH`m75S?Ukj-iq4x582I%+V&6GkK*9S^?I~W!%5K6 zAwD=|VBxbBQZ2Hgz9iK?D@sqPlzI2kGpeN(rto&OQSZC@AUcoQ=xRf>M{Os0!aE&? zFM-|9is}TPtW`%@Qy?y%I>~w&;_|5FO@>JF=yRiT$KFB8SODi~Lf)we`A zXg;e}(Qr{f!EE~GZSjB%)NQB>_wR>Bdo?DyP}IJxsdkKw&`IJsbXDq)sZTl z6=<3&N~i~19f&TWMz98XpYnNCmse;nm%1K??`<6As;l;?*H|xhO%;B%-qnFL#mF1qtf%8g2JsT!@HK1FU9=BcWeJ z$EZiFCU};Y%M`I{EJ$JWJ*+U-5h6*wOM-kJi%wCSt!R!+QFp9%h`0PBeJLvAb=*sq=O~<;rm9{nJf^0q zp)5S6rmE2_yu(vUWwBmv6Y4Le*0J7e69(GB+68CZY3c~;D4cDlsdGyyz0`=4(WO<_ zH&7EjF@;m%`#L9CWr^a2jzL_WH)+k?r7^B33+JWMDwc)wQfXDrit4P4TKg7mH$lWj zhlsN3BP*I2%Bs(-=qOWOeP=~2U0z-Ilk{@j3)OCU<+s9P&f%yEDvboQR8DjSHIUW> z{VTen8o_IR*{iFrq&Bng39!nl(c8FBI+LraB3GcYJj0WZMORaaEG%C&Re^=&tETE% zO%#Ln4FLX7!hFbML#!+eOs-mk<6GTK|6;oezwW6{&R%5K_ zdA`PKiWSvFV|C1m%HCL|tj4`yT#mPis!D>I2#aZ|8j)c9o%A+UEm@(RBOtCTt9a)q z&>&V!jkuU}HG);DMha+>6_u!&s`de-@qnybE6l(Xh)D8)fu#zwbLqe##W zWn)^XDIAy4IwZQK`jU0BRh5`lDu*?uYVDZTYV3!$d;-sY+o4oUt7Ge^mi)1OVjfW6k?ft|zUl%C=ZU_m&_{Mn*h_}#r%JjS z6w_bzBYE&i-+^kV6+P)YP>o{YlfDDhdn|m?caYjmvQPRBQirVQN#8;0gjJSjkFUKM zq^_}!_%cAwdYczdYQ!TkgHmH_&z;)XD(OVO@-E zZ-%JS8!7I3Yz8Qu^*C%dRNZ1d3)>A&S;x%x1eL zXqk9eb+I}lpNLHtkEl6T^!)B{b;N3d$lE(p42R$0#O>yZEwx6*3|DPgb3l)(QLMOb zBV!&@i&?+Nj*JyNv)2xO_X ztVpviX0rN-bt&}Ym?>%l>xVAeVy3E1tWj`g{G9rjb)x*9nCI1}tf!#QPg7f1$Km)l zU1hUw!8O+mwVf4F__L@N)J|4wcq(_M+Rb{VM6tjuwU<>fsZ`)awVySuXF_1M`kd7` z?vihgI>Z`T=b^w{^#v;m&hF=_FIlzAZ-{zHeZ{H@&&AGH$61vM-0>|?-?08D(mwFA z`j)k-J)2vv#(+nsWYsay-vowqP}M(wmuv4syfT+TJXB>HT9#_BpCf6VzJu} z_%6+2^|Ot`HoES6U5TyOM)3K7j@NxlRYz7JhnD)>OHH~F{^Ba?Y>&g*^6=63fuhywRk@XTjfJF>;MT{Y>nDyHAzhFRylU9 zD*8Fb(LUEHpH;TP?bfNyEZpuR6>{+2n(I}#)eeDucfBfSHA!r3Q#*Ep8g&@goFtZ4 zZW_Bu9b^rMXYW2%Z+<~>r=r`%eyUEeUT@Joc8lt9gyIgj=pUP{j(kbFTw_@5c9njV z^mFqOu{+fr*6pg}Vt1=z$0_cI+EZfpsz{cv?abKy%F7CC^HS^qRgKj%eM#&=^)>5? zULJc$onVbhc|Z2BI&GD$a5R3Q)_jdAWGftTN7OnN*8G=hJqt(9QT00uN6uGDd_&ve z$T_B_v2b)8SB<`4Ka7wjh z;dnT$j<9e%oKf{o)0#LQzEj7nCWyxit&9C$#hjry9344o)ej_`ZO*FnA4xb9{h&h6 zp(coTYkV5}qw-l%?>VP3t?1Z)PHm?+INI-sJ+F>f(b@fZ^~`zNCqB)4UcG2VcRc+ca4+T<$3_b;`Jh4(f7rH-=jzQ#rMJqzz^TvS(FwFvyA{&022cS#kv zfO)~EpxOt1Rz8xaJlrq1tU9v3F1s)GvRcK8?{ygTJqz#FUsjh{c(?wt`kjS$>#r#9 zzibNj`N1nHmDRZOvDmAsDyw_vlc2^dyvz8D%4FeP#$VKU7Tz(trWUdAj@dP}lC`J( zVR2n;U>$D{pA}a-Swkxw7B|!p*62zS^c@TDvHYrjXW>1TUsb`2lxsZKzp0{Fc&>j_ zrCHJW*)4^?e4Bede_PG8qBG+=>H{n4A$Qb9E9xP4R5ryy4>=oqR~;nTn!l?;E>Y@O z*LPJi3+L9mYOvJ=Q7Rg~nN!WNqP+Z}wvgLtlTsIYvlU(~?TeLq zpB42_sk>aJ)Ug*xJ%_cS*J1c&fDuqBB{`ATC6YW?}Eiqvx`)_vF!UvhpPy z79RZpD>4DTX-I#@8r&uoe%)X{>&Z3;yrKFV7WTTl`d1eAy1Y8iRVpp^kbJr*3wuaD zonS?+l3zdj3$96hqJVzOiuyzWz01|VVhd>hHC&V0sGzQ8g>CdpY?yAzIt!yQOg~Gq z{UuDl$VyMU1#yd6Si9kRISXqyT(4$ft_$f;SeWZVdY={Ly09L29rHrhsYUD$Lgtns zLeH^rRE7whcH>^IBlK1)dmSEIOdqtOo>feb{}tEFvbip%*R!x^71Qu|p^d|yRZJIT zVb3bAqgdFpitCar>{*ezF$;TEr0&GR`K5&J%fk7kgwABGhG!PMdK7CjJhR}{6IkuT zMO>7g!FnJ(1hj}%4|<(Xzrkt)z0RlKWfg=tzh29VfjGbZgoQmTp!c${X9e_e7WUR? zeVv89HCj8js3x%2#pqZT_PQ8do`pR*R@Y%+Pma|sS=ZCg#>VNvtUuBV#Kq}RENu69 z{VWUHJzmeTqIOTv{eQ#MsofLxHY@78$@-iXwR^JeaR=9=-kPirT4B2vjZ4v|S*2hG zOVN>caZPIX6rIRQPxHc>6Rn_+C${&S2qtJ*m1k3tPIB9>&6! zE~TGjVN0j!XIR+MY5I8 zA1JD&3VN6o)lvn$&x&fPf-Vi8)yLy)(TJM9in^8+jgE>sOi~<<@QNB9Ikjt^En6n8 zqAth6`mCgDlk7EmCEbJLE=5<3tE4-^@4;XS6ARRjtFD)uTy==6ulJHX6Px`Ko34Lk zy#VJ+>Groju#G}n7maIXf9(TR7|xfP>3I143lxsV=DHjUM`LqchlQiDh3>|}(b&TN z_6Kf=PYy85Z`5 z4!V{V^@)ypaUR?Y^@&b8+X}CU`o(qDC#!u5kJnPF1jq9eptX<`XgHl+j5u@U|>&mQ(5#vA&S&=PLMGxJUmE7Whw}N9(o_aK^ME*?COJ}j-@`r=wuufKPZ+hz`tc#U1K<~4B9ow5edNZq3#|+RO z)`a-><^lZ`Yi@i7=$sYRU|-!dAC{eJsh@t(ipEhtJ=u!JQ9r$m;-HqEjq9&JBzf@O zeSf`)h4=3J>uoIjhJ*q75DV}5574KrDD{E5N&b7O57L9JDD^@5Eh|cWkp7Y4Aob_t z2J359G>Ql7iUn-@d5+|p1#vZ5r}Di7YQ*XSHSwTs#~K7R@u2R_y4(ToVCi8j0W~;8 zKglvx;0ZT9nH5?^)re#dExw`hcr<;)ZJ#j%!X3%S*o#_oyz(TGuhh`)40cVlB->DPv|nP4#kbqHC-Kx8?Dn_or-%>cOk+3tV3~Q^foJe&-;dV ztp3f4?q@xv;iucMmh8BFO82p%KJk?Pl;WUI{17)z?<3iFn#SqlEbMjT^p7k&KYLpL z%);}tr}a%1_T=#zejE3)CQyi4&)wpN%TO?0e_?C`m_4}+^?Q=luS&zZ- zHcNlTngGY!EWMl69X{1QSs!8zf;;k)_1CPPrB8aN=iH4(a{Zj% zY(=?#PNx*ZILh^N`b8@|!iK~@uNPa<*nD1>EKc=Vy={JoYs^Y-TNu=d6`EWkewyyf z3M5B^GFc`iDSogrAo#48G1Hrca`d(MXWyU>czjH-(Wr1t_kQ}*7vP{ zh?}W*v#z#o6+crSXZ_yh*|=HyI;#NO)0w3m_@*H26L@a(qAtL~bDI}+F&6f$**d_& zo;6#iSW$h>(RE7PtIxT*j}_JDT#etWlv|&3b*R^-2lY9?H%~`eQGL$SojDFa-#AbA zca;XhZ)w9B1@B$Fq{q9;@XgoLS@^uheEl*D?_|u^%UO8uVu4=gszu;sz0K8i-$H%Z z)g9j=eVXJ6f&Tf5KF5lH{`rc&!fFb2_NuI`-Es#Z}ppPtIlKVQ>%Sq-6ozNU+? z5}6Igg;UZTsh@W{MG*Ja_Ih1Yd=mIHSdUe`md=qzEWo@Pa@@}_>? zhk2o~xlF%nMf2`5z2DV4ac^nq$2DmlT&@dQ;XK$e{%u{tRnPbpI@Z;|_;+*}R}aOn z)HPj=h<{h7ThUzpo_>UdbNTxkzMLG=qq%&Qb^;`v%UA0p7S83Xby<>~%UA0fRy3Ed z)(u!Vm#@|>t?+$>f$^*LdMlcDKhQs0(Y*VizDC>GdG|w|4tG9s`{#%H6)PO?`Qz8< z6(l%Q9RvD^H9LF)Xgli=e0R}Wy`OcaN)G5K>pl4HqILQtYYTjL(K`JjYchOy(MS4c z)_nNxqL1{=TtTl}uSE>zEX%V3dfj@R--_CHgZ_qO@6Bw4uZXm3+7fNl~0gSa>w z2PK*kze$H%(TLlmzo$6(UWXYF_Xlff*c?z;Jf;3cf%ayz_OWsbWPnmxs$hHbv98K0 zQZNJ5m{mNnz4=79XC)?Pfcmg%L)@qOAyx~B`&5r%wM<$V|Cye`>XozvG>d>XT@wCnn2~7+jwpKHl4^?-gpzJGRxCs zZTxoKjuq8p6X*ffrpBpahklrKsPO^s4n3Atrb(*Usi(3UH96qjsb8|1D6$%Fjo+pB zSy5~5){B!cFEmp3=xtUsf9}x<$rwkixkpd5!u~lUey^TsMXkA4e@=1sx@xaJ!NTjR zz4`*{j|!P$pZ=AVuVOgJNuip+XF&GrSQfswyI+@QtuJ@ddq7ub?JAc8YQPHZygUAL z-G)`X^XH(REWDmRsE4rdditOqWkqE_q%%t1EBj$R%8JTZvLDt}Q*Az>mmiJ) zLN_5nO=S3v=#ExY6G!xjG%8VQ#JBNB^aNJLh@+qvSa|jMrC!9sTKZD2VByv0QN4qO zSD#1qQC9x+De+(FtE^)1?#EYJm8SG!AnuqBuu>uJm@dPr1aZf8b5YhC&Cpe$COrkCTt(XX?HHN64)fK^N1jX$9euv+MKF(>p%)-URA{I~ixOF`VX zI&T@urw_I}sgqbK5O-2nVGV$|Q@TBC1jL=veOWUg?zA4qS_pBc^$gZ(h&!WKus(&j zGkPQIE3Fg0(??l3@E*~3`Ulp>4MG#X*T1k1H3$RAvXswV@HyceU6Az^d`>t=`&d0v ziY1)Y)mTH|ou;!ooi#NDo?6wNSTCm>@cy9tTTK+{>Ar*?^=4LH6Q6KScPWSIQI9;Y z7gs>hG4+D3T+znanf9XYY(@R^qV8=){qv$8Ol#VwK7P_eg0{P)rv+_yNuLhd?vk!l z$(9y+a z*vqfzv#jI_sR>v0RaT`6j#=fN5JhJKobGxQBT(~8pjRewdY>D|<~Xib~m zO`X3grcUYI)G<~#N7nb<(&eluy<2(?#o0OXmR`cbdby?FXW{6-t@pBU^xxLsurQy$ z>0eox&)>AC8m3P9yrZABqNjcC>M0awbA4B@u%e!ISAS@QxrSer*FU<-_Wq%L)op!3 z8FYd$X;xGQVP;aCtutX(vM?{gY-ZuPzBI>Jc&;zaITqdrQ|2-Y?}I6Gi-q^Ww2?Jz z>K?ogrcGWJ-gh&mFbnUy8570A`)-bjXW@M}$D~POE;PPg(fPWtiE=!cWzPnXg&c2gA(`7M4BSgw(xP_Ch9( zg=H^fDzG-gw?h;*HCTJ$+aU^@hOG02h9nd*ZCSSpWrBLKHo@J4qGllLOSlhK)I7p+ z;2Q@c%oD8Wdho5DW<2X|v2Wvxndz*2#gBp(vT*h;Za!k+>|NaKWZ~=`X^yaP_Kq~) zvGALrN|-xV)M6#f#QOJI%xm7XqMqe7@4CwNdd)g3yo>roLX_D?g4X;#-e-=m<~C}c z;4_!4CPU*#(nXaL6BvyfsMv+&MB zifPTlI}0UE1`F>jlr+6rc;reo!&o>&rv8*Z1!dbDbiDBWaSk9!da8@j5%Cm4* zEN`l_a8@jD8nE!pxPocJ!ZYIvrY8%p^edXtEWFaMXr@_F52<9@rDHznilMT3%!-aH zmCZaWnzO2!HCEVrvb|N!7ZeBmWqEuxbJ~jfOEnYSjLMERU(KYku;#0o8Z0~yscxFG z@I0it>BPeGkQ!z<3(rGpm`PTY>zd{o$@c47rdV^Eo<086G9^invvCQvOf@UYSuOJf z$Kg1tWhSwPIg?<`7hOG{P}?lFqV(#R!z7ztU2~1rwCU9~cX+#^5wjBNn$Q+DFLw5> zYl^Zkg}SDktLGEynI2Y@LVdHCWK(Ehwp!6hZD97$c934UXkdOMLHS-vXlSm{cJ^Gc zp()hzUTZco6|JcK8kw3_)P9XjBZ`B)T#j#S+L2&BdnKW<>BDi)H5!-D#Ei9~d^Ry} zlWabln!Q$(&!*-JtJ$8gnr|dDHKrBjWwysemXu9RK2~_-3WzJhDjU);B;Ax`-Lb06 z3T=jQomdHlP(xXd+chV!-pqq>FR?0Fy~`>Ui*ebkP^;stt#-|ySus{lYs&R|opHM; z){45Q@~qeGUYfGrDu!`AS@TPy9%Fq~0X3ENnAK~nrL8e;Evs7uYA@?-0Ck4du`uda z*1Q6!0&OUtRc-3=tXg(2)mf))TpQLee%x*V>#1_6F|4yTg;}h=wszlQJ=zY}{FwDj zd(;=K_EzUv3p!xjAFP%J715URdA$#+6zhuJXMI+AyIp5iKU=#GvG%pZ?IyBD*fv_g zI%f0vKC6I@+sqE?Oyz>HC7c_)2y1YUbX7YI&U?SHK#4+ z^Lf@cHuWW}K2{&Ga>8-V{j5@9sP9=fQ&G2AC5ofM+EYG%v)d)ImRZ#zi4C!<6VlC0 zR__8IB{VZRtn-DJM71ziSZVD(O=xL~bg=srrVxCavWa2+>R%Go#*}8|6oYS5HZ@qc z`t%d+OggIz?6ZUE#CogslBkZRFKb!slBiDR5i6V-b|z$)ajrg3=weoq#O5x?61tm? z9WgHx#aj4Y%^oJb6KaBpYJ4i8hgr@lT;W_oPjfAU;%>vYX7nbnHrTd*Cx-eN1>aQr}j$6Z)7FtSWKZ-`Di$PI0evHHrPqa@M)TI)MS^4r_GJ z0*M1ncyC&>suPho*i>UR?-r3b#4KhFERrdPnVYOzfr!LmW>_EE?xlJWi4U7&tOBL# z1Tu}MFU2L-trHk-&avL~6i9s3Z0k>PBT5uV9AO#_ASEOfNPOHZVx7%fAaRtLK9J(Z zCuskZ<_%V(g8sxYCVddaEo^q(_mnxz3N4qEIL_oBOmR`Iult@h^H~+($<* z51wJ2U^cT#7AT$gjOj9j;w~4_{z>LC>%sim|EvigMsXi>*ZwTC?_tt;wLEsRY5Pd7 z*2PRQ^D{|Hn^sPoYEp)iUTai0@p-f8(Ofl2oMtXRMk?N|RpNBBXawmycoKGo5hF=y zO*+&Zu}OG};t-e^6XM=5%g0gNw-C3? z6)0(Qn(8PDma8|`qBNA7c*IbQBTy1u{nw0pVxy;T$@FmbcH(BUkF}}dn#4~{*i_nXQ^n1RTTBdVE}W5VGjmw0GEm!CrSk7g z+-453I``ZUI>o97aof#BtBK-681LK7E!N1QM<6cGb2dHCPpLZ-cbKBAePuGm4in3I zxY%)sD`SP{OW_dL*wrnu)AV$8Dsi_N;p%+iJ~Nf%`J&$C#QkQL8@J1|-z;=>Bk_P) z=PFzrG@rTJnQ+Mb;z}faVeY!hlXS!seICn@CEkbcjy`H8v8KX|dDP@s%@YH|3MCyi zzG=ATJkd6`P|{as1gmpc@uXvBm8+Pfugzvw-Pqzu-yc+TXXVaovLm^G8m zn;6z7a2pUip^d=jKV($6OC1x#V0 z!2WW@l%GXdvtP`pxfnM=oQ7{s zx@H!!jzZiub8;SShkfw6`GbXh@Vcq=62)O3ylytLj-=Lzx?#k8io2W_mBIQD-lx1_ zCb3Rt>`c62_LFSiyXkskSbIFNFFw3_Id4tK@0^E1m6kNTB0py*-HAFSt^qdc!*3X{a+HFqXz zryOfZ_5Gl2tk0|OOf(LBfspMl??A6J&PuCE;?er3U5jZiW0Nz5ablK`=2`VxO51(V zJOtvhtZfn768Ks5JdSz;_mXA5hais=#=`F*$m94~_&o$3 zCzXZYL*Q|$k;I-Z+1^m6ovS@Dd7U9v^TeFk9!dF}5w7|s<#)!rdN8S=bJ^AKq(aVZ zS5G7rcFdcYGu+F#q@vCU))Qe_NyVL~T}@9a;Y@QiH_7K5arJ6ajC0D>n@MrbMOW`8 zB|4RsVG1;7m2?_f(VSJ%$+V*P?NgmQt8vZQqCt^$NvTec4@e26K29p-JZnYQ%xTVa zk_Yb=ra3Q@;8Q8vlG2=w9G9N9H>tF<-__xyGR|o$n$OBQKT({W&&oRCA7XlxLRlw? z1n-mFlx3YVtcnrGlgc`<8vNVgyamrQlyh|fo?E*o{09H>xp4*X7i`KqRoxVhCzW^F zS@oE{VhpW**8siG6P#^yy_@Lx%);=IVhUlXYAEM?71y_HnM*=2>lA0U!z zIhkv5yB%_7YPPqIv)L*OzH2p4a$QHQv-^a3{%}$~C!Fg9m9q4Tp9K3C#PZsgqL?e_RmMPo;QMEg7fzsAzoDQrcb{%zvG*FiyE=oyeEPDQI9 zAZH<>sZ)y-iuKaeX=+8E9&PIMXW^$u)1Bc~_zOL;$?48(to@+o&O27rds;f{t+4$v zOiO1A$$o~om2;Yf?+3JU&RbDFTRS&c_}pP@$E?R(Q$E``5hR<>Hcp%s<+F`bmxcLk z>$J4Oe3nXX>paQY4{GmZSy4VaIt#5ZpOuq4I`3Fv?Mjj1Y_ghYdtGNIn}xluv$K!3 zgAyGUU7Q@&5g+`Tn^SoM)ipk0)77cX!V-0LT3Atux;b4)wnW{WK~`B}W!o6h&6#6G zrxoRFxU<^|&$=>`hdVc{ z@OMpO#N)ZM4a`eVC*RWr|CHoWZXC`GPrAaHVT=>L8B04`^lI=z@>pl~$5i%9@ckj< zoW-o$l@=zCbKYfbsk{WV(Tegi&e>;$-$L?q@k!3-|J(bBBd{neDXSf@{)V<~aSWC@%|~{9Ets zWua4xg?o9$S^oQ3ZVu5`Ls(cRv6ojq3c9`t+8 zeu}gAe&2I`rtNI%?>TDwz0}`xido^iSMB`oJMkp@?7{m^ITqgYf8VKRMd___=2=mC ztDOZDXVY8lY_g)#u67Q%%J!~yzO%yg-cA0%`I%(P_knYVh2{IeiP?eqoFLK*pA#QC zZLKK1HBLt>%F7yOCCR3~);VBBqhqa;V?}vc>-_2}+q>4uw-ZyqynL9v&WW_5_aD|d zi40&iW%x!&6eB?~CqMWUFUa+Fn*E`#2J6rSXoqblA7x>h-^CiVW z>UI4aoE$4E(FUi+F3cId*R#>-VTC;;L~L~WThU%NIuB7C?4^Q#lQWjKv+pr%at@Ph zy=-=_x!Z+^%}$=(w(PJ^_%#owm=*2wV<(m3V4oY3KXIy(Y#V*zG-6>Jed2VqqFjIK zd`hzEede68qMHBAIqxdl`2$D~C`yP!$va_AhEL^n#n2P@_o1&YF2_*8?|2IVzq?-J z-d3ZF|NE`}YH$DlmIvqIr4}~Dn)mX6x%zkcr>(v)7`v$f=Kn%0=KrW&@-l?VF4uOs z;pKJg@}x4j<_qxJh~d42aD+_6{orzCm&0#~!*avR?=M%c1YAE8`h*f2ApG;|&+6e4 z$^*Urt3CgHekhjqum;K~1%*^66mBbs%kR%&qguEe*HNNsA$)ziJci{8|NHgt-^1T8 zq53Zixl-assJGmnb{Fam^5cezQ>4CBw*bce)wcg6Me5H~cG}Oq+EDOY%D8_jb&HhT z*R&)zq*N%D_SUyImV$DQp@Ls*#%(DKUQXL`83VXZa1H#`nzYZqFWv68m@d^4zLp|* z$-Po5Q9Alwx!&xCTXlp`3Vi+VdcxnQOLd5$;yqAWztOy5+ws?YxaWa!7%sE@joR_A z_WW1vODz?E{V1{D<`!S)w#z76>T40U6mI{4U$D2!xpeMw#mlj$<>s7TQx6aB6;!KK zif+Yl{}}!`55c*jyd6x!H5Ym?{K|%HLh-fNhL76tW4pYPeLb@T#!}CJttY;2VD~_E zHO!93zpAnSbopP^@Ow7h;PO(dUFnYb32wWBMQv^a|2_=v6&gmzpZhuWkl;}eod3Vd z8;we;A9{`XgpZ=SZ7M}@D^TAEZYgTJ``4lN`fvM*gkMd^k_Puc>NEd+PxvQ&;Qo4R z53Q!e*Y>#lwH+z{bBPhV?D4Tgyn;20R>%Bbw&M$HSPR;U+AFw?=ryHCvB9s8wZ^@* zhJ9*rw!^>gA@}d?zh4rZ2kI5~xAp(M{*XHx-uk@gf_uV^3b-6YCEn!UNk;Pr!F-(MS4SKrt@&=HMZ2k-g*Jy0v- z`dVDhgI5aMV(>a*jy9{7HW7CLBf-6DjllCm`S{Hmhqt(5T>g19g%OTLp zxz|wLpk<|?vp$-=>8y{=xF*-Z*s?7#q${s3w&&BC0G)kpEQzsen_>7A^d(roHHLJa z7Tk+y35B#3^;LRJ;m>gGoZBwJujj&^m7PDO7y{R-N_+^R<|V-;4L)n7+6!JnHAZbm zGu!&gxVJ?R($z=ql?c|75=ZQHiU+Rcl{jOs>nT_FuJIM$Z3weD|K8S5!)mzxPj>dk zI#eRm_M9^I+$NUP|u-b zR`5LkS7+eCt^ZH@_WkSp)eJ`cfx_UCPD}3J&p%&6dvk1U2hU5vd-(fY1+V$vzy9yj z`l~%0ipO5`bQ<=tr(o1*kpN@U*iq?-ns8+Q>)7Yv&PIrx=ko~MkLN#J|If$V|E8Ai zFWtL#26zR+e|J3nCuz|>sr7@`|EuM}>jb~1^~>3s3|`)$0_JV2Jx`$Jv?O?)zk2=8 z^YBmB{3q-DRZeJm@E+c^*W;s#W9k0>Oz-daNwL941WF}%tKb@=J6FN6^!omKrsctT zzJIIWCI5WQ;I012>oHBRmj2WI2d_`F?mtQEfA2bUB%)&h=S? zNs2v>#dAd^{`u>Bd!X~}+-)gc+Rxv;&fO~b+&H2fmYSB}5nKv7H^zRV#JBdI_Ww*5 z&bsY6B!xJZm1qy46z?>;7t*y4^|bMDWvWCyxbBbwUrR9&&KZJVEAdg@+~xl-UVmB| zQ>XcmXGO@564#+uz!#m`-qp?KA44Tp*{i2}ueB&?uS&W=%fh=M`Ee^+f_qT>TJ*MM ztoT3I!S!?3nRs7pYuj5Wdv|joQsC?Rm**~_b@s!1h*C7Pd1!C*uo3R58W9tQSNG-N>OMr= zDf{o%$;~H?Yf20EnLF0-b#7WX?v%}s40_i|ir|`|*K`m3??NR$gDWPwa}Ia&+&2Ap zulw76PBlrjSJB@237${rDsPp22bSg>40G=b-FuyT@8}h~CWg7|+ zJt#P%w)>~M+<4E&@Leg|4{detb?#RGb4l)2)Pgi~Qf<&kq;|PCqvp<*+wENrDm9Mc z+-qlI!S^nLU*EqbEeT#H_%-J9 zzf19{2<%b!pF`4;;N`*T2EV>P&%v?5ujx+U9!OD(S+K8{yf-Yx|JU9qpTT?kzrTn3OZ1=S;r>0)d1i2L4?g#xQs2LX*1vx_-L<2A z2FKEC+A8?W_WpH(x2<6BadoiQdRKd3Pb=2j5zXL=xsl2*ipm1;7cQoYaQJq)a99q% zLnlkYUmE*|OzbD~u5W2XSlx#8ZP?6)?QGc9h7Z{AK^qQ-FhY!mFa%19pNCl>9_|X? zXJ=#2Lzp0L+1Di`{_@T|G7t_)s|aDM))K&wXY>xWCVAQD0#!ZneOMi|vwSqM3>> zyWWO7MOTG;en8<9s}I`O<<%D0w!Hi%@-%Gasf&B4ns5%n?AV_~JM~TERh#-PSm%kx z#bkN;TvNY1Bz}!gkeCxG4#Cr+Wgu6>d)E;gWEy-Ty}TOUwk*V^!&l<8gIv|I;WF6g zSMi6%al2J{Rlh|md0fc6?QPgaj#l`&mCkE#m@#Ph3g+Nh$bkrHB|&($*M; z5?*5smy~BJ9grm@eu^O0h9zwqm9%YC(thfxq-`m94J}pDwiK)bEmhLCR7u-LQ^l4( zm*oU;tk_M+|JJ-URe80bV`~^6^Xm78aF{a$!n*Y{RZ-|O6Vz0-v1mUrOPy_%1xqlW zqt%#>^I@z0(XXodP;X1&bvFFo%>tVBOg|H8V&D4Zm>!HT_NB6QzhS}I*x~s%rsq8B8*D0~BpV1H48Xj&#tlMy?;jMX} z({HOHm1pUx;zRiK1MYtTY>S^{xh20TwOF5*$rYAq_{Gi|EA(-J?Q&kqg!kd~ckvST zJg)dQy+Qq2=U2T&t$}-)KBsu7+qyMoGTRT+q1R#mFRz|V!#=hZp7R^6c2w^V>wFXWnAsq8 zJ=~7vTjCbH-sPF4nmeC+LiJ#I)PqY-c+SW@q43>bkSqK(hCir@3yy`nb36$_x(0*N=u`yN3t~`l{?;Rq2Wz8Y-ewx>f4F)?waPo(&JyM2%C_zE*0--G z*w&dUt~TkKcdA%gzgOONdS8J-c?+qQ(8mtRLB(&%siH#kAWtEfktV=$tjR;NQr_qD zJ^*XJ2um*bM~g$UJ}fyT_xD+ocM0U`Xx;?^pTc}w?D54wPs5fi2xk&!^A?0-)C~yp zi}Lvj!g1+62#bpC5Jn0C>-a=u{(>S#41zF0WI>o>U&Co7#Fi7^!jekjG=$Z}SqN*1 zOAyu*S0HR8LJAZV>7pcrEk#=h+uE?B7!9wxh;IuP6g@WLu&vAkVMm!4!Y;A^ggs<9gneWY2>Z)o5Du0lARH!r5N66~2uH{` z2uI082*=742*=A(5KfY1AeTHiV00JqQ=eh7i6Xn?Sf6 zLXQ|>nn5_qw1#l3=>Xw)(*?pwrYD3`OkW76nL!ZFv1`t^Yc8^DF1BmFVb@%4*Ia4W zTxEvA`s?lbo9+6a!TOKJz$)2hA7=kC^cg9y8BEc)~mf;c4>%ggIsogy+lx z2rrsfA-rssLU_$Ahw!F(7s5N{0|di2O*4fFfE_+ zC4@1~*AON+ryxvmav)4|&O=zvxddS)=NAa8IX5A!<=lm^-v46lP2l6Ks{j8xPiCG; zx;LSg3fPu{Y;EbvB8w#H7MnJqNoj#XnI@BD>|`d)OxmU_5)s7}6c9vIB4ra){ECW- zN(2-Y6cq#&mkKB6Uox#ym{-+S)4%QH!N^>t=NDh;kl zO#)j})4}%CtH93GLEz@p9B@nOaPYj;(O`G#Sg&d`oH*czJ3I_^wn2yfW1TUY*(wUY8mGZ%7S-H>P%jds1%#Z%e%eyfgK7@UGN* zz`Ijdf%l}Y1Mf|J2)r-#QSgD(t>8ncJHdxjp8_9EeHMHy^+oW>)P3MnsRzNIr@je3 zlll($T3p&-1fjxBo`4&o6>`zXA^ULtw?f7~JJw3SQ`64qoEF8+?oZ zKJaq?TJT-|4d9jj2za%B3wWJ>2Y7>j7kH!p8E}vP1@JciE8v~}1K?f$H^967Z-e*v z-v{sYp9Jsoe*!+>{{no-{}uSK|2+7p{|E3f|1aQ^{y)H{d~*Qp@29|L{0ZQ5{#5XJ z{{Zkse-`+X{~GXb{=5TfjY-SQO{Qh$)~03VPD;znotBoFdq7%d?ty8Uxd*3ZKF&!W zNvy-t3&11OOThW*4izU}ri9 zZcZ1#E$K3NUV0bUoxTX{OTQV+r{4w+q~8Tr((eU#rQZ);nEoJmN%}_cE$N%V%hMkN z-Hh^EPX8NxG@YDLYaUD2flsEVfKR0xz@MiN1fNMC0zR*8`=Yk( zOWL-7(^h?1+tAb=icGTh2(Y$xJ~*j%F*vREIPkz)>6e3RrC$zH`beec*GeBPQ_cy> zIaxWU)k?3esFhx8)zEeg?bOgM$~jN5Tlsy8c@3>7f0uGDRL&)u+FLZW%WGu}T&Xfw ztITyObA!sPU23glQB81PR8Vcb=rn?(uQ;Dq}>jy zlUACq{6+B55_KodKugq}2A)>85?oRD25^mHYh4?3dtE2kS$8J5x$azWOI;UuUR@v9 zUDprx)s?_}-A-_z?n1CqHw^Bodn(mA^;%x7A5+ z-dQK@f47F-qx^f7e_x%N+%xgY8B@%?6F(0=p!7pZKRoeka2}ob1o+s*=fEc?{vCX3;)GXC zF+ZPp5ctf*`QURCPXV8wxE_3Q;#Tmbi38x@CSC--JnsX}dgr-G zQs3t%NpHS5N$T~|B$*w5n2 z!<2KRauz9PnQ~50&P&Sqn{r-OPI8K*Q#(b{nKVVxnKng6%K=lQR0nJ5VTwnp%zTwu zq%tQc|77K#ru-GkZ&iM~@;jBkS@~Nu&GV*6&vs9d9_gDRBY8mOD=NQBEC;& z$!vW<<36NuAJ({!YTSpXA3*47^-`}D^-`}j^-{0adZ|UH@;57gi}KG?es{gpuCHEd zm#>%F4b)5RD)o}%u6oJw!g|pUm(+`XcuT#^pv&uJ&3ae8tXWsq%jmkgUdG;a_4hNn zZm53i-vfsQ%yJ z!}ZCT%+UHe@UeOs)lb$>fqtsK0sMLWf#5Ushk(!39|}HSe+2kq{e1AH`o-Yi>W>3o zu0IJh4X1(pcqdrf@CI;FLmN1)p%XlyL1xE+4QE0h+;A>9r=bfxtf3D)vY{WG-%tV< zHS7eJHCzau&@c?1-0)WLw1#(rD;ll@*EC!Mwl-W3wl{nP>}-(vxVd2u^p=L(!SfnE z0d_Zh8tiMh2h2Bo2^?tnDp+awI=HLhVerC+?}C>!`~ZAQ!;its8-5PHtKnJj%7)*7 zS2z3~ysqIT@P>xJgEuz(3*6ICb0F>CPz&DKFd4k7p&q=uVJ3J_!@=Oa4RgW!8eR)N z&~Oa+P{Shd;fCelqYbYEA8U9$_+-Nh@TrCt@aGNd!Dkvez~>q^gU>gd1HRa>4ScDg z7yMg89(=jsd@y-{>WTwYR~(?a;sDhZ2gnFK@BkTs2Ol6KaLxfT0uMVtM&KHa)vB@D zHP&Y3Y*EhLO5daOy&8I-rkR|fdCkzgW@uhBHcwy3K69eE@Mv)x%w_5xWcH{#&wO0n zW6U$^E;V(>h}=o$Rq8gIv(;T|o=~^L{6gKc%?s*wId{8hn9svgQ#R|T*YL^XJI$HP zyKt{E?_Yis?g!0Bme+XJeHwRSV*T{d8e^JHSwDTRy6y85+^~p$u5*W-JL23?=k9gx z)3}mOBIV*ax6!#7b=&6;JO7AtN1eOZxe4FJckWHNTHdsEZ*uO_&K+S=HJ$SI`J?Kt zpMF2C$ak?h5%*H(-sIf-aiyHi+}x_1b1!x7?UQW&-*E1)om4$9d+(r=O*S_{#%{X`1xg*XUb?#p0Cb+BBdFR|l=VqKc?A#G` zf4gwh`R8u3@fw|*aqh5l6WoqBoigv(x$3T;-ss$nbBCQf;@nZ^?saa0R~}8LbR8>q zPEx)`b#FX2)Z@?S(4wda}&IW(e`m} zqjNLr{^;0Y=O1zI-1A&~=Z>g5ebK18YZnb?Z1^7BgP50%UDls*?y$OVUNqwTqt4yy z+(fr4kGkJn(CGYJhS_pDx6!#7=MFn}#JQu+-Rs;$kBjfzM&}MYcf`4gH##}zHaa(> z?wc14JO7Bf4=oyX{=LpkYuHDtM23_8Fd-Y&K+^? zsB;s$Y&vt*UAv@F-7A-59DmrkBhDRl?q266hFtlbn{n>2b4Q#zs_xpwd)58sf|1=4 z?};U&>S6~tH*tY0k8?B59d_=Bb4Q)K*SU!cCEkpsbDi6$F74^uVdsuGchtFiojdm; zR}bfAoIC8?5p~a5I;!rQ7bPwh`8$`+RhN0}+>CRFojc;(QFZ^Ybgy$0Z*ui?ZliNE z&K-8{h;v7syI0-gmnAN7@txb~+!5!FI(M&gxrU^?7cQHt?l+e0!4>`U%%#>Hd8S{Cl07xZK81;;No={)}^nojdB>z0T#bhjL;EI=9ie zD{v*9jQZ=B4?F&db4S&^bLn2^PrSpXGwj?E=Z-peuX7Xcbon{A(YYDt4m)?mxufd7 zdC^{VS*PD+<2O1t+QGU6)vyI5&|?6cUxh?!+aDw?ymVl&9`d4Tk~|y zZ)^TpQ=6QYJR~_UxioolvMG6XGLyU@d0Fz^$*Yt1CP$OsO#UqStE5TINX<(fm0FxS zIn|U}pXy9?rv_3(skfxANL`=$XzH7(AEbVfdM@?5)SpxTNG1HVKf^!BU+ACWulG0j zoBebBtiRna`Mdm!{kQn<@UQT%@o(_=_#gA{@;~d}>)-G1^^ZxfOt+=aN}rd`r{9kvr}WF|+S-F_=hZH%J*jqc?O^S2?d7%at-ZGP z#@btI@2>rP?N@4lUHkjmztsM#wyth^-Q2pP>K4@3H&U1IO64-MgqIyl%{#b@{E%60ZZgN2 zo6YgucAsEI&57oI^E&f&c5>e`r)8 z*X&I6nadJ6ZUf)Qo!@pdk|>*76BXW~44RK8c9^>pJIy_bUFN~Wkoh_;9g z$esK}=0}N(&5sjrGEXHgF+WYb*&OU$YG!+HHFLbTnM1wH%`x7)%>wT|W|8+^ZusA4 zmUvg0WxVP+j#oV=@T%t|UiF;fU1whJeaJL1yzJ+FV-yxYy`o-y}MdGZKjj;?7S zf^S+Nct?j|@i@U-mI>}JwHe1t%Kw@#_?^=QCwBXu)rDm~Ch=!LKXcxP@W}F+&>bre2Jg_i%st^y=(86c3BGpP0`N1_mw??T zN|_%$RALoR(=^|3Je<{2g=6bdn12c!OW&*f?CT}8)GRpdbU~Z1m6>s7GxERPyavo@ zsV<+rE==JcTO{-YTP3e;uMw=R75vv(B4gXo=J@A!k(@sNbkO#%H(T2OmO7FDTT<}n z2b@8u9Ru$@TR1sITawGxZ6Wl&iBiI&>jlqm&%m*vH=flCZTX+k@$>&Rm&?}mhpCy@ zN$%I3D){mw!Fv^V=@^LTZc7z!v3T4sPb!nJ62+ytaydu=M_)Uy1f4sN$qSM`By6T zwg~5r!vr5$|8CN>b(wp@RnRua>iSA6S(#bd8dfGguCCwo0c3u)_9Nh_8>Kw9cUn)9 zTxOpm_(SFI(J}Dc)ICUka{2Axl%qZgJ~LBfYR-_j|C;?7I8UFftua%uX03$!YrhEp z!efNCWjN8!i?yThk82f-_s-@+zYeEw$|GP<=I@8}0cXhE`S3=;7nTU#xk$#CouPJ2 zJ{HqRKhiO8>t*}#r)@GC7fhE}<(WT%KCE8K_Q(Rk_y{S?|2d(B`M&}OkN6!J4}C%V z{rXKW!9VeJ{|g4C<$0v}MXU^eI#cqpp|&LBb(Hs-$)r%8nI`UQ&l383 z8P!FF`IC{!Yx_)DbO7{e=e`<@_x{#RbKuyXwf*vw4boN@Efb8lwk?%S&8B11kMsX} zuEetZcrJD=xM+^_^~V%#jt3tm@)x&Bd)nON?Pl{T%zrH3PksO~(Vg8BmuitbUXvg{Z^y9H?uYJ5_74k=~ZxxK`w|Gg$ zw~1{BJF{$>h4~vu!M5{Li_U^B&pZ!2MrVyVS6Z)ql8l@em&+J9wo~u}^8{@yJKF8Y zx15(J_K?DMl}W1n!N*BDO>KGjvzJA2?fPiP@X946LTx(n^?lp)UGR^tzZkUXpSD3- z{xa2I+jWf_SRfo5+S>jWBo95}9pLOEuLO4<|9-H0!wul8+CB=-YrhS&J!tc?ac61D zXKTu2grtSTyOQnzOynbqtl;QeK z4~ zrVy93n$7YrTQ`LqtsaiceCIXNZvUKq0HHs8z1WuX)WSSW+bv$NxV=}H|LU;(HvRax zinn$=ul<$W_E&tQ1t~MsLLT5xiU;E~e>cPsyP z<)5H<>|B*m{F-tOQ~aMz!vDnU1#i*NJ6JVi`E*TrGgzLdgisnOPC`-zLO;$UmSoQ`~11k$ABJt z{dv#}K#%?Y;n2r|{Q3~_ctsC-?EQ~|=F0=XKX%UMnhJaYzT2Ap_ou&q3%LK#wz(ozNc!J@XMW1brju z@sj)ka1Z76%&nBvGoR%<8_#@!zhlF1*n*z9m(!U9-!NSU{blnu=&yjDxsTfL>qekw zzDjKpoYK4#`ax>raZ+;y_%Jo#H!UfzTUIR{FZ--4cbo-%sokLGqbe*&2ci94XvAafz{ap*dbxsdoI^hA)k zkoXkzWRSU#_%!rX&@|UnhMLd~M=OaE<^O=ZUXC z9|bbb6Qj__fQ<9R{m=_Q#&+UCa9iT*aJoQ7QQ{lWS&&hb_!e|8$S6uY0-Xar^Txz? zptpk_FW0{d-4A-4OMM@@2=bmj@i_GPpl3>nC!ouq$LsbVLJxwT*^&4$^iI&@z57p~ zhd@SV;%DHy6MMn;B%TJZNIVN(nfMj>-o&rL_a%Od{8gaG3-}kHuK_*t{>1O0uLV8c z#Qy>M1E6O2?*KjXiNwFbpCCJ>rfs7n)7IYe92?-1yTAS1_{4LuoTeItn8 z@H(JB3ex-DM(8~tzt!e#g1!YrpLl0N-v)Z-cJFNHkAa@K!#fB1PS7(S_qIZR0`$x$ zy$tkSpl3eibwU3R$S;F=S?Ie#&wR$~h5jtaFBo_^=zBnZ@7miAe!=U9^FLdKZB|^WFsh z!W#yk^)3Z}<6Q>+&U+h@zX$o%LGSI*e*ir*x#peFQ$UYzm);G|thoZtfgrl2=DpCb z2Kh?8<|^=znrpzrYOVzjulWF>uLbGxnh%0U)_e%gQ6QS9<|EL@fM}kY5pY4xP2jOL zH-n36ZY6Xv=$Yj;w}Y>%xdS|@=HuY&Yd#5{R`V%j8bQ{|nooo4YCZ$5=a1ba*xh^% zy1nM}(5Hi*>8SZ4xT)q#V5a6PV0XxT0PjdNW79?xHg~=3nY%=Zfdwrm17ANbVmw=vGnw$u|45ZhRlcA3Tv44_Np-%uk z{z~<9=+}YtX0ieLWY9CGBxgXM3evyHnb4Rq|}`+T=O#uLIGU$*s`WgXqj;2KojNotf-{ z{xFEnOlF~P1kstvUg(d4=*(medJl-sOm2t11w>~i`=M_G(V592^v6JSX7YUKJ3(}2 zvJCwR5Ivb31pg(n2L9}A>BIqxIXvO54puYrS%O!`QzXGBm zlb1q|g3PJpWzhG79)AV%ZO{*b9)E@M?cleP?}YO(h+UU_H}tnbk8jeh03T1j7tRkr z?7iew&`*Ncd&z5{e*}8w$H{AJI1x$m*Z^ICKrjuLh+)3D%`P1!n^2 znTe@SLr((H)v3=wPXXC0r9KBe4Ma1fJ`c`JeG$%qAbLCXCFoa!=3pbrMo-l`u*qz8>V)L{l@tkEUk9xe3J9O&tV%Gl<2TIt2Pw5Q{f88~Sz- zi#IhF`VP?JJHvU<9|y61Q-?!;6680IQb$043S<_ij)ML)=j@nb)ZW(4PaD z*QsNnKMyjmQ;VU$2r{ozOQF96GOtt1p}zt$uT#fEkAlqW)QQmdgUsvHNzf019)I=a z6zH#m?AKDS2Omu}f{&+~;r{?+E~i#PKM69IQ>&qW1TvRXEznPa%;nTt=%0ev^Qm>< zv#B;XzXUzLhddp8A=Lrrcc5o}pV|ohB8XL=+64Va5KBIFCisuk*>GM4vE)rK$ z%)e7xp^d*4I^k!aJ&<38_q(8zAT!<1Li-?Af!_;G_H%HifXr@xJM=UVtIY3*t_NB7 z{UUgfe?FXpL1wgHhJFpmjP?hi=YY&;e<$>zAT!z@f<6pnM*9~)zZPUh`xikU3G%B` z{+pnW20e3(KMXw|#47MFg<`xUj^L(@;kTwHP9PDX1aeZ^d^uM-2VXdnIJ2;|3T=pK~`}8L(u1dXaoNv&|5*Y zfj@oT_){1o_kKMj7tuLHm6PXzDvCxc(|r-EPhr-NVd8^HVg z8Q`ct6a1<_3%uVy2z|-Jh&)*BDgqx61XIN3V3|_^`Si&bLn;9?sOY?LHcy?!gL3CQF9fH->2tuF(_6vY z(-}fP2GY*yF7Tdo7W{m=7yME>N9dP9S|hz3{6@MT&No5ol`eumNS_bq36Py#x(xk8 z5bcy61fNasg!4;~y<2(+{A2n8IDY~?^Vjr6V6yg2V5)W)^lL8#XV+ea%p8#UUi&ui zh}yTqITB<>*S-@xw)Wj{7J-~$)?NX=uJ*lfP6AnxYp(*=)LsLwtGyQfdXTwX`vGuc z?FYfLYCi;?Tl*1kYwZZwReKZIU3+sf#d+y$PJ3@LXH4Z=AbxY9)_lyI1>R}4Or2y_ zC3dGLbAq%xJiLbBEnA&81=WhmI^v?qS=x+fJNU!9r*6V6_r`MT}f*Z_lKz5&*Q7k%~Q`a->W+Ve5~#)@CS8UrgocmOxT^ynmrRXPtBTJCY%A@HsLJr zV-vPaCP^Uu&L&zSjH(`Zn|BX>&PcdvU!3+Q%$kto9jg3F6xOEu z-&Z-Mk9@o;nQ*}b2@;vZ9 zHxi2{e2agN@DK6EMdsvFyS8p!kt+}6Gegb!Ou4*hE6ml|N=K!XEA*baZ7cr9#b*6r zKA+i^&z`r~w5%))_Ge3De3fE}u-06;g0m)@=_WS*?2c@HvFXa@1&jG&Ns{W{mMw|o zV$(#j*@~riEH)ck3YDcxOyd%>YOv6C-jX1pB{rcYnh+=nEr}(xB$m(;vx5|t22q#V zs7qtgOJmYYP2;jabeR=hW>)quGmXnl)AAr>xeZxv8jlND$63~KrhW0^U5k$o*vDJ; z@un$L>MC|;7cV)%^kyqtH+HT%A&@!2%A63$EIly@InjokXii>N>>kW#PcK=O(kdS&3%TSjuLW ztT64l?8;pOc}mxfueq2X>@RdwGF{u%Pr)M(qM--`Vc?2l|GIK-%L@Mp&BUjEZ9R$xp*OoB z+pX0Wx24dX%Mi1hMDy7*az&J(_||2+bA$bnzoon)+mkC0va!(ZDCy>=Vu=yhoX^rX zyg8Oymg7E}F!bj_DvBAh>_m{nLRL$;F;9cEeWP{|JGUaSXWhhTA&L7MPx24>a z&lI*t{sKdNpvXvbC0d&u+C(wYI5e;0tt@o6^{mR}MGr+>O?W&<8h;E|mZmBeji0Y# z$a+=9=osqXR;*?<6~{2_%2XAN1u5H`EmiZn8LzpX+!!{4pp;=5tdh0amaBMDwnnB( zZ$We)1F~aqV4zr%##w;|!ht7~G;FSNS7spFL6c_-U0DJf^ZDXV*Oo1Xa<){FG{*$k ztYgfc4n{TeVK*^zOr?O{#|&tRM)1Oxa>r1itFKfnXv|lTwu7)LhD`FdQdeIt7}(C! zQa*#yFlmZ{%#e08z^Ys}-)#m$N_DqoBC&#DWj);?~w^n_e9f})dGxPQ5of2ca{lc+6F5DDY~b#C`>epv}7xT7D^k> z(W=!Qowvb_1L&=8%qd_+F4Hfr%;v7XYNtgA+Oyg1&^u8c zrlTuU2T7mHZ~iw*sZwI*rJ|kuY#6Vj8n_eCa~l>6j^5xkxhNMiVJQj$2{wc zE)}tBoJMQSb!C}hja^;Y0ZL3B(m7bn)+1eJ7yghX;bU0V9tb5Qk~IQCmP8uEvbI4e zA(0r?sN$dyk*^f;Mam9&EvF+}T4Zr`o?MJB>+EoYDi~2Z4x2H?GzleSfGM#$TUnDS z_bF}LQ^{jjy&InGu@p${pAz;*kakJsKzU zNgZ3tp*I^u*^s4EN|i9JRk>2x`m}XJpN$`d_Jkpt&w30VO@kU}yV>$vQfHARwH?h$ zsrkArCJu$xW(Yj1ilzPxQ^f{hK&Xh?%&iy#gA$=5TUpsH5e1sEIZ#Viz^cu4ZxDMy z8O-&z9_zK*R7330?JsW6(t|t1k;v=N?frxOOqslG#wtdCJXFOqyT*ve8U1mOh+|Ta zEKOqxonDsgV_aCu8jva|QCc(QiVcWu9Zd@(d!SfWDH&1~rCKzuC2a#*zN8~TlDYI| zKyTgQnCn**2PLpMSL(vqFvt?!pY0qP$gV-pz*(KGh)--s$LVA>Ec6m|`XKgs2Wtbg zog^}fjh!4yO7UI$Mc65`Sg?KxHUmZ3}E*X0NlSqLQv)BwL?! zUF7Qy`OKIMTi}5{JG^CB*a(|oMhR6ndz9q9_|=_ZW$o4=N^c$OZ85u(ib`*Hn~ncAV1EUg#pxUZK&X0ko>BP4)C|4QBP|uhEmyiw zy;)2^3=D~b{ah?5r5bXjJ-ktdG|{RehJTQD=owp>FhHWXz>r6St{c)c!qs1zsUWFJ zGbtf@n&oU&Nw`*5hhFXJC{*_OR<0GriM@uB62dA(nQcxXDyd3LspfpKoZUE}bpO^u z^I$3HMrBFS;bFCK%tso|2-7vzO@w9|BM2^Jce<2v-Mf_1*{4)i=Alv?F>I5>BypMD zrMwoe%D284g$#x=c4sX|3=DdSggGeMSB@li=E_-WgP--eTlZY1qmP}JRmdzJI_6~+ zQH~o{pyaDIG8C}4`U(In%S1ktDux2n0`7HluIol zPdOr6ILQm6bz-9w)K>{9+xE)r*KSbKs;@Aj%P$yNc8S%{Kt;q@)Ol>gjcj+7Hy997 zi{?JeMP-XdjC>Ndv9P_s#w22Pg~E(iPDG+SHAcaC$Mrc!aInx`Cx!)(N$W})-2sC2&;1%}i{*{6g)Va$puCv7*tE`*ofW90dCeVL+tyvM*)GnEOD+c#|Mgrl|2^+Dw+I# zrI@}wx!ys}>W~|s$ck*atCSn44s?sJ)m2d(4%BIT!h51F8WVibI*aQmtb0cT}=j>$Nd7q`kP4l&z<(o&)$BVKc+z~qZU;(kt) z!mt)OK9wPEMVmSBsyJFzm7LM{b9z*jQk+F%ajzt2Wm%6c5!@y0|K3Xu&KbAmh1I3u zHlp%>O`;=6LTcmIQdtshx;w-gHch!Q>dkbPfVM)my|Rj{7kdG-|7#6fX|uV5qhY&V z384#>5c@hS*6WZK&P;b@yEWQ=g|x6SK^j7qvoJ5Wg$Z(ud9m$eLlYFr)mTht2M$X{2F1aRe>-i6r!`j@1fSh}99;zrhQ3*G$oa$TX)&mjQlqnU&U2h*bXv6E~RLnES zTbIq0v2Mmnv}Y>p@8$l0oK$gx^Rhm1ttLmxemH zLxk&EiE85MX=323m=SLA*Mk zF5TIF$wk`4UFC8=YVUOQJYQ{Z6_HmXycQ9CCyz(0;wUT0n}~oT2D{8B6kvr{M0qX$ zIA&?ARBKUWS99VZ2O4TmHI~`>q0BH z0_-U@q?#kig`q0jSq%JbU6>g9L?Pg;$?h7%k!^5>w->y*vsq}LGpt;Zf?7tCtg7-c zc2NBoYbD1Qd3l6oZ&6lk%NtaUR&_;iY^2FWK4+Lj3>gZj{fMDcKF;Wid%DAPU&*MB zY_$FX&h-lRiJ2CT8#QJ_Rv##8`KlPjcxZupMd=_e8tKdKyk7ZPpI-P`vcx&LrSdA+ zqYrU-sbRQ}%9Mn7rQ$B^Mo9HTGY=+ZRO#Cr@>ai2KBeS6CASZmjy@q?Fd>=`x0SgF>mbqg~mcR%WHx6 z53u%e$KO_x04b?Gp;R)u%yUd__JHQ)fg|OBUF|tN(bUtJQpJU_OY9ak?YwLqb~v(Z zrPs>~Bh8NWxwuo#xl1r)bXPH0x1&&dL2O?gY%Jy7Bg-z1YyuC*2l8A}{44wEJPzb2 zO1}|92hAa*)K*T~oHsnJS36S#B0E!jWgBb1J25%LjpkDHP|m(>(?RebC8Wl&G}vV3 z`k5B}*b4n@h&Z<3F_bJ=($u!_`V>=}%5FiF%OQw9yKpQ?b_@$MI4&VY3nV1%eMF40 zgUB(KB*0Q6%X3tsDh6vz6w3Z5R@`PzePhvL-mWNQn@zW!SGZ=qJgwH6I;&s(%nK=z z(sHXKFMSZh&SJP>Sl9-W7ep-uv(34|0q(j?fz!kjIu+f_Z%8$C&cbR5~JZEk0 zqj|U&anHaz7;nxJ)3Il0em4wdLd9v@y4p#$-(!Q)F>Dt)k1feSOqN06eC&y1QnCe( ziN(CKA&v>^_BSRO_v>!hg{>=g(Um#d8f+MO*DVH;qwGbV^SIM}D`S@&OLtkPmGdqx zKXN@iMHxTaI%GRv!j6&GYQZj1n-xyk;2p%bjN2&psiPbt-OkzPL?}cx;KKEbg(Mv{yjdCBZ%g zG*o^^t~gi@0(CJCJRA?nrYP`Ada?-){J}{?w#Pj&HnI1WMyns3I?F4nK)-55<#Z}r zjxj~)?SnZ+N{bh4YVAoyRT}!z*)3waRSc$l<#^LymLUILO znnzxYOYMRfizkje4IaytlbM}knf5>_N-Zd8#8KNK7-~|N(+9=2b)C#8X7Y#K9P^@n zgAhg$;vL!kT$fV1GGyejs9iHUER9Ag!fIxrFT3Q|Wx3mt$DZ2Sk&oL$$Cn=A9cr&! z--Loy44%tJp&c1^8tnBY$qsJphb+lOprhnErL*YtM^91nl{+Hk=zXR7?0uz@tL@dX z(!tH7L~u7Y?sUw>l3}Q%y|-2}-d#2oJ}9V^xa}!g*)pc9LtQZ$W&fTSDr+{OXTKIRR&kq|imY{i7iuFhCb2ixPkdW!Ph zfV_%AFAZddGTf^Um>zqbSjqGcXeQ_nOPQ!q$f%)LM+pvCSJ9;=L7RJmG^o29^~Rj_Z80+x&mcmEi$x~nBBc74|R z%eh%cwlZj2CGs(#B99wU5hGaLB2KIz5!2-xF$Tii+#1IiJ6}E%+y8Dsx5dWpjXeqbIim#tpD5Hx$)uNXg#cv7{@;utX}bcE$vW^nQW@b7*Xg>g;4&>vCRS)KdrN z(_;rm%l2C|5d$gH&Eb#p1<#}HOLX>z?k%+QOR-zZ&XWrWJ~m_w55;6!NtCpuDvo3f zI*QFDO(WSN!P4a@yXSNsvBez8_Co|q)^XP#sIMJ-&p>DD&3))y9b9qfml1@+2vnzg zOt(h9EnuJ&xCH63bZ}W9rO|sJ&9BFvk#l*Fk zd(iDXt@29S%E|F~XOS4Z+R?_TV#t|!7|OR>-Pvd?>-k>XYrl1rhZ=n8xX?Z!AW?RA zf!T(gi@sKtH9YidNjXihd@3s=MMTQZ)!VE!**tqau{HIjk&Joiu+S?6ydtdcqZ)gHl;d7`EoDP&JLp291$UGkxXvR3*OBrv z(vdsm?RLpXrZ~YIlSz&@oMX;!r%_wUd8K$O*igwA99&9O%||C9jqwU1-TyfS?E{-} zP%1m>t9Zf84+@%b3LsWezR=)cEvR92xD@k0g%|%rT-}&d6{b%WLM&?@2iOL6>d5(4 z_Mgs6Icezd45Ky6gf2yg7|!2Pc0@-mzk_geO#v;04J$tBhbjiA>2eB!QR|*_m(133 zL~D~a_mzyiNMio1$dx#|k`*f0dWdogX-OUvh}$V0+m6gwj-JHk2y&LB-YnTwP#z3x z46(2oOpI-AEv!eAtC4Y4VW z<=S@ALP(;#Fq6xbs8m&q!FZ_7<4{)9kq)v^SM$zU-imPNQz#GcRI<>8j*_Z&DF!Vm zS4G;Ax=@Ptu|&8qS+6dg>`Ty5$Oj*!2yIsbIa;&daqiQEalsr_%DbGHFrTyNo|@$| z#+7f_+W9Gi%AjT^YC7f(z8GyQ#h43at6&y(sY4#<`Lf$U$ko1E#B>@Vx1lnY6ReVU z^$6r%@s7X=^7=?AIgDLsKY9z2*dga=WGQ=F2@dv=u=EH+9#6!0u}4%fZguJCM|UE! zUy)bn_X;6LZGFrMhbQka*0&WIM3Zv@M_ z`@>d66cE zU**_ASeY+c^<>?JbjaSy(bm*<9-StRF56VN70q?a4HAtWe2}8!#qwl7Ugi-pzrC=! zl|L7vw|$Exgsc8R&yoG zYEFN(w>PZsEB0C-u+Q1=mPGVaSY*<(O!#8{YRX&@uT-3Po=JVbN3gvXrad{ zI(sd$uU26M+22ud`%U`@OwZ2CX8ado9L#HGv5&-r)xXt!045$$jpBCj7!bLjw89$T zpOlsPEO%74tf7ZfuaI^lGW1IBll-I#AFGsXf-C`1J1$jO$#ZfdN2 zK-;~I4Y&5COHYp+bmEVB$;YhBx&sSVIJA=z4o9!w7V z$~ELTvn2HIvIa@$w}wgRmG`)83+&gPZW;%pHRNg)$8ob^q}VrL3q^6$m_^{fT;vwY zh(z3t>y>C)d~&~SZ?-unEXy&YXf1BKxzg0e+rY<8s{56oA>@SsEG?{3CGqZ83EE@q z#){ZzE^9oNYquhJ$&*WB`PL1T*<;r#&DW9cV`AqM8MpCO<2uG}&+ub0dT6N8W8Q%% zMB;a2K8h&`@mpf@om?!fYR*7aIElwfD|1N}>!`rh9GP5ExaJm& z#aNthd^(;h@>sU^*;wYlnDitMUJT`9$;Z4duve;p~7xZKOf zyi8bmOQl07q#cjFg?y%^Wg=Tn?c6V7VM)245H#{hlKq`7eIw&YweU2aTs>>zN=U=G zUrB4?;(^zPgbI^gt3F!_#j6cF|Q~_7t*Icrj$n~l}aCyKSkX&9_QY}XNL{TzbU*s%=C;D9V08BpV5&3-0 z$k*Ix^SbIFa%{t=+4kN$HMuO$G29b=cZE`d%*CG)&(AohfYb_pL%I~VU z&#mNLjob7F`)aO8d0Q&{_@@yOSNccBhe*hX4rn=RwZG{jof2^M9w+d0xoDC^W1c60 zVIq+aTPE^^b&psQmm_F)n3;UUm4b}t?ieQ*J*1D~Vr)g8Ojs<*$eBX+y=>H0Y7)z_ z#y$haGVRI0ST1XD>_-W0AIO{0v2t>_J(kBLk{?MN%Vx`39LEd>fn9^gMv++^<4K)^ z2x=vS9(p1&1FWhD!}_;!N*wyCtnJWLh%M@(CRClPZgEs}+WLo!F)B&lQ6bR?q@ZGk{3oXS4d9y_Ss#GSa)W!P=3Ku ze){N@c1yG4MBH3<_Tl&G=a%`N303i1*~|%e&>&O}$bb8K-Pcv%$M04Y1mM9|1C&$4To? zBWOInp3LyOLFAMdko0x&){jNxfsnG~1&4g!s0_)fiXl%r!cf;FvTkWqB_xUxvYSzY zZVOzy^P$4ZaMMM8sv=;y=@4hxZBihxbs(6~nnV*nQOsAWO0VXvjQznKDUf8}p66wV zhFN9bSyYd#d-h95E<3x2l&6}2Xc$3*^kpGC)Sca_wOU`aF6)up%7~){7eb3Ggg*Wc zf7jDK&X*S;*@B~0z|li=F>yNhVI5QA-@42$!~2nz?p+)lv0V^Cj$PHw_d9;6B1CDY zpq>h9>BLakrN5gV7#fyCV_2g4q%jO^8nR?g;}4*(a=T;&=-}IYsHWmBTT8A8hjdG) zKYXD+txDvTm#G^4moNwm$CphU%AqwxtMs1NOa{J(BDgMQe2mB&CTvoe_Ev4%Fs|fYe#qS-4)H_ZJBDOX zf&8zfk-u8p#NWi_?G=Adw}h|DWK4noil%~Z8{9ekZCnY<5t0XYkSz0W8@{YD6FW$6$kChNcjNDa-%J{kPRW=$kr)tZ{-#9{%G9;u z>p{{?mQq&uugG8XH4`_GLND2u5$Nc3w%o1t8`Ly2_+DY&N z#fuoNTlh=c#}dlF)S>23DE=VT6Z%9BL<{KXadXlS*n|L0kp@sZJ z(evwfS~8Z8SsS%Inh6;~0mc@S=^e;Ltyg9Vk=#m}2Fu38PVEO>oTheA@@?jgE{2)h zh+q0dm!;`z;SVvw#K%w9)0Sh~xh)>Mt_MjOi)O|aZF`|*DU^j1C4w5aO1GP3a*LM2 zF05U~%#3103Y0jhBSo2@Tu^$%4|AwF8->4~*3c19*Wq$8b+Y{MLj}~jh1|pR8#Yoh zt2u(@!_1W0%d#tDT1IaUAEj@wty0CSIfwkD9kqUpI4Mbd+?a+9q!i5@nek@&O3ISe zGTOF~dIxpTn$@68Yfz;}$#~u2$}9S)Oi8TSAjXBQ=Nxkcf2{Nf^j>1B=#`xIX$d(q zJxgqvv9jpNNHGnfVWei2h*yIGpB$82>TM>A=E}I1F%4@-%eIJZrS006edDm^vwqj3+a%mC{IAf_b@+nPxdb9CK{IiDcsQpq=)X(Gj0-)!jS<72qo9?$%}O`&g4&i% zJZ?M}bBd(Y6PqO*M8UD6G>E_7*t4oNTck6imX_Q?O?Qy2e0-Loym;NwWJjz~uIMH^ zVnkB}C1@g!H7v~`Q7$s3#%N|Yip27;_Q!yXb@WFxcir5;#Lr?{qFrW7F4ZxrO5M;% zNo2GXLcL+aaUe58w3uq4*-_icxE7PRDm*q$s`(u{_C-TA@vlc)0*x^v;y1#zBg4!N z(hfo;r(P4Tc{BGNZf42qktHV?l`=EzT93{NLu3XBcRiunHnZ%UkPS;Plco3AR%xqA zDpB85m3>wlbB<#m*A6moL?04!x|A=jdCc@`8-UTkIwv zVo0k6vj;!=cZ{Z=5%l;bdRywL`Zm+-#+LXayHnPP0i{P4c%}l5RF5VzY^TW;qo&CZ*e{8n#VoG4#a^G`n@t`fY*! zmeon(UW6<5q*#1*MH5YILl?WyU|UsIO*w$H*gn!CiBp;=sn}rKi6ixpzO(%@N9$nw zbq*oBwAVzh+qhVY|8;D;(~wr`(foFz&1JU7$APV*tR%X%pS)hn*-tw$u8yjur_Y>+Ar3<^pngJ+dpBUQ~>7=owB6d?H!$X=;6kaeek03Nq(lT7Fv=mwv z469)6Mlfh-dx|1W9Hb$Y9ndOT`IGR=i9@v6lWm8ccns`w_Fvto__nd)O|g>{r1Qmq zkxr6agRY6vj8#6Lq|7ttv7BnBF358lu(-%sg{Y(A-h3 zVc5iIqMPZ#0&XYmVw7VwXURCu(s7(+<2cL5agH0uIer}HgmIh`^>ob+b2D9*-YPSG za!^+3X}fg_)V!H1Z5$22eYAs~I|bv4Wud>B-h1WAV0&G9Pd09L3fPe(y%#J?!6b|N zCa!XsP&3CaY;*W~yr<9t<4ottvOosQnK@{DyajqXcqkhUnLDu!^X&1mRp*GD{w!dV zq9$@mMu186i@BT{pl*VgKOwUL=9GsvB~*8KC|3AT}8yoPn8C5AOWjmUcR--`(xGg>jH?8&bzC}Lz=88a&? z%a{<|ri+3N%qdfB*0zdTQPQ!;F?qCzlwtfKmKa()RcG3=N}ET=2xEK38Z0u>(Hfko z#_LDV=A`z~Oqs)&2$s2O$+7xQ4!G=K17B#Y&ahjgF)esde3LXLjB|QB+NjmWeYdO4e?DcD#aKp%m?TnqDRXtZ%bFA| zvt?;L#$(X-rfdK07RdacTZ~z!?REIryewaOIvBZ>F5N}zGk=d6D;@90F>&gGvYP$o zA+f~-(^ZFgEP2qvuaHYstjWQxfQ%HQeOSb36!WZvE1M(fIgWzZrpekRdf1xDdh{|w zHW0#t&vgK=hN%Zg~XoZO%~37MBp z|ICn5$#|}s^UNQ6lp}h`maRj_k<=^}n*%GWd&cH!4=wr4RB9lGmdx9DSvSBdQ+JvD zw)~=n+R0TU?a^{oiNe}daT``pyD~aETKUX$+0e*QYAbo@ja5Uyi8Pj(8u0A=Gcy8z zeCC-`6JH%pEH=Rx_I!vgOK9rmE623S@1SzU|R)Jvv0&OOM&3m9P#o ztZyP$q~S)F39qVNOuLAZ^?3yJId^lGBq<-Z9Fr}_Jhn|DOJ=O zMrZXH9u}i)!g-k))-$kKL|aB&nPEZgL+(^N&O<+%R%C3wLM{h0wv9p#N9aKtg}jNI z$t~!aGh_5w5j|H92Bm#P%QcgiXxO;*Vy133XHaX=ep1EX1rmG|z+?y_R_ovZ0Q~Z=E zI%8Tm?#A`Mj~OgQvgn8zE+$YT4L!huWf!R^#LSbX5>qN#a75~Sx>2@OvQaX6!Yy6C zl8Oe4pN7npp&;jKwoBhYEK$ZWgYJ-(8ZO;5J|{D8C0);-BxWMpWt+brH8zjMD@jup zWyx8Fp_EOI1Eg;2bwJ5RL59{&IFuKYNQ_q*RKYDUzc({B-PtXw0%U-SK`I9T(grff z^@K7O9&~(FxZWp8%ZbvETNEk7KFdQ&QWiTI_EC~~5+0fIqGDvDRdqf+t6IiRL0N3Z z8h}wqRcV)2#~*vz86Sl~ZOzQ;IMP=#Zq4$2^X)_mRL-~!@t6_>so7XoosEk##<-0P zP8&;9IErI#b$KGGuqN6AQ433K>5)*WjJX?>^m>qqQVNe@#`J@jfHGQ8Ok;YngApG* zfeFhorbR>knDWU@svJp$;bUqTghvY3EUs>YD8#l@o6a85L*arvCe0{DSl8M1c6t*n zAx9+RX3$*GZg#9n8_2zZeGU|i0W)uZ645eb4&S$oDELZb@*eS@q++S5p%sL(c| zW@&W_GUCO2>(w@q8V>1QrkD$MPIKowriP*?L?`ldouHcHV`>;l#LC2$C5vtfj790G zs<}B`v_>QP%xY^E&*gzW*_SS`I>z3t%kmkV>zi3YtZ_Ych=c?$D#nG*jgJmVZ=A#o zd-o%HIyU0xMzs|)Ca-NH<{K|8sWCH?BNZ{>_OWv4tzV#P$K`jBw2!@;9~U++3JXT+ zI2lrpX5YBbBjTYgjNm|P^P|^{itw$*+_+pIQ?=5}j!W>f7h~6$!)2z*TGYcxvnTKS zSOt#|sqC1zq93bQMl*L`a`6&aiS5LcwUA$s9dEiEYmdmKC;!{B$r`tB`KTw%DJL8G zPiBsoQT9Mwwtq4g?Y(_;z$ChLQ0sT9k^jur7W$x*_S=Bl$n27%^$q;j#y>ftlFJ4$ zC*|#uq;568=rYkfa^Mr>EAPMJx$0qiInr*y)q;#Knd$KZUWsch7<@9c9FwUDT5f^@%uN9&8A9tbi8M#E=EEQ>EuPja*oxyRr9cN=o=1QL#EpmcEGh5 znxIZnmpsj^>hxkV(`8c=KbZM{?VW#^l*N_r-+udLx(8;O=@t~tfNv0G)L|HYsHj5( z1jG#j^23moBn&eROdN*E%%Bi3>7Lb%8_kB?kX#epU9y)vtBEFLLk!8)yLzv=>*it} zlW-FfArHyAUPy@11hW%k?ECqi>UX-Q2SrStXaBf&pwC-BPMtb+>QvQRr|PZp*t_Cn zuHI@rRMZbj550ueq+~3<6~A|ZCTXH8DZS1ZoN!wdMZ;~!^b(6`-}9j5rZ`^pb=1;a zwrWNz@1j_G4{5;2Abj>06<6jf;~gF1r??)aGQJI-RS!MLuM3VIs#Q{L$ehmeVoLuWC~fy<;0t*}pN|G=v*zt4m+jORE47KO zv`}qb#rPg)k{D0$O!BM2&F0v6Ex&4hqxi9lXw)@c^iSK5waXCskJ5sbCdjIH)wcQ* zO?}FzzR@10XxitE*F;IZrSx7S)e!7qvC@~pv~SmbD80+~qNR~u3`u`Vj3G46Ujx4~ z7nOED4WV#~_#x?;=sDhuQ=UyWtjsa8&XaJpFB!4{QlFq{dP+MmiMeQz}i zr<~|B2~{sL#B6}kN|LQG9KcbT!2(~I$pT-w(PB-pFH;{Bjq#f9N&@N`^e%5xS8|HN zN*b-QtA2`xRGS2s#x4)zyClPVJ}yn2*O{?3%BO5+6?9~pbZ=mqlxh?x3yEKaUS7=) zlXLt+ev|lJz>npt_@(p+wvaVK%Th56vyr|ogkq$x(fft8SSAs!PvpI-v=n@+;Y!cd zbL!1lJgAR!Yv|H?Ge^%TFLMKZ!_fZgV(%1t-`Jt}9(uu{DV?!Jy@7Ym%|nclgS#h2 z+#eNesmofCZUy+I z5eT{$52ZUaKFZ&C`^JY>-g5Y>-}|$_eC&aLKYmLl}Ag118K7h+7wmzxYWW5jte1T+rBJ@+KOzw#)QOW(3J~Xo+ogW)d#F8UCqEc0! z?`Ia&LnRd?Vwo|bQeU4;#FObTolhnb@l-OM+v!)Oz$ZbK7bg{-SZX}1zz?))l8LG$ ze>F8A$&skSsXx!Jsi}c*IwXf=bs|W&rqW?1oABcGnFT3v?i-mTj8v!6tuP#e;Rh3m z5h7GulSpPdG9AfesybC&<;BLQG7ESRwm=1>6kaBGq#CX$Woo=iU0+XWj4;kExxP5c&Gq@k3z6*GCM8Z#{yQx7cs3tLDY&!RO>L-QhLVtW} zd_0|>TQxS5`&=wF5_K4x$=Alt@}xy)dDWq3=x2FVE*XrR9JQ`idJGh0spaI~E!{)^>uGza-OK3oNY&UT1QHu*T%3?j zL zqgJB=}%*i3&fME4FKT(qzBS+=`F&XB!o3W|vs_X(q!5{q6^ig`GbJ5X$s;6=@|q2yeIQyGfNClT`z^mcF2CKX-E`i1lf3mY z`2&V~(BL6;TGE+J{%}!{FCs04`+`5==-O~iG^!R{3!ShFqq@^FPsf)!1qsT`TAEc}) z27s!%m^Xd`Q-oN(G`S@+Gu_{yPB(V~wEh}0CctWf`hJFxv>M<(0yDY&E`&ZXzb%%m z@!;vNQqE%CTLDNM8>0*YD@DFH0hZ$r>~LWe&`1(qpBPn7<_t%f z+^fWrP<;e3ncOeM`~nG!ahLv#&L2N5KdF|Fn$+U1l^Ygm%almtG!F4--gGEoqhi(7 z)wPLHwfgf7qA9i25--9~`TNIE8}vAIlp3+~dEOdOg*$7)5emcQC+QviRHm8Sz^B9U zGyOCxHNxEQ%vlU-DFwCA+r{eXK^QvXaZ*x7jp)7xa{%uGNnRv0{_B-OJsJ~57b0aA zR*G~%3cPBn7{=21kBth0B3DUYnQhAC(a;bH@y1{^6uP`LnABTIK4GQHe@Y`u3XXtC zotGSYW?B@2+}B>3kb+a_d^P_~qci=ph>-51H^<9@YCJbE3wJ@%MdYhBJd46vo`Q^0 zs?FUSVqde*UIlNdA zqx$ZjKfWHpAQ|yXAv5`h{i@Kf2iNL@cx&eeuGeDj< zB-5*`EBIRS!1l8WPfs~=W1URI8<_e;%XL?26NP4!B}-G~%89lcX`biy4{PSLklDaC zZ$~Aq5TipACI)@zGQ*q2zso>wVA`N{TdthJ*q|-o+9#pKD1A28#Ou2zA5)3dL{f`L z;!sn~sZ0ynnGU!O)jd#<$wlm5?43P4D_KUC|LOBuGIU@43RuwWTHj2Hm5{9xvO6!b z1yM05JI)5=rML!SRTMY7+6LnjhLWq4;Z35T?;T4s_R#x7Aw;OM_DsV*B-b>cY=Y%G z{$HQ7CeNSd1*({2R4;zBH>O0gnU9pFKz61#aT&Iug;a!F67D9rlEsTEQM5yJ_y-3K zZ2f+|SuhOY1q#wkXAsWSvD{TB&kJ>%AcgwZ!JF+UKti=%wniCzbDhm%htp z;WlTt5${@nX06&9H}pGDg{`v`Zd0vm3z{vfU6icpvaLp6P`FKp;x*ddty!^n(Jb11 z{pxHTver1il;5ogIKM0jZInmbwPh(E`W>;jaM%lD;ZT(*F*Lm5oN#0ckmAb}((=}Om?kfmt8CD>(em`2 zg)EEeCX|KBx`FP(*@kYRFpB9Vq>{m?19`K14W@DmHd(0ma(!2nePz!ihQtgBEbEd= zo{Ehr7+KUwY^HgsS#B-%n%z*@;KjU~hKsziBvG|Qbv#^eWub~R+ig+uJzh0Df28N@ z{e#H|qqXOc^8DSNk4;(!87{a}vN+2On7mt6AsLhzCOKPd#e z|Mq>LDA|OL?-hb&9|rH2pK6D|0IrrXhYP{oN_O|%fKh+BzYsk5;De-S$9v1yA5-kz zg<$F}s|dS?6bGh%Mp+W}!A~D2_R)_6W-lrPOP5Y91mFD*$-eLHDg>V#19IV?@OE@` z;MzH%5KNr-kA>jHSBRK+_e8Oa>+oSXC=3ih^oMxE&;Pg(QKuDh%&E&lB;=^UoK8m+=SQt2+>c$UlFGWVsx%g~HK7@V!@%-}k@&{X($w zg`I`qiAO;B;BLSd{xO8WcRo@GK6BS?h2SSo?kxmIMcI?Er$0R%Qt(T8b09yx9`cga z_g8(h5Io!c$wKgfueKC|7dCD$1fP9{hy&k65OBTtDgGCZy-*15{r$aAe&NeVvisRW@V|dW>^FW4xaLk| z@V_3%b!7JuNF9aeocM!qA^7;mA0^9`HVWR>}AEFGRZg(3hNQ;m|)FDg@WH5sPfR;F+UyAk`0( zU;POMB#a7>I>LaY_Sr&^lF4| zA8MB1aIaXMUfm*6X@y=R;s)N6Dgvfg2F$1om{}QcS!KZGl>t{&2F$7qxYDZ=yILx6 z3kF%QCgN1@hc!{GJelEN(1$YNyTu3X%3T2+_o@(W5C|SuWuyf%0%r+~5g03Qw!k?8 z;{?tXI8Weh0`&sp1ttibFYtDOi2@f0OcJlI zYXs&B%oDg)V7|ZtfrSFs2`m!0Uf|CJ-YKwH;06JfJG@}2z%qdw1(pk}5LhX&O5i4e zcL}T(VCB~f{#@W@0ggcM0@iB0;JpIx6Id(IDzHwVO`u&ME3jT*gTO|C4uSUr{3<`F zO7|}oSP94{<5lS}sLJ#&idSXo_>EK4YQKt!cjiXFs@kur@vG_;xQ38fpyo~r9L3in z$EW-%5g~ngF~4Q}R`OfTj}+;({Mz|#=L+F z;C_MK0(;1HrgA+b@PNQUfqeo8h#VuwlLE&CUKQ9c@Nm2eb8A(t++Pv+8X&(+pjluM z>NcRwjQ!;D7){&E$^?i1oY*kv}N#kkalI*e9@G;8B6c1t@Vk|CI2a6F3RT z{Yc;lpub*VoWK}`y##XqB!LEjMuq)B;5h`iKtU}6bCh7FUls7orxmgT8K&feR=WQI zvz)X9SpVu|cV?-F&n6Wph-qGSf7!7W9$I*4_LSUn)mSyjE|sYR5#1xwPcIfFmZvbs z)Fri^l6%g)U>Tv@PEpP6jE7!a`NiqkV{%}?h{srpN?_p8l2j7&li8~jAO|U`c?I=Z z@CrwGF$`SzaHhi~omeQ8Y7d_rvX9}SQLq5U!j;G35g>OM`=(hKT@enu#|a_KGM<5; zopj+R&2vB{U#r;kS~=Uz*)Hcsa{@_o)TKEp3u-1`hlwI^TVNV2uAr4Gj<5bMtK^Jt;Jp0U( z-{T%TRaa_T7Pp^7e!A14?@Q25D1eK4R29`Nq7;djH(Lsmg}siIS}lP&v?qnO)zEDe-LJY!k z(C^dhkCL#Rx7_W7mK!kYCP+pNW}hTe%KKUS)&&6CWP%L<7YjE3n40x?npWJ-0iTqM?5_)-G&+O@W? zp|iNO8puEird;B-7OxT8gO#4tSc>&Xxd*i^Uk#61o;+%JRI9tBHj16N2(b274^uxR?g_nCTvi++#5hOwEb|CKEiy$YEY{_?f!QnDkCwLS<<=kv(k%*Nr$6DHhn0r7(&q`L`SLHQR+6b ztDR@HWw_O#S}Y@mBBFugF7xE=!K;m>>_k7Pq)ztf@lsRfaB7ruN|kdemUBhE!&0ts zd9E?fTIXSGL}vFGG)?Cn$>KM<_>Jaicb<0hxYm)k){)P-7<*7<#?-EeDIAWeU5=?; zj;UQv9(^t;T?QQ7Z*aGQcq6lXo^tU|S&XWi7&Yrm{($r7k-}%#k2~z*W1ocy@-FAF zkDBLI=XupU#|$0>@?z)G@3o+Z@IYCr$3tkm?>U71=6Te49yRPk1`iXI$sej!V;m18 z=jVjQ!;(DdlIX!YuSAf^zi6HT`gzh=Z=XMD5d#+SV$%BUA5r6|#1UScQt8#aAplt= z;;9Cp=EIs89XY+B97@`pX|{&KZitiSU@_h~SdcwR6U)rBMOzvwF95t3xJG!8u0dnh zUivqSh~5;MEj+)&cdhe&UR=pW1#u4*M5Sj4rd9fuTFavZ^R`1r6GvxZT4?6?^+>N) z*KZD1$jmtjEbB7$G@|`AZhUyKEXI&oA{9vq*SG=NUMB_wLK^jk%S$%0a%9Fxu>E6P zzw@$_6GeT=1-wK6@@2C^(&Lp&a+J3vH7cw!GHhZ&D2`+jijblXZM#;eB2ZNfL%uam zmYb<6_9R&qB@+zhyvl(=;2aB_;{xX}rg@TB3LHI>ybimkh0k%}bBf`5k^#A?JxQ=I zqSa61XRTvvt!a~1oZ)eidTN#%TlCJUmk(T2f@R4=B}Mmmm~duNc1xsvUok8*TJK)W zf9G13?q8;~$;<*5u#zb(*#PZ@m07FUW6W6X;#Uv4)-ZWZ(Q(=WD03O+Hc8%uGcB;? z*r~@VO-YDj-B#S>s|9n%jk7+3_72gn&Wv}tfIXeAs5er4luwG!JInES1H1JaG!X*u zb_5IwOW{Qzc$xDM#x$nEi}OqJtL9fLgxp~v%rfUmg9k)ltw6iLMhiSTq5)BgHdAmw zGwJJt25k`(>D>yOX_$u$K49>m!F?jrEwEK!nZOQW^qQ80g9GNii(uZV2=22~Pg-cs z+{X;QYH+{7X9Q`iaK#G~9;Wf;;oV1JCltoRVs;t4*CGZS@*a5@sf5KQ7{NutVjNWj zgQYxkETYkZ7P+7n3$mi-7bn;VVZ)t}yDiCT#WM{O#k(w|)8HC|Yc2dVfyK`hM4f@Cv)m2I zn1}I`zX>tysVn`nbz#~P-ND(GwW~2#ZsbJ#-WYhk;awi{&TU$)m6IUTKA}WlVaZaEBd$usVn5su_4+wn*z8Z1=JkEIaRFL* z-KKSm8X?xXc|%t=Y`8AVeFa_HFc5B!dAFYKe!`Fo4MG(O0zKK0BTtKeTWfFFZP!GE z>$!*|j1q+0qa#s-)0$>rbQ~Gu2<@h6O-1LlrsgKB%NNGH!33{&EwJac#Jt+&S?&kjmv9GVY_o}H=xut63mUT^B5j2(i6P+lha{oFv3HNZseGihGWmUN>(9JuI z5p%DXSChMx)9!)3qAcO1r%mYYc2MokE=xD*CxEB_`Nneatv*=>~82naf2Ac6k=FAm1T9L-Q)}FS_?OD~{ne~Rn z^tuen>i;dJHihlm#tlCZc zmI=Fes<%lutaH<)byZ8s=*&AqI;FAr*AApEh!RmcRl|x ztjz0db;HKuGV#ngL-EXS?Q6Ar?YZxqTOv1iEh;0{@>YpSKyOI{i^5UGXM0SC==HB? zm^*v>+}j(&<+Hah=W*Ta?bq>`H+%cM+rw*TZ@(7L4YRl3z~kMsx4)amJ7;fy=k2^Y z^2VEE>i{1I##q&5K=-^kF>glkjxBD|-MoeCIZ-w)BkXPBKC8`L8#=d%`}Qbu-jynZ~ZNsJ753r{X*|Y?|iKNlh1x|_I(r9^gr;Qzj)EZ&wp#dmp=XQ zJHCG8p2lzN*nQrAzy9eT{?CEE|M1jjC#1gp!lZxu&hG9hKfY(_wa+H*Tl(y;AG-GN zdye==Kfdj@pQc8i_lqyzw((a#=zhn`fBjznckfR8#qV~{n()f6KY00TkK{XEOa1oh z!jfI@AN}ncM%F#?-mY<}Sq!*T{&L38w*SlJ)2mvqIREBD zvo0C^^I4Dm@LgAbdecA5_5b46b8kO3YTl&{E9M{nyS4>mpZNWv-#>Eh^=ChE-m;)= z%CbwBetX%GN2+eDjn}O@cgEbCPTc&q_kQ9>&vw@|-PAXyXX34i`#-Z||G(Y+q30?3 z4={LrlxI8g_*-U3EBRsT@V>zBIF&bw_!azkarFKG&UJ)8!YbtTxV6NtS=Dsn{s#Yi zy#F=uy!{E!+eY~BNcS`RAH%P|BRoG&+GEfdf&0tEPsHDj{~+nVOPY@owt%qj^7|iz ze}#0t(C8NaroJ`oA#AQgc3O|+?uan=W!PB;$i*TQd`*LVq49(AjvjqQ6HWE!7 zes;og_OlE*s|fPr+~=gj51p7uWT-ukZ**djwpr9KFcj?~8J^_^5GD>kouTsVhh3mG zFJPPHnH*j8MG{SVGp84Q3&aU;e1Or5effIC|Ps z^m->5O{20V4&94$ssl{k3EH@!XwlAa_H`492+H^Klp?jWM_a$Oc}X4L^r48Ad-Kar z^N7m-C6b*zG?^+>ALsrbqGp~tN*j=R*p}+P9j`p6=;h(8L^NH(Qy;A`i8fGC)P)qz zeKG73x^pg8fLO7|se~96?86|T66Jyu4b@k4&e46KSbdlFN-4p5&`R{8JyTDBTv1EQ z**hlDXT4X5tf=YogGeHt(zNIbVMkGy5LLmh4kRf*_UK)pR1`ZxDV^tW8%WJVi(QIz zLUfzqwLLC6{AllR%B4h+01k`8H$DPMn+`+mJuaO%H2f4KZ4R9HdPvJjyn)^4ecp7? zCY>5>=vhcBLA>aV5KA;~19jX`RM-DWukIsq`q0QXb12dmNmfy2xBF11Lqsj)hagpy zxr9{W?={dSEJ2@M|8%5_7zpaLhq3&Cq=f{|)HZsZo^h%!MhT?%x+SLkjHF%?j*Ajj zcG>q5S+B^~J1I$nURbV8>J%!eJO$F2Q=OOe8>KEu;nYVaoyFKVPNSMWIjAJPgvk2x zKCluY3&MG&?T?kwA0m2UDLPX0O0>sZHlK0S$OM070Lo3?H&T1!{OI)N)q76d}FQ zu}V*Y)O2PiEB&kEQzP%`4p&O>9uy1bVQ~(7HGvMhuxEywxcxL-mkrywg|#c&-V__F zE62m^)^6_o%(h<@PTt;p`{brrqpl_mbv0~n*oJAFBp7D75jWc&uG<#&ZS3g9sB8f} zO|eVoa;+{Ge};XVL#{KG6}xX+xUQ5p*d1NBwsv+XNABDXH?I%ZcfeGXaZ_wu@v8MO z+uPRK4bxmLn(b=KHpSj{eLGgRj`baw)+78uMn_-230vCD%eb0%HmtuVHqr%{yV>2C zjI}H5;&xJafWcNu5?wkS!dTblzOYr-KU zB0f!o6vI_O@h0J>Sd9^Y%rw>A6q{2=Q`f;NUz}av$IJ?%ntZ|4@{SD~`(77)<>u}o z*z-2`^=;nN6uZRb6$vhMEOAFYciXm6saZdoaofk>P1@|$992CtY6;^kRhrL{g z>qMYpZr(zn*M~i=T^p$TE24{H!^yJ8Pgd0A>$}!(UZ{*FhZ|Y3=x~}PPPP;Yp=D9l zMrbhCbDVA8>cVkel>MbQwQ}1o=D$!}7TJ+%^ls@cE{UM`MF~$BlmSg+OV=%2udHVW z4S>XO?Jj{X70Pt1C@ROMmS(8^Ep3|ThLcy3n5w&EDTZ&eC%df5_*8J@rIpfL%6P|wJjUAu16yrW>btM9P}HV?2&ey3ghh&#vqAX zX!1jdOpH)UM26v{A{_daO|2^Wy5ilyVRz4F#6S8TH(^QkHd(fnL$O5;=@c%V+lD=)mrk>*W3Z33#WgyVY)@BfXSjuK zb~9aOQ|tmRm8O3PC#%PqJlI7H?PkX6vgF}?%sFoDXL!WLTzKEtx;4!9^r&}nT7p6h z>S3vdC!i!9?XLY8OW|!SteNbrXTQ=Z5$&i<(W7CZt&{u6>EW|zo4Q~L-8wnzSjJ+x zIThDMZI5^u)WX?n;!ZoG45Dl!8(P!QWuhCfGF+_a8SuNXhHHyv70Q>a32ZU00mSfH<|dls>g9%R;eRt!It?v}v2V+qp4k(cI~mUG5dx`q=qJ zwp8?Q9$x>=2haWP=YG=P{@Q<`c+uZua)*&`=<~~EcpOQ|V)XpZ&KtOM-ZS%NHrv$R z$yt5+D_jVXN)frJHw9ysn2(KeL(yfMW;%O{aN#ZDxBBt8*T_U7`fD7a4~A}Hs`Eae z4$WNQUC$fk68t(;b0Kd1Jr?}xHQpkPKHt?4qMSUAD0F{J#EP3IiUB<4^W$qz0?^9o~Jo$`6&&;(5Jj__Os>a5Ydnn(dY0Hjgj1N{>RhT@dx?@y?pAa zT-{M}!%qXyHGZ9c$Hjd*l`gQU0?N|7A8P1f7s+Z}_ccuCiN45*Lpoi92iA~gJV z!c{^^u!lU>G0D}DiFO|g2j0FN`cb{;!$Mgtg;#ce1Nr>1auKhM9-H0<^K$o!M5R`| zj_h>TzIyO=A-K{wl`p!qyHxT&mY*hOg?9WV`R?)NkeAFCIuN?kq&4)Q3GWnPAxBuW zaco7%SL)K;%Zdk3=){OOe*i^ev3B10Xbf!VCXc07GwwDOaT?WI*PurHDdn=xbVHZ? z>hK14QF^Hc{xmw#Y&tPCk4nvuPPpS-**nC-MXYG{(J>l2$XiEPRHiBElG6SM|6y{} RXVA}Rec}KA{XZvx{|joM)UW^m diff --git a/pyaedt/dlls/PDFReport/MigraDocCore.Rendering.dll b/pyaedt/dlls/PDFReport/MigraDocCore.Rendering.dll deleted file mode 100644 index 166c891ade4828c2a48087c8bec641db1e2249fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 115712 zcmd442b^R@wLgC6-tK$5Z_mtb&&+nuY+#37X1H|NG_cO@0vkw*Q zrk5lb2qpx@fPjc12F&_Q4@E?uipVn}!5lF>^ci@|@B2NcZs?w#1)l%k|MQ#OzPIYs zsj5?_PMtax@8O$YZ#kA_W$=6IDa-m4-uzo9&s{$*L2&=V&-7a#%YS3{PxT!3jopuX z@mW)&=QYAJ8(UvGdivIL&keVYo_5A)WBa+IXPrBG;E~6UzBGK{8B6;5{5?$4M;&BY zhxItt&d;v=Y?Rxh)}qlu&oayUOpj&d6uRX5aF4?MDBhMeTimwNO#tbazfl13pMQ>Z z>J>!g|Kx4F1mW+8-|MlCqyy>B&eGBOXIs4hJ^I}q>$uLKUHM02(giCA|8rCLOSYZy z@@?>+^C?pTZige(m3Os5QwBz5@K3+Ps7_F z!Kp_-`HDZ%W?Nb7A*;u_^L`6Y{d@Jdd#sIJ`CSM@UT~DW=mTrlLDdqH7$d$tW5Rc@8eiScjOronQ!AX5_ii zmiXefC5nP~Jc8KjTxkzgY{}8FC4OzT4<*b#nQPNQIQ?zJc zI=K^6ejqRqx(wI~dCydK*iF7?_3SL6s(Zp=l(8I+;JFRb)>EN8*w$&F0X!-0n2P}4 zc7k~*T*0f2cp+SV?|>c5$Ge_azhB*5lMNT7L%}xYB|zUbp51^EF2o~PjWkVu2OvL) zL9v|5tK>CM_2-47CZpZ)_N$N+rkM(ga#_T1Bq;Q=6(BuDu6w0mF+wY*AilfmCS>R~ zAgm_+S#G!o^NBFs+U{-xg)zZHZa9YE!az?jj<-}n#ck{rA=HN5grZtO6I=BIa#6`m zk{U65*mGKXAd!EMuGQq7`D@++ud`sy8}KseBoq&sbb>V5&muR2niOH7fy7L&^`)|? z&FUb}u$1!RS}z8Lkg_5ejQVwbS3?7&?$>%M+GthcO)}QHEh@>gZM&%g8lVPUMa@bR z={IU74GSSLe&reDsY%R`C)CxnJfqw+Vz)d!>$@l?#4jpmdnq-|unGd9ikN;n5tDqs zCO=gJR#?ZwnLn{_7i!W}v{PnM*eIN+?(Zy^SUqF>2v-SdPeS8W>Y3h12y4Wz zp5e_^#|ymSYu*aQGgdN!kz053SUGWr%Za|S6Kg1i^~be0E7ojpSQGWUk~lmRN%X;5 z2sQsypzC(2;vAHN|0MiSQPyklLq=8~@c8>U+>hZmnS;l)i+$q8j_5|vMNA`!wsx|Q z67971S>QhZS>PV~EO56z3*6>2!7ZU14<72F(x%No-hzjalT0@FDZuDy`XTgFlMn@} z``^RUdK?eiZGoAY%DIC2GeHd>#A_P_sYfD->^UMZd8CQ{o|eVW5DQK9CwNWW&Qw*7 zgB6g8y60xX_fZh-=Ffo;zL)OGX4^6K@wcZ$j|Nb*>}Ei-V|@s3pENf~Q1~6t5dMY< z8^8l33Ibsl99K+?OJVT#cukZuQ`^&VUPiA}y28TuBeM8anF)GEqYBtfn*}sdOoGtk zNHCL0CrDV5pmybgPJU;t6F@r}(KOmSN%!r69`w(9fikgc+$K1h3GaZv&&y9YM*BA0eiraOf(l$T4ZJT;Wd$vW-DP@o)mO2lPhM_7E+?p#*5Tf#yT8t zuw@!O)5<(1MJQ}{=1kYB*X&kry{^)b z3PpKi64-t&ex_y9`rMoKNvqeCtG2+{kx402f(RtYxr!4C-=*4PZjhEcK?~aMG(OK% z?<8ghDfgNX(rI!G8iY@^g+*<{DaNG4gJ^N|!E9FnDP~n-DX$#pJTtnL+FsL?7no+y zm3KfQ?`knp%*hmkQNgSXfuzMjbWWcstf`{zWd#z88r5T};3^e z)F4z3%=Ua{;TV&l99Yi2Sj)%@iTIjl>_8r#^+IL(99Mr{wn}RFqyS6|F zuIiIMBqb?85}}Nd+GSGdEYJvh)_pIfIOE>a@r`b;+w!YoT? z)aQgBLGWP4&U`7ifItcQMxSk3N5FxdfP*>#2X_JvX#)h$g|~u~o`-jE zC_OK-cRU~O7Ho3}z#yEMDVqb2$n<+a8(_t$!x+#cJUpDvk*OmXYeby4WF{E|r3#kh*UVwLlnnNnAJFj%Xr> zjnAgbBW~ft3d(uM_v;fb3)}P-Kn7 z{K$kmlpjgWT?)Xs8{Ujp#PaLmE(pJK5x>1oeqVdmil3-_W~^@_kGZKlFn%J>lRPeC zf|^IKmssasY6zYSu=u2k&?vk#H5j1{W=n%^b!#zObZ;E=AOq|hDFkD}i-bp#{$Q>X zoEO%OiO6)sDCQ)r=$1DQx<$8`Md5CcHk+|dM%gg2UUbSUoGglz4L71nrF3q%3C==w zi5G5$qc>Nd<25dTfMmq7N1G2g3|Rg<}*vcgjk=Qb+2O0MG74k`CK z4J-heX>yn!ry{(DIc_Sy&M4)Ln5$0$aw%o$h&IbnydXy^UgB6CE9LzO2XT})sAKuF zo9h5AEu#=H+zGcbe@tAf?=<*ec?i<-1qP~qyNQk~Gj$;v5m)>C%4?%YlEgsddm+M_ zu>UfZIlDwDD@wBJg3gJnF6ffjm$=s6pm+i0m-;D^Tq3!%dV({M%Pd=8j=nPT3SUIp zzGgR>PHMpdoFpVXlffnw8eA))w6mx369v|CHnpUy6KWFW#fV~J?*?bG7&CPi6C;0@ zfmVbShy0;JX6kH!3w8i46%$}`G(6PoM*tJQeF-WS1Gc? zSHL4os5I;lRt>_t@ito1jo!4IVNb}PU2efz$=JH6&_a)u7$m@vwO({wc)KmgKi=6E zx^yfB4^2TYx-D28TpmVWpQ)T?HXJvF1#F`&NSM)I<$V_OOssk@;X}t#X^pv z@Z|X&pmk9~>no8aGQNWOw2gwJLE4q65Hn75!&d>=mp=%7r?mvX5`H#*)tVc=I)$$T zaZO2y5E;{CDvB%3s0#{g471p%bb~?GVzw=5DiN2+YT;U;)LY%h%WdpaG45n-UN{-P zhKcTjhmzpupqFzghA;nI6rB<^LP1VNJFPZ(9N0=QYtjOs)O8!I1y9E53laTs9bM1Nmp&2zVEN2YJzKs zdo3Q@P)+mD7A~`=UI%aMG@!=a4Eh4LqEqmySo2Vp>v}9}56a5a>xm5Iow29hK<6>y zd?TG(#rY;W(H{fhIy%uEN6wS!bXuqKRcb*a^My{HuVeKE{fdUhj7zQIlp8`|;Nd!O zvv#80B$45pkwu7BhgI>t-0%iCwyj6Uj9m^)W30(|UicPby%mp*Edt!|M!4(WdbsFr zKLFUhxtf~`VR!ovO;5IwO12OB391j%1uf`FsEa14FK^UB1mJ>O!+;npfPxST@{+eG z5vQ!0BY;|g0jTt`jEZCEBf!viWjFflCi$l93ZP`&N)HSf8>5DO?&tIj-G8=roYy06 zs6f(N<7%Bm96qUT4_C?+;BoHwop_Il4q$m2x50`r^OMkwJ-%C8VF&0{+};5gLo919 zzy=gh&sxogZzmgP*?Ai~JfJ_^;N?;@N$cb7X<^>rIhqy}S5^~)S*fW}Fp61Cu4ost zHZ4v`@D(f}Y0b#m5Bk+&rgn_x?`VVrjbPYKn1Y!pR4rN%*e^9Cg$^zOEW8yDP<|?q zSl6ZySmSyJO3^J3QuWO9xV(EFl1M5K+gbshqd&zykLn(_8@v_q>aZ`_WZV!H0$sqy z(1K)UU?+1Gk^bf15gKi41L6l#XOslLx_6Ywp6NsiUK0%gtYNK940(3*1UOoVj6^p< z5iR?wDf5wN+k3?_5Z(j|&=0(eRa=&kgg=-a$fl-6t8?7&76f;IqkaN>PJ&Da7lpmM zOIVWE^hA4^*Ujlj(v!qZrDa-6}w{E zN+famNLL%4g0Z;e<+QW?iru7cbhsw#*RVH8eeZ*B233rDjrt8#O_9_%{~HZ#8VL>Ri)qMM-v>V^mrf*-Qc3eOP+^eE>2*@*UMCn0&n(L#UtPp5nqy`a z2k*y2GZg2>bBv(5;hhL+Zv|MZqJ)_^3>W97bBw5A6*5|MB%ha}j8$oSNe!dAPX}kD zYjdRnQK=t5N(CFUSeHOuaPH)P6ZdixH)9Q&Hvj)HZ=*_^UOUqGrYnVblD|vCN3{@Y zs^x=`vs<+YZ(odhsZsWH$jGilr7%;U>xLgf{MvxixF_l24&rP;W_SrIk6IZr3cL>+ zydQMnIgQ_TKwwN#$5*b$nsHEc9;a1kYC|2Qf2BR8(2!RXL@?I!I& zP6E3vcD>pGYYMG(DFC~m7WI)KwXU7BaI}%NqnVQu@{2jmH5|VsL`%P}A}vlwo9rRze-supUOAyHk z|AA1m5Af3{Pi-$pb`261RP`vHXW;@lgY`xZAce6;7XAuKaUjCB6>5bt8KU+FVA&jTO8QI zwzfQ~C;iJABrKHn*_ON+yExXq;LF~f^6G?7ps>BUSW@psflnhFX8~RJs}!8@Z*ZqK zuFh2h)d_!sfRqpwun=Nc%P8p(WveIi*^?hZ4!hb66R%$iSG_1H6}mX^7aj0)7S&^P zhfR#!HKh~{N_WCZGi8%bvn;mW8qmHE`Dpr$ve{I4=dD!sk=FnQLwO}-PH zO+EuaoY#2~Uzyf9jKVSfp~!}Rm=!vULFLxjd_gFPVmBEr{2Y?fY1lIb$Y(qa8$g5U zZ5sXnuJxAjsaX84$Col8%) z74qe@wlSYyz|o+;+?wJG%p=^EEjl3-zG2>Z0_4*$PYTG?)pmfbCANv(ButyZ3dFAM zuSunjf{Y>$QWAav;gQ`UvL@74du=rIV`|`ETdF?Iq*)BQlzSJ6XKDGD>VzhAjOz9U-CL>o*VWIlrAy4Kb2Q!%D z!W5WJNwzU%vYiLJbRKe^ZdOmG_(w;G_us|Z#_wI-aY-%Yce3Jph#A+w#x3jU3=C|u< z>jYi+pD2~>pbU-Se7-U*j9EA|fIZ%(S6;!;atostX&S_`n~WLW4R)zsxj=w?CVB;e zV)RNA@CrD`B*-}keZo0rE}VNg9m+X6$vM7f;GCgzjcr-0$SPkR zm9mI$g(Mt+-z4Dw(%5a+rJFQ)hgxU=#fw(tCzyd=5qb(qg2_ypsO^pfmU`pJtN8Psn8H2^+Vy>*8rw&&+d`m6dZDQS`gr{3aebn*~N8NC53hZ2KU(v-sN6rDVMB71yU;&?7z!I(t;d0I|gD5_J z1Nfmn#DcC42hYP2nO`jhhswJ@I85Gd@O-|5Zy`>2KOTz_1An9IroIgymModC>je+M z=LFv&+Jksd{%Fr^&RW)fLSMTO7*4K!H>erHY|B3C$O$fyGsS0r!hooIIsAUhI>mrQP9{qAxz}6t=9yp1Dlb zDe>S)ZE-PMUudum+7`vr-8_R{^*O~X&@w>NWDNEeP28Zl)!9f1@?Fmr`v$$Dk3Dm< z>wU%9#o{ToO0mB4l86^5iJetj%!&Y-4CA}F4kvCpfhD(?9~caNijd7`wWwpVeZ*d~*@33W|eqk=GLJYeu+$Ue(mw=xmXbG*{ko4-cK6s zbTuU@V+OkmQ6`yKBh^QvWTxvhA*|Aw3aPC?(XKxXRN-$o{QB`jMmqXNd&IH^Bw*I^~Q5{^YN~uBZ`4EwXHoOY zdZ~wwmRWw+V)@sS)_~TanIVXq^~yT7i`WQ&y+NK~NqGols1@0E#4h|b;HLZ+AkB41 z)6tCdP75AS51xWZYZ7t|0!%}p?l*{wDc3CGq1<8^74Sw@vNyI`b<289!6ImgWk9Zu zxaKy5*{)t(P{mBM1j%~0E&Ia}-Etatp&to;i%9jooW|#3&mKbc{A4O;P-mr;qL()wJw2%%ta`6-EI5@X;&J5$J4h< zOMBhMKbhI%K!&-Zid$^I8_ei5p-g6s+@}Acy z%X@xffxH(qc9-{VjXmYPFyE-E!*48CN1?HgI(i#x=qOaTCAqGZpmO5?c@H<9C-0HQ z;qso_I9A^C8Yjwoe&Zy0FKBF)_il|d<&9ilq7J|DGIbOh+ttzAz#T@&6?wjcCB1(L zTfl=qfB`(!Fwey?62p~T{<=-GEgP?;zt)2!*!%xSvzGxgCEV8pnf+Jz-M4V7UEZ{C z?nxWJU8oiou8%#~5<1|b)&CK6DLJ~|lgL|^|D2mSRT2B;3jbrCNgZW|ybvOe`5zAd zz5bfzGF%C>Gc zNQ4rZV7>*8yCYh+5HHiZm9K2;-3&g|p86A**ZLq~%8^6uCVeu$;NLceMvjAI0@nD_v zoL%!nq!I5A^L?sJeAjN?1Oh{_*axqJ*DMs zVPLL=m0FU?W${AG$3YRQ5NZdzZl%gT0cUE`R1mT)LQ%)WW3}#OgQTtFXekiYNrN8Z zBCsD|72X}hepD6$C!R7>6#zmZ_6}$JXA!m5>ulpY{5yrs*?ydX@y(qNfJwQo``?yp zR$IAhkDBsq>dTjw{_91N>LA~*0DZ6xpkwPOqVH}eoApk)c3u^#&v&&B^rdx+5j1&( zxp;D@k_sws!ksEJ@ixlm1MSg43u$WLeaJJTY0}W7^HXxNY^V?Zi7?nxXF?h6qM8Y6vH#EPva$PDd&Q==aDw;5?Y^UxN(0W<^DF^sm|$c_^0lWDz=;Sw7!pr znZKe6RcQDmhz|b;j}~=dbU)F~D2u1fPJ2GR!{~SvqQ$(V56oDf1MP=Oy`BR?(i!eV zhUFEj%sFXTkAAJDmmGCs*#U0TK-`}r*^r1KQpA+#YX}WqD`D(*bz)BXhEk!r4#Uj( z2yH`H!uXHV;1meBC-yKv{4cjAe2VFPx6{m(9@3Xi}GN~B<-t@vc+GG{yZ+*7l$ zO=!TOi(y7pg6Cp}P_Y8sDL`$rmC2Meeseu=xpn(gMR&HJnhsrSLN`RAr=&w+ zl1SV=8doqYXZvaC&;O-0t{)vI)B7znG@CpVEAtpNUp5XPV;9Q7{F#LtrM@x&CwI)Ic}n&njx_qLH?_*0a(4dv=-C>V6QV=CmF zX^Gt!$F)brjxwLKXzkEmLLUJXL~{+b0l7XrsSBYCwyZxg;bA@Xe$PG~e56htZS^SWmoXvk3-jmnjVdH=`c4j4~*<=?1O!Whia*K&n z&z=$Ipcv=i8F3DYaTd*p^V|r>tGDdna`@_dK}+6)++}dAr4gr2<8IP*y%sU-CR#ky zE4CZKHYLSrL@CbHbCBfK0nI<{pPK&xG%V2C;t(-zJqVCjhpri}TdfNXQm|ntVwVW&;qdk2+>)njkmsRTnD|FA&~8&#ZJ4vXhDl@zMCJKFJ|=TW z9fo5&cKS+JB<5me6PJW#gF_LaDC0xVdeyG-PbGeQv_>1(9d7XLn%zF=k-G+@>OGn) z?M71%*J3QFa@Y>6O{v6S0Q{4OkFl>>ik`deIPkaPrUG5LzM%GFa}L$B4oB@CJrjSE z@~y@hY-?H(7lRP~VZ-SRW!ms4f;G%;eht*x7kw4a<}D=LMUx-ISn27wk;8@s5NnKTDkfep>^Rmjx;?BYG$q_%5K&=8$5%lR?L)+(W>H}!=%dCUnEVD z%DcrtMX4`@U8LT)WvAs86JYN|4Cp&@PkHMlY^@hFQK)Lko2i6C`bV zOj=^EJcqA=iGVqzg|&B#l@~5~M~Ha^=+x5ke6ExaG2i0%!hE?3Ne!Z%B^n4v=!T#V zrpbiiZBl8e%dB^1G3I3}MOV{R9!#Rjb2K4xr4p48>(o@q(tp?-v&$cjGq7++gSIc@ zeO$jGQf{K^$Iy#yRXlKiDRT2d6L3ZYDxZOUEY*-{F%4e%&767sTXb-?#fUr=&Nw;` z{8Qw9EZdZ^`vkG1@r9z=9&ME|gCJm&{C;hC+fl^w#EEWwunmkGAY3du#=_MhNtkO$ zRk9c-9SKPOZ&svQbvpKN8%WHYtgBNLaz^)L+v1(_&_}Ty0kdfiU7CNjK}1w5+rrZq5)Dv_vW)k;rsZX!t?z$L~km z>`Xzr%mN6!5d^M2miyx76f@foAf>rt4jbdlSzR~8Q4KxQvxt(m0=H4W0ex3EiimZb z+r@Pheh8Hro%VdhV%?Z1(rMq^LFzq5FZ>=O=vDgyPw*d!^XV_2J&(_MKBi$ zP0hoj(zum9Cq^G=ky;76fs)2uF-@4wm%1T1TriD*-dtbxG|f*}byu#RA@>x4X{HX~ zI?^+cc8VrVK>G}{8)?QgrHHX!NLTv)FG4j8Rf@dFPWKd!S|59mS01T-yBYO}F<`RS z5-KZGUz=8oon4OX7m4;S1|eFHsw=4qe-d^vwBln(Cb@4WzTlKJg2ml>GHllD&r8~c zymU-aRmAoyr-EXG6s8X^Y!Ksg@_IPD8A+;MnBMEw*3~J^T7YT&nO|L>j%cUKnr3l2 z-eM5Kzvu{w93bNO2uekDn$x@ktZA_qx1Hu~bc=p8?r$g@!;Vbro9cca-J(35=6mTD zedsiAr(3kA9l#7xqZ?_ypKzMCaDM!w7gCDKu9ks!>c zc-Gb6-3io>(`;C~$$VjZwsSJ!UZ)_o*iy{&s<5c7i;*QcWogPR=#+n~(0g_4CfyBc zV7%z9`U&bAS1l#msM3NW0;XMFa4lF;9?VtGO7Tgns5=YUUtwfU@u=bYAHJm)>?S2c zoI88ak5qd~qF>`-Nz893UF_&##QIg}%_%r7iV)lsoEAk0ZVFe6Vg@(4(xM1CrPiHz z+1MH&mD^_C%e*P{rG-fn^jlOK<#m`cK+6|B8MoPyb&r!hQctUXDo*BBUi&?9-wStb zPHJ}?uV`{tBfV)lgzLQB^oHmP*m0a45-Ez>ptW*bn{O&CwdZh?nnLkGp;WDz5EDCP z8B1-NU5&~@$q_rFS*Yk%A6v(CH0;19+xj2y1>H5yvruG0TvLg2`T_3oz`?xHlj}qK z@3Y1mJ@3%(+542e(f57x%$_ymq=MF<6<8H-^nnLIKfVT41n}+G-MM1P#Ts+Tfe8EU z@eh7-pM~D&jkou1TJuA}dDrIBRcqcZPKGYo3bZ$^KJ4BlE4|TUzxcxk+U(E904C6T+ z-C(fAcsS7&9BVu$({r5hKni<;2zA%5iu8wVWY$v%ax227{d z1m#(JRoRw=)JjKO;g4;t#~WQc+6w1Re3!E)f7&#%azI>vUNR!@CvcLs1WH~&I_=;j zeVrmNCpek!H>S%ERCFR~J4IA7F8EB7WIVz>tuI@?6R?H!$gCmmqb&DUdp(_9EXZ24 z!^vuY#cyp-S)_K=St!Q~q@K4TV;`5aa(O_Dj(r@b0%%~uWS7c`9iFVqJn&<`6-0)!ajW4B8wo1iUp3!eKSS8NARo276>r3aSz%SZaHh* zCvUg$4ZcAwHCZ$>DATyuAdpuc^r?ZWs#48VbL!TBQc~y$542#*zhDP9BU$W94c^5! zR`9~z!N@vp;s_VPQR7q+STBowKSwd(w}Y3Eafy+y?MIRf7bB9azZ{H0@lQLm@Cn$} zc9Z7LvVL4ZitfRec|Ayw^mZDi>)QchfvrTwS$n>~Sn6=tW!%SN=8Wtn?KIBFX>*r@l*?&)kLD!3oMx57oCDLu@;J&w+Z48yx$o*U!0UV4 z!BKdl;$v~`)F;zh(##F%jWe*OVC&W!Q6wv&YGguRd_tFNU5+;tF?1y*1-g=g0$nL$ zl5C9;@Fg@r}MR5mWaZaYg!hkI4pL`Lg^|?r1 z9P0;wpGw*l{kfdmrBWW&AS#L0^a zUgj=08+Z_6nd7WtqXyNx6IOu`Vww`CNlMEnu@YPZAV*p8$E$(y8?+??9Bc<-4F^|I zN?CT!c|L?xWhW!wnn9O{cJVdj1ftoo;1*jlD`hx~->3&w4C%?ZK07!VRl*(WpGEXy zM$Fn88W+8|22dSdE_gA}uunUOHNxObxN*&Gi#RjL7_8>D6!0Yprhw~*369DDR`R4d z%J5Y{Q3e(TS4L9mdR6NBaw2uL{grsP`EH=33KiLeBBFB1Vm^S$r+nBPS(=-2DzkM> zMUz%+xw0`8XVYfoR-wAbv@G4`tx@h~Jp zkXBiJL?f5wM;&69rC`+w6cbZ8t`2MCu@Z8Htv!u9B~4hl+oIaX5!rVlx*5Vh9XBxl zd7mV!PjV*JE@TcL>YUfSJ^ct$$LLr?myx9Ob$a)u$cCJm;n!oZWye2y5))ubMfbA0YQZI^_gJyXbQFH29juGIoMrw2LBgd-iBdoajSC`}p(}5!Z1~(!RJ9sNI%#ZXUOAJ;s zxsi!Nu3$XXXqM$NS0*rOzBjxCaTpVV_WWi0Id(4sd(1rm-}+MJ<=XQhc$}y^2=_8K~S zxsx=$gjS|BWRn6yFn6na8mfclmK6;t$wr5qmTg~<5fdrbmv$ufOOlty>1DEy0GcE# zI3)oprKSC0IaoRAb&{R~=hI|sXl-3OJ(S2?Ac0&{;onh&Ry-ozFQ{{hAiF38jl zW+{4tHyaPktDfME#&Z%qR~QdkT~BbO@j%def*rQ-0wPXgVHDcU|(C|75g?MP~) zwI5<{_oc4QkXtjj`Hrl?);HxDj!!8wb;Yw(d5_s7vk>qLK~a4O4vt6#a~&KJCg@{3 zS%f!|#6CT;xi*~IToX?a?IW9Ku0={*n&(y;IMG}p=PQh}#Af*uG)0G7g?)bP#Etd? zmXQzUZD=RUCMliiBI7PYY+alFe+_3gXqGzHQEgnyx0p%!2@HYmW}opSG-TL^B9Ba< zli`fMS%D^xGZrQ>t+PdTXxjoKF<0GWfyNHrfzXs*jqTTwN@`ZdjO|he?Mz!uQfr_a zz;j+FgeD9VJDK814;0Np%H<%Uz5qyH0)&WS!OA`5#FTLPM8;*~lT4b+f zyR7X2e38f0G_3E+1YEEWqF@+oL{skrI|lgYAbr8`?+2x3m-9*>^LF)RUhc*|CtnVp z0|57PiDW=+_~9fV`EV7U@==l`^ZZleRg(aE; z6bm$cC5hLu^uPD8nLt$dKA=SzZ9Y+mZJ8M~QQ`5lFBLxB7Xyu9;E9DPROm>Y#|Gj? z(U_MtX7B3Tz(6lt4JL5PR0j<5bpr0PdJGjRHmHn|YjbrmzKD>GtBYhV;{Zd7a@d1?fciPEJYy=a7c zsbFVV=Stlr1+PX0myZlL*=!XF?M^6gq* zhkS$`dBn_R9_fTIkH?DL^_M79%XO)nAPpDVsAZ+4D-5I5vhbQUDNIV#z%m`M7`Sq( z0DOF9bsAIoeG!sdeZk>{plPM_&Oe1!ABp<1o zhG>*LTt_S*EsU0eqc>2iQr4cl2;$Od$u9u5hp~D0q}b?^)X zhpytBqZr0Ux(hiqSZ?k+2+l=mSKSOyx{+{>L8jWUS%nSA^)M2|Kt}o5xjK>V)*}3b zi!zEL8&ytBU$+(6_N61{Q>!Sc-36L$+gcF&gQ+(9YX{j_rn(79>g-jTRzrV64+rqm z$XScHmV%vlIhJ(3n43o;_&K*|g-!{pI%UPX1egpW;#cvUQNK-D@ zUyXNl-RPa8K&hTM`aXF5>XD<1cIW$$(GQA$?dT#2f6nNg;$J#CB>p`|2j#uc4ne5j z$K85<`5FurunjZ+z}rI@^?vD1zVwg<54ZUK5y{F#Pr;UTyxwYmI~X6P8tW}B`;CVi z5_J*KSc7Vtu1Ef2n?9rU%GZH=P=nX$i@c{1Bl{Q_*;wtx@7vUlxRfE5)G5By7VJP_TaLd^)*P!`Q$+|k)sQ4GN;qIre?5K z2s3p3D`=8;{m}{}&+ul$2MAGtTCc)fg3i;*t$;l@ba7uE2kNWYjZ zjz(V)jL>_!hZ1axJIuYzaUyn;^&ldloru{}mLxPCLlR461*LKWN}EnZP&}Dhn@{E{m77c&{!iSdrRy|H?RhMB7Up?dB-p`SFC@his)m zZCJ-@f(HI+KD9=wY>PDn_p5TlE}0T>Lfodzm}kkz8m_J>=vs$1sAOxt_)WEZjf|I| zopWH(+uEmo$7Gh?i#BAo=IJ)H?=s#qOg^OpQsSsobse(Ff`eJ`Nbep@(b=}lq3qJ- z53>{7s3nm)<0gx+s!Tlw!;#-nLVa)qHLfc~&^eEheVpl(k%L(%Omp58g-T5fL^m2@ zVhe7f=~AWC@akf75JEZD86FnU&|sNx_-e)`Nv3+G1oy6cl+|}5@NT%0<8%R5 zXWiC&0IOoluxTvPG6*B&%XrIPK6+R=vdNDg){gA{qX+V*+x+OcpC0t2@kvVxJl4Yq zPnoE)(3a=^H9ZghPRQ^p((Rc`3#(o$txL$}oI^6as!v57PaG&?tq^lR>1!(?B{4!O z_C6`F#7mj`MvkVB#jyYOV8bOWdCO!_31bz<0-M`u{|soa<0>(79-n{=-VSuA6W!W4 z(X^W|A~Ln96cH)fUNA$+FlRVZ$!01-YJ{i?1Vvbhw)ig4BbJ-m%zsDwx={Mam{;L} z$SpcD;K=ebKA20{OxBBaFp*4C;EH=_WHsEe3eP=ha)<3w?XH~UtAd-bEhlcbsgIJ1 z3EF4!c{ehX_M_30d@%nWFB3E{Nz1-Yi%G|a!P)kMr#Ve(dB zL~V9md(f*9l&Y8zXIYf(ZD`dOs<$g>pX zhdrs}?cmF-N}6C%ajcblrl5%>u*pQ86ID?GqrU9aT*SxMJY}7K7Ym$_^B%d=Hx*YH8&=>dSk*NfK|*nxL!R67e1G;G-EjULDw#0xCih?-wJ!5 z(2T6OO2@8?t(ZNC@{P)s4~{IL3wV1{n^!^<|39a6TBC^<5=fC zc-NNM%`Z|h44|u~!x+i8A~seaNUR$n3hEBkrVf|ID}sbc^;}-F~v!nT28t;;q#LaI%Us~=;n)& zek+mL?J1evekfM}PESE(i!E}10A^~V`gX&^n9D%qI|bBltJC&U2yb*d92hM|LQP%( zc3~hz9~ME6K!}H}Ga}cwftDS@)0>5-;gJaChK-?$H$0J*&kVWx%~Vwxn4U=8LgpsY zw+LS*UccoWxoiuwUQDMik8PQ31dwj|Ex;R99^blE-6Ll%*;ihnH8{090^G=ecRP&xRK;f|w0LhFZ;;UI+vpQ`TwVQw6YazaA%CccQZI5tDj ze*}nQhsPi_;L}&Z*%V}os~7Cx6QoXj5{qCsO2H=q*ZO<0775)0>c=)BwBrW4OaZ0Cj4^3X|`=Lzskua9@`ELOb|0 ziNYPGj2o^8ke_CCgU=b7Y-?RaQ&|YLn-7yT49bEp0jEWu(jXr<=5^o%g~x-+;qU}< zBDkB0!Ln)3Lv)qRdr{<%-)4UU3aQ^_cXZ+4x2TL-q474tPtpv(%L|P^#Gy)WQgKplesUmH zZk9+^Mp`A3<6}dI7Jm!!P8HY?hw6m5(=OmR|{e>Y2GatlhsZGgi18QrINoMt-pYu^0jn z2X(P+y$<}jM06PCuJIIjz{y#^evzr#Ne}=E7$w9UpI>krc{f7B4)YN6KYn;R9&V%D z7Vts_oFM^wwFSJ00oWCZ7^~U>Ud({A@X)at+r*`yZ3^84zZl8v8_+}N-CsrH*Nbsp z!YEkA_rsU+fyqyQtezPks%B+#8~+#u`WXy<$LsgsWACz z09^0J-dxIxwE@CLnOM8YfRh{DVo3T!SkgDDO&&Uk*@l(@KoGRsG-z2swSP7H)pYGS zxSyi=4Lnk5t=%6dIV;D+8?9llz%;lIiBJZ~0AaB3O>MHbqsYVH z!H}QPYYS%EnQg~Irn6I!K1`CFpV^K%nI3%OJhP3C?9@L5esX5}(Gi@E>{P$N56*0d z{!@H9vQzVTF?MxHX8ZgIPDgfX420uEK}P%Qex%QiJ3ECw35E$iK;*Q328wkY`N@P% zsaqu$k+M^(n6KP7lF=Zcx4@u(nj$D%=oR=ZQv`(zy#k*vq#kV25qbrVzE_H%_?_^Q z!56zD&wL?S?L|0d@sscS(*uW}cGTM7Wsvtv9${6WN`Aq&&O6!GjVR;g)CaYUeQk2V z=(T6zldg8@#)9qM=!w|%$`exg8|0I$eddx6Txmx;h_CpzqZq%3cqvg8XP(!mPJ^1M zNllMN0`#NXBH89r#dG7!>3&UMru9n+`w=+I&-Kv9^M${{o4bdbf+b#ak;p7tPBqWc z!_BiY;tO8{$*p`%#n~5~Dl0PnDY${;EJ`75or1)T-#KCCZd2B6049 z#HHU1R--giXTjSdfv6F^{SY++zDW)3@(mIg&Wura90Tlw_bXY4sXM!V4-~t}X9M#h z(Kncngs@|X;K;{7TIh1)z2>JQjVq!w?nNPN6|ikDMU>VvP0i$(PjZ|KNAH z?<7asbYnf1btUqXx{bbh5Mq+v4>8*YEniK6=wac3+VjEfi2M7-d4U`qHWb^n&`KdAc`bpJQq;a~BrA7!X`1ybiy z)rBUPCf@Z4U_leA$ag`M%>c=uTz5HYJ=-$;d==|Ri+K?ego;c&BTM8sPQrs0Fz|`T zO=aDM^iG3|I?-u}8NTrl;eGXK@MupQ47oX$GzH{CdC3Ah{1qJ1x}C%*-|0YJ(3J4#nEYDeiRM(rrO5F;U7Hp-@IpA!i?C?4aH2vc|nrSP<;{dXy6@Oy9| z{ENE(NcVriZIZkgkz~>K5~jK5H1MU<68)zploso>xW^(+JI%Jx7g?`K*R}eNf;%2-QXCi zFm5`3TngGFf=#}yL!Q?p+{r*~@q$*pHx?hR5ZoqlcG{>Azf?gFLttsAbVh=I za2l_?5q-}aBNG?`$xJf1ra9dK{e#(jb0#F|VGQpd1cSuPYe^in5syHb`4`=9$Dr_X za4JN7;UYRw&e7d;Y?6_iEjV)jH05TSMCG#{-ivgvP3ryu=Dz}LN6*-VBG0t`hedLm zf1`V+y3y1!ttZt@=CmA^*A+&!Y;}{}$_KZJt{~Gwvmy?8+p>t$DQ%+ET5i`MNP^q) z5LB55nm2>y*9px`sI-)34U-RFN$IJMyL$W18g{o{2y4I(uRw_1B>FNB3!zV;n66xb zQ-9#$qAS|@)g3lnAzX(6JGl~p0M?b0&)tY(fh+$B<8bxKjQ*cffbQcRQMC~_=yiEB1rrM1#C zObsU!Gl9*z65byQx#Az@STwYUPM7|;gQ;_iGlF&#EH8S1D*vl2}n!0 zGD<+X8VBpTO9Y(!DEN>ouS3^{cE#qGPUDIw4IM(qX{0dI;^=4_Omgms)}FN?7eisS{2HbE28r z2JNdudn})$(w3g@@2!p~5X1f=gelbqF+mVjssg*Z9&rJAQk}Z-0E^uNp@5E zB1|%JbL?e!g^-vw0nOrGgN@vjnNb101mP>b7{w3#c7{=ua`D&qAONhx>+!yhbr}2) z^tK)B21)J`77>~Httw^LC)Sxy{*0HR2k(eV9x^i)4~`qgFP;f!R^)#Lob-_ z5!1bCy2nj=%J$xuJu5cFQwXZhM=#18rd|)SwTlfrbGc1 zZA@XCov)@vx<@~%tw+~sx~Rg~yXlObZgA1()EN+8PA5~5hcAXl8#*qweZ z-;Z<8ZoZ@MpKrb37Jp zz4Z|BR|jR-eknFGF!&y-uA~exzmD{1-y5FmT3-3 z1%#>z)XvSdMaMXKq$FS`~MgnXw)F67kkeemI-oZkD0dQ5!~S%!W%W{T`#BmV|3u~b7; zI2uvRzs9C``GO<$7#>~+nIFvJ0^@PeCDj;0|GL$)(@1XyQXQA4CIxsauuIDi(xSzi z_){1q?O$3O=ybbOk2W&+}NRx)?jhn1WGEq=LXNQWzM;FTa zHn#s(YuOw0yUy%`(6?D25o2VI@g&2@Lb3KfBb}iZ?7NN>90vk2@nqr6%*!8Gv?6>p6OAsni zjQ;(8q<>RmFT2S!ODnKhL!ChhO-YB0Qpiq1%bRdB-yA^zZ*<%?Y}F1_-5t^UHl>$b zN+-}x?|w?}4H3N@HA=#}q*pmF^wJs3`B&-1_|JMf>79BD37`r#CWj7iUy$w&RYj+U zxmxFMMa=pHcpe+DLKlofCYJ&WdQKzVh)AZWZ;z^`y=yf5En6?XIN@&xy-z(2y$tsf zW3YqXiy$K+C{pjBw;THZo?f<{&EPNp41cx3@Ts3UiQBa-6b*PfNVn1U7|#BXK5TkOtW$g+ofd1#FpaDnnx(zfEp6UhQn${sBXX&& zj!Q9*fe5K_j;e`19pv|^&97>6rJeVuS+zHqzRR&b1(o?u%A)9%@a;&Jt6}1E!*{@Y z8;ZzpaFBs+_)bE|GR(3Jfmx`)ClQcK23Y1hui;Ce`;n<5s%Y(w2;M1r=ay6 z59EYgTrk>MD%`0oLAauGTCt)qGw52GDdu3LWc6z1d3rT-R=enYF^?|Vn5at3bkdD6 z26HWz*^27JtE}H$&@+cJ&pAJcr*)ImDMe2wh+xO^EE>&anfK5EU`6Ey5jgL572>^1 z;fS7nA< zdHp`j2gX?WjZ6F6y!f2*jgY|l`yL+hy4g_?ZT;4kvz{$&u@V&8#CNmMb}4doL44=L+i21Xb4Yw;clckVv909qRz3d8^15Q;LRpKcPr|63T+9%5d&e z@T3iPScAyKXPoF`?x6MOr1c0pc$_%~qg33%9|)5+fH>B>B`*@ELtm!TWHRCBB|BNf z-W?IK@*jMS$#}sccv*J#BgGzzd(^wFn+Tm%R2EtW3ln}BZjL~Pmz-S8jBFa-a2FEU z)zMjV=oZ65rlm?m^>%m*L_xvYRb6tzy6{%ObUUu{Nb=V7O-iDMQmZwpcAr`LUzGH# zV{Hk}6xFM2a4^vzbU5J>6r7^-C$j!*yV(nFaBt^aFtSCDf|RE=zfUB8I>8oq#m@;k zZ0_fj6+^+vDsd$Z)*{BA=gYKaGe4)*$5*z64KrrVKWjZVV_EMJd2XRv&CnQ%ZKzjn zI73;9t(H8$(_ZHJbfy!23H2yF5NGl+(vWR>49SP+b=(T>eV+V@L(yUim>GCCs%kKg zNoG=0#I^X6%ss%BTRjH-BJb7o(V5%>o@HtnHxM&i2Mm1ZKs@?v4ns7GIn3-Cf0?qp z7I;O!zNCohkCB&teAwjA}$aBdH8~)RF1t?a4 z`btB813X=R(mJe~yTbgT-l2k#49tSJ^Zax~DrQevbq880(o=DT9;FH(`NIUBQ@aT51$r0(0Mdr+@wak!To$L77qa02*_~Rz@6mYI)4?(dr&FoR4 zJhGyEjy8R6i1e^ti?u;%TNF8*;)vTBmgrArA{fGL#ha&Tz3@>3Ikg?KmlrWF-WqqXK58#+7Q(OJ7o|eeJJzKJ^q> zhI-1#*!KO2jId_>{tRV8$dSs6rAKQDFr}xqDBDTQY{zy0q)G{lI4oM|U&0DdJCJ6~ zoyc$MHuP%9<;@W3@I7#k$qaaj$JPAsy`6yf3E&PsgXf?s#)8#+$_+>joZvh!ct7La z$;XpOvT;ES`v75`F}op6eGr9*$?{RYLJVZx@QZlZx?vu4bMMRR@%}(J`cVxxA>&j5 z+5jv7t{Gq9DJhMMK_50){f@N0nY1EvKl~6L<61%~pxoCp`YQ(?JpanB$(t)D0cbc4 zBFXqIb$kwJ{vc?!lQXB_{8E(7T$)fl%xk<2MCg(EOr~R76SfrCmCz0Tj+2{s8rX&VEN6vt}BiO_6Ci2cF-uIA>#e?@e!B% zONu3b65FCIcj3NE>$uZING*r38PK2(!E@nkZBba)Mx(&q(h%osa6$C*-Gwh)IzNh` zh12_2)LpGaVRKWd&F`9+yKu!xH~%bO#etH!dw&kUIwP!Da1y9E~+GSs{UA`6#MTJ z|DxEBk+YxD>F9lYQ`-ID-0>fH@SFwDE;`m~@Swub5+OYkdGPCX)FO{D#2sy z-2KLVHUQs(YfMCbtg)dJa_!QR1&m1;B($0^XPeG~P=$ zI`1U(BXOt(KFGjbb0X?I*w4*{oTd4i^wW*6FlA~|kcbfuxbR&(%i;IL{e2BEudCo2 z=5{q;(Y>%=W#Wed!Jz{`#2k@d3V$pB&O%2C(H&AacT0(p%u|OHwBZEWc$^eH4B&Ve zCt21c8<~6*Hl~p&!V705v1PkmB2|rj89|D-Yi_AM5d43`rh^m|>Q`9il8mUo42?FzlP zEA(w$p`YsteWWY2*xQY=wOyfSwnHN>LoRUl9j1hqLM}3mHvlUfh4ol3IpOcXuuS-S zJj2KN_yhfokH;t&*%KxFBjJj-8=@NLp8yR`M-^lm-;1Nnn;zxQ#CxIO{dbJli*vsJ z#k8Mb+Ks`!h%5&Dg#mw+fTe8#|IL8ENx%VZ0e@$}KO`VNl)C!g&>EcZpM-`_65)UN z*eO^i#?etoqJ-ES7vX6kB?|UMM}-XIC@5rS6zrGQLbhdyow;)7Ja$$4A@*A1;7f{} zETPy))egn(H$Th~icQmWV}l{x*lXp7*!l);T@h1K&xF_~=gX-utya*6J#&7D?Qtj$ z14Hbd^MkXc0&Y#m#8%Iam{=T+Vlprt^WWo`tRbv#`XN?FLClZZ0x|2C&uOfRQBXqc2Sfr(n7|Ygz%;{BxGO8BHo}J~20T;s;#ilWHSsUgKm|qAI3Z>U zQL)-$mNPNc2+vEhif~pilzIU2GXZzFH={O=jWH=$`!Hao1f0L>BA6HT!~K{@BWx@6OBk@f z1iT^+7(tA45D*EpZc$sSN$n1a57()C5#8(6eI(r*;KnqY@M;m>A7dH90|3p02jYn} z^y1W37TOKbx%%O0Ecr?WIqHi#7Oqp@gMJ0Pz}fF19OyWhF+NXeq38H`8<28bLO zIm+SQnQ}OES2C=fX?^3&#U*sgNGevNK9 zC=fX?^3&#U_^xumHjlO(w4x0VIWY3m&$eF8-5$w{EpxMr_ zIy?ix^)HB0rx*P)HPbJVO^6;4nyD{R`!x?~6Nd0#A-w%aE4mM=&KGOp&uS|?*OYDs zb+knh8B-;o^=TCh3~ z&Lb3zj~Ys{+39&VGa zt;k_v`~sr99FMW^6?g)2Azo6kVN(GY5de0$xa7(#n*Hr5i8GEgWoOi_56>}YE9F>( z2kyQN**>JftMgd4dU!|=U$!GanXKQNdcv|UgKTWY8&d%CWhgiWjs-glV-YJ0BvBaf zubcvlsWZUTw9cT+acqx$Ly^o?x0`Z5fpR-x3xz2(K17bKLQlW_FMxJ*!`D&9@^!Fs z2au~}FW>l9gfG|agck!oZZ@pV&*$+$te(wgf2Z90v*M>NF6Rm^ zMKCtP%)yKRHg1(TF|a@UW%Un7{srpCWCu6OFu!HU?=#dt+m8UDwQ=V*zOiaeR9Bu8 zSQlpuSDrW?UBbT$?Td&JT*izqV(`w=;fNVt4#3umwc*%9H-J{8Zdtwfoxk^zWlJWO zO)Q6M;!by1Y}TVE;daR#mUY<4mi5qc;XZa-P6+CD&Rzm|5gn?;7B94{?7%+$YKNLU|ShUKjTbMPhE)?}-JzRbGEw*|!c{ zeq6cVdT{dk`Tf?fD|~L8b^UzbdSof#=Px7VhF(6$*Au?J$XKfu9#pyNKym z_hXu~^N$bt)`JJ|xoFYjL;cqEpux4?yY~|dTx)KT&;8c(`H{JNW*74L(7+Q5=HiQm zH#n~Km;NUf^jkk(GjDI-`bU`*UU(qWzxP03?c+lBzUEa&*v2&TihShxDCj5W* zJi6~Ilk(TCVJQmP%fZPrB(GyOF!Y>*`TVyve4ZkZZ)S+|8^PSmrTYefd`2Lr3*_7- z#P|C6TnY~NTiYenmij%spCx^8!Pi0mcTj7-b>!}>i;Z)L`SN~J`>DlzUh{vbd++$D zs;zx|?K35l-V41;553nEQj`)1Dk!K!G9e>LCd?#2ELS3^V7nl`T)9@P7sY}d8!Gk& zT(Mxs&K0{}QBl9oT6>?FlYsZW?;pQEe)?g}de&OI@4a?8`82Gi|Mwo9MtbR(KJK19>81451CODP(i?{jpzMJYhI{Fz zKF{^=(xCJQkdv&82RdiaXCt|feKzv(@fql8Dd=_Qc4o=Bomukk1eQEo%#uA)iW|Hv zKVIZ+i?y?QvUXNa?w`I9to4mxNkcL7b0q#b68~?*S$*&dYZN~!g{Gp# z6Q~9~2O|-EAc5vf?|OGAm+@;*FUBv+yU3W@jK1xqUg)>^l;j?jji-Ln`qzObkarUI z#ziSiRUY?{DvUw&w^DBFCq|`?@Y3H?xwnLo7XHFlDd(hgG`GUio=mTiJ~>zVQYRU$ z-wx*({xb3};}humAxvH4IkpgbnwMV5;dnkC%Rb~(iF12@mgMy0QBWX#DNEwt)0yLc zEsgunF!%&7{fd?R^dT@z;l2MR1fqTXO4B|SxXb|Toc_QbbS?XcwNO#W+ znlg&pWy&aS!AYsyYLimAWxq;f`B#Z7KUB!_Lxn8g44Ohaq^);ITd$E&YY+-!Q}{l@ z-`tBs-Q0`i$BO(|iFrl}OD2rih#q)@m*Y$o`vvIv8MGjYwGSk5*aw6^emwIH(hq+d z&iR=ulJhcCa@mic$pn2w(MrrZk6Np9CJEv>=$6FQcrL04i+`X#gIR}Xaf0sayE^9) zilg3w4ng-gdly0X9U5Xvx#O8Kv@19j=5Q9$x}268qDp_)YZZa$-G`NmorT`RRz&$r_c?u2C4HDgb3 z9q^+AR%0$cn|6w>r_|Ef^n#%42XQT(N4o@#lv=ug-VijrAIGvr{;GExO_N;zoqiYH znjx&aid-mp8l8bSrvt?aa>Md2pcFyZA7O3)jyoJ60}KPB9Ih-DIeCg1Q!4NB_&qIbk{x1{g|*32ABt)%c3;ei9t zaIyTF@bm!aF0uR>3m`_tV(C-4SnH%wAuJ!E1jW0xGe;ufG*vfJ^qr)~8XrV#aPXc{qECUkD1f#1J^uEz85tL|j z4T5?agw;3dX*GHj=cUQwzpk@>B;Oy)R?QYnX)b)}Hp*4YtYozNwmwA91D#=Uzw3!* z;-l0-ooOXP=f$vpp1J_B?i(yuAEj>UFM^IOVAK-`PwLqM@aIQx&~Y#`NnB zO#d~NX@2QI(09fTNp;b2$s<5dA20?qWir#}`!V%)WqPYfUd|r_`}%1UK%eeA1@wz? zMbKVcR0jU~vNN#h{j%?L@H58F28}B|0a|zZrOHKLc0CzfJ^4(x3V)f8`Awj<&6QmjLsFl@bj@U@Uf!QedY;g`dNTjaaHfw6O+lU5_5b;V^ARe?x(M_gX_rgKTnavO z>}8;zOyZXMQt0R|e*=HTkgGsP4c-i@Tkx~NH-Ud_%oflC#V3Q_5zmx!q9k2KzauA# zMhsy3d5?QRf9k<0o+W8jjM)y}KXxbR_d<1?I{r;#c0vB>@V7v@P0^Poegs-RCZ4ES@SCFdY!bbZCAj$Ww(rFJ=5k9?LVQajA!N?hb9n_{+d=O}+@U z%GC!k-!O(HopM+*BA4ltU6@|m<&1b2?JOREP`8hno!Wz*^9@PsLA!=s2L71hK9Ju( zU?k{|(i{JsHV&~JD&Zb=X{X8HM@}pP-HSXZS}1g8w=zg}j%LZLxzoWvAZ1s`p`yQu z%_qp4qPK*8)~7pchDfcx)00CzD6}Q36XfR!Jq|RT?wBwe5-yh_U7wt1CFND7q~qPJ zjqAnnJl*#MBD1AOLI#R>{E9e! z^jM*silTKLxgP#STvC_Pwe(k{!ZEujn0z_n)MN1JzE^;MalqA}&Eq$teuj+a7<9dH zdDC&Rsh3Vg7Gt+!I6gruk@IcSfAgx6|V3>?ryyEtwt^wA13$vBU4dmOB%; z3~7{U5SJm1Ivd1gNT=QgaT(HSutA)&3>sw+=PZLJ8^k5bq!NR;M442fk;S>rqT-&C zy2ZK9rgefi*I%aP(9MEc>C*u}rsdId21SM*PU}Epv0C9Tknc=#rFWz?f>zPq4hiX< z=n!vN@TKH0OViUkQyo@0jLOT>)4S6L2K`>zCA~L2#Sc>u%c5=r)BDpEeYNEf_we)q z^ie-X=Sxcuq=SMuXJgX`QqTTk2~?P#Pg4c8(pA=s^kH;<6rGShg03^@^j-_oN74d5 zLPdI)PF$QmnjSak?}93@He=n%f_T@+qpI%5q1#P5vhinA8Ul7;eHR;8)TO+!r$V<~`^=OXe zeBWQk-IP9!9x>=Ppc48)&`#G2%_-E5+(x9;t3w4~dD}5Gys*!I+*%X>fUm0{sSsKtGL9KMgfCti#rv-Ap z+e#-4c_95n8atk2Sw$zNyq7+oZZxQ1z-Q?TXc{)WT%z^kze-<7GYqXCU_^j%5Q)P8yi8ghm^5PQl2GI$CB>5U8H+H>f;kVnzeJ zzYcd}aZyHy;wEeKb?)?xM(Qm{kB+6Rz<)bad*?2cKfJLeT#ByfI5MR?znvsaM7{0v$GJU+VIV7W%`W z`%0H*oIzFr;lKSVwQPCDndB4HN-s=3JL4?6SkNkRk6oQ{Hr=feN^}v>UZdk&pF``4 zIF?plZm-KTR?=3D@ORO?IMtX}EIPViz~7;J#GtAnf6q9Vx=+)(FOTtJA9$KUzYDs{ zpl2uEn6a7?OWBh1a%;wUG}WLJ2i%=;K0Rg7L-}`STtH=II?h`4V8$96RIbC-sv9#d zq*{a40bN8l3TmZwu)LU_I#!3v8S+HNr8M?9M(6w9F0QoJ(Nv9SXrGre)={k>-J0v^ zWrMgi*V6}rTB&}F7vCMNozAiBmv&fBKL~22^Ly;gxQsgEaSeN^1DWq;Y@q3abUR#5 zXBpkFqE9pahaNO2v-|Rljnr?J4%ZyNJmYUvTcOdRZp$;Spu1*kv^#zwzOHo0p!YHN zZlX1O;Dq!RAlxRpv69h##l7I~^pT)dbn2KdGp?j>wNCodRrIs5=$Z@r#gH;B`_f%XZ~ zeegzdA1|rO4bm~0*w$d6wt@N(wt~-%+y0lyAZiBeATj@TH zq_kVp7E?h>JMrFRO&>@li<%{y5Es{484W2 zZ;yr>i8%QwBLDY{=X>P(VY+DnBR%&&Lbq$=TbY)Z`3T)-(8Xz8fF3hwk#Dp6QF_Lp zu&-C`Qv^NbyA12dXK0;4cVor*3_WEmd5!W6 zJ$MSo(n|l1e*kFSsTw^$%1h5uQh<@3tDdDSL3+jVEDaH)OY|&_(a84((tDPs81yf! zTc4#egRY0}IjS(|KIopK`3C(uZ6VIW{01eJe4q3@oo-N{feUd;95!h5!0(e@pfd&S zOiby&Bke_6Wl-n-x5U3l7aPlLr1uhCZcrbj_Yz%g(1~4lq`gcx8C2W#miU+H4qG>Q zN7^fNzd<#VZ;5|}b{Mo>)nx3VXAOE@jmq3byA4W9TS&X@8>MYe2oShbTG#cG}@r;{dT0iPLmCKqTem?uT!Z(hbQewdxK^f5*6r-f4{7A-tXof`$DN(|F+C_q_sCD_aX~v1cop<1?KFtj zOP|s+2JxEcQ+nPYURixgFB!zEu1{%~LAJ9qPCYtLPj- zgA6L^^8|ELHS&FrmB+uS!su@GK9~7#Y8JFJf$Q@pI@=(w&!6Z#gSZ`jqQ4o$?STES zL0s2A(Ypq5`~5^&^*S#q#|yMVBh>sWnLp7cL9IZqWgepYwa)i+)D1p#oI+le)hywppLx}Df?8?5D>KWhN|tNOrj8zO9zaRzbAwtt^~_39BU`lYOREFWx-&G| z1C*wGXKD0DR==zaHP4{*?8#YqYK=kDTnnkIT5-0vJf;84tgh;Za|HRG@3|wbt6I>i zb-R+E$n2`FI9H=bV%lb*zXAM@JFVZNj(?S}o4jI(BlNacui?uG;jnO#66nl)J+ z`**FIRpQB-qL$dGizjQUy27B+d{0(^dd8qb1)i)z^)G`$p0Bft6kVxf@pukp6|3F` z_42ChX{yYi_3ni15>;o=y`IeMQnk*Yh2GBDW$IpoI>z`$lE^m7FER}YH)`f7_q(bdBXr-W`H)>s3+}!L6HC@np3UpbR zJzMpe{OcAT5ZtKPMKMA)$E(K<;sqX&M>H^q&j=9T4T@!-7>R| zSEv0$TYjHcpMAXg*r11!y>x=A+oE;9B;%AwO}|y69=M5gf*QJ2knc9EW=>FV8B~e+ z;RJQipvy&f_3b*`u0GA#C#bCkJ=W(;plx^RSneraoqeL(YtY)_kK#^L6YpZ(23kGk zLg+eg)3Jn3;G2K2O`^}eeo{OIX1Qwv4Zd`etCsw5}rl1Rooz}QTJ*jryMovIiq_zGYz`V_v>&^ zXKsvNtOgnM*6^+ALDla8(aCw_5;fEyK95|Y#u;=+QK?m@3JiLz=*jFlHC-bbjs8-v zJ{QzVufVciEs%}fDqje@>v~mf(CVqT#Mi5OjWDA>pWUD~Mp0q<@2K5SE#2AdTsRQKqi(rUPt0JJ^62E9G^^XbCs$P-6~%kau(BZe_5sGiEgKh z`^ze|K+p#2HZ={gSdVa=`Xq6+$`-_ZsYA|cHB68`Q$1fT6{OEpFH|=gl$?jZ1E41AYN5osJaW{ z(a|&KLRB3_h3S{5y~dJTWu5Zv;5b|9XY7yGsp*2AisyatI@M$l@0r)Bs|4x!Xr21T zgv;qSD)Tb6?g<@BH{XQJ4eCLIp2I$FgZjXrYp^@ppwgaX%hj|1wYx#hHE0(+*ar2S zpjP@(EVFj9r5@oMRA)gu6S$2wsNQXKvy6^wVuL!-Ag-kiYNsc9-MdTca{8T=^AELRk09R;c>UXy z@1I)t8(R7{wc4Ov-Mw_18u_Z$Z7*T;u|bD$H~Kbp`ChHN8|mGqieJ-c0oEwDsjUXB z=un+=n`(Sr>ptt{rLC&?O^p_HI6Y^pI?JG>F25$+u6pm&x~ogVId`bX4Z6L1IOk5a z;4RkaK5>@{3DREwF16es?jd)na|CHWf0tSl4Yxe!F7;Rx6{g>#-qGRYIoJJa;M<%6 z`Wf2xK{Y}nd3yDrDihR7#}#|=wdjit`l#!zKwIA7aIN%S*T;Y!5~TCFT|FsC=X1OI zz*v4&a&FFcHTGQ&$Cel6JgnvkI-dp)+nDp1+PYuInHPU`&g1H^K_fcema|i>_)zN( zX5W|dj5=u0Pg9@Bd0ut@SnH0rUdVY#oi9lH!QE<|ppEq8$k%dqtBOz9awFXhv_~B@ z=;_?Ia{j5l7o=j(z?B4U(0z*_4`7j zJ7D>?8hVhC&gVO7te}l}7vQy=chqTLYRhoKYdP<#%fHfSbGO%W-c#jY$HKj@W((3S z_P$ymXak)z@?g&U%JU6dYTXAaS+)vaEKeFXUSa!?(RNW-pb;#` z=YFB?h*}oseyJXDSbnXZidxRh{aUU0$&Pbg?zigxD5}c+K|Li%r|@s}l150OKKI}1 z;4gN#Wx0pcFM@RWeo^jUS;yr&C-)b1K+p!1Z*A^j^^+iN`MaXSw&jN0-_`Ac*z&4e zvK|(sEiLP*sO3$$meu_aJM}wr-B!LJZRxef3gXna=Xx!<0*#f<4gGfJ`m8j$KeB<| z&3!pH!73BP;kKqH!V=%MkkRqa++>5EQ5Pk=nVT9#=O=uSn;u1HC47~eZJi>qaG&3r zo?|sc(T}-#)=ELo(8y8#_>Nc-DWvfXZT3}Kd}mhC{h2X3yf?pr^slKgiPkyEDfVSIpE|W6WFho2007I4pr}Vm$7= zj%JCL&m6|~{m_~&;udjB{yn%`7K>TiIPEq68S-G!p+pWlJ)Z4{^vR&_kK{VlMx=*|JG)qLX+=5;+BN$={(_WxO4kNUCbVMkl&T%Czt zp-5Am!#PDPIWo6SiB3yPG+&M!+O-kuv3!>|7MpGWd!0G4a04+&w_7%QEY{AqdN!L$d)o%kLc8+&65w{kg#0dXw(qlD?YK1?SH zea^=`Qw#TK+46mO0Nis$x~M(L=a12mV&RtRf67lk33Y*&!)pFW`V?NVu&5mIDEexHqKn^i`Wa{a>)7<%!Ex%j!=5*_oJXQ9*YW63 zr)6_)|7^9RZT^z-pYrL<3G;Tk|G9KL-{G!5s71@fw>bH~pu9(ur-_%)VcVx`kzSu@ z`K{8E*&e<{`n(RMc}VbtS?(~bz3Q$|3ZCLA~7FiLs59OxGvToUdHH;!n+2ipW z0!+7wT+_#7UOrOd40|MR{Hm;+56X=Hv8;=n{7KU|Eln>*c`aHfrFQaq)$|r-9K16l z^N!~AO6jU%mTUeXRttE~L{?l*Ew5eim&YY7C$DF*ITEvz=Us(G-$~s%`O{==GaVFn z{T+NjN;gYN=j1y{%slGtb!j=qmqkB#IfnP8-OIDu@-BKDGmD$pQqhS8Oy5NPTa*HO zyx%4KkY3CW>6nGLGPCh72mf;MFAx9XY4=ctKk&vo(+;2s)E_jBh6x=fv_NRN(Ah%g z3-t>P3SA1CjrUDCo>rmzTrAlSiu?WU-9tN33v8gJ#Dbo*#eILb5yFoH|3k?LXdlR# zLc`SUnMJhS{d~u{xEc8Aka>8^j!!Gs3qMRPDDvaYxo1Vw9<`)!naXbg;;%tsNvEW#BfNH@Xpm1RY_*=pMEZUz%{`1X$t@fPQHsfTMm-TDr7+rc`V=B0^J!xN=$M@rqsTlM`9xQ1CZJ-!A#1Nj+d1(3I4 z){5>-PZBy*=+oU;a`~u*c>A1Ns<*^2Q7HFe3x8f?S=@OPL=B{YUkiSi^?g3Zm(_m= z#*6fjL1I75>OPovYjC#0`eny>Kh%eKyWTenm+JW&k%!*7q#obvXoh9A=Qn~}g zWjr9`@c?ms9w4ssaiR^niYBack3+dOf}S{;%{0)ikyEl368gjtB+0!wZ`@`;`UqkziYoB|I=g#~eVe>-HuLzsf zq0;hOZ}z?rvE2>YN*CphBfphDmE})}ysY0sXq!;R+147Aceb@;!Whps&r0NNo2LNz z+2$FE9B%X6gj}`Kxw#zAx%nIqw_S_H{jkO2{@-G8&*2pHj(^az8TI*~=YZ#rln*>xEZtYPbyxCfr$0PLB6ASc`Vt=Mdl*!EcY#ccm0>TRFJcN_Ovd=qn@#dkILS)&U_ zc%J|r2l{1Ccu4E=0aLskT(0D4-UFVr;#%)^&w{e`ps(fp&AZPUJoZu0%L;e|eb9HO z7x#>MG5-)G+%um?JiCYP^0HTd&D%j8hk9rdU;jP6Vcsyk23kD!ZCHNVk1hM77wxlt zPaF}Cy2ZF?g|DcO+wb9=Y?l1&!8~|e{1%L|iugSkM;F4|&nxxEv*-7M|J-%0+NM%d zn&P*3h86ti-tKu7?|64mIfKuR=e9mKekp1-jS5uN=(X_$-rIeDjc5O#Mzg(fDfONL z#n0H8Zj3KbpZF{tpy%BlB}qJ*rY8-vCU@WE z9cI1WZI?IR+MGK_X*+Au39@vi~hXB8LTikNRMkeG#j4ywFU`)^BHPuu%F zlC<4Dp_JEn-wb&oX%kiE?ecD-IZ4k#dw3FSe{jvki1@Y3BamD-nd#K7yS(e^mwrqO zCo}y6bi4b^%(>_r9M2YOz31hmpFLwIq|p|u$^9xMzkBw9-sXNElsbO``l0(EO7wxO z1oSv9O#D7+o9hOw6V`frBppgx>pf}8F7GziMp+3QJL-?5EnaTZeTwU0pL%ODzek?h z2k-7Hwm*Q;vCDfvtts>*AAqm^HDR{rwqd!+dtBG29QMxke4T=R<+?p{xy7~GBl!T@ zx-aPCIYW};-4jNQNlpiyl>7w#nihPlm-D~fyRx_lk}~+ZC%}J%KREbcr*hc8&}kOz z-x2;R;dgbskmB9%cC3fZ7sCGx9+rtG!19H}1@lhWN+3xALB$BkHq zyd5{fMDRzYy|t_q_?6&!-bOpO*=L1NeA1+oyxBbMKSY(SBN; zvN5>>R<>6$9eG3Ye%d{93;4H$e@pmJ)SZxjqV9uyOwWhFkLme1sAt$SkaQUK68O_Q zV;$u_v-9^!9o(}zzY58$&ikO18o;h$3hgJJA3L~F;Kn z{@_1~>+hDC(ao*X-~DCJ?_l#w&qK-m-K$gn0Dnn}CuNxXn;~1RVQ%hG9e8Z)9#%KW$wy9`VzkQDdRWHl$HgZo3g~Llt`Y6UqFpE2%SC&YXs;73-U@^LR*~E#l6yt+px8em_D_lSInll( z+T9}GOPL7!Cgp*?LtQ{Wpq`+gi~T{d|3>V8kl1S7oaZ_>=eg0%>8=#XYLQ$l{5s(; z7wr}9_|$xSv+(-7e9ENTKs(V3puOl-(1AE-&8HER4?2M+fELk8P`nEaT1nr7o=m@k zRta4~9Xsw+XChb1ihy1h$MkWbJLB+{Z^xZ+7eTU9B)#HU>rZ3aDl|TQ15)oV^t28v zUn%rDp^pp2ml}w_*w_!bSd13Aly0J@FnT|wZ}4`2rBYRA{BhCYYJxgmZBX~9_teMA zvQn*VtG6}D3R+iMcUya`Z*W}R&sE@RaNXy6!L`fvs%xL?N0-l?>+a(2?;heF=^p2v z>@IazpqE#>gYGljt?sMbx43t^lRT3=#h&9lr+UuztnzH|T<3Yr^P=Ys&q2?39-p@( zJ`8`HceZztcd2)^_iFEE@7vx3_%p)saVc?mab4qj#|?-pk2^l@w74tdw!}RU_f*`j zxI=N4FU8m0*V{M9H^O(kuff;iyU=%&?{?p#zGri!X_v7he;9 zP5dMAFUB8?|25v1kdly_FgRgK!bu4=33Un02`dxUCj2$w%7p6@9!+>9;k^VaF(a{W z;>5)HiKirgIr^G@!}+66G5u&N z(*qrtI^|lTwGZ{RaC-jvxH!-=iV{KBm*Im5bo2Nu(0;ir&&XkVemc{?2n`C|Q^t~4 zB$fF>H%nR{kM0P0r(WGa-!JY1swJAfII({;l(yGlwN}UGBj_h*~_B5&=={OOaKzO2SU+b@l6dio}Vz8F^odZ@4r zbhFUIIWxddlo-}Xs1hliF1xM`T?4v)bY1EC8Q5iXC9(=*TwXW6sB1szfa^pC9vc@k#`x#e8+A~lMM*!I5)fmzNCczEqIGK@IFvW{06?fj9(6y2zffFMH%>ZBA$SOTJR^S z;Ilz3c$IYUxu6!lTbKzt6&i~QAhW0ho(5lh0_DFb-U<8+Pz&EF>;if!bpt&OUdJLo ze2xV#(+9K)e#fHI;dw0hn}MKp@H)7+0>6W2LGU^jod=&|(cfqk=r!;;c;X${|Tst+0hUFGf)d_hbr&~K=C}B_}h(NfLe4A^C`Yp25R9=#US{vK`qRy zOTd2%isu`s8+>OB6i+1JpB4QGYT+x&OTqsHiW@Ez0sk|oMZe%Hj|%VNHG@A)%fbH! zik_faKz&#%peLxaK@-$Dpoyv#G)b)j%~0ooW~mE6v$3nS@MXP=K=afkpdHj-LA$H< zpgq+F&|d0)Kzpmdf%Z|GK#x&Zg7#HcgAP>Jf(}xfK?kcFKu4>aKqsqPKxg1A-NJh< zw}GCnZU#vNbLcAOuY)p4p8(N^&0pmKrMU| z@(u7$gIe?)o)@4Oskb3{NxcjHpXz0nj4&&Y?wJ@g+pGf|Uw74bKQLHt|(Mj7?BHleDry%dK3{W33LL$61{~r(0b> zXIR}pXIec#XIZ^KE37`Cv#q|MbFBWLmDWJexz=F(35l2Je9%{D4d`3A@1KP+avA7* zbTQ}$bSdbE_+}>&{?%`>vZHF}ko|Cq>)8Djh8{dbc*v^eK?XcgbRN&@Sd)eKtBV}hE zC2SBgaQm>|;K^ir*(lr$(Eo91=MN`37W2b#_%|JM#0>cRnfS*m#R~kJ4PSbbd=Hh% z8=6K8r&CX@Z1Oh+s|vzle@l5ouxV~fW1up4MqtvY;Z!hk*wB$9Mvp2k8CN`ZgKw@WSUqJ4leUI1jL$G2F^*Sp*Yaw z57tE{OMoJwGmbB#2!iu3M}ut)BPx%~^v|TqmPk{eKEHexm7XAqd15?|io&5r@J;@3 z(>zhk7sY&0fM>;gTIR274xD-_l?IwBYyH*uSbjk`;KxT2>ixk68`Xru_5P+N8*=i6 zp{Ax#z1T9G8)}U5WdVP6AS@8EI?$XzgRS5&C81DL%+7&WIXzI*6pe9CaB*!66@?m_ zP+g+sdU4_^hmNDEs0(Ss>QH@@*ZGLTM%yMBDG7!n+I~iGaoArRswxVF1Nk}til1N3 zsaAwT%YrCLKA1&;nSm8L$jm^XIx?++>u^>>RQkV)2=x>V0KP=mcc6N%9e0z>%nU4- zg8R9ZxP%3DjkSJ~oD|fcK8piY!FqpPL0xch10wJ*a_EXsZK(01sieM-rqFdC)9AWr z8!w~s2vePN=IZ>BCjON?h8IH>=Kcbvv8GC-VGmj)UF zVOSkSH8a#;YdMkPV5G4Q!?@nRI50ERGzYzq3aYDV7XGn*PN15O=MGpGYzR~Y8j5QD z4T~XzD}XFiwFErd6^24f>iyv*h@&`A16!Cxbg99bVpaGf5g=6i;&31mDGKo*Zh|D* zbdEqJ!9bnlr2<*gK*txuI#>)hMlDfuo%|CVz@eLiC`StoIs5;WE)W|&8QV8 z8wC@kDl0?H;i|yoC8wTR=&xFWzOCb%SOPcI96nN^OJ-N1Hr6S%l`S&WtSyk;O5Nnn z?6wi(1vcb-*Fa(Ar(*uj)E~%igk$+fX_w15TvynKvd`Ym5yS-ML?p0mGZMHZp z0qO%ywIRE#Cx*gyUoD6T2Gn!_B7BSJ2lqH;YQv=M2~-$ryoAdG3*Ux&WPsUuFVn=l87d2f zgJ)oNXdmg(IeJW8_1q9#ufMsjNdi{sz9hUXTZAi*Osj8fY7t&fy-|qDL?4K$=SfYQ zo@*SJQ>1y_nKfS=_Al35kmnO>WWu#J9g{{g18$WlsI#T0^Eo`N5YGtyaA4YsDw$@e zC{R~7BM^oLD}?ffWuYYjDhw?_;maeov^dnv$~nyq zO~HCSXO;OIs$(KvU>iwkK$hFwtBeG_a1J^e>JI_91!AbNx&}j|vAK!e9ED=6lsVW0 zA?IkWaEKYk?6EX1SP_h9u1WM9X1eibn9$~6IWBEm7T|TJK#t4-=Y*C!5aOR#+0}ZRf(;L6X~vkrC&)nQ_0&NETRQqkS^jRxGthgL+MB{gy9+kI-wYr*kTaF&U8F> z(>9CDqQ>f&VvE&?))C5y@^H`{ml?PMtca^c$XZ#P2#T&^qB>(MBRVSNQOiqU9Zy>w z1}Sg##1@TR0p|qIULzQeo>z9l7h+?vM04}A;vb3jfbqwZH%=lZ-T#KnO{&5IWY!WezWV>NIzB~NOx0PV^dQ`otZDI_MI>&I-a-5gfROJWM! zo~J4-f+AQ89jW9I&4(&{KvegqRyf+I2`+99i`|it6bB+z;b0?25>uAc`4>lGP}iJ9 zFegywUm=`BZ|4?U+3M!1rdU8*Q50%y3CjUYv^8QXEOHuJVquI2m!aDfTokMeHaWC~ zEojN<991Da5zP~aB;7=FrKnEc5ov_QPgJa#W$eJv6|lHy08{B-W-n@K9-rE2@4yU? zU6B;|>#BGVN7b?@lwlSX8LxR1jhS!l7#&cIB?hdnrw9Bsl6JXFK4vi_QWU8o99R|% zHAe)SrL6E6G~p)UDg%KfGHtbu$c`bZVmm#j#SCLust@N^b}&9s65i=S^8uvhv}59P zBaB4bG06#%Eko~iE|ct8dTuQ|1&?Z7-TKfF5%A*C93k=y7q!qQg%$p4k#Nhjm2fgR zK6Dy5pkxAPflf7_RoR&JaztedIDs|-yZ&_!;Sl(kPVa@ZcQQ?9Krmt$R1~j(rZr$w z#ihkIR5P4{nK7vptFY!pmCf+@ylmH1$u)t&FUXu*nSqgSMmpOaeX7DDAc(UojzWy| zLP-A^Q<@tx3@0mp*;JOvhDAmqTF8}BQWwHdM>?F{C_um{Ut?Re=^rvBb2yHqoc%kt z;();zYu0%zZNQ0xUWm1sr}KHe#d=fx;-DWBAoht>k$iE?I`)RDS~(UhXQmLF$Z$(# zz#j&{N(w6!Kh9tqVS>6eX$BnP;^unv8rulFEo08!2Xlt572dtzP_Cg#HqCQG^9sYw zkj$$LVWp+{IRP}>8JO2ufeO+L7vCIWXu%@U&+s?ZQU#MnCTw+Luo@g!v*F;Es`=nU zL&PX66pc6lJERzr?Vg6Vcfgud3($p}mb`A%ii%JpyT9r}UZZJIq#b6xLyc_MBf%kE z6bmmo3$6&%>F8jOVW@|ymaqYwvPsPe>TM}MbI^KrygIPn)WoDS{3|44-s;36E^oj& zZ!BsD48}C3ezgf%_76GM9R&vm9df*;`~n!G%PmFc3dEUyc(d_XR(usQY?3% zst#3QdrTqxE03THR$<`*?IRnHNfN$<#lh4;p$KI$Rqk!=U4LxbYfr;a)wM*SMwsr=I!$$!SJHdZ3AWp8DcR38Y>1&v&IDCbYig9 z-hQ+#C{M?23oDW~1&-O+g%$}H+?+p)11hR-L8UU`(7aA+3NGWt8?S}&Cpv7#sg1Rm z1S+;SLg+O0F~A|JfOSbY=`pHvyKECGzAL(CDNf8kWmVb?~`XcmKQ zg!RrKQKu_8Wru3wS|m?gX)ey#Bj}$2VYmo1C&b$?2M!>AF=#)eg5%}GL#j8w)9^S0 zrz?6BIm6!|31SnuC=i|-3Qgzj4cci=s2-|C2gAJ=pHwo47 zaIb{`T_px|H*g5>tb?X41F?r*0Y7-8W%>u*6jSfwfUZ18OBw;Uimogp;M#5@INI5? zv9(pPVa=!0j-=2qj&x$E0n6+d;x54JQ-`SovQ`$S4z&}r9t)M`denGzwc&Uw^F?EN+-hUnI)+VleD9E79Nk#hSuF&B*6(<$SlLnjV7!Xp`;S_&Gl>NMHZmmf;&LW_8U z(L&Umc_?T1OdAFxIQg@Iy)qBfn1{_&j>@rlq-A`nL&ycH#KJs)Lyo8=AF;NV;lQD- zkzGC7n>#|!Gq*s@64g$A9@k58FsvVNqHW}HxLuxkc4w6_AhTsmWJcrsHa1bfZ4d?A zMeuYWilzI-9=1f~yrPK$hY_DL)uEHL(P0nR7?YI3v12$$C$|T6)EvsFyNivxs5&}n zMkTP0@^~hJUK+!kFYUdeCi+Z^_rcl==%r{>tw)D`{1_F==F&XEq7_kbOO%uH`{mF@ z#!Qjn3&M-_)3Rn9tI9(lJp2i0J6p$7XH06&X=h>cC_Oi(vF&3LP8Fwz7`A-cBkgWi zXFGAMA{`2Dc7Ec3oeOR|=tDb8hz;DkjYqZ;7D^7wh-7DJ7m!V$R*YDvDoO7Xjvc$meM-((b76(Qd$R& zmaL7;l*}Px_aeI?sPaa{Ef6oR&Uw?F|KMmnMc~l z@VHR~wKa|UdJ_BpqPk$CjC(ji8L|AU>wq7*0dQ{Y^=o^~t5iFnZDY$goL-RF7BN(h zWni$uj*XY2%wy!EL$LeRiRy>-wy0F!X0stj&;6`2(A3;0Ptpz7QXApz73*e(saik0 zGRVw$keB$wG!v&nk`ng;L=h&WQBm6x3opx7JmEM(1jEW&I5~+|TSeMoXUf`wvn?znFIa@_HGO$4hLt46jqCxcJ5^ErX^$;~c8ymoB;#7fSk%iMMDja|V)K-K8Xqf2w(B5_MavpbC_!0ox61z8>H|sBcFjE|=&)3f>Oje?s7hpL&a|*bk zW-Z5Y5grBLB1~DJ4ihNJBLY4W1aDvM#GqoRuTmKhT~rv{e(h$&`r!nRLXLrN5Ezyx zG2L!P5Idc;1t_Fp+wACdnL!{Hb@^`p$-@GxK$ZpK_k!7 zqY}qF13ge|juHC^KkwDYqtP%tAjIoNB{+eFABjPEf@@!W48w)-kzEYOY9bnh=W$&* zQBkaVqN1AUd2Uq1ZEAb)s8ALy<_=O+*shz!@6PI7&k|!`S z(j1Vr`tB}|X&otCj9$6MT#Ug{y>=`{Dm5Iek^6Kwv&VBH?f`8}ifThRM`YQ??J& zUc+JV+?fv+wP|TUKZ3x_AI%Y5H}=_7&L=Uv2LKN<2jc5n(UHsj&$fXOohK^Eui~)z zRq}(aE1m&ko!`JuB3WUNEWP`*rJO}91^C8@oa{ylB2rQ9Wx9E0HSn|(p@Kybc1Mxe z6#$Z_G{3xP$;Tx0el$d<@j~M6zuLdh#`xEzUi!n=@=Wx;aGIGRJ$~ScFnKRP1RI%Xy zDaL$f1o>fmiYBZeYb$XlG(!3+111ixm$UsCL$fJl4PdE%fyA2yUbZFESUv4{mT)*P*zbLJ|9f2z<5t_ENnSZ$4{P0LFeQC%Gmxw+WkS7R{ z*p#GI+Jk8RNLP@L(`FO#j9@s7tIe|KFmcO4WyI{N+8u#HjH7^NJ`I=kQZZ&z+@lUP z#D=LE`qNgx9cm3q6b{LL4TcW6-6!!f~b?(Uh8tJiN({$c+Yv(j3Y-BsKOqQ$%)$IusX8b3wj= ztqY(9oSGBc!}>qIt0gDe&QQpt6Nbgt>jbpC5Em&q|I*|2ZrAilbczTeJTL5!XLD4+ z=L>p4;}`&XwWP!8&6qt>Y*dOTjZq%6KbB~4>oJ+m4Bw#Ot75ig6~>&+o9yc4xxGxc zFJbHLkt0WXNft4W`Aq(7A(vH`!SM)aI=mDX{&)yvbF!q7D&TdGy$lgS476z$dvrM- zXXcxQNQC^=)u;Z62jn*q@z%nhs__!S(OsuB8|IroQ{x6V->}iHDMC&DMYC#ZFoaN3 zK@hHpY5KiP3?=^xY|L;`Di9S#oo`fPrqw96OB@vh?C9F~6&~X{ImeR#J($}Fa9xw% z7S-newQBVwr8k;7c0N;T??pwXdyno1M!+>*(8M?G@Hj}SLRXV^F|tM%>2%bH(O|Z5 zARfF%!4+A7H({H@P6;O$t$p0aakPcR+(v*$x-r{m#XI7U?J;>OcA(f!Q)1ls$I)4EVK`ez=$c)$bP+-(vVy@g;a^%0+qu(z>UQhraNVI1_-$9g?BSi5XFn&da@ZpGd<-Jtuxiu{g#5aY9)xm7U0&@$2X8bo-5U(x z^zCkJMAdEH3F4bEoNG43^)ul)lQth_C7+dH0jY;qY@kJNRTu@w;XE~Uh*7uN*EwWd zV{L?W?FB20b&L58$@tbC7q-%wIhNRJMUWI4uAE<4J3_$Qb`f$Zu~8DMsE~u|#Y@!2 z0qbR16OEG3QU%m;9#&M=2JzFPe>fuP2C=+p=*(P9BF}C##Gje9$5tHOG zW~H;QvCecN|si)N&o-4s&CWAd@=FngcF*AV? zN=vmD;%-J;E3;a1L}UiMkvLp{kr*dnP_4YvL}9*lEhEvMj*8(c;NB?Ih}Xgz@gg?( zd3+5&wy_r^le7#P^I8y<%Uv|=dGV@%Sw$Ft%`3~e844m*@LKFc4adS_+*dbJn}ur< z5vv`~1gqJMYpA`9?ReB+t8be)AZw*dI@C^FE-$%G4=%AMa?<|JR0?my%=hrKa5M|w0l zqCJ`zr)TEH*jN;%#4!QFn#Z6q85RpM;OC1vQZJk>d(x0fiUQW?8pYvdRI2A(r=;DI zP5KkoOwkZrKquCZ`JIwRhc#9N(U7{eqp;dcX53BDX56ZrM^jS!wuP4Isnzrsq-BPo z5!eXVFz{B5&arUpbhV6EZaA9cAJIn{lUy-YF0A7f4FBS?x4Bu~-cm3>#1y8+j<5)? zd7Gr+bv0^?a$GQ8p=r5sD{>y7C5!kba4ZVGOfK)1NE5~oMVNkPTU4g zJ#gtjp4QR~ENOWmB2{l+{S^WCrZxh8s>K(BMQe^Lc#SAeJr}Q&Lvy zE+(ut5>|In^CF{k7L%2kq2-b#3?`1Bf7qqBx$nh7>`tA!=yF{?ND)Kau52e08Z%-1 z(~~$RAYOcxSFa#mp7U=I|F|;QTWXHe)uHLjTmSAl#4%?QP-l6iA((TLGWzKUD`l#F1B}sy3M9X zS2O1M_Mc=q;_Y+OB94fR7ce{O|7*-KABvDVsy3o%70#+DXlS7VoUjz~2N>{jgOm`r z*ZE~jeYq+4C063=vn}{CU4SU{ z1bmSV2jcjCo#4b1!B<0HOO#lIFR|6(Ul`x@pAPF9$SH9SEEYo#K5j0wjrinWA%2_i ze+b`kqYlNez{h8R8t_|3#o(5Mr|kBc<2iJ88RGUMRlLiKuiS+NQFaMJajb2m>2^M% zcA2sKL}jTuUs0Ux%wJ4ef_&EDe@-ckocp;<+0!9yK&ow|=@n8F7~^*S(iemCBmcFq z$5(2Ix>O^cDtwu)9-$i$*DTcP>ENq4URQT~LX&HhHJm~-G!+utGT;z!1Yf1%)_`@Y zvrZ6qsWnQWcl5PR6^NH(Xh!<&>K;9A7QWS0fIL!S7^!kgac?R>eN`a#0xHB85$EFTUHH>W z*_=a?LVn1FKl%g?)P;0C_@WlL>B51!=7B3GP}d2g6a^ z4a!H!!zdqLryYeHA)j4}Q6n`dPcuq}d0$G#EiYp)elE1|+~^ZUQfls%T$9q0nZ-cN zbAQ1bzZhkdX{Y0mb<*u`_Z*!5IqYqzL)M`Zv2iN8H#juC+G^~uZDQ=i<1vK3!z~%c zuOoa1I|TQ-8mA_)TlXa>M_oDlaRt&~-)85Mx^X&s)Yzk( z>w-NGk4j4AeBq`MFk4Y-rPL_Cas&Nhq=H`8gT0w^lyg3H9Ncp;dWPsx-6&Jw-BC+XA1T@l-(U;f&b^)%pKahX)e}V>!D6mezr5|C=us|NjX|<#wg$s&UfpC?8MM+!gHr#i$v>Cy8U2Im2=ZR)mWV`7cD;4MKt37k_u03%ZaB=u3MgBtC5zSI~wwTNg3si zTZj)HCtx^rM=TWA9iI~BVJ5Pbt?frIuSwaw$)Id_Dwz$A+ae$IQD(K{=!T(ki7t}E_l$kV2-yvU2G=!f9;)rY!z2_ z$7h~@ys@z-o&gd_>@evEE$ zD;*CUk+Xw(dG#MWx%JmZIMh1GYr89-4@{M~jiZNd&C7X^^D+g5;tN{uzHtWBI(Rp$ zBq^-sP4%95M=-6{tFzp~FD~&c<*KW$`8Td=rzDlnfRmgq&@8AGidxa^q@*=}Q)qJFJ;ErcZLyHdX7B@E}c+K1uI!9OUNw+#z?i z%Cb3UM6_m~T2FiAsN5ZLrftF&RfgK94Nl?J_2JMBviI(DTC$T?MyliBR!5t>=Sb5o zz_@If>OY z^BtCYGsP4B?b3Hf7S#V>?RTH}e(~SFf9_qcHu3#{t(RX15=FWU>ym;WhV@FwuGe{f zbJW{dtc`lzzdEnb+}uoZ)Z0wKu$UBD!>BwM6lzU{da%A& zh&IP-sJ##>YcmOu4p}XMQidRIt}Rk&(JK_xQbSVb$HO$G zQp3IRFqOi0G~hDJL&|KkvaPD%`C88}G^^bpoGh~Q7L~`R!9dpG{-$|_xSYAarWU{EL9gXOz60{0 zSJ&u6QAbr-dozsoh{YfPG)TPZA^z$-57<@ep z8QuUV>G3#yJFrncZt!io6Er3@artl zL2>0s15PzXpL$Tqj|H=j)YbG;x+Q=&*d|8hB9%FD(^w_ znxdg1D%%4~>TXtNdXUXV)Y7^P3A`@3WudG|0(FU3KWE#xoGx+UkV zJI?0a!_b4d4D16&(7KD!5|leGPc)!XXb;(TeZf2%z6(hXwxC&}b@?PbQk+dAR0cQB z1vTUO+`;uw&LxTBs(eXZ7>ow3C-JaEI2>il6U5BIFeuiBZDCsw;C#>#k0d_n15f3X zQTcKm%+@%Y`(0TCj?fQUP4ACLwd3;D7KSlB8pK(@)CA#~K4Pd+hJMpZ12)6L17%e+xK1LsCWV3PD3L9Z47nvR{AfX94kZef9m6gm! zqHM4AvSe_L!9%J(8*V8U#c(bwL?xFpp#gJz6zRx~`EipxaC$UK-v}v&kq2!xj8hl{ zXmjC#Vq=``bk&*d3`IjQg95oxsQ9!Vrw35uXvnz;H>-qjT`krGzcEhihIR{alTA(K zcj!5a)r-D{4JI2oISopb(WM&3P8#1_FnStSqPWr=Okz{~%Wl>;W3%ZSa#X6=sy)IOGC?(2 zb4TJP8lNudA3bqaBuM#bT5ltLl;FzpDNpvk`z@<;o+* z!}Ks3u*J&&Q#o3dEnt>p%nPm7w@XoWTn^&64f*jxJu4yKZ$*4z*xD*Bt~?~Gk1F#t z6UN!w1-u#7@_O87Q(v#;W27JU>X|~d8Tp6e5r5+<_K=!^Bbw2HVGm0~$MA?T1&uID_L1Lneva^$ zY*{kqvhG2tP^J7|Alpu_n#NW75UMT$&OvKjS%Wm)HOU{u=?^8{IJ=~=axARVETzQC z8rWd5;OaHb8Qr>jQFBCR)Sp6Y7L$E!UH(|yx8&VXZjN6Am-1K}SV^-jtr>}{Q7;;* zHQLp9UA5XOX0qr<{Vg*W5Dt#=l9sB$b!!e*w`-HgQSrJBUlheRlalxiO`$ zW`-!3@1s_xh!cfe5m+fQ4y!e?LPmt*8Ym|2M5+`uGGgr=q|3;|T(C3m0mDP7QF>4d z3e$4iQ!qz_HZDi;Ahpbg)u{%ufgsSJWCMJgkJCZSS?;j>X&6=3Yb5aFjU;5u0Zc`5 zDQnC!1`TdDHVzof42~NdwMr+np<#+MtJA6!r*4y9Wxz_0Vf|rSoLxbfR~qmgoTADg z9l_hlAVbWFa~Q^%D`)LhhSWy64H#8QR&8ZiNtK-jZKAA*1q^%4os6xDu~;#7%L}A+ zWob}$))`$?dCd`bTWW?zRM3c~m*%=nq>`WN@azK7;+rrVTElik1=Z zbIdM|yNkCOP`8*FjD}p2Eg8xWseI)G}I*Uk!2jvADc4-V61RUG_?^MYa+cRnEGS=af|W zQ2bQRH%D5WP;`yK^?3<1@5-f+dA&jFDqCl<;0;cE<6Eyr7aJe1_4w8L0tJB@0VUQ3 z0xbe_1QGxnw%(fhn2lT9&#{x^d5*mtGiq6AcYtgJNe>9TCUCG&&wegW4^y_C1CpqV zV+qG{junmdw!+u`M|9^4^#y9_5q?GBs=$v)YT=k$rN;i0$=<=0W~D#PVYXA4qIx~3 z60}mfNkwLYj0$NJm?yA+q?b6vXtq+I50IwpLs{#C9o3HX4Pg@k7Xewna@Po~(B*nz z3#nvSR|5irfb@vKae-50jwt=4t}bx(TO6yDa$4YmfK`1-1Rs$3f{=d#*`~aY1g;5u zrp74A_C=tF!C~`(OVFO9R~o^}!%k7Jc7^#&APbM1WW`JzeIi&B$)iLA?zGvRdZYDL zYP~Dh%mOc};;#1LXgyUGqV)|dr+ z=w3>7$}*mwuV#)jQc$jD6#-|1=B3ais>5@2X!F8O0)maY(-HRtTGVlhmNO&b>nDOx zyX8K|y{^d*SRx&x1~kWfO?ud>OAj|u>y!pUfY+tg^t_fE80CeK+YTw)BNm*8Su(P+ zU`5Gg5ri4!Vm)_;IN8!3GKXA%pe3oNo~!X(gxw=%#IrHpmX{V zJ!)6c9yx=8Zcsom6Bc`HDCgqP+)!q1N`zzfkaChsjOA=zb(~q$^(fu?6Y0){Hp5V_ zFm#1bHAI6#88pxi>sz+csopTlEp~!IXt0o1+-I#arAqh{O0{v!e3OSSHr>FgH|d+2 zXgP^H+snbyYR76ni)T8=3W=#2QB&PfO{nIf#R=xi9X%2CVX?6WMY}{!=*omOCtX%+ zEpA=EekMcOLOm^kQ)mb8v4NgiOslPIh>=3=9c%a)$CS;0aW>|z#@#7%rvvU}6CN|P zyE3h3-(}r=%cTv=TEvzypP6Zrq+5Ec(U(F?2#*(S{Cnt070DJ@?@z%?o-&!WIZqkS zkt|0JdxG!cvUq;?LX^p7I$y`rPPrAD7lBo=>UNybO(sS3^r1cuUm@G3Z zTPxGH?hv`oU&Z_aXMWV)W=_+owKcR2*0PVBdn+_^7ZJajo+>b`tjTJ)M*;iTd=2`l z3>Ku8N;{27Z8f`4>v0pC-h^%d1~_3410;v7bsj2u&ERJ){WE!*xLg;P8ydVEL#px4 zcrO$>If^JQ&vX=qS*h9hOP6Mtr6ImcjULuj20K{2-=jp6R=GLe8(2FauHpquzOE8s zj%r~%?x;W<6`Q)Hj><4=sxL10yEI{Ru)%KLx6YF4wCdh(!ib+17N_sGI$b%fOzuZ4 zscmQW1jMUr+P#91jUZtiNP1Y8J)qE$80fMIfL8=#`2bWR&JVCcpk1H?fDZ%UNw~&+ z3BO?QqQOfBPt^s~Gidlh6`E`4aZA2t@Uxo03j=+=R=)>*zK*!DaIc<0;+^!9Z}#GK z+B})%L#K6|=PmWUS)FV9HtJzUo(%6GZc)#zuKf1m&Tc9QXV{xR6dqW8PT#)DG1vFz zY#8A+Ji8K3!!MThCA@MaQ9P!-L4P-o@9~vXugKG_JjGw~yj8yUjmcNLC+%AoB#(A= zEnNs$mhj;C@V=o$FJ^psXkRILa_5$(I;d>NZoVm(v_Dze$2%d%2*-KR_qNjB@p zH!pDWv!8sC+V`5DE!m3!h_M{lw`0LeBO`nEKfY+ui-h)$Zt2{*d*`D4BYZni!dgT? z_vE9#9-r>?7U%B{$e+h|PbqiuVA^iJPcx>slx^d&2Ya8+uZ#}w*jCzCT+#_&;%qGz z`h$P`((0Q91N+Z&>W)A(<^{&$2 zA3pcQ9~@iI@h7idx%_8imyf)4{*S+T;`bV7#ZSK$&pP`Xk39Szzw^n$pMJNrbnn1V zmd(3-iB@g835-FTL6 z+&{&oYf%5~>OvS!lbzg}eQV6Xc}H}2P6`OV>x<(6ZjKzlWqBQ6TxcqI;MXYd@Ry4p z_KSS(4n!f`ung2@H`21vef5Lk}lWp!BjmgWH_3*BQ7gZ(sV;!CTOnWUr z@)BOgUWSqECuF_TZ*j>gzFnc&o&GGBvUT_9j%`-$mQq6C_Ee6l*tI+PHX+yB5`CYh z)BmN7w51mb4D$f{w!|J&w+6(THP`9i>*{qJ-_YJ-mrh5L+uMA8S7OhRC8hiYl8+~^ zbdUS@S6>)eZAx4`?u60lFB3Do8H9HmCaM({Mt1K`cJMr32`r&M+uXZeV3ocQey?Y` zJN>0!u^?W0XjiBI#522gj5$X3cO)Y``C#940=LIK_S^JBtiOAS(*9&CGn2`57mgAZ zw(lzu{@>}(ccR%jx_?CZ#KLo8?kG{hzMwz{yT|7f@s$4#{KLjS^87XHIY?U9f%b^llmB|_g&&<^x*;rR zWapkmTjbdnbuI7S(!IR2c#(7Wi|#z>EaG9_zi&u45o`}gIi=Zs$atF8jycFupT!jt^!=5u%ho#*ki@V-@i zc#dZ>Jey%kC41+$EAv0|sHNqn_~Y+z{3n&Z!Lg0ZU*}-j_1ZZIGUI#7#9naJazOHn z-~S5<_@?W#JTJYOU9Ci!4(^aHx~Dic{n+E5PodK^tJdIc!kz%=Tujyy#xKFS1e@lo(Lk4{NeJkmTkmS|q zw5?bu7R$FqMcyrjQW4#XE=!1~T5HcLD6~^4CG4m1E7qkDQw65(u^JS|r%=)D)FvL2 z+iFWZJr|;gb|;m@Q?T!1vtZAAff9ND6i~a%V)d#qTl7;>Q?#CPlIoS>K~-a7scK!l zkz^F7wT0!0o=&hBdi3Ew>d)n^2+#dURCJ13pBkrIqfB%8+$q{r!`k7oeVwfLxtn^Z zeAmZL&eF^Wpq19Rs7Lo)(qv@XZ4$d%+nq?;f{3a2FT5V=)vCyaDy!TchIP+s~hdGAK{BZLM^{}syqB>7vg!VYk?rzf;t zq-V-&Cs*U5*gcJ-*4E#&zCTmtN%4V-;mgNER~DW3f0n^o8(+6n+s4T2sgNnjelQ*)e2sr!tEvpP`z-%6zkR) z0wfSa00Rjm1Ojmi34wG{2&5;Zk=}tM1QH18m3$+9&-1>!cYBg7NdA9)wD(SV=bd-n zdFP$7GqbN;cZ20vmgVAk@kPse5RiYX<#+m@t%&X@ezL>*NctP|A8a}N8}pAj^Q_T% z=U4sLR@a|5Z^QbH8~qFCop$=X>ZXnJ&e}Ndz*oI`-g*9OP9JP<&+HnKK5~s^9p2(t z``z%&8>8Hwv=+>3ZCPSj*Jdm$rJ>b#!95S|M*uCWQ{1-l%>eSRf322<@PFOdigKNL z6;b)$fT1_Uo&&nCq8oI-(ja14H)pKQ#Rz{gW3>SsxFcg7L%f&!H?PjRq)5U4idfpg z3s1k~Likr-6PAl*1>f<%d6sqRV0E;*0fE9B%kIImO=M6{`263<_}B z<}L`)w#Voxti7(g#j=AuQLOGIuJv}53=C!y1KyS!S&+mQreB-!yg8>i?)LR-Gj3vS zD^hm5<*Wo|B{VBRSvR@tSD#*#Vz?YPVY^@U#G}`L=RbGKoT@{9Ayqer;>2u(mCw=*xbcOp@tV05A;zrdyTCq{`})+uO_i zY2h?Elus+8v;12@tCCc2DJ@*Krw4v$J4us85x}bOO8r9JW!;ci#(|3>@NOUdal7S( zd3njZQ8hV)w}HEWj+CYt@@&%uf=S7^)V;*9E&xqbbXEyv6t8z(VQp(Ntk|}EdwJLs zDeo3aIeALA7fI92CQ@1N_JE>=Bb&H8t0Mkxy0ErA?OlJ?vd`Hm(GIP@qe#!-Oezt0PRtnWxpy=i5G$I(gNEF#DS)=CnW_fCX9j+ zZ-yBjH68LONZTKP%LITHWY=^ z5epw+IJpTOXJ z)I1X~s4j_mdpGmQ>#QxiYwT8m{dRt)*^3dVpS~pt>i|HQ&8+R38(hoF6jz(?B%pH1 z;sPJ-J(KjD9&;xg=G};{hx&IRsO|Agvf?HEKDd9DDp@V)OKfx~i}tiKAZsnK^Jbq| zUaJt6L|$PY886HO)f(pUe&kUPl{{J>&v+Hj(>#(<9w}?lV$EY88*O`<`a+d+9yHK6i#yZAZo` zxO)+3jvznR+vn~qj%MvJ;*7h6!A{$}4~Ygcws}9H?UdZ!q0SDs;%z}Qa7$H~kMm12 z9CII{oe-K2z*9QSZp!?AglXni+dGMAWF2O=TbTWPr#NVS25ra<<(=Z1(Anw~Pgmz4 z_;RW=EK+nu*QO`%=X-#@b6@#Qdj_Hq{VU6cuOj<;r9J7vrr=iV$3<)BEGPkvi z*u(Zej_?pos7Qi-+sT^~h;frsTrik(ii-w2t3|L1v5&}IqWFNCiQArxD}PY>Y*Aq+xz zO$cuZAzFjrKO916jQGD6!e52(4#VSMrH5#Bi*Yh3wsAx zZ!!C-`(Jb)rS3n|4dX(bztDZ4y8lEsMp_Jij_xDX{a3ozsQYhpAEa*N-eO*%?tjpI zh`Rqt_u=ZEPdAJUX)dJuXu3m@@7RSQduwbz-LDq+g%Ey=IbOr59_Cne?@ITlgZKFSGvAl(je>XtJ z?(sAk$5Y^2aNUaQ#&O*U*YV72G>;xflSv*hvsNqeaLwgH6KK!|uT-*o99L5aULnLw zD4yr~uLZsxp~L>W7OI8g;_N(*>_$ID^`x~Q{WN|u-srDw_64qg1`_)3b}Y|L+Kzuc zd~w_FNz*E+{hw_WhSWBTkovnn3YNP;@JcT>txUREp(X z(uekYeS>Yu>d|CwFNAMS`YiwhzlzHo^fm8pYxjdSZ}zvNnloc?DMJ>xBy6D>*zJrMimOA+%1QVAhgPItA8=SVu~<;Pn(T>rDkU>gHU z2Q^r6{Le98l&|(*6MjqG-Jb1T2L_tCyr;kfg}N` zFN7o^WRGL+`i$Ur*0gHyNo5;97|6P#~iG_ah>J2Dx@FIEs?!_Uc>777C71rIw=eCu)6AW zFu@#5CQ0WkBqW)Px8)F0dkiUZgTqdBJJS2#hOgf}avIIQC9u$OLXxh4J{4Yy@LsR=6Fk~ zfWoui`zU1qp7R;IvRfYO6|+1$>-s-Hy6!|*f&*)BZ6;c{u>Bt*V%g6y*8CA1m2MBN zA2;KA(tEb{wDq*xm0{ce38TGouFEq&r89{YhAz9y;rP@;;Li{^@XN5~*M9;KijKkg6OidZ zyIZ{zQk5|~f~)t$J?P`rjyQ(qBSf+*%WXdozAFQ6^`QvG_6rEw_9t*-`{-=cX}-}& z*PK)7v|`tFe+2fz$Iiv7f_V~rZKY<=AdC=l<}3~btcwD~fq)aD0C6DT#3(=S zgBW!jquvrlL0d8bgJ@CS#L&jl0Su8>TIU!C&H zB$O6?N(=mYb$&DG_Dm9979&*;PB1vlVDKN61B%UZJjZfumpts?W`Ry{i@;oPlfarr zn+zzR9Q2vzSq@~Dvs3 zxss$1dl>987?MM2qOzbxvMj%6S*{nJ?chxUo!|z6x!^j1HH|hXJbu%mr@{Skq_&E}18N znkSTey{h8aIfPVpaUkN{C_o$tI5i3o2LfKhfQ?Rmnd{74+A5=Z?VdnI;(+to22Srp z9Ek(YnGKx6L>!3&&RJ3B;y?hVUa~%JTSJi9EXcyi!sJ{BLY=4%!74fd*|m>%p<7y3;UqTG@nXys^c z2`D7XSd?ZCqkopHg&XNDywd*m*aqRv>z5I!R3<}8_bS(wK1UtWt1iZRKg;4s=Zhf& z$(A11VX&PKs2BE3sYkmIu&NNq+OUhON5z6tf*6m%%{h&0J%BPof3vokg$5EYX*6s`Xpr*Y{}rL}1a^%%NmW*kw*7yCP+_eqKqjp3al2mEOYE^T zfIeWrH63=f=!Si(rrEYT1gX6&CKKLf;r(6UeNMf8E3b?RD!+7JWh{f&01akEh=mc6 zo|J2R zatC2sN~*k++_Wo0JCi#I+tUWPnKszLq%H>jgWkvcx;?vkStRwO$U5tprIfZkCnY17 zyy=BEB&&JKVpq3|@t|=Khn37PMl`%_(0)5sX&i@H)+JWQ)hIq#q5eVFIj_z-=4)t+ zl^(m;+N0U9`LKA&k~7CPFQ9x-7wA!@lC$UN@JSIpEv8*eW7&}m+SU1q=8>7`3~YkF zmzx)pc`>~Ng3o$v!R21OX&X#<#g3tlo=~PzzLIBNN$w7hC$u=IyK#FzFCrObqT#BME zfDA|f4;*B4Y&L+FY4Q{RhCKk4-+2Ci5Z#L0!p!jYMC$;?v#D?ITau=_^bHP`hrBt1 z-B6an{<5*Fi#({D=$WHhqK#`Dbp03clgD%_4|dNZ9%=`?Q2G-EO`gAqJa>uJd!-cF z1q_h58fU?_S{LK7Lm0Wso4VZb+zJ{6H9RD5&e))HWsxRrXv>YR6i>Noys1HY(Mm0)a!834M_T^Rtt7PL9#e=RLzRMQt7S zgl&DU7vsSTS%|guzU0o@`d2^=cDvqw8gj&dQ+7BU4~Vge$Z<0uAIh|RNtZL8gDUo= zLou>Fs~zpmx?)J%Qu(tDMwOY?GDd#1zgpvHVAP~cavPLB6kSr@W|o>H*D8{egz{z} zM5&$^m1mMDDaVt*9r)Ub9LX`{2t$d+k*Vath8JVQ3-gFc@2gR6;T%>iCCDJJr;rz{ zOhbNC_D{D0D}jeFau44K4^?p`D8*F~)gh`#2vtPutE*z8f5N~%-akRbq<>1-)j6rK zuEYK*5%y2eQ&J4|RLM38yIs|ELzI4!Y^Um*Za^Vm%XcDc77em4`gMiHJStS!1~Z;A z7ibxhLVqJFf>E!GKW+ zFw?BRGgPGA>6fr)3F}_)3VXT}Ig%~N(dL}e(>X(3qL>PMm0hr7gK_%O9h`bG9zEp@ z$zK45JJU)$`I$xe{-B-IuBdNX*f z>{P~Ni!zoOSzWqVckpN~_pf)m2D_v%c*kCY`5CAU zjSUoo`g|4m=U+53p*^jfptAArLU&m`ohdME$y5$(Lc&{UA}i7bK$_(vmrMmKH9E*? z#9mh?(Gnjx6ef1U;Dht^JpdD|f9a`b4JEZ4Sm9yMEtAJeug(L|oAb3(C5;gldQ5NG zANVe%ryye;d94yUN%xDO%RfwLIg!OO{V4!WVPs7fp)GhgP%h#*6wldsHcay@M%*x- z{bD#JOaj-FbirT%f>BbRdV51}F&$17BY(T;6E!P#M2;DuqgOFy?&8XzPuIomgqg`C z@3IY8#!C*Hi(8O@Jy%kc(Q4-)!l}T)xn*f{I01Sk7^`%ur*;@T3lA-MNq?((#%C#Z*YNKeJg7ZZ8GCXeRbgM}okJkOpbg(%sxLs-m&4kcz+6RjaPAs?~=EPNbot0)HCVjC6$ zG~Lrqv3*3w?#zgpdd$cxlzK}up^T44+QKF$??^!e?{s!WvVrDs)`4d|56%W4Cbtr5e90Mb z@@3B%I}7g{AT!Dd4MT=dy@2Q73Gj^Ixf%~vNUhWGT!?3QJAQ1lkUZKx7w7tiiK9W< zl!|RbOYCY}TU5W?3*b5C9Ue9V47Bz?hUTX4L1SV8F|G#om-o_@!2a@(PHy_kh~koF ze|f&`V}J$+S}7MA`^z(IA2t>aZ!`xZv03xak2`qHr7bvVn|@$mtS&YHhA}?==TMIg zeE|FMG%aS2zr%FkH+WgXwmr9wFKFp-rqRIe8+=M$>Yay5Y>V)v1HQDb_bt> zY-jbCdp2!Z9(ZV*^0FeMFDhEgZXSztuHz*Wql-x(S_237=ZD;15W=d$|F#rNhEk9k zOCi*x6nitjiKW;_N}=}Re=Nr;lHgtljG-)8P^=N&h|DusLvc7Y%v^|O+Sg{+7@A6& znP{sSFFEuC%n0N+bvn#zcb*PH+s;fkIs=`us99YHeIJDlm6grcAs?mPVl6`+ON6J( z5xVIhXg{Mg9kHHALT%(27dI3Ee#L9*axO|ttZ~#lqE-Y&xA&9wxF|1;7V43nt z1hDtl*J88b2pGf_ObpXp_JA5Smr)F&O=;nJKG$2&mSEsrF7pfhcpTXqF=Q>gWkJkfEcL38s41g^J zfC>e`wh2JhvA4Vxzf%A9mX)w6()?{Ht`yadY0RwApl*L{87{S=+-3^`u|FV*amp2N zdZm-i3TPqUy7ZJ2eg&+X%QPYR?*jLdZtKK!ET3!r2KE<2jI86o0|*A9Ee{N0SNv?- zUr+KH?)d|t>kr~bcE@X|k6tRX><3QmGbj}&8JS8OcH-?oIv+3NJg4?BBe1ls5$|Ti zsS@!~Mxd9}i1#t#NQwA3BZi`gdl+%FM0|=7yGIdkX2dZP@kvH3k0Nek#Bmbw2}bM@ zMZA>}CrZSFjMy`ZxPuXECE{a@7>*+DWW+j&c!&`zqKNw#ak4~wnh`6bh=&<*x=@Y}@jC}-73~`*X4>L?!xCTlycWUovLJTc5A$?*yoZ5YifIu{YKCw4W?E{Qh z9YxS5CdC=MA5O`h4rxHn*oPR#>_5mbY4{qbt$!t6o^kJ_Yp#SuWZdUpMHku$_YHB# zJjC`;eF8>G_hD9_kDNA^{JL7WW2Vc+y89cE(Do0;Z>2+_e*rB1ti>2tV^6BN5ixk( zGkQ!C3-M^8cE98L$BGAUU?kzJtmh+Jug9+9$iOaQ$nUK+2Q0F!q>Op8p>TVf&krhrjl}D2njoSP9r0j3v_J}dc zzVhHcF7fNZ$l~w`Ay^k<|k7rbYRah16e%`_W#V3Zb!1`C}-0E z2EZ6X_j`U9+Soui9NILBV7`5-wByHL2}Sq25wALGTlYXWmP02n4~F)#x^a3$Y)(7R zk<=?}Mp#D(b){ZJ+A|VrG!U9-NGg<1%IWZ=Y+;GuPYTC%UMtFLWmg@#39lIR=QKDe z+zuttK80g8L+(Gv$s{&1tUb92|0X)I8B}8u=K3hAN256YDxi#e(5{RwMr+SFvb4oR zL@VKyxuR=5hqke&*q(n!2B*s!&+RRWB!fjU-TONJyRhrs9%E2F&tAu?argRyg zdB4zPP=GrI}us4k4OsCp0uz< zj{iXf#9J6rFsR#$8rX-3u#;ZKb4Cw>0(B?t(JN_;liJB7{Hw&*=w*`r!S!ASBYsh& zcD}%hsf7*z5ZWTOA69JC5@7i;<&79mXgI zkCePVqoB=2@*R5H!YQzE6{ug zY4%|$LF9%=nmn<4aMLo1d4!t=RIDi6w6kJt;rW1qYkhZm#*oWOQT+??st;sd*tU5gVhcE-khhb58*91SCVR<#^ z|AO=ZeLMX5EKu&9W@dv^>|v%awr`p=_leP5 zme76iLjs*(xj;AAU0^O)DzK(#W{%RNFGh1;(8N>c^Fm2u2iR+eJ@-yJsZwF@zbb_-4y20536TvwGbHNz`Yl?1) znh$*jt3ZiiZg8`}TyUennxdKcN|V0&nFCkWHV*(z+aCKSbQ||+5ZDF0I(j;$XMJI zv4d9#bb>AeqO|BU$5Z~F)FL_9n*0rvX|Wf!lCf{YhXd~zZ=e)B_5Vzx z9Mpw_G;e7Or$`=laH>EjSTE2GP7|02HVDiGCkw18y4h8Ep)Xc{lo9H%uD@kTV+R$1 zxGO_oE+`4CX|!3WwCIb`qAt85Chr%dP1?b~1v@&9WaBljHA&A3OMiKqvU4KsWf4z+CXWz?!0&-IOMM6Xbb#jOJe@ zjUD_=pcDLEpd0){U@rKJz?z~N7!ukT`eHQKg3njRWbm}4v4dv>I>B!Qy1}yo6Tx!= z@s9Mj;>ZQR7Fg4CrmUIJr@}bSmb*TRnS$&CbjSb5}`Y2mJz_V4*-aSR^nP>>{wHXuPI|^+MkSnn%TG z&XF{BP!#9{a|OD=Jb}4jw!oUAnZ-(zz6mssj>)k@(%8WafliPW=mwnvb3wbnnxdH{ zN|Qd7C#q|hmDmEtq>Y^uu`BCtP+?Dh6UC%+ALMt^u=_O^?po@-zz1J z9b6^Q39c5H3tlI%rqKrDRmzjTSiO_hu`yaWc_U}wu&-YFr6UC5=&it-Mw=m}Mc)Kk z$HmHcnWV9Utpc6ka)G&Ei@=&jo86TbeG|%fe2lLrr8(KbF9bTlF9qg;Cj{0s+ALRE z^iALk?YZ9fZj}7(z!&HQ=L^gQ=LxK7v_V6pyy%P3qE3$}EomorOBy@4N1zkz5a2L_-vs?z7o&Ntq_KlH3Uq?&1mfj{z+7;Rz?!1*#5nn+Pie-7x<3ks zx-DEjjr8yY&FciV^Bp2TJ9w8sCwRBOT<}hTHI3#QL*_xBIf?B%p2v^FJe+tQCu$zg zajbKn(6WOM2y}w`1?B?Wlms2CX|%zxnR(Es=Mn2R?j)u43~6navfII!KqsgP%mtSU ztZ6haQXwt+wC>{k{xsy*i}QQ3=5aD*@-gAd4n8i>2_6)f3qC5arqR5Cih0myPMs)| zpM`m(;(45+d8}t1pAuSj@M(cg@Q}b<@JWF+jpmgv%!59I*L=-#|9O~4CZ5Nsn#XIH z$0I_^4n8Z;2|gz<7d$MmrqR6Jih0my&X}0T<6$0c@jTXR9fsL-;5uL*R5uM5ltUlmx>XtP@LpwFB; zF^?z1JUZifY|uQ;V;>j^B_+>#sY*p<@w?an=QZ--X0j79rr4GV=s5s-8LU9M!L5gL^VYWH(~B1 zZkD)-*v9V?_Hj?*Gu)ycvUsTN^saLgz3V#M-gV{zDkkgYb&xGaQCNedGF*QaZYdNc z7&+HFcbD65B$?3%E!I%u6Pyb;62JWqKnjO?34lvCLdh4ik=c==_H zS5A=4%aloXZDFmcN^MFTNE!^JaDGmxI~F2u~Y+OC%zkveZnRZ__mZte7zJ)86vga3l)=bu66 zwWMPjYi`)Z+>T({jB7*K2FQnDQF!+R|6KToufmUQa2XL+-ON4$@@8+q$~}dWozI(j zbdT8PAV6D}5@H*HLzz(-wig!c%RAp1Dm>yX}8n7xBh6mP_ z;e%$eR>#~Sobu`rvMi(74auoWYe?oap?Dyj$4{a-eBh*@l(`U%ePx*u z5h=3_$wB(1lv3KZ?a0Z?soEqp=ys@L1S5Ckk82v^Zo)Hs3x0N{X*eBs$o^D^B$Ul0 zS5QN6P)_v?BQ@FlvkM@fe?c#XVe^17Z)D9Z@`8~2@T`NIF#b#xwl{Fj2JRhrmcmW= zavpHGDhvGKyYQ1Np0qrdEFQ6ny%apF`WbVzc+OaLD@Z1x&a`aF;)ScO1{}tKH`3_; zuwG&sjZN*M(T>6OfzYQyL2VSa>#&20RBwCn5V^PHI6-pED*&|>l$=?E90$^9MM|6u zRcO}B!vmj#Nm+I(CuB{Ehue-s4g)SZ?vv`dO@8CucqAeO5 zqpTfxun;Mb?&z5+Yyk0`S@6M@pt?H>+ZmLWoGPBNJjXtWEf}6vp8yqU$>@*<4@;r> zzMCO1s8REs74MK@1;-T((u^k!(@krmn~34(V=c2gnGG)j$%Tjhd89o&!rngl2zxuu zj;CX1$J2Ut9PEy_$o26}Z5g{saaqW8tvQ3eqbo4+kT#u7geTF%4sEwa3!eL5wBW9& zLyMI;>W#vd{H;by{=%eYJN&^(L1D-C7Dhy*q$S6)c&QHV@6Gli?0yG}cCk%+^t-tKQaz$a@MempQtTO9EqWS)Hak{ zLEWr(jU0k;&i&@_IS;VjE8>i;MUCDMDG1}wRACY&<_rlhyM*%IGp43ZR*Z%psDx3z13l_qP@$1-zlPFigl6E z=)p--BC@`J9NA8A&gAx)V7szH_U%Ett)*_Sx{z&x}a9L3)dScgcE7Z z6Pt!3`O@8*_dpR5^@TcFOOV9@jm=|q1pKos|9~wxkG4gIbC~9FREImt2yo<)i+g$V zajsuTnY@LVXK&{|X$+rxv0Hi&uFR?}pu(V4BXE?z2j_xSS83RyRW)^-IJkEiuh==~ z_X;CJ_v0r6DzxVDxNmDgzmuuhjHwO z!5bx@IE;XW`C=?vKIUAcVWb)!>vKO}JChauaSyE0&F8 zJ_RbuE4xi}>bNH#OQ+;iORB%K)?#7$3a;qpJhKUt^00;tm>}Cq4^y(UDp` z;qxE(hiAa!VY%$*@F3Z$TNwC)cor|uc~~sFPd%%)Gv-P0oHRJ%p&)w=W3kn0>VooN z7qs#mHt%9vupT-HQK%k-+C6*(Bb$QkV!MoYC-zv;sC{zyj0oSsC7QC<<*fWWMlq8x zWvD!fg|BhI6ONf4rdy}*TrTsZ!YbX(91hwsMDZXAdIV>8>#oAkOuLMG4 ztf{P2s&TO3a z86Uww5NlYI^yY~DuK@>W0n3+oE50Po(4s9widlHj^T>nO^H5I*_C}TC~JA$12>}dJwdhZY#xA$;hr^f9LI-Bwtz7|0{F>by@UBcD~6E;8-Hi-9d^@4dS zyN%5hL!WMDxM*Tr0S7`M1=;+JhQ{&Ih0v}k`iBZ`jmr!U^CeQLyrM~CC}x=)eSLz| z%AZ0E-_(>pq$Muj%ibdu7O=CKoAPz?-jnM$RkpqAg>0oZk)8i}a25nJEdoar$8x3t(e^rcO8QNBH0Y#-{>uvX}el;or|HjK=O0;L|y zhorTiE=0l2bV})>K}BiyxC^5CSY&?ElRAvhA|~U;@a0*4L(5;M+$5kWa*1_&YU=Ho zYX4y!SN23A4ko6 zn1gqk%_w1i8FvxPRp;X)IObZto`U938~0FiPKkN!p^)F^tUHg3>k@_Uh&XKWsN6cb z7A2Oir0&tg#dK@d%?x9!qLr%5fCxv-N=&pe!_R|cx)Mq-mY8eoF^&f^+2mX^hCIP9 zF5(oYlKA<(Ac5I<^_O+V!z)cwn)lQ)4nw)e2*;MUfSK-e7CVD7*^JUHADd104xxm@ zxlka}mN1t8w0Lt`hu?uJOjYK%riStqm+%r8aKN9vL?-Nv)0LAak?C&Dwl>S8Rcj71 zX$|X>7sG^f9>263SJK@bai49~>TG+tQfUvbR?TGFl`#%6>*OYJ7q9NQt;3&&KBg)K z_uO4j8vMOt^@!P9iuZB&rYv4ZwxhXt9rfaMM8(75yo}O$yxKj(uKu%LybdkijCk>4 z3Kdh{PEp=UCfli$Sgtyqmnzp&XmhDbx4W^pWCG7HV#58Lj1QEWLKjGS|S0OSt_HFMn2}nAV@H{zA*_CGcWP zWXr%~k^AHJ;-~E}{8nf27oE_3wp+T{755Psj)gm8xIt?v-%#NcIKPsZ*|sYP%2+31 zy&IG_v5#u%ug+-`xx-#96IGrH2kh^_%T=2bEjkufdy-?A6S zx5BxU!g*=@RS7Dx60b;nx!TpQSmQgr%7v%vlHup9UCC+L*TP8kDn_9+4m~>pS<7Xc z;kG)S+6Hn=SIkjFX`WzW^+@*qIkK;UV{oj@E#J+FR?V=>jXT|Bo6gyx+rfBx0~hdK zQ9c<v>v?^)sO> zJ=9SEUpl?6pd|Uy+x2{w49;;`Q!%q;Esh+@OLB}Kucr1(%f436W+`48U&)Y_GN3#X zM;WF{a-5HAc*AKFQ2ts+L2fv15~4_MBU9#vD+zEBT!d+kZ`A*ZkQV>k$}4$m!K}eW z&fFnfi2-T41B3S5E$2rB!!GoXFUs}(++C~`sbt~;XUlq{^4ZmM>u$*%@A#BYgZE2% zSLaLS?N7}6vPRxQPx7VLg-y~!T z{B-0~Ku60p*y`!waud1jr;i_(*RA=u&Pyzp?iU{6@ta?OV>!+KYTk>27P+1x!NS#vErCrkdF7O2w~avdyHbb=5(U!+<8MNho)}ct*>39zCG$>X)}qJ!Uo%Z;lu8=#c5xl9T8h z(?zf!c*%lQ;!JSAod2l)yxg z5ts`S0&9wH4%BkdSC@?|cj#P79-V~2cPty%7bt5ufW5171lPuT*_5ZvF`jagmmL%Y zIze8b8}tfH1TzKZf*yf2MK^1dC;BGK`uI?!=QG<#k>^dN$ZHkTHC3XbEm5i%H3{qS zS~?{pd7+Xlw#va<$DAi6W1Z~>SxY}#OrJf@w;?W`Q}F&m+tHGjxD1&S{o!Mh>@cV!pT<0>ZsmSU?)vT8lJeG1<0@%y3>+pc8Zm z#CcVLi6AQwXOp|ckqg=c)-)ZzQci`YPle1ikpl9lArB{i_BgIz#+SfP?`*;Phifh( zBQQ9)he4byM_S&yBMHW7B3pY5t&(fgzXh<3+?QpKQ2+^Z0L@;Lp*c0GA8b#6WSBqg zt?Hd?PNNX@+Khn=rC|b*3og9+4RbM@;f?Oqz`_+dD6R~R4BA!XKZqHFZq#Oim<&G| zwt2iemUFLo%L|AbO#~)_&j`!~IA+B&i;B)qtW$LKspzVq{nYAPAC@a&E+fNHzFT7X z;{7z}*}>-oIsq1MBwx(G022XDFahR*M+DXsogb5DzVuCQ7aKHJbGhc}S}e23vbWbU zuW1MqV^fvQ31Oq*B_vlcmC6XEaE!3G#OtUA)rpnF>@y}z>c|A*%bX|-CYsm^B2O09sEil&QA+;gQo=Mf+q#m z6wMs2e9||CT;3ANWg9a*4r7l_STyA+vZ_sjydX+&JrnGY(KIfx#E8dL!`g&fjc{)u z?iKiiFgEODpsH}a1wFlMgoy1LG154$B%QAeSVlGNM%P@z#7%TBjOb$bvRAqq)UXWC zHCec>f-6cC5xzA}coP#l7`&r+IMD#DaDC}3>au=aOxCl-yxPGWflg2q=mv8I=7K(f zHAOS8R9VwEg{&`%*nTs!h3L|FIk*$iT^!-wMqG;S>bmG&50`6%NL0cm@mvz6eJj&8 z+W(cYay=tDVh6tw=mgIS#FZBUbHURBYl>!$&~ni?MY%4G^1CDA^$m4iuMu8_ktuoI z9HqUpnb)ggygo0y*un1w;$9JfZtw?zx!`vKYl>ztf}*XWZwg+=qWsDCtH{STa`UBm z0s&YLL8b|9ZjZ(_`!Xhkrd*Ev`QfbzZQlQ|5JfnAZ)H z^14y;5_(N)d4=YMt!c~(HjRBKZQIqcy8esQr5*fLAntn+=mviim<#?au%>9{NUdx7 zrl{-JMH$}D4B3WoC?PaI+u;g1nX(eD)U;<$Wqz)T=zfTFX@33$W2WW@bHz-QC?eb> zg{z~)lg--eqo|KY{N7yW_ZHz-(nMsBv*#ddzK}7uO014-DOZb<>Eh79-MEJHkVH_WuM7W8o>!QRDGqLEND|0sOlhbZfpIme* z81$jRa4=d5J7~--F+2@tNRZDXLMa*tz9FW={}LUwgZ~rg1TP45gMSN51pg733;rpv zrsxKvWZEtIrqJcF~KD885X6bOJ}98`uJK!Hb%oqS16QKl-M~ z?@dvDUtoT0JJ>N7ww<@ZYkz5`lOO*FJ>hiw(rR05jl=wUK^3YztF;i@i(9Mj!b;!hC(&5=xp)aj{4##T|rxPG2{^7o1R2gqnxouYL zMiow>?Baqz@+kyNW*6rv*4QG2$+kfTvEP@fu;$4CpGzY z3w_fs#jw$PDAzTb?(#yvk#g;z(p%`_&kqrJowq^8g0Z!xIBwDJ9yoiS?j+C zzvWr+SbU3ABP9-=k%gK3lAr5Z7xoZY*P}ga0{^{8o$=%a91j1GHg$yX`m>5{$+fz3 zC{>xCZ!gdE(mr;PqXjcQy?xNlx8b|qg|+SJZ zPqhrGt+7TUXI67Xa336P6Si;|A4xIEj{F-EKmfZ9d} zXZVQ&gU-^c%%*vO4?3?_fHj%-q+x|NORGI*8D@kOY{QQ$@Sgij%q+&xq2r!>>-0_J zMN}z|jF^QSw^P(R!VrAr}pxUDF2s|ooy(p zN*a>;0Em_;!ZtVn?gtos06)EoG`&0>3oFgm4Wc`$l`~qZX`G5sOY{*~$GWP}#K+Xa z+ldl@9&O#4NpyRZ<_E#se@pZBaI(N}x2gfCw;`PisQvn;ZL;;st$t$XeR=iaC=TD@ zY+8YpLSYF=v{tr*aQso+MNghml}lPa+Vb!n&$3?Z!8m(KxUh`fXn2jKU4Xs-vb_Pv zDcjEJ*hr0P(|!vkLv)R=z?fX#hn-THf(X}5r+5{nZC2Vp``H^&hfZ$ea?GR8!#4<+ zk2XQvGlG_%adBxnPLFEA^2LEWJe=9coPA=OgUv%{uj46GmM&QsS=fpqq}P7?j#Ouh zGw>7P*O4P=THa-O@Vg}JaEnV~g~iLRSXpP)%er@SS;L}ErofVt^SXMFqsTge25sFz zfH&3ci?eaM(rMu)maSg2pQ}yL@1AZa&9MYFJjA}2`XP*`aCn%Z_+IL97}!nvUh2ej zy-@E9ca{z#UhGzL<=fsI{)*?H=mhGXf5kl*N_nM591eCgJpZ8QXnU*$^c?>~$Q7e{ z7oO6`G|>Mr!$S8*;O19AFeYLGev}}i*x-Vx{L?x>53=opjPVl1!e%MRgHZ#y!gcS3 zAQtBBG3+&V?;ge1Lo%gUI%;j52tS0tZ*_P;jgVdg;^Akh(NFPP)mCeZUcEK^cQ|6n zqa^E)1e1<0a?(-3u93~74}vZZS}lTt_@98gZ5U#Q^;46=};TtCb}SyD?sJM9~0(v$WV5Vj@NAxTq`awX5HJ)TKbyi}O9BqhZ8 z=XenxtQWC6l}-8mpf<2O9JAqA@m9)G-I8y9pKBPB48!vN=OT8?qhVO((53`SSH-iKQ#Ru`3-Nl7h~7LHC|e&}_1#%2C~=&pN-lCw`=72y>yX zZ2K~FLblzGejY`@UI?qjAjo>w+N-~%4PLnKw7#&RC8O>uS{^;z7B|NrBM8L6K8w$z z$;Y2*e#=hvyeKD6J_WrEi^wgW-;0JMPW|fo1E|JUJBcp_vMDO2B8@(ek2;x>ST*ef zW+9(jnNMgpU}Ettp|vdkN%$!_n{NuQIBk635UrH0-X8q|3Kp<2a{g@-UaMP|Dy`K! z!Kr@y80d_{RGm$as7zhj5^kk3n4ZWin4vlgp3nV`YAX)~e{TkV&Oi$~gQc{rm}7hq z8CRA&J~kfUL^nJL`!axOK>$XG)qm9Gv~42{g4Ba!cGH4$9ds+`zD3H-Y-PU{K2si9xB!L7B-xum=+pc1#ZHYy`bMD*N_`k7eZjG;+eDVE;DNnH_eL$C8&#d~m%}GjACe>ub2vKm0oq6X_fFH&)9{L$J zjLsY_@&INcncCytq0IX$R2+;y%4RKoa11ILV@EBS*$ar!zox{8OitWp_ok*#JhNwK z@v)p@=Cj)^kt_WB`%l-7v4@Uv{9YlnP@m3ZiPPLrEygH@RiIbG; zq4sYg`7g+EGD)nGu%f1;m9(=-b6^uKOc(w)S}9y-VfJgHwf=vlmA12Kv$}~^?ti6~ zv2mhj-zHjLg$_2!>!mBQ)yDamz2j8S1vk}VKO+0Fp<4RUQ0VnhL%agp>};Fa=f5RY zCtt7A(kNt-*<5OQ4ej4?E%Psq`l$D|%zrd;|E*UO8`RCSb2Fg0w?lB@VD3?5o*DiHss)z(Yw)xtefFZgL)}ULWH>4a zV5goRx63VgoFFebTbAP0#=?O@{}%L@?zndrqNOn}+{zd;g4VnO>mpXtKNV2}^J2Ee z90vQd@&ZPVj<%w+TMrDyQ>?uIB?whRd~VNNc_5Hu6lSd&s+0CF0EzZwk5EZf&QJQM zfLz*qE`t`c4s28ox2ub0hl2zyNMS^KY%KgE8xCE!;5=cxJZB>;EDvK0mb1&!g@xq( zLtq1j?}Pd|TZWpGp3_Lm7!}3qh#6Uc)9OYAtEmYS0g<^K|8v#WkoD15B(F0iBLj1t0TWTkFtR&G@Aw?S`ZH%>r2-hmI6=Fdk@ zsOGC=?YF!3zZXNeJ{W!)P!tGmsEoM(iZFUQ0Qkp!lpg@ZSW?FcI{e)LA!PJQ9?$;{ zvfQ$Jvy{%Il)j6IgT&imT0GXeHt{ z7!%;Uibl+x7|!`wLXQ8xEh@89n1B?vv%h1cAZi6sWSSY5#Rqj!)?S2zA|7HYxwdaJ0i3JOVh-Ygg~9(@Dpw zMyFH*kHzOx7z4L-Qq`ZZcJJ1C0(G622i{Sa-K?F<4r1#J3(582%BI;+A%@8HZsr59 zTKT0Y*^FYNWR2)=z%oT@)5DVOF**4FQg3+4)E$$UU`ULK#US(N7@0;ajENQOv_0L^GU~~mmUhRFFn$7AHT(Ffz|06g(3k0UyWCxnTK@P& zzYJEtDy`}8#?H3#!Rh9-qmKi}JVC^>4aVV6id{WjM|={#a~s%Pt3SycgvJAsxHKKD z`iXk63=A@Ak36d28fAl;$ePE;0P&_UT=Q6QFTAk{Y42)`(Zhg+(wAbwv(`TemL@jd zY%QObl+h;gU#pY#%8@!r9(aY$(<^whg>tw;qc9Siyf5pwt9#B5DP{6WMrrX_XMi9&XKX#+IEQJWG<{Dgd+QvZTT3#X+-1tlv?7qJ(G2~pbNI?)eK zBs#TzOY0zeO_ZA0Yu#l6ds9=2+5tI`UMC75Z)OcDP?U54`g!X_ic{+69yq#q0zZeD zan_CSOQ~!~VI%tMUgNqR?ed(etm8|^q4Q1l09v!ZM3PLXQ|#G2|5pg9FWX5_!GDT* z$imgYe4JJ=uK=^Sp|SdGgHH~))T}8r&p!d=v<=x7I(MwfU>u=~ah(cX|JTe6Cj%W_ zdRwK?$M7U0mOfMN@x;=%x=CGZa|>;cW8qgOYEM0mBNSj+G(BHRl|s9|)S7pc>iRy8 zoS?*EM^W)o-QTJH7aZS%*2waKE6W@MyV=z{b`2|3W4B=xWV`Yk>sk1@1+=9Wxy1P{ zu@7AH*pve@*h=aG6V5#D6o&^rbs6cUaJUjx8kAMQtsXJ~e!}_}Wcm)t7b~W2W=j&k z&h6gKxH2a_wA8LXAC;o%C>TeE$K#WyK3L93al&(9*r7r?_83+}+`>@RTa!Wt7vbRm zaW$TPJQ+M(K8PT854isEPzUbOI+hUEr((maIjSja7OsHm!%@?C%yEJ}3*UKZr0n-% z7lJbn<{d$%_9c~mZWB>lbJ`d1ZpZ;6V7!RR1nV(UoJtX zo;&(<4^S1a$ey7(;t<$;yelf%KDV7{R#QZNvL1QS3_DDTPkKm7$NyeEc8a9mpDywT z(?$NU9ywK}Kdr}3ktvpw!orB$9DZAf>+N_S`w2wJG98w3>Jn!ymwU0LPB(Tr{)xcC zkkpqgV3UMZJ!c^Lj#%anId5W9{n=dQ@bUhNfjGdzA zz>i5)d>P&?6cYYMh6AMsr)lV_pK!vZk7Vq`1=EjR$>_g-JKRb}Bbq z!rpKcX<>+G&B3z@&jEN2!}Dr9C*awD=YBlH82?%-2Rq@P#q0q$5W4dDGJ~zj9@P6T zw6KJK=FTGY0HDj)dtQWm`UGTGhwEuqx1g81VY|^&XZST}(7swS_vG%2g#U&~i5Frn zRq1qh5aQ)X!mkO+rhkUvg!uAB!r!9dcsVKfgza`Z;p?%7Fi(y%Bh)DhDqF{!B%rKf zNgv5B5LOdSSNCcOPBNtpKu%-me25o`#g}Yugzk`wAyJPun zl~i_cxj-klLZBPGPGBy$OkhpX40;jvqx9AH(&|}~_rz$PCu!{9e1T4|QJ@?60&~H+ z0&9w9PFI@r?c7#81v&2AO#W@!*xyVW`>$zZ@mauW@_lC7wEvto_PJ?e|8LsZ-%T6) zpJ`*Coi_I0)5iX4+StEN8~e*?WB)R3?DNycj!zr=__VQqm^SvwX=DF1Z7jEI?p$Mk zJ8jw*rj7mew6TAmHumS!#{PcV*cYdbePY_!KTaF_i)my3JZ)^tv~qrW+O+?u$4)VJ z_(?r-s$qv)&vwhCp_d+Wz$T_6K|;n7uJtq6-5aJFOW=Ju#^o{)=Nf$;&pbQ_;5iJ> zQ9F6?M#O@Rm&=zUobo6JISD!Wjj>E`-8D0GxtpFxKZPR>oz>^i4e7U0A4K<$ZxJNq zh5(E_%o$`l9FK$-R^VEogr4-ULG=V8*dQtn>D=@?N*ps)UCVke%IWlutie_ddF#v( z5=Te-;~~!%;JFFUU3fl+=P^8g#)BEPwEz#M+1Al`PQ`Nto*VFBXOr~^9xP#4f5g*; zvDrL4`{Owh4{oKfw&J-P&jWaHa>jZRkL}=NGI*BZ!K#aOE*^CE76v!gt$2oS!;kIm z_#<*p_!mjh+)BF!jQ$p5fpVHV4IuA640tY9gdP7DbRC2UIs@dpKR~zjYfcykRYP>l z-a-AE26YCEKC9H7@f_Zo^kH~(ZHNwG0R4>(bOww*NAygWJD$S=OCQHA+d}-m2>vY% zd0p-=vr%00lqkmBR^mq<0 z%lfjA&+9{ctY`uMrUrcmj6yBQe`Y*)8u2km+#cd{{8=A-vT_+P`X|M29nYOW{MLjo zhif4pj$^}-sV)34U=->}`fcO66~u2#_?LzB=L>!~WF&nCjJ7L&`*>~@@!J#rr6K+< zf*+1LiO+!1PQ~vS&+SG0j)XrJ;&Z$m4z`sa28?0}i2TeL&#ff>jD#PA_#BSbN1~+9 zfYCoIe&=`&%iw+4&V>KE5FZmi8^_RPZE?VtOc}; z{zWtC8qZzKOuDuagmVeoy$~h=Io+)J%GWs)zMc_n8Zl!)e+qHjO~)bu7T9KZGg@G0 zQ?RYRDp2kMKzp;=> zth&>Y#YY4Axv}*1XD$1T=VKpZMr^)keTFs-e{-+96hc^-FJ`XeV%);VF66hbpG0%J zdtsp-xS>Fiv^o*l{>f|+gqAhnpNs6&Bmo;$M#$2+cmBU#TPsu zK(hLplx?Bjt@kreSsNKU6a*_NWf&V(Zv--Sosxa5Y~_I5=kchI-Z{hmwy!yDBMtMN zHHe$0=$MUzb-FqgT^Kxo_Y_Jn$(^@cm>Gpd=Tba#3v+>3xfom8=;W8VPGM>I?ecE{ zk>~v+4mdNW!I3!Nz>-9CW=^CdalpwE=W5BTcOnksZ2tpnfpTuJt3huPuEc>}H*pq# zQE}{VkM$s6;egjKvv!GLNa?S_VFvH-2 z8=yRJi=xN_cYSWpeHU?kIF@>eOC!>QoiU zY_N6sIVE>}dSsEzsziPCX@HXBihxE_P;yie&RDa^C2(jxfpr z_sX_&U(r|mNrA}$&D{>BZJ`QNa`G*-HEi~#2B{fbo!?3Pt_A*3%;)hVof*1|%s9UW zzbSr4@jHRv>HMC@ZwpG=2#F<%L(2XE89g$TM6MNo=mFrC9Isan6H9K`OCk|!jU+-X z&&jW1J1^HO--@-ITO3g1D7Rmy09#T;wZ)f;h&FHu%3(FPeKK`@3^9T@L-#s{4t@p5nYM2H3Bnm8bFizN~0u<=8Y zm3#q6k2o;CZ$C1c7byKQ5zxh2XcNeUSFvOt4sc>pEge#sJ5wmm$+q zUO!{JhLg+bV6x#5Sa z>dOyUaXj0t(Y_!F*?+fYTb*~1?;#)D6^iAJzpDMYmwFb;8ieb-b5N@e)~ZVxZ$Cz^ zJ|IQq0ZWw3ziYho-F{EGuYPv#c2B<>BP&xxuBxBzL~_zww+t&NrzqFIfL=ow7d_ z=0|rF>-l_Tx<6mu@YS$MwfR%G+I0FyR%wg&&`!~OWQ?B*p~!EDUwtiunK-X`EB7(o zkVo!S5B*|bftyt;W5~jK&cC$yyD!SM`jtby=0AdLsYx2IG-foe%?p=w$k$T^@ulEb&ZDW=~ z>spmXq3@9Qx6;th-`D#VdE4lu&{9KL6q=Da8LH%6-`D%a;@n0idB0>|?>!1FIiw}* zmHT?%DQ}71%=?CYy`L#>$HB&=L*5eFoA--}tb+t?`Y=j`kKTzT7ID(`>Y*ZWp^+aM|Lm+tHRGI>jgT049HbIG;GJkaUY+B>?~ z$(;bYm&I1KG=z6k7VdJWD5oKrCZpr6)M$5PmHP)OaR|hVm|+*W|ugqlbV16g_JC9$B-*x<` zjhQ#{`z${c{W5>$CmqWgza#nW;KvonnH%`&?Q^}I^mx%kfs zGRw9luHrjnx%U&y#lKImC5ChDz+oRyEEh`(Ek-1SbG?PbKA=!8){cd+eNciSDB8PoIVO%UJzOXfQ zPG`*zD2j`yky&{bU_-K)Kr|P43n?dfySd(XRw{pWs_G z-;16|3`IYTky3>fUhy(Z-K!qDy$5zBp7r8__9ILZ*B9`Z_bW8$+|1{^+LOH2bJObw zk{(bxhi(qz=JA}Fqd$5+acZ_&!cI408W|&)np3MkJCz^ug9H990FG$c?#xMX>W^m+ z#jXO<7D{Symjkf?6vGGJKyfSZq-#zlHFVIrheNN)*>XNz!>0@Pp1l)w=ATyqpYP_d zspgK&hL{aLG?^dyZh90%?-cS;i=d1!jpdNh0)i>*Da%G4>xo9 z?6jHJI<)8tM^i3GlX>!TtqB;rZ__eS#r*0O=IIy7vBroD+N2&Lmc^FMKO1#zT1|fAgTF@H^NCqQ&e0GdOR%F_RKvK z7VZ4k4OsSuPeYBj{YS!$&&$VabCOZwY}&YI_mjVaJem8m5SlC2&;13<-jK1r*#4Vf z^YST%UVATQ?b2jtR8K6#e-|WCnOx*Sv+a0XwKQ;CBdTM6Yl*xDlR*3Ud5IsBl{%_h zv5$KtPm?^S96bThyz-*rtjdsb6o4>)mhxtgS3UD4O(15^#p&dce(QFci&M4oXPMa` zAk^COc+##v-F)_XFxt1$KkW{59oxI*H1TX!&X0AS+%ywRBUJ5zOo#WG(9t?oX^U!< znm6+hv9@U=5R}ZCfOtvTn>k<572b^4D@R!v??(n{u6(pX0S&)_Ey(UDR=4)mn?Y_z zxG4yO={`T;0iSNrfi!5rf`Yfq3&P3IDScV%wBXm%`iSKYlP?fq`3I zMm&}2?cs_ISh&S2yRA8ZqmU5N^D)NXR`RS%tGsDLk~@xeZ#s3!g{3-lSyXl$9qY}g zG*z8mqbdl!w10XhJf?l%bE)mpBfim0fA%IbgV~$S%+5Z~O!}win`QazbIiQfg^R9o z4PGwS;1MAw(Ncet#|o6+=O*c4`Jm?6)jv+E!lwTveJ(|vWctx2DnPPTf2tRS)RQQu zPo7VW*It6w=c$zTiI|KRYwt;f?|!?8bGDBU9Z0|I1F~ml2W5~<&Xy*5<(q8pT~?k7 zfRrj;hS}J}eUmpnm2Hu|Wqo6WzQyJ$Hiz)EvE09r+;;Z{B-a+sC>9Q8#3e^yi9^{- zVfPSF+(y8WcNajg5Mdu=#yALKw*T2ZF=~E1j6;{OC4OQ~PWf`Pq@r@&@}n%)6DY<~rQ&O>VdjRpi_JWA?h-SrbB{E$GIyz&OXpAmC4A1a(>=vxjrJ1aaC}`cJD&{{gi9?1;Bt+3qo%*g8|5S0=l16@gLZ#YYZB`(kMk~!MkoPBrzb+CHphYy(OC3) zvbr(C)kMzkYV(Vo-y7r?&Ru0L_sS9REXk0`_E)*_FT_5-1OKwKs$`d29?q*|%Fe37 zsW_|3XVh6$L@S(Cr8MTODyWstsV7 zXQ~#}&+RnNs2W90Kr_l<%?RI?b=-F$NwSrDLE@82NDp z%wm0zt5L9^6CAI=Oit|lxc9^kmBpRIT#*@@vSwy==L}b*XvR)K*~Z_6$AD_90x$lE zs)C+HTXnlUUej1Nzi^SjXXDB*rQ$lnCmjQI0)qk-Zm~)rZ$(d<#-L&xGIkj z?Sbf{N<_94^wrlQ)n5y|F;GHB+Y;vkx4S0u=nuRu$JQMuQb37fO>B4=B8aZW*3dgv zzU3~v67-hLP0q%AKRgG`oCV<-I!fq4of7hr(pjFAPQdQNI>p|5tm-?xg=EL7l5(nM z4m#eIlj7P;T<9~DDjW?{nfKMXR6u3U?o(jAa=@vW97_CN@1ex7=E}X0sYWS1FLN~X zJ_tQz_6fbwgr1*|*@%S6aNzzi-Bp$l{bn!G<+Vb3{;QBVq?y*I!0sp0e1X^c)&~BK zhmlk4pd120v&Z8iO@$I+1Y_%QPX3q8HQfDQN!YRdgHCbzZ*QotFL!k<$ZR1kA4<|9 zf|cpM`uZf+ey(uIS^V*#czLrLBOe{tP-NLHCc?CxN9uV zCouaG=rtl^vE{fv_`#|^_dNsoj)&G9{S&CC&JWG?0jnN*z$tl0z)zYGZSolwOTdb?AIdbWHoeZ+$xL zZTww6bp#coJX6m}p`*hvCG#=+;o@T$cX~52*#wSBcXJ#@cuQyV`oK#nARXvmAZ;W8N?*7xL<5rx+qq>`yp)Y zL11E9to?jnc8=;|^sqCon}K^08!4=t3rOxl?ZIDs7L!->gd4Rfn0UsaTHikk?#CD5 z=GHs9F_OC?nlO6um5%yuh_8$vBzt@;-^w(Hc%tL5Q3Q$a@wiwtd?86eU+c@N$Yab& zcPFUm=NQjM&8DU?QnO-hc_&}`T1Ot121<})COXC1y&bAA?H~k>xugVoh^|+NeM`PK zs}b*U6ZO6cIDrIoYfNA3FP)fDR;;;nS?MA?AS>jXro#R;w~&EBe4_HGSgzgR&76dl zyQ8j^*`^~#PwHeb;C!@DQ1&**TNl-mH`n!`{Z=FO za1Y=%iKZCIDz#Hxj*d6eB4<)L!$y+no3VcsNa7{FXmbK13NfhKa)Ektt?CVnx2tLB zL~Ua@i?GZmfX}he3-F9jAqkDFUp^lZT*Rw2=n?vr^S$U);I^XzSS&TTb^J77eL079 z=t6bhSwPMLxv2v*Txcj)YDdhyR?)@R!R(&esS6jRLEY>HogZ7vM5hyhTOVtG<&*H) zeh$(WmN922YBYo}`tz-@p1C@mtK{yC9}IN7Sze!St=ZpWpfD0~eHA0x2pS1K7tIA!S_nHBJmggu%9;v28)ls zQSh3-AVzyaL;GQP-zYG?e_8B1=p`3h*m|ahekvPgMO$L{u1KbF7w;eKYwb=`=i9T)aQO-kCIMmlpOL%bENtOG}t}13dqy(!wlvOB1qA7U!BUvrsi*=D=3y zMO1*SOtV?fb13X~lPtph|QhloTqO6=EMA(Zd}m z>+vvz%0k||7^apqBF{FO`ho?9>fRz>n$5MBsy+#B_^PZ-*bWL77$g>>=GzxR^+v%B zRhGsfo>R>V78J6lHuYtP{D}7K*wC(o+T2!VIGO!uFJtM^enb!PV1WUd9)o3SMG)PpQKCOP!nyGo7YT`| zAkXIgHqO%o(NASk2YDweY-I5qb;(p4d=RA~c}}pPn%q;0o>%jlJdtD6C8)PX`ebF5 zUK;VD8=>Z6bYonQc`UT(ze-+XL#LuAt7NY>_c}(RFlav(uH(n?p-UfP!|rmd@R~-` zI-ka4y^3$@fxgvx>FTy#gHO`xS@9QlYoFo@h1R(HP~v9nEhUW!<#LqaR!yI>6nNU5 z{9nvE>oG0d6~~vLg-o4Q^!A|XtsqNotv2`S2*5J#1_0nAK3)=3rk9afJNklZapNGL zsl$Z0ae8#qTED+u_VRKJ6v~s?Lbb4oVEM|9{(Nro`=d3VwabMZ`xS-;r1E4~$~vTK zF}rPNDLbvIlijwd?iMxmRR_jSmpr-2Z&28!aC;YU2X!L5Z7pe;pYrg`Zo6!I#qyB; zOXr=4_KFMsxdaaXb4j}Bz)W(fclJ!ubcIXQng73ux}ck=mxs-f?3r|V_Ln5=%*!q? zdBpI>eCFAVC!bf^OyzmWKTIAw6%@)qemE!(lOMw&zg&4ZUmh;#6wgk&ydh5K&=aoQ z^3f&KvD~f0{iXiu#6*ejDH9Rj%O=)sxf6zRzA6XH$Gpr!e!{s1wxE5KdKMCtzFdN| zAcZgTqinH8DT=+0ww)KB6vVFB{HoVcw7tYBx0eZWLrnJQHAIT^hy2(Hpsk0>8_S zKG|7LIr?ZUD{7^Db@eeXC$U&oO`o9e0ge{%0vHfu7NC;>$yrjkP>Z#*trPJWkbvCkcUlX|+Nk*r*;ldOV%Y^_rH|o2j!>E|-Nc{e||G`04@1BDbUpGrB58r$HTy zIyG5S%EATst2fc|WFF64k8-GNIyswtqDULTY^9f;Md^IkzJ$NdXGOW}VvUKZ@mSij zk?8mvW(VnNA)Qz%4i66vyG-aG8cEL6jnw-AK9lTdf1g|(E>#a79vUi{l3;0w+q6oi zKzMP(It+`YT5QjPA3ZTmZ-KpI+Q|YZwas0q=8tPdG?5fAMFC>El(+lE z`gvY>D>o=@-PoU_apw3;_ty{2RZkV*1Obi&P|j5!BfujCco={zp_#^Hx8)g#!s)S{ z)#}BU?$~b9!C>JTM^X1-#7?I#ia_`)yK!GARV7Xzq+v)RCk1khO&j3oedeTK0z z0sJYYu_^(O9*40y0Z{&Kim@gET%2N53kl>mDN41NK$x;QD%HLOqUD;!T#oI z3FIdooWTS#-N9L!K(vf=be1KMM|N;Z2}DakhclEw(8@{p8BQRb)f6&#mwT6XaF!>K z&VsC3P9PU{a4HF;v!<)2rLeVwlNQ549e&bsV1bnIlNLm0s$We@;+PIjS`?ktWi>5} zqdGX%gda`wUE0?skcW404oV=M`FM3*0=cAvb8rIDY}nB`B!T=(2WLEibY}h4^$A1^ z2N&wl1kzb&@Xndb=VeP$oWl$8k_@>htkjKm2DQ&rZ6%#^EG>^M(?k-`%7t!?Pe7{{dg@&QTfNY&_6casLQgeMVAaAxPrXio#f6?qngaV4 zdTM0~?C&n>t0O6JpeqQdrg=~u>$@D4hr|_BAD!{E5{LEKf7nE6TqWtlN$E4>x=idib>m6DN+{SP; z|9&|?)Ny`5&d+q5AC&XHj`Kru{=DP-u$;j}O6ntWuIf0Mx&^Iu9p^oA);i9Q$$3P_ zd9R!&cbp%W^PwH*C*<7OaefkK?e|Cs--E?N6=wFmW{Gal5^9|{C&q#u)$P%Z0+hTt zu@>xzo++oTIwTjnJINzn%DeW>AVkl>d+RMg5g7~cpl4wB{5j>(j%w3Uy9R)AX@__1 zTNLQIqIoeP{tY zKM>WCXDKe}h%@EZK_xfdOffll3}c(;Z}YBwTS|KCv&8(2+||*Ib9m0FM0QkwV zX<4@&@+$ZZLAZMIL*eQTD^19p1esGsUmZ^0w$s9Octh|iisH%6dHI>Ykx}frmUu8x zdx9SH*urf5}1$(VOyxH@r!HzP;& zQ5zc}3yez0`hw$}j>w$qFe}>nGL8)y*%Xp+vEk8N44o9!MvIeA65Sc9vG3|cgwBf` zM6?l>pm|sqb){f6pYG+yt8bn?66WwT%+b< zugm;am}{UMZrsemVZ(-UZeyJV!-nD@IteFBU9s%X3-OIAzG329s`!uu8ugUsBhrjb8ND^IhV}b{GV}lOhu>ZI ziv0Yim5T#OkNLPxkNJgOFq1oXhJXHxfNPV{42{%_ujO0&hAk!gFJs_sU8#<&a~D|8*}jf|wx5t?ev_gw?nSrI+?Qq8T#o+L*;Xyhpy)YE zq~&OiZ@sVeI;bYzF>mgA2t-figGTe* z(^5yHLna|dpZIhYSswwS#f2H>cV#y>=P1uq!TPSIXIT8hA&NR`DNXSlea34F9@5;7l@jNM-X; zM0gnYIOAg&(KDdlEO3vDMt+GaUk0EroKf>1C?p3vvt-5!es}TPvJT2ax`tRKU9pnh zGALLOTHg{{Yc5C6z&pVj3M@zH9xV@tvqM=6y|J8kOdCX{+-IE_51XkxhC`mWQdaI4 zaMRMog!+e;**5mCKOlG6|vO6_fpiPTk#9=rHBy^6h65+x6nn(wECT4o3cq z^mT@{{z`FaraY?wxQ<575D!~x3gc!H>D)rTZfJG`bM!383RNTG716VC^)X)>T0%_v z`{i-ba|FvF!^}!gB}4U8J5_xyANx80NgXHhF!~74>V~Pw1fg1(e4N+%xq3UE><$|j zdab|8!8_hz12t7NWbdTd8YflMWr$>Tc=CwU8f~nnG^3}`eKqLw=+Sq$Shi200RVwL zBEXC;um?_?E0=OP?d7z=_zotw>@|V%Zwbm^r{%%6((?^W{dx8vLit$sW;0&d-UKEU z+Z?!BIBt*NmX5J_7*4i6+W<<-SbRV6G-f<|7r5+#wC^P;ozz{77Mn#t;vSONqK#)H z5xJxt&2d#1@Ajz;Ud!7+F1-T6Yv+lHBs`ZwXp{$o!QhFi1p4_jPvV~b0!kKiv&3WaL} z$gJjyeakJnJ3&CG?3(6*%j{Dmqg!UDcgpN`!F$W>Mg#Pe+1&nRmZa*@JtelIQ(|W? zDzW2xN^JAKC6CaS{nT7cWtOdM_p0^PN%pRpj(F3a9hl`) z!(O$yKX_tgc67U!4n8}A=v8E8b0y>81#HvJ-2`jbOSF*C8=a=@+Hge!v+-&Nn>&7V z9ib{VF;x9weUbTZ^*7vAz|+0aD@C(+EPDxnemzMrI#H<~640$_j44MqD>_x$dN~C; zXD-N_B{)Exc4gfp&i_%ILDm`q8`;(nhPZ=X{e5vTNc;SK+IC=f=&=SiewVOkYW!Aw z-J&LD*tdM17)yJ7a7RY9;y2ympkVoKr?mC@)niyBC)7RtY-pMtZ*$m>#4BcSKFAioa$G-tr)^hNrAZl+^^9yzrg6L%c zbjSY-R99NZ(94y*aCP)TxC~eCD3U&PdeMt;GaPy-wMaw}o4>Q~pv)V&LGFn-tUejI zS>lU9Z;S_SmS~PqFU$>Qqt~mBaPv~v(K^$`xx&S{g6khn^4Mv8tuP0J%0vUwQyaM! z@qrW2A{M;_ zzuL3?7W8R?%Ef~+AG*AzIl_gg*sgsGDv}qXu4|T^EI`)2;by%0^JDBb_J?_M8vH-# z!!P6!qqVXa1cm;LW&7BazhXG>b8DXuWM{tm=$$(XV>`+F9b9yUZtYrO5~LKYm>Mip zN4c_O#oi_Lpu#(D?7nDW%I=F6qFi6M>QQXYv4hQ?n+mNI-nQY_0o&7Ab5y2po7U}F z9qrcbnq=4&!loHPB;~ zi5}|^My-7(-`#0oq(O@;iK%#_;B?n zZRYIJE{-u z`qn;r_(XKGPm*m=eJV11#_C0$8%fID^0;0frYJ5gi(?Axh?cdF2h5WrlqXM8p0HK0 zU!J^9dEz`=p1i)3Cnqe<6C{^Cym#138S9i8>Ra71d!rm_fgh;0Z0afYebe?PV}A%o&|5L%xylTxzUXAkB2@xP1Odt4$=0kp)#Z#HHRkhSq!EONzt z;C$$fn`woryj8X|AEGB)ZYOp3Z7wOM8>e~Rx7BAF3yqx#D+qr$VzV)f-wrN16Y3fD zY~6q0G__;w?~q;fq5V#5cPZh?A)HU#-wb!LtFvUh>96Pdt(8!_?*Zz}y9i62apyHg zGRK^2N8z|j*D;jl&0#`INC2}Y^lpQ>n(`jmU$;-7_x1#0o#t9Z{60aImrq+5pL98-A2;`yRpO)Hlq|PZ&E&Js3Mps%&R$CcBTEOQI6Fx9e97P z9=J{Ra%HVkeK9+P_Lt;gT76WXQ4HBb|{m2po`m_jUz+JIO2G} z8~l_qK0S$b<3*AuHlm=QZxnQ{$}sInnPJ46#o?b51e&7|ZA|z_qlXKw!KU`rB-Ndg zP~A(TIzW-e8XMN{7pr>Rf7Cy_Sk;}^?oVRv)}(q*ZZD4ZnwOK+L2Qja>1#UOUqhkn zpui_!KnDe6E(QKvUH7@+4{E2AD+P94RvP9z-2 zCxJNx7lsD&L2-5k`z)V?e&9|Re+nySmp`o-Ti%RJ)AwDtL%qTK3E@X?XRVyf7tg0w zeusXx{TUEBB{ln>n4vfOSq!grh2}$_!-~W?oRL?wz=vzwu`&6OCca$S3+AK13#e2d~`3FwDWl z(ERU=zA7?%!>?gj+|hjsL7bWkpNIK9#r<`Fiu-G^4`ahNt%>D$!YkjE`jq=VgX52Vm1snaE&xm~)r$W0c=7-|%H^9Z;Z!zKTcQS(6-(z^K-!9_M zFlOWv{ecgeA^&iu2QHR~^^X{fv&72uGV`D4ZTcl;G+#}YBJBzpC4lzk@4#R7m--%RpSYA<{57Egdfh2XT zfXDvym7hNq{UY9?--ikPei^~+0EX9kQYRYar(w*`Dx;^{P(fO1ELm$R}FGhiK)$2%e;SHQp{l>n_Hk zYt`fL@#faxVY8(wmc8Lx;T-3^^1h`YT zBslytFn^NPiW&`yN+*v5H~P-Qq#oQSj{v*9Sd_;5ZTcI?K0%j>-M<}$zO&A)CkTqgBdCiUkZIFpbpb}}jNGAW;rk092{ zbgpBIj|32H5kp($l_WX$&m=i-Nhas5oK}%nHmQjAO)%%GMPCU{6De8P^GM@wd(-%T zDffR^BGFMqo3OYd)!8!^U1{vc+y}hqXo8@e6CEQHv8&SOMGxW|9m|L5n;;|6adJGu zvEV|v3HR}WZ(}Q86(y$m72^{GVty8%h{caj;v1dJ2Q97tK|bZm-Ir|8+Ko3OD7y?) z?HIiT8pU1-8!fBjQvo=>U4Dx0X~6uLdm@X`8GNAo)ehaz&YP<}dNYFh>9`Zz`HzWz z){nPAFn%zf>M>KR{P;|4etZ_+xvxRZQW>3%vxXMIIWn1$o-1?0rpEKa;;eRhaP>Z% z99;dnjO^_FGPqjj8$wclr+(pg#_M^|D2CDb7=5{$FTaVAVoAR&zsJJc6xl5wCcko} z>>j&OqPiu12&luk0^&U;E!%NKIr^qolyVEtOsi)_4`LRhd2)8{Gn@ytPWaPU_J$wS zxzLB=J3cR;=z4G>mX!7Jk-eOck*J^)4(Cy$FC+bBZC+nKvAT7Sh6YLIOWf)=E!uWG za13GTZq)9*nVrCzK`CEHy-0SH@q>6dr&8~f>{$B#r0KZBIm{3)tWMc1#}|THU~ijE zuB2}dG9+BT(!ybB?^E0_OtaityD4EQ?71aKdx#3=&itK9N8IPx?GKhm{b8hMKL*+l zCt5pt!owf-2uLaW!r_p2J}xeW9GVClYmj}1c3?9XT?De7`@7pHuYhQpCKs4H3*Jp? z%Xl;&FLqn%P$N;TYp!$en&hHq5DC{>PxfcS8P&Y} z9?q@V0xTQmqAY~Z%brWA+gRn>yG(zyIw|C$XBne9$>rGX%ZO*7f}on6gX8nfY%c%8 z#xZCmyzpXvQ#IM9m$9eTWY?xuS)I8$eheYjhxt8J)iTL5CznSgS8cz~Z)8UhRv%Q# zHkapa=J;{>g-tGapqAGM#^C3&QqWY?E?nU9bse-h7D;7G%+rUxm8 zyg)UK4`S!c1^k8*(@V^1VzNtS{>LR|F)@*u8T{Hf{6YchYeYrJXwOKPnvsKm(;S>%9W<}g_Nv(nRgzN)um z^Sv)7*r`?C@VXOE!*Hi?UH16h>=~a?k5e4CV(+tp?9T<|z&6vyqM{lBTT`%9*Gkp3!}^V)|RVfTv zG=vvmQHwXlhGsv;XS596pTiY4d#tWxrz%*>POs!jGM6@L zXPA=vaOnEJq!(@wo2|^%Za^V@3E9(r0+{Wq_{^)XYVQR$ukMU%S-va7)J1wZ> zw|=NRP+jlN0E-J`gcIPjelKs$n%M*lM{?0pF#8wYoBHRw6S^n{E54e~HS%`xJf3*| z`hf9-t)C5~mUNB$iZl@_YaX@nXgQfhBgi)n=HT2e`S#~aeN^gDPu>;VA7wtE zx9vEvH{8cGqtw?Kv0?7G7M0D9pNu~jXk4=sR&&u)a1GQaeLbFQ;71yG#=tARtgpv` z(fd%;{x!~XR-XPYIcy7hihg1a*g|){YD<@XufV;R3OP_;!4(&pT}Ia_aJ|^|%Ii5{ z-shQVUynIFV6*Ds!F>EwIhWRtDlOFuXT{-VrDZdpXPVO-D-B{@z>4uXO?+%Upp{l> zAn}QxF4xj{s~XAs@9!@yZRBvS#Ccz7uwaWXkO!k@fH%M`R3v5@`vlyCe%ia2^y9R> zoSQKBQts^=K+{_LnV8{>zTKP7oZFolA7Ih`EPU-E)mo-I?_oq&sOZ^zxNIxuGNylF zCas3~h$&yar}oKb;QnRnq4=DX;=uix4zDPbW=@*PETeCrp9r}zB5i|ApOZG&nRfNG z#ugX1C2i2J=y}58cyj$nU#o$a>-=4XD318ijpCR`Nw{{br!F`!Pq3#6xu=tm1GZs# zyR&;&!{^_v4PUiCpLXw=TUPseQm)t#3pZowg9Wa_>Se*eUap%q$4g%>;@Ctz zem>!Co&Q1N&MZ+s)rs4Ybn*n=p1DPF_D5%{zQ@ldaIIU0J0rB-^8`DAbJD`p87ASqU>~GyeA_BJndNX0u%X+#QbZ7KnI{W_oNc2Lea3^;V zy$DM#kM239Eg}2-k!}E!Cq*yDFNj_uOt;D;oJ2udWj+}uSY?(m=56%sUXS!W22)m< z-`ALWwl^cwn-S2D_b4>uEO$^a4*BFmx;BkgL&(v6&Ko07=9NObX)%mmj^}+0aBh5Cnpsuv-m@4%GpqW93ePLRD{?pgnN<45NKjpS zadqtkQzmSeB%bu4f!%!^5~lqrrW+`iC6z6-IY8@5@|wfFBGxzFQ~zea%s}k`uFB1R z1;F0$(~@D_0k+9f)}{Q+sOZur$z7kX6mto=7746Zs?iqX#HpyL%} zMGEAN#CKwJ=8##_waf9x&{OW9fYR2P01H2U0~UCioW zZ1!#-4B4;3Xuq0IDpXQ&*%*XWNU!bDhJOP7*017h{|~vqv7^@*wOssK%-Q?NpSiqe zH-LRrx%4`q(T%jD{`}Uv2$hR|4uO39c|5Ip52TPUrjX%)d6!Mbo}}*EY**4}zX4Kn z_o+mhmGyI9vy%8P#qmZw#^>b|G54u!>6dhWhX;i;1CqN}&qH+5$#Bc;VIH7X!)HRO zywKG;Bj=fv0(Lb=LFSPubkolEZKnM-;@vmx-%#2IUE1#xU%hF68nBO(3!Kvm&}LzHS4X979kw#;pRcY)cmPv)53F!QS9Np9@Gr}ZIy)<38hXT0?+ z-0t(|eS8f40Ac1;fskwST%T!0BkqmgOwQIOyhaZDTV!u_y-`KxVktpWL|gkEL3tIa zvuo!mw444yEtp>l;U4F*#mJgs z-LUHxg+&^qu*1QeSZ9KkhW^2#&?{Zc3zw#cBzxmeX=LY=Ub=z<($KiWAme3j&a8Z` z8+SZzFI@eD)IPXmb$v-u?cpj9g;*n2^Q-Hyinp32kABn3G=;;u!PC`~2sYSNHQ7#| zuA<$L^>erM+z5;ULUHnb9X+*v=UK?&`Y6M!6)_q!$XRt#<*3Ku!Py?fDktL9DGWwD zQ-|Mj7G7avaxiypBhTmN%fk(WgSo*l#1S2%?#(Y_Er+Jj?m6pgkgtXPTkh37&57Iw zSj@v8-@+|hIn$phR3Co$p@lWmyl=weTl@~)?-YKlS%oyQqrSVa7Aa6>;$elg z(OS$Mg|&ytoUUKedfc&@tA~Rv@4&xxm9xK2_G_G-G-g`6o&8^BpLg~fWWT}e_1V^q z&T>s_kFz|!^%`fn)VQ9^as*)NA%*IpQ-g!q(TPIq9nSlt0wt7y-seCY$$%uIR=JE? z)yb%WY+oeHS|4%9{)pBSTeV~@1qO7_hz@7-;ikvu!)ZjxdJ}Zjj=t1JzuJi)w;>ut z?0pmz5d>x%eR!2}tD=7+_Xn+fj>c;cao%~poFycC;dG~*5~s?F%Z}IqKvSK8;Z?Xf zUjTl2l^v0=+s1qoo*g&AeMin3>OA|Vo_djU$;}ZksTYcqV-_!DkT7!Y#6`FAaUXj= zb3BRfSDo~uW8t>wHG}Fh9a~l1jlKY=Z=|1oDhRV9Z0a2kAQ#_(-$3sb+J)p^?vRd>i<(JJ&14&=iqnCZ{{$;@E(k7j0P|86Ebet&kB?Cf8hC7k`Mv*c#~ z<}CTyy=GZH`#UqQb+jY4j`g;ZT#Mg5;`DEak8fEJZ}!_}`m^6LGnoCZnc3OznYn!S zn`U0?(4*%&(sFg)J<8h~KUwlpr_qv*ZGuTY@65Q|icVK{P!eHu2-#)*Yg=X8!_N;b z9&h$%X8N-~H8Ys~v6$}A&(4$9IaE@9^A@ia-a4Ne;cw zF*buG=e_*Q6{Kub<+^wIMJz&;NA9)cLeP4acI5q;Sej=cmXZ7p6achUU@{0$5f{) z&U0*TMB}yEvS(|=5@p%`jwbiWO}!lJm>GS$I|QKv?2;sUc8MYA+mH-qAXHv|zpiavr~X z*>9+KAP>qpfA3v$H}O1%uV=C8eLfuj`i6t$TxQPaT=e8q9<>B#$()aV_1oU@%>kT4 z=KSHagM&Z*9Gt_o>Ij?uTyzt9I#EY*i__IdV)+1v&TPL90VQV~oYk(@_#VvYmf z^g(V%?w`YNEyBMUSJTmVR-^wspwO2Q{g(<40jN8xv4z|jp{{$}xv7&JC>$^=)_2Fj zc=310@u}_2$LwTL#6uUCmu-BtEaO1Y0c@>!S-6@@h@2f9%yZFhYk0y7RP3~bn z)OYtWS3ReWfjpo{pX7I4dgG8HwJXY-%iIO#=r`>er=w_W_7k{o7n?WpzJsqy$RQ>s z85cnzk~O+WBOUzs_Og}rPua{N@XW}`xnZQ}#nwk@mbP*2F5`~g1hD9Z?T4{zctetVdG7$b*7}8-wtX$Q_Ec-p!Zy4J~1v68#U1aSbk0 zta3j~nEdllkzL~FZ;8H&$3UUs72GAagqZwRvVQS1+K|eNj=e4a1d^mNyBEHMK_i8` zw@fttd)zs6AJ{BxCI-0z+s){>?QkmRkDM2H=h5%8fcYA6<6_bm-zTfh2hJnTGUZy< zy7YLSKhZvWf4=&J!}(l3F^p|uq<(O|+Lryv6U*zBuyRSUUJ6I~_J!4D7(qC8iCfFM zs3+f<>`}Y3ITh&pyVz#Y)xh=8_8r{jXu0*9v``YIAX89cGRtbFUh{W7oj_cSoQJVn z1!+C~ghhqu?mH(9%BQ0+7sbUhA@OteBLpK5y7xeY=-cB6pw=Rgr?X2I(a@T5Htbu*YIquoxF)NR( z9t4*9p85DL$W!p)QA)PXo+%r75M&ToXGY0y6HXOJ*tv+lNyrAnoJs5Y>W6ye==tC` z*0g`ikUP%HI;=(Nvwe)pd&A$Qqi|oY{Zz2}1610AE%YpzLMhlYob}KP8POBM#c>pk zCMvD`iAjl|KVrA{zlR*$trs)v!(sb6Xs~(ayc$UYQb` zi+711?x>Ya@r4A8uLXcdIl3Fm)}IT_JYOWwIbd79YC&zYT35*G;o+j)sg7OS_rt|f z@#f~qxaRQLch|bn{yhnmt_f-~w#zWvPx_^9vN!yL@&Lg=(b%ZBA#{0V>dO5|eUy|o zwzvN%QfQ-eNDVkr{d>bdiPU#tz?iN_tw(oq%Vo)pRO=A*0^9wMWyPAWP0W2C_&oB;bZ&MM*<&*Q?zqm&n97bGCvGM3 zN{@S}(qA7e59FJL4o+J5Nl!Z;x{>K-uXT@Dx5MFX)~fN|w@K)3JG=K=pGb4dw|4;=?DyKc0Oi)+w28WTf_u5b zb6Bfg^o`{%E!?nR(KmQ?f_)HAud){@a_%M0?-?iH$M^ku=3+JS?R7Iz2YDl6lWlhbCJ&z1L_7vw5?&a3VBzM;*iM$W6X4oJZD71Cc@ZMRgiNX3t?;6c?;@^<=ns<$+N;XTvz7|!6__q%JNWnFn)mqm=xh3*W zq15u=IO1KSc%8n4=I0~j==GGiCUizazSv%cgUz_jsN`9M#2X^PNJT>v=THlgx>n61KE{v`d(8YVSOiV@dNz z;@?BH@BRn%w{B5PRt|0m)C?lu{sZ2-TVFqbUr(BI>c^Zer)E|&jj?xhF55r< zADG8w_0%3F<=dgzh;!5Qe6cu@|9N7^@%SsMEue z&0+j!Xu9#t#nYFI{{l$;nPH%Rr9s*afb@-`{aE5S0PRg^I9s)0Apfh8Wx3{5o3gy; zkPtjzlz-bNO6mS|qBNbjBbo3WM0(nL@fv3w`FD~P|2=WMrQ?XXIkVVa!lyX5Z1JG+ zHw_vdKI8N9(VGSJIKbVvfx_KNEnVV9t==VhLq zd1{~2GxX3;|4On4rv6H0x~@}Ss3~f#);j2npAFM0z|a)oc#Mm|uuSy+Yg9yfRFCjkOf?DEXpNuAXvQjj@Var+TNV|~2Yw_ev^9>ypc*3=j| z20z77#yS7E|;-ATCXdmytg^KuLjcMu|ar3JHatjIIt3fKC)vf4U^Vz_G!&9gt> zoCQ zK94TT1%RSE6*<*~)nbB_D@04dsTKTanamW<`Xz`;f|Ph-JQ`Z;$CE_E=9k59WU(Kb zXv@tn#IG!ycMZ#wC0boMzH&ia0bbAZ+;yZGErW`WSqT&&wyeOQmu*A8zupj=g%!h+Ft`1Zt)DM^vNMn9x5aUIj2h z%2el?0(-B_)f+!vjYoTpNK;?mOh!eo7M7*o&pZtCF!5QGE>q)dcGse}DmUv>Y@{jd z+|XiH|1MV9tb$efM6ZDwnsCu;G2LWmoW9VC_5H3L&~P#};#kbrTJd!dAEpp`S*o$V zJN;X(>0emzVs!Jsit%h?re4JAGk|-E-J;!?cxax_QfF`ItG8Sao#=H?S9iRetHTq-m~FY@ zmJbpVF+m&&OF@r%ql2VahY5?}04yj5izqHXe%^T)D@L&X#CBGE(jSz9*|HeLIwOnY z_c_Ed-VD}{aA%HkZM-?Oz8ArOv&+Hf7{=a^YZiNwVC?r$vnbQzI_@j1uNT*fquvgP zHsa1jHpt(04uU$BT_Fax6GjzLb#q)JnMB9^$4=!+52>r-s@>8*W}2!~$y|*G#q6C* zI|@}L2L}0F$1j(dsr#QbmnY#;b9Lg567$5wj1yCfLB)3ozp#49#F_Ocy9e8A?uB*^ z@7(x1`n=jY5HjxJ#DitkpL=G}o|L(9Tu3@%auAl>jr!JfP2nL}^7bTLO|8)c9aw^E>bC)11S4Gi6^(!+l@@P;6E$EwAxQ|w%*_s`G0e5*LXM=s;EgO|n7CB8j>DW#+jWr! zJ4Sa}Dp6%r$Oc&=6W+zN=|n6d8X8e@hg*9L<3q}wqg*IIXg^6p?}P|4#F^Dl@oyDG zHkoS@vnq2Z*(wiomj&m9tbs3e=nmPN5zJAxaZgoE`JP^fiFuE*YDYGD11&*%INtJF zdg+Gw|t%ic}@YXx^`+Hx0RC1tmxbFA6>Xh!7kp;JH-d8s^TSP{RAqs zt0j8_&iRtIQgCsj?g8$IG%b9SC&v5)Or_6Sm}BXA0H#zP8X`Y zsV^y2-yVv1QVJg8ty$y)Tr*)2I$ttE^qzRmBaRQ@yaWbH8iM7&noU0Td|%Jsgz+CN+wAFr@83d$bj_!FNhBz;mO z*$wHDoi*TQ==!^Ufk&g@-z~GqHS{#0=mc@_a~G#YHmDj~OH!?~+-%liD+3W#Cq4x!} zm5#)BjQO-%(R9K{By2UBBl(lxbQzrrt=`UlTml?DWW|3@XoTYn z;H|H|J{La}OF#16k5VC8bA8768Tgw8e!ALv*X3%l~{o>6gV2jLv?;7`Exxc@~0B3 zYbCeQXYysoAUb@}y8-&qW2uI74Q3pOA^LLRkQZMFZ%y9WiKigeKUc#~do%@ZvA&($ zN|2km_QOG}hq?AenB(lOJpyxHr0(xS$P*UaX_~zFap!4H%QUaCV#|!p)xoPh)ZHPX zDB8@(!+C>_%{ApY7AgW!fdi%;tckY+wOsL)Q(7a4#%#AOZEut0m z!-@7$ew$;}?pKeAUImT0b*!Om1L`0wdqd`sPDVFAFQ4cw)XIJ*Ak2*(eHz64=+_Wn zlf{cdC>j;2Z&~Ry;hus-Z{>sfv6Cr=TW%sntf(bT9A@t-4{~#ads!+JyzM!P^^-?w`1Ug^elizB?_st1x%);>;ZC zW~O{BGc9KZ>Zhk!Q$IA#7xwI}Ftwr14JbuBu-k;=f@MR(adTlYyE?$^WT3N|J65MM z&=)V+{26CgebSN>!Nh*LA#O8jO`<3wiKpALc(uk76Wmhas7UHdX-Ao(M5B#XA?np( zG)|_tTGfZ99;*LbUaz_pqqxd3$zRLc!NV9WS2CPW^bU$=q~F1#cj7=x=bW%Gb0Wv_ zVw7M*>?g_oD`#g-7{n;eGT%XN%9gtI$E({F@^-us{gDV~BdfYR*A%uNMTJ53IjE+0 z0-+p$t_QtixO@U!ZbihONjQsE19r!!E{Dv=L7MG-WEiOyN zmj5POUD8IU4vIXwBGZcqnHi&+8MYq{FY%i}-@?=x%zww)K#u$tnWv{5RB=h-;`WZW zK24~-C!S(7sXI(0`PyZo{?H^VbxgN$Mkm9S`_USaMs44bMkC14bw}$KB@UGWh3L{v zxmzg`$g4)8%hV|I2!^6nz~&~b*V5P>y^B&@&J%9&8}Xnk7{h4a!Y6(#VZz!~t-jN# zP+IahJvO%uNv{;{wz>DYq*;HAb9K=^WN|YZR>3|FQseXT(XdpX8()kw(rs$;iBRs4 z48D;08-;x|^|s9`D#(uf*&5#AjJ^?b0~R*TCAGvYJ&^u<&u*q~yW8sv$zCZ#oY^X< z=k%aOFH+tgyl{TnA*AQnN&&~)N?CW_k(+z`JfcM_0~evG;LIKdE4lck6#Le1kO^%) z2%}O9XD9GMK_xdMi?LjBiaL6szMK?h*E4<*>6xutptJ@t6|c`W0Of5vraCgxJ!S}d zPDY%F^djkmNXI8RwOT9u^I>u>!bHWVX*}!=d2uLgzl0(kE_iffoCQEu{1Q^ycywDY z7OATXXOV&j3ol;6gya2GkppI4{CJ8#V%1egmB^i3E%jL&o!y|gxJZh(Uc&b6imTr% z^~anlP@|1GOOWVcWHX2bGsmb8LuQCjr#QEsusws{a*_BMnJ_*tAF)%9uOwzR{xn)N zR)z5saP}q6zScAqyUkK0+?}iW3y(@GfSXR8fS^HpFY*@t6!xwSXJS%59S^fE&8z<&XZ)P&lCgV(5d=;TFkRBDIgOpQr zJBD)E5GCV+(p(0e4avij5E2XFJY#L<+_Q zaS{)=Plv9lX`F6q8pc3li$^mOD}^3T=wcY^972WVaUotO29bKJ&&kHypwyY-zm*cz zxVDZsk0(wxVMl5#P#>)5!p2}2BZB7etPK@-sRC%PR(TPYl(4sX^J@JZ* z3KPbNtr4H+*866Q5nnST-9bm%9P!O;XaUbufxQO{q3ffAevT_$4I@xBcYR4-Z&Cyh zr0cNjs@Qz6Nae0CDa7<{ijS^<&YM{|lYH|Rpib__^aw(ros!2qf=6F$2m*kRjp=cO zK;xp8@cJD~SVIs1gfJ#Mg|JBoxuIOdddd(403jDoI)o`9CKzCihspC#XB7tsf3jw)V1oSD$9;BE?}esJQcNhu4IkzD*l@~YAA zSK4$mMMLsEhZG-7i1^if{J9MpzZ~5cFc8JB71ZVjjqQGXC$5TVZ*nJ;xtyxkR!BML zAtI&0-S6>l4kwOV7!lkt1s)@b-wK-NC$X)^k<`bFN#9AN&trM&-o&A-4#l4bihLVQ zL#-?7IXT||JZH|loUg~3H)lc4*WoOflW8z4zX>-(^@j-U?p*o=HT7h*6+1$%1Jr{$ zNF8$K#f`dgi+n3?c_w%)mfJW+*aaQo%DG@r&VUPOr_!@#9g(x^PqQ2Vch%&=&9>LX1{R`}KyBU9Os4qGaT8%ZyA*A*$0-hI~ zOaK0E;PI1imWq%d6uUSsRK61`o3*1$E>w1(Q2iE)y4%}hz$zKp4ijb){5H)uE*x`_Wp$;3g>_b8oDwsg|f z70@ag2qnA9Nf8Ve7nYomGL< zL_g(4k%~{+k0y_4y+1|Z)>H@iatd*pIRA$r*3TbJT24{Fy_@VP`h9hdtHv|fb0&0= z8mo2nLp_%l8Kn7NXm)^S<3%BJCV6zK`jhr2;5=Q!_|b=HCCmevRMEnERvGKtyf79H z6mo8vLDv?9g}q@_(*!Lv;`c!Ycmg9Sgpne=K zM(&kT?J4hZ!{0|Vu_-X38OG|?&s1iw02s!vBn%tl|4C=&COK~Mnsl#bEC?cZlPA)Jd&2%!ltw&H7lI#I7Z@GDp#6ijbR%Z9h3-LYJ z;#=s6?|-Y$YpJ?uwz&Gt2pxp^z2QNf`uv}e*{?ne7{;IG>-pvGB0iaeDL-geTJO74- zUbqLhb+d`EHta&;IdafwZE!ImXm>GN*luM@Zn_dr7E2f%K>!OmsgPb&#AvQtcyn4j zNr+`(^mh_$m>Y$;FuxCmXl{~E7#)rQCbu@r4ct;_ecK56SFnDX$);wn>{{$y;-0lv zKYkki`dhdlCGXU9n;iI(3V5U5<6}zQP8v1R%?ua7k+e8BL+@{-F)@|($OUwb#r1c2-p?*tml;N^Ir5LGD+v_B(kZs9&}EJ&~-EwH(pzYFgKO{ zF>Nw)j_L@D6^akt#nxGbX`9r>i;n_U^lgFH7tceXzkUwul;Kq+8eYOAA|t^<)U^)HcVX5DsxbU(G+gWOXg*L)3gA8&6t=*)d`bB8Wo zx0ls{Jq_IPdHF;PX>}E&77|W2dRnIX7(4dIrtD#vhd;wjl@RIE!cfBS+n2#Fbvu`N z9qB%obSG;>-zj+78qqCkW6m#ybcONJ1c`^_@Ou}JtOrcr&MF#DUD~>lH#ygZe$LKc zxfP_3$PJNuXa}!sHOZ`|(!09!qW{O*n}EqxRQ>;*dwZWH>6yvQWD>GKCS0bw17uic zGAsc>Hi0B8viX7wAe$F^5)_6G0Ra`lA_^)BB8m&{8=|;x;DScq_jM;KF0Z@dhHLnL zzNhMT-2D(pD(D@fPY{uJy3Mn&ghVI)4P;Q4RV!vL;UN%$f+jSnDfBUzSX!vlz>j zF>6kb*-GhAcD7Q5SgxUSISCcWLo5?QFyonulH(@4%zTXD@Kuxsd_H=dED?O|QNaL7 zUlrpbY4!?ZB(@OArgaeYP#F_Q^n{f>LJPBzZsbwLEN>}Zqb3lwa7S+*PJeHqIQ~I; zD=bbiH)d^541A)thTNvf10OF~TiJo$0-wj}Q(Ir)wSu*Y1zsnZ)ll$y!P=SvqtlYL zy)^L2f)6o#%wa^rw@@p#vO*N&52?m~AxM0%i~mf;Io!dg2!0yy*e_M)p7Qqjbw(N+ zBr8x)hrMvS5UG|Gs;6`N{89OLx`Op|ZJ&>t&%#QVD_l>vX?88Fbh`qkzO9gbt_-PU ztsJRjRF*>REL421)hLsFn1RW!!uPp`EW|GbjRBvYxlUcRGM6>lkfzh>nz#_Z%t)kX z-uC%0FbgY~Tp5^rR2y&K>=?%#Y$vOJKsLb95(@(BceOq*8+~3b4_0gkOCfrTn8{hW zu)ml6>lg5n_5Di7{<3mbyhuSHkYXLNC@UJl4ab3~qzEQb$wm)~IN3?D5k~6xa!P3O zljtO?t#C09zlRPUl`Q!=8bGh=&x*5dn zq`t2C8XlyK=<<3ZD8nsk`o%j9b^^0)5{z=$M7DKCxe$H(VxeYTZ9@0ika7(t<%(C+ zs)d}BI@e(2B%~>rpgBGOuMzInYT)vAsktzSdfH$l)crB@z<8zHFz$EwOJ?E+gl9U{ z_%?+T189$I=6d=-f0H`R-mD|v1@;QWaDU^cv+eZakOb`7Km@yxPtByN9|l zP3nHY5!4VVP<#V@y28!rVden*PaT)$2`=q6D| z9zFS+0SZ!gaf#;)!5SB4Sa_Xmpq;N$Rm~7Ll}9cMqF3-8aPoN^<(j;OkI7f^)0|Kn z*ts(IOEV{{-czr_qa04%iqnxF{}pNHqucn03eg?J z6rZ6+&Acnqaerp%UVMsvKLzHQv=P@nmz-{8z}D5lsAQt$S1@g)&TO$&T4Nq>!qdbY z)>1G|PEQgm`~`H|czoblOn#>0qzTS$z?Qgq(8tz3r{GuFBKZmg)x zpV;h@X@cmTaDqtc(9teOYiSJ=r6kW6R0^x^(CT}qdO~&?5uWT9OsV6;_zkM76oKt( zghd`X4ZJjhtO?g);#>^oI_z{FOVXQHi(ufh4v;Ga4Ff(Jq9&K6ssaCU^ZXb2ua*W! zhDH{TU@4>#(>+cvOz%H%c`0*>=#AsL$-Bs}3}K&479D!Nz8v4pPiOUvV$7f^Z@7mZ z=qkl;0$Hz>tSu4a<%|O@&m?2(mc-a_^I)0;CA2kiu={k7++6bz zH53hYpjR+Jr}azR!e*QrnqG6@ztyvA~cyP5lx^HxoJ-Y@V+~gGk2~b}_hK z3*6a;F0@I9Q0f_N32f)kuPsU4elBleLJMT3Y)nz-g;&kRfQ-fgaCoJ~9XxQ^|sj;(tE$uLl zrbUM9aPBs_qZe0_R>D>Q6cvtuD<=(}u-py6`<1`iu5=b4t;5O{r-UU6Qh!*xWqz z6&mq$TR+$vWmmsNZMya8{Oo)ZVKc>~sS)1pavN`TCNUfMQd67RD$ClF#cVWGuJZJ< zBBQvi43aR+TvD@W+3s&>T&t+Tlzx-TCgI)j+nK;N98SsYyyGG&a)#CGSc27045CYD zHLZ{CL_X(v6=V+1#Wjzcz2Rt#=U znM(?Z`%K}r9vXnhDG9;=5T_;x13;XXAPh)!z@O#Tun$nyFge{nikp`3gRME)edgoc z6X8nqa)NWVv?rWnbiIRN9G~#(4`O_A1 ztQndYrVzSxis3Zp`v*Qu@X+79NQsj8M!9Ma13+AoAPfNUq6A^U`N7l+K-76%Ku6w9 zeK-_vL{7zNFMT+aye>|A>BFJq^}@85J{(G34ezCM=cYa!N+o|WUsiGhKwO$24A36t zI@;<1JDy5o>!#s(IPgG{Paj0N{>#RoYFlH@lpDW;N|vh} zmPhXdf+@WPO5p2VeAR#9PSHDBl4Q~nKN!HGFWl3~gr}#iMpoK#|6ixAzE#?C|6ivq zl2Y1o|6in?wR@6hT6>FxYHSJR#_zWFo=XeA$J#p=-{ust$tWvM%G5R20*t{Lf~HR-DVQN z06eY|0@nQ+T(Ryi!JWyv3+GsOg>qq)=+%5#ZU%t3HbEEw&;EJJRiE!uhi7l6?s@iN z=B@CFXSw;#c=m;kXLqa;n;yr01eb3jZO2%>4GIsY^zE6ea_Vc~_72aGwc0|BNwtzP7{jGx154a7 zTp}Kg{Fj24`!cy&;SIRThL~%I=mD%;YD!n)P0X!!^$WQa-DiP?f3H>3V?-Tkuq5ZCZQL^jTZrx5|n^sC~PbQJ6@=aso!fkR`vK&Q1IRx0z{nQ5p9 z+4!R_jR!1^T>LRyOTwuxpy=heg&*hzNpTC=#*bUY2%Fcd8rkL+Il1NyI3u4)F=XL} zFVcMRM>=@-au1e!r4i>v_ zBHWZjFaX5O3BmvnuSgIEfVd?=7y#mxLR=M0y$-jI6vnp5jueG*9xB~ylb8m8xIIA_ z0OC~%!T=DrCI|ySyk3ZVsiAMOwdW%G&StB%fG^kH|`^s0mc26mh#tlK_nHocdBLmS{;8z?OF)( z2}@5}2sIJNoJ-$Keiq-Y`zIrxtD_6z&k4ohlH-#)h6@7@^@jx2In0{@7V5DC)iqr5 zD7KU?BJa3YvI||f)>$a(&DaqwIqYv*LG#0v{E$N~Yat86JdNUzyS0$T;Yx8AhkU$+ zEDd9S*CGGfLY9XsWsm%G3)wMT=@_(-o7G5a>$fCrZ2*Wj32`mdF93E-jy>-a9ZY|* zBW=D}AqWYl>1F~0K)fwM7y#n!3Bmvn_a+DfK)fSC7y#lPAue%lXbMo!XxJ2*ec9de zCDc2UXa;cPp&Ji2H|nl~LcA*pVE~ACCkO*TyeB~z0OGv~!hoj-?#6_S)=a%oUI#&7 zcL7iw``+$KnV4=1LrVpv)hHpKwElK*U`aXs~Gb*^X9Ri$y15h6vpA>Gx+Y#uIy-h>SRha z#M*tC^Pyo~%#OzDXSTfhEUw9re@|J@w|?PH2@eOYQ{Mzrs{Ht!_&G3sAsGxDd;^Gl zd>ZiTs|0de9@rUZ*vbyZZ#7KrTxi@!hFI9%hSPxot3u;Vm;-V$-o$v@T~yK@R_G`+ zf>SaVa|7WUG^s;%=Ql1P&3cDkH!A4XIyMunWCJ|d7B|Q`Tk8*NvH@Ui7sG(V9N&*e zK0b?IE`XRv$R%h#%X$jQgh?FTf=h4dNYs-Yd8w}X|9P9_o)VIS>#CLkRKlasHHh4}(neDQMiUNv7^o;Ue$ zeNouBL6Np-%< zYT-(V1GT*tad2ZQU;lBjYujFQU|+s3+&G_Vhw~M=St48$&YGbqjXxU)eSF|9T(69fVP;pUa)cM_7)dr=3Vag7OE>Wn|Z|v_HuN#d)t8vYBZ+4oa6WGa~po35OCXYVrRmzZ+qYCSodAr_Ca z{^g?6$lo`9XAy0r3iZkHul4eB{@GV&*dSy+&;JVlKjB?*2>Mr;)3uAuJXpj%*OlfkP^C3hIosa;czVf46sJ6r&E=zK5!$RaV$DTU*YpHz zD(X-hr~R^9=e1U#5?)eH!_r(N!A?fy& zv$brtT)n6}YpUz$ydR`yFL!5S0hpyRop!F7zl=dq6d6 zdkw648HjM>7rtMFm`S{lk z{+(c$6ovmk!9N#l1t@XaSL&HFxApR5kIZX5Tdl+9nn9&f!Yigj;`%K-|%()dlT}l&)Rv& zcSC&f|0E%=`mddZa>O8{4*!b>Q9*X{#2ElH= zrqKd4`(FgKrIC$}oAKxvtueAOGs$@EE^(v2*tgD8z?vT!O`N4+$cROX+_>qv5KO!e zQ))+HTw8!bd>$Xt(v2SiSiEvi4=pLLT+TJ!T>LfAjn@*-%3&!O*VY$dk^{RVQI_<@ zA&%c=>3x~-GBQz!A6ClTlc+715gC`z{O9c~q3)t5`&Vl8qKkb2y|m8p{k1iz?Z|>v z94Kj@vVf&Sd{pDNNusoJajlI%$3kf9&}SQlFy@7zJP$K8&SuQSV-&5kSi7+3N?$D6 zWF?hmH+fV_$=j-xV)R_vJ>Sq+vv{@r+z|1DlIwEDf!n%ip<1S^l5onp`lYPg-(1508D&_3j+*;<4LU(DcE#Y*stC7pZuS-RH z7i_~0v@o>h+ta5G*d+FC<^F>{1s+++t$Zw5zUKWiLph4E4fXh=^lwrn@zqO8D~DYp zEa_OeFr1A@l7(4QR(cbH#R%1`IQ~*gQ>hJ&lEf_J;gXn69mQ$Hao9BC;5^n5M~c&K zQwYx-&rTo%BLf{{Z>BVkLi{eOmejX3=fbQfq){@;a3Kads^_~7_AzN0>pPaOnU$yO zSb5Z&0(%&1_WPquV3H+!5$P zl}RR&(G$rdxG++#pV^&r0txvS@y|s!GS(!KF#r9!^Y~-BTmB{d^U3fESB$wfO4Yxk^sQtg65tbny4?&wHCF&CS{y0pWi<5})ItIu-T)t0#c#dr_)DA6|wfZb$l zR>W1>xsvUy?o)^_Ck40AO#vnRMA5So#f^t+m1hNoo5;oM#7z{-)sqYHrG!>}Uf!;c zijnGZ)R|3mRO!xbJVSIMJ6XJiQ0-)_nh;6LYO1dA?Y|ARF6k&fwRTd(4~N zS>s+|bf?Y*S34|gkE*iD&Ik2;P<_Szs7QickNlAE`8cFkwj4n#xff*5^TD#w88mv= zBidwm)YfIKk!X9zgIwCST(07gmsmRox36$J4Nf_^K!kP)_N>h_x|z={N~UYu+1ZWD z0cr!;d*pUNGfo}p62f$Cdph@v?K@|u{axGk)r9XtTxKDbYpQxM>Aq}qo@*u9DM==* zEarFpc&}&vIy`4rH{Lt-9(Cr$8i(QBfMg|mO&MQ0k0ya$vd&%&Ds)*VeyW%1^xiJ= z?GED#E`rbvbaqET60ibb3MQT6;?<%cK@~%?FrC^tj=As6DfwJs0+}7-Jhu^7Gt`Aj zxtXL4y-t!gSImWeo}XHenl`mg_^A~VolhFjrLkfQU*HF+I~?$*2WpwrBxT)CML2 zjEg|nzTlTN%`aB$tFzI!7|4SwUyS?|D;F!V`&7Hox9am;O5#xlsvS;HW4a`@qr0)D zmTK{J-Q|Jxa1ph=yGucfn~=DY^1_`>T>z=qdw|?DDZ`jfVVCmD&|UqM?!poE6J}}E z1*?3k@)*FhR=x76v?@)A7_UEYof<}K$!lOV-`z2=9`hR57vY;V+_%SNYL9Qz9s|(@ zc+?Ktd5A#^QQtKm9ZOwmLo~iv8l-7NjLsF#=R$KZLBR5;SJqYc+OdU7Yn|uHJ}#Z< zLnpKlsmW`3xZe1fOCe5o?@OFq?a*n2w~r^h>1%rI$u66lmHkg|EeP@gsC(N2&i_tn z#k1+xa~mv~e(Yv4XP%i^ps~9+%$|vc1o9F0wgGZI*6c0>;J%?{P~9~$jMh#XnYVka z8)gaN8+jgsx!tU!>1oCc;pz;M_q;MwOa#Dq1@*8|zY6t(+TJ zpN(GvIO2SwZz0vNy9G#Jwc^x@9ChfBqMYkrpLcryStID$qE_UNR@j1t?I@7kdldVC ztg|iK?W;cpjUk6{zNXpM*@|1VxSixv^!eC=Kdq2vxJXOoU)xpG3YV&4*!b^@ldhl1 zmN1`WGg_KH0)Le?0YI&qjioH>v-uL>2t{z7?dGt({fMu*Yc>n|l5^sS^~} zo{|{QR+3<(3y^(E_1yo3Pg2i920p?5{IqgNYRoKH#T}X*_eAfQEy4DVSr6S9n|~F( z7~iLsl6{i@Jf9!@C;5C>`DicmI6}6|q4UtBGO~__0$jnQGUe`Ejpq}(kwl-*>=8&L z9Ru*LBhyl6F8(Bm)O&J4&WxP7HQ`g>a`81SAL*w$pKHxW!qee;Wd)HGs4tn5x?FM_ zO)>{JCqot35i#aP_j<`yE0JV}Lo53$#f1~|DS4&1q-#RrmofchZN5a}gEigwE_g0G zeOUc#ydcaaL#Gbx*M++Xcik8n@dma9%Npx~DQYsvngq3{Y9kU*bVS@>h6#PrR64fo2EFzcs^_{qYQ8Cqy?fHQ`?v_kGI=7>DJl;; zY9C|IcbQQJUromq_7=9S=ctRH&Re$A!Ch~uIs~y8rrpc#5U;m{G!E&{-t^A4lY6^@Jdbc^Z4u78!@4eaSO>#3 zP_)CkYOsB1TXg{IF)Ol-<&!$%HcIHm7Rs!WR%}o*cj^>r^@IO<;t4*xMZ2!-lL;kX z3;-{5$UgKPe?R13Dki_-e+97CA{@it3bYYwV^d;yjhmHxH?=m|Y-l%MTjM26#tYhU z$}VTSAR7f8L7_$RoyiMNBHs=O z(-y8g8zTYT82rn|-zV@2+((pVF3F;LSh2RSnDkeX-qFU)9kgO?V7~fG7%QFcDi~O7 z5bR1%t*GW6;ZQg8$RIzxWeu-?YA|y8l&f@19YevkK=yN{b!6Ffb` z^mNjUS3VgO$qBX%3Oy+5(!;h~DY;u;%)E|X+GKOO_QtI_U3=pejk-BK)O|Y)=wXG4 z;llCd4s(2aCKq|MXYw89Z#_E4Si+u9E(0-5n>lKy`|e>oy>KP(JV2|t0X6>2StLc3 zc{hs)v%@Tcnnb=unXjbz9(gH0y+zDy7-3>J3p=YjA6EyCQ!oG|`(5kk(-J84458zC_7xPH4d^P=BpUh4L& zh0Is!w=3v3cSK)yio2tYyG2MQj@s=K51BYh+j3i*9HWNxl5dkmJ$2^f;up78fi}nY zKE}2e)7k6>RZRXj-7xtB#s@FCIhm-WB|N)b$uC?PSMp1`RvuhMTc#zz?S;eE99&0~ z_{}62w!m%850-a-g84(zt&R+IRyj-44DU0*-t_E4tyo9Lz$W+?@~(%Tfe5pO_Wb@- z7`<%#GioGZV05W(f;7MDypuQQ3c6#`=F+w>VCOjbQ&)Eu9*Kcla&vwNU~|3zjd{J> zq5byh(C23QmdAY(?U{u2p)NXy=u8e~5L@KqKhXzFzJSw|V~SomrmH$PU=yLW#Ld=S zWTbUzoOS6+(a=+1c0HTD$E@3l-qdzt!)7X6uChbeId_~igl87f+_8oTjah6H4KzEn zvKua}Yl3sF%ox)tG86D7^gELkSiAk&$pF$0tse_u z(h8nHkcso@@(N+(i=!>E*I?r4koAG)M4J12C32}d_Nl(mk)rL$vDmA2Fck*W3u9Ek zId{Vby7g!;r$;E9>B?=Uhz~%wtr<_W0Gdj2#OxK?>|w+A{Wru@LtSD00QN z6IoXC*;0D?uXMELe++y{gUROq9Y;(j_T*+=oZ2I115=Y5F=>uS-Q_tVZ09e6Soyo3 z|B(LCnKxwYd7o0|yZKD!Drk&F`oQElvTU4DyY;2z9&WFV-4V8Fnq9nhVeQgso2CmI z1G|W+`y(MXaRB08YQVZ3w?X&PZO|VvI}C4@PxNh=u;^PHuAoLY%U0{Hmra|^c06`q zCPQE5GD_N+AD3*7JC|f@7d&7vpFg<|8A|BO@}j#Q&8L$q4|B+I)OC2VQrMo~SLJ$? z0MU0SQEe}fE{ybIC+qlfeZVkH%%^2BQuY(2hC)d;{wWa2kF&DWZ<_wdk86bZXN0h) zD|xK_|A2doWACL4Fs}b|eUOq@<}q9OVdQ(rMZ-dJ%IwrYs9YR+7kvw-oYid;2T>CR-b4S>(NS6MwDdNL?vQ4h$P4$$RfWWnkQn%PIp-<|r9( zI|)0%DOCoX_HS3EpI{QL^)9F^=pC#K8i%`jk>%lzdrFnQcHq8N;CLCm-8)q6tqhrQ zvEGH1!OB9vWf*ef^(T*rRx3l!F4&^VA}oq6a+-<0jtkeoJ*keS*0W1x7gw*>3pu@B ziz|!AuMv6|r}R>)EKYP?cBw3Ox-QEq%X*iz1N5~6^tA%Sa3kg3rPalir7@RH%DuZ* zmh|izam}QR!{w5)?Y8l?Dd#)edMit<{KNH-jh!#O@7jcBx3F=ZNwe%oY1i5d6T++> zm&{1JRdzF~tRDdIWK>sQ=n{dXcAMhVLyib9zMYhP-u1W7%s5|rPAkuYlRTGKmb)pi z&O;|5TW1NSJg&0bO^P;uEVrU@G!R`0;Ut;dKQj|pNCuwPKy=$!1K$aa(mPxE-^f4j z5;$XTz`~=`pApS-WakVVcs#m98RR*czv9lv)t|!OkaO~b`*C{>>+t6ge~JJ<0^gm& zKf$+nMlJ(P!*gI{ZPT*#(YEyI zk&fen=u}!HzKXW>n~L-)!A??+|4qu`B~<21srO6ZBPM^tG|4l;?yyO0okV=Og%cA5 z;Kp9pL=j-Dz>hl;iSMGkokh3MhQ>J*jU{Yqks1zdQTG_lka|T|%dT6*beQaxPwk+_ zzfWnHYiuQYw}br(g5^Xu#?;?!dv)9;jIEeiV;`|cdnVXkcAFm0!)RUsejwLoVT&mi zmNRB996HW$5$|PLT;<~ULt9+N4uP~vfl`%Ek~nnkI7SyplUmO0gT6q)caonAQQui{ zX6e?UgkXl;@t8kzd^qV=4(e>PxWjSduQl)Lm7sm4|B~phya+a{D(n~OwSm#axyJm< zJ?RzEvX#Arlr{$gS+k6mVe}<7Q+umybrqaEyCJrT9n}>%+a`K?;nktpnchMjlCo{$ z-Arc%wu!m0uf0t)op}35BbIsMZ2W8_e79;1Fc3H%0F+=`<41?E4) zZ993s4R#cpG(B&k(5rui7j!Sioq=%-C`}owKLpkj^V6Jbx2lF#VIN1QGDFj5zkfD8 z304qR%|^|+*r-{LV$DX)c~8x|AxTe~K1pgONjouRJ@?4olw8^fR3(hApx}=z0mD|* zHm;pik&bDCud^q&eQ@p((+b8TA6l} zJzvq(Z8?pK<#T6~Tu}ML$acwH(~7h0B=*1vgtO^}Mz7N@-$5NL7+0GRnUKl|g(P4NI)*UkfXxh*RD zt1r=`$i{+LyvWku{^Mm(BTG-Dt38qSd0pE>H?_91cGuGGlIBg3!(M+#E!2J<3yd!y zYtM(ufLYo^^`FG6`BA%9@g{^XbZ(daTo_WrEjSt9L+TtMw?-{4(|N zQ?m>MyO|li5KY!7*KnRK7H-?}j$GsYNzwf>AxbJZajBcbwf;N#XEC#Ad1kSbe-<;# zz-t~3r)1cHs}^>@0W)7gj!R(4+J_Pr;Uw$Qou6wYhu{F1IeN`Sd}q*_u+cQqowH~3 zq;7e!dU{?i{w+n6dga3`MAb4L2F&R%lR_6MOx#BTV}ImFYAgA{(Ot5Q#aH-_AYt`H zYG8C1#vg3wxcUJHJLaJ~CtaNx%mWx{hj6ndHQ}0eh~Irq5n>4;Y7GEwf2jJ{Q<_X4OMoVK?l&u=xe5%@21TVB6kIvM4gSYEB!&{sJ8n)Br~mE%}p#LW!)X zi^@;X{(2*BZ(!G_Vdi+?Yw4qG?U-EcNGDC}D4^0@DlF;XAa?gEQ=KZ~_@|VPcST8*Y~nDw8D)ofMhjcawFX~0=d0@H*#EHM?cMnASQ0097iUS zkrp!7Ql^(uCf#fNNBdr5uK5Lp45kzzhJi0*cKt!2ve8S4%vm@$3$e!!ETJ#v2Z5@c zKz0@KI=;5;)uHQ$jN*HAThGmXgzb;suCT3JhulBxv+TZ48_J%vT5R|vcZL%HAKSG1 zO_}sv#9xs_`Yz&rq3#D#wU^<6C4RSv>j>C!^zJ67c>}SPTwKH zk@m$Z30#NkN3THdS+9hkK+0Yb%-9Mvr48dQSq;}$tjO8bs^R*g6|P$ToK<(K#J}hK zJ*payp{H-cXlv(J;9>aYTjNj-D{xjMTuWS2<7PF#&*Xgj4z^Gj5Fz!9Y$A6r!16CSuUkh z=BDOZG{y#^*O7N^9>hLPV{CwW<|PNuTxawyb;+!+sI+r+O`Vz!jHqcjW?g7awx_S| zKCWqP<%;2>tsOlQRc2=4Eow~P2K0Lt#>ZwR^dy*?svJmZp7Ph#rxYUEM&FKe;V;uT zY%@jya zOoy&abr{!0alqYEa%_xj(TV5w%+2yPb7RwDTP4=N zMYADyGdu)?D!N(C>JvRMRiFi{_H+)eEbO2_7kD_ zkz8hi=C~eONE2T+zEJ%LW8@pEu{Fsn)#wG+co3=Mi;x}7&n(}IF)f;1NxEA^vk>@W zqQ#DEK8P_hSLT*VuyHZLxT;ddJclkwfHNZ>qW3JXU?p#WaC`WbME2Vql6nPSE3n(5 zdNA#0qgR2T8EqbaCa(T`^Bpj)`Bu(ozU5c>=1XrrQ>Vz&RNOvjgHdb6f0W0G|4AMn zvOL5iewy)lgZe}jRQ;1d^iP@(B1zW3SK}4NcheN*{?6(-ZhKjb|3xT&6{*Da*IaZP z;p)M*L*O$w6w-}DHasO#iER1bgOkK;u4J5|?{HMrZ3jeddB+7vp($gpT)S-Sz-QH# zT>N*6?G(45!#nxl_Mn6lg?KyVK+#NlT$FECGjiB#A`s z&^MAgS660+u9QvJNex4x$0_vcgE_C~%&UOhyx=6yZUnhralelBIyDX`*fhFye9{4# z+VeAeXlw-B+JESVIh~?Y(G#-7%#HLllc!1Zv>yPLI{!Fp9}8hOL~yS@u^r(*-=WW^ zxsc+m>x*IC+nf~f#hn@}WeV>opF7sv9Z&GWFW-tdbs-ZT#-6(iYpn}(;mbVM3FWlK zS?_L8emX@ER;&BkR(tp9K7peuC8D;LvU56|T3YKHxYaE78J8^bmFat(#kyIBDI8`F znZn7Np}W@3r{H%!!-J#ClUeE7WOz~N);i(m^abr;3tr+!`Ygd%|9EB^+XvDw*V=dm z1vDPOahAzYo3`S&4ve+TyR{rypP)4Tw8Ui!t-%ZL*TSLZDli<)Qzg!I^ zYse>(rh!MEDH*jb__T$?&9lYK3w>V6I=+Es@Z@);mR`;cT5H&o=ihgAYYp2mf8EBN zo`0ffKhvc=(pM1|p+C0Xo}siU!LGB3Frmwqj}fJ8TZtjb#Wu6LrF{0of~3VxPD<=9 z6U@H!X2V<%T}zHJ?eXM?5J|f4ek$qiY{sEuv`0kdm$?~w$=dxg>Ck1R7i~IpR6U%t#vf=&(PN5PcfOb#yPj4>`gVZka702cwK>1Ef`b4zbE8p` z?=vx*n}s*z&r2@U5&AIG)c=E}ql-l~UH_L(!6igk{kL^SR$7EV+FF+`k@_bbG z`xM1y=JPZ&bC1g%ZK71l6kSTD=uc9KV$E|qJ8L;>mV}3x!=+Ykb!67PH#6eq>N7J_ z-^~<+4KnL8cmB>DkBQc_9n&8PJn0&(c6Cd(TdAW4{BHC{uuq|Ap1o1u{)N0=p>-mE z<9S#VIpv1O#6hv_cNCB#6<>9ytPG0>@tEr}>+a6f9FLjLe2seCLYpL)T+tJ^^x@Y?9`U0n|^kSweA}@nZ#j?Wp;uUr%*Z3C|<)%$v(K;n66OS;Z*%o ze0jpOw{|!GhC;c@7bhArHm=3}u44IE%^TPfxWbWHXF>+cqdlYC+scO0?#+{_N`Vu1!Sz&sTq1_rk z#muW|PXsal5l`Jwy(nk8dj;dEF`~On1o{K$UPd4GL*C5ODymhuzOv<`#55`h9 z=S&YKGh1#})*5Z|4x|%$%G|Nm*JLBadHI;j+040Ph!HZJzit8#tORM)y!i*!}Yvs>QyF@%h%aoJM|y7_ia>vC@KJXpNOFOMS?3%{<0eYBlz@ zVYuup2PjG5y;2|3a(Z9jRl`=F?l@&^27y@!v3~z4bINY+Jq$UI!)_k_ zaOR!QO?c)oa|l(|pC{2vA<==+oJnmG0gP0nybxp%Yk*h-`3S`^v#Rb^BCM3Q-|!8g zt(%;cp!{qMs554G7Sa0j z1;!UPCg44eqhngUhb-klEKkmRxEaW__GiqKx{0;3dD2}ZnmM!TrGeRE=#H0LfjPmI z_EFc^R@$`W)Q^z0GnS=(JnL88SHy8NsxG4VfGfq^QJbOs${=HxALO zE%a4v9xxVkzP8+XvpUPDEI7`nCeVk{0A_JT@% zj4>M4Kn@O#iVQc_;$i$ zRtgE-IWXyWQtVd}MgNH9>>n*56Uj-essAz5mNMCUma)i(@x9FGb|D`TZvT1{0#1I7 zNpF}5mglwT!}r^-|#YCFW>=O zUr1Z^6(2Iq3zBSm$y{$c7AJgducM}U9i8^lX+tY@t~aHUI4$kiALA%1Hoc=0r^7pA>lFwHAYdo`wcO{TpzO!L~9_QL*7su(Xyd+BaXo0Kn2 zdvPk1@|x1uX~EPN85=xcU@i;(m-v)v>n7e|tH%`oS*gekSGpfs40d(>LkSe0&3uDT;?LuzC&%$HxRvplu-Sxo{}%z&Zbc7I}dsro!!x*pxS<$ z(6!3e7nBBW_zm4U+~1i0^326|N7oX2v%Ji|XxR8A>Qx&KJJ~? z{(q<99c=84{q89YM0Z$+Y@x9h%J4mpH_ybxzZdEBcU1?ArQ3J#Hi1i#+#c1|MaiH^ zu0Fq)Jl~)^jr5{v8Se(ciVQoUud@+B*LsROBs^P5M8v-AN4RvYaFR4u_vB&s+g-BK zjPwcj@=pBB8aWvt2UwK)OM1S>N}V5B8T3a#q&ZM#Huy&#c5SG(yi4`5qer9t=utv& z7I_QJ&VVfxq8}T=CxOz3ZPjnK9CSBWYjpa4W*H=ruG9 zv(J1;h+!M|<04nGhkQ0GoC|Ep4B6Y|Blq#9*5Byh$pOMn4)U{E!wl>{gk2!)kgy_7 zy_&vAuX=~kJUQ8@4`<|1WD`+Nh+Nbo1aDg?7;jZX-=@p-yvFwwUC%KYaEpKReJCm` z+9YqZmYd%pNHFe&3QLQB4!%e;+x-c3Cx&!!`XqeX;dd)(kIyXT$X0mmDEomeY| z&9J|R!!67*a~fAF+}-%j5+v(z@m+YAgDGVS%_3rn?jWyVN(G8{A;YCV=R|)MW^fI& z7|aR>=i?=OY%7;)`C@b@k-k47nPGrt<34vdo7>b~vCt0;GB2VoZxTINUX12E`)}oC zl}plJN|IgGT`9&gAnd%woPu%PzQ8qCWsNy5S8zh?2BQAIsAghKw27uU>APhJ;i*{GkOApqA za0F9AgX;97gQ&72YVHh_%`wN&9+$I*x`!L$HBj$T&Y&}=u{IH28Z*nO;Ik8?(%k{6 z{98!9PqR_8dbAL<8!JKPaPrZglh#CTf;V0+HWDLL=uS?{|Ft>1`(G2Wlu(Rps`DHhCwXj1|r0?Rc+S*N*o?#e?p%Hon;m zKr6x#=}ko17L^>eR)Q{Ny;?%VkD~s`K2riM@kt<^sOo+)8uf%NZa{ zO1tIbTcE+X!B4Hf@y9hjeW$^hJmO)ci0-Bk9owSL#uHCoilQq;p{=KJ$RVyAtNqXq zn?LexBo{_)n4X5|nsT4Hc!j>7WWuS^A+t<4-%{IBPs!L$QUmZ8ME}yd9X1~&tDwEV zZ~jEzQ~GUOqlw}Xn$^^8;i2j;QjEsO}w6^V+DBgDF=R6}Z2Dz@8aUZL9*wC#-7r z@wfEHFZ98dSUzF=%e2>@(;plfwNpT%(f(LQA&e&+q)+bBxVOa2sEuO``xU%@=V9Do z^ngN%x12Q{7X~kd35}<4H1HvM4H}>~r_sRw>3d4Qjd#sT1M+e-@G}dlUq=JMl;ALy zTqypalJ^LSfW(`%5RxCo?@u8la*E%PLcB+a_wu8zP?nCcu1b>prG-`DX?($9BnR%* z=lPFR0Ks$TMCd}5Q2_vARxP{mLG)ckYo+^>R5XLbNKQN5Kc@l+CN&*(xpZHn0b}83 zrpuB^?Ok~d4kJ13bpMtLAeeO7o%wXHQF$%=%yj=R70uu(6&&)etZOP-T8MU&p*+?KYH%3IX&2$2sQ`j00;;~gYV1?XF8s`@ z{W=xR;4qTYPWNA_0D?*Px>mZ^D_sjeGuE75%7iEyL3-8mt z#5GwgI&v-MK-XG{ujGl|*T5NM_h`#Ij13MWIqfq2F%>{CWnx?I+mJ))vI{@6uD?k| zGdPUowA0<53LuztInMRza`;(x;b*41Efvk+Fp|?w_jjoPf=QRta-Z%`HB2o0%yfU4 zie_*a$!VwiSSo;E(&b3er^^9S*@gG%x_!q9n(+7won6_b35^FS8aH^CXs#%GXa1=% zu!Md7v_bHTRJjZeBRTDY|2-8zFa<|;?+cFPqU^%YY>=O(q8S`Ua@y(sB^5w0=_1$g z=^|;s7LmfwO!tvgG=sxPPJ2}UHWk3&Fp|^G_=!{i!DNhp!e@*KpzOlW%=ibXXaE<8&r-mdJz&#YiJRS<*2NKQNB zFcrYyFp{HZIkhgEUXh=IKA|E+`fd4svQ;Wm_kb;xZ);urRLeVz4GtqYt>~X_`NsxE z`fW%5Ov{^Bcm;=%oRRB%Gh^Yi9m0S3AW88*)(YU%0wW<>`G36aYha{b9z^xr!1r6; zVQlb{&KU#vd#Mlxhmo9C1`o9SV*?}o>hg@W?MK_b0wt5oW>DVG+@rnvgvr7Nn#UmI z;?#b7{s4)&&L|;9yAs|wKP3+rXMf_rY*!`^v^bNy!}d3yk;FS_TD)w2N`eY_7NjPt6j^V5BhupOz5+_bi-7X( zD(PRh!Hg#FX!-s8u9<}gw)V+Chq!E?YyjKhUnB?vK>RX67y#l|3BmvnzfKSafcQ;< zFaX4F6NCXEewQE&0P*_-VE~B75`+OD{*WLH0P)8JVE~9fB?tpR{5e4w0OBtR!T=Ch zLUq+Q0K{JtgaIJ_mLLoO@%IE_0EmAi2m?U;GeH;t;$I2E01(>~gaII)NDu~q$b`ON z27s88APfKzBnSgQgbBg`5ZMG_0Ek?IFaSh8K^Op{kRS{IQA`j9fG8yh13;98!0kvp z3;@xYAPms{1zB_EZKCIB4@e$CN8<+~<`E4OCF8f#1JQ@IA0CL_rLnLom^@yC?O}b~ z7_^_?3mZR9hC(>`--;1`D;?o$`mk}NeBW;4=+8-vVDb|z1d|oE!weovydynU*zF@x zF!|R&ro7CJ7d;qkW%;_2zJ(VKclTp4n<`6oavkLj;uHAQybxxFN$XznZ|~NJZ4-tb zqV2zVUUn-fx?NHtPn@i(S-R9LlQn^J1%}OTHS0EjdHSAG00ut+f+=~$$C7P=P!x{A zNjr>J5@dvxu^r7tj`zf4;M5rTq@)B&FZu~`TuWaas|fC#M)g2MS#cKp%0Yf3r$#}u zLIA4pU9!Q{Y4jc36@`)8!e|vqHlCo#8@cOfs7DZIG)h2?xyh&cCzrV+$YkEBbmIq! z>tFp9$g4`d1RaWdSy>S=qvslZTX z9#!>{?>+Ari1$%Nr&Q=J85z!1FT^rU?sl1jbE)?hO7>vWz-UJa1+Q;&Z?3C)ki!kG zEIDAoXiYj~(Y~ZsTT&_ZuNtZpOR^nV-E&^4QZ)TdA2;aZQ6h|yqI-*IzLG`ozNJKE zO4eqbMILG&P>VOuk$ICm4ZGh=oxunW(r)2l>sm3-AdtJrC`qk2yz*| z11O9?D4&y@D z!8+sG2JT&=V;dLTH`pD$IeX*lf_C>l1UYSaP=Y+&k(V}Y{xbJ?SkIjJNIYvjlV2vs zVfXr1{1EVnOQy5fcmo#l+oK7@w@7&!;(H)Ay+WHbjW?b+`!Y_w)4~)@AlPYx%EQ5w zCJ7D-;)7`KT2LAZT=vEI^J;|?vHn?U6Q)Rlkv!|4-;T0-)jcsAe|DsFgXmLGAM z@_KkU-j2iI2()`(woZ)N@~am+JTUu2;TNdG0ai zz?V+IIpMYK^odtaTyLO!CuqIQ*fT8FN%wAfo$@Sw=VRY2=JlMn{N?NW9#mSo{+c^JqEsHAIPAR>A0etkO`NQtKhEj<@!xfP zbz*NzMX@GslGj7#b@BU;`ITaSx;Xlc3A98AE!4zA6ld%n3o`!L;9n-Tnb+w4|M=&` z`6}LZcoiF?Vo-aSrB|<0k{b>A15v#pPZjbkL;kddJWI%94Eb0Kd9IL5V5C{PK8gMU zAvr+;xuk`>L`Za*K~`JHNg=To0P>_3@?s$$HRQ$?@**L53!RX!Z6P-bdA}jw(L!D+ z|sG((?Y`SX2!m5$XBGMkAwSeY_6T{4A^)s{BJ1LXLN*QgU@PPjA)jx^Z?%xS33-Acf7C+mBIH4a ze5{2W5ONQGg6Nx?fS6gCgn4-yvrU*6r7=Gc=Ios$`5}28+44-%{W(*ropi@9Re;@h z2w;``i2OQs@C#^w3nw#-#rSm!@e4+&YriDyrd{lLE}yAwa60uT==NZ+srD9yCh& zxI918^7PFVuNNhKQhsll=@+%@f4u@+^CSUYPJrsU(|f@B@3ZnaZWfPM%46SF86VN- ziq_}%^*Jy-nu-&@2M=dsc6H;g=r5*F_sX29bAi z&FA?l=AoomTiEzVl7vI2wiiBNP_)NtUEgY}===5^=~w5)`?>ZxFmvi{?S9k7>;079 zRnI6Weyf_wsEA$e$~@14t*Bn$0@x?Z*RBhfPExYTkNSX9e+nU{O-2B z+jN+4-p{)6NlC}k;VGGstJ?K>l=^(2MTZ@Q!Ihnb#S?Jq8GFUFC(|E&f$7ziuCsb! z(Z~!HHWBCImAkV=G_L=FC(oOgJKZz2(T}M(?{;LP&yy^-U{K0>0mG743Fm@jdM;OT zXH6>4a?x3I-LkFB-OQr9B*gx}p1ZYlEZ9g={atQ)(&{Juxgzu8J6-)Huh^ZMevtZa zTBV(RPbPjE1X1sAydp`=?Oojd)XO+(#QBhD_+XQL2F+uUZdw9}OxH;Cc^HXA|Ho!f z8-%Cx!I^e86BAE=lShCVZahpD1M!gte-C)cJpb_vK88H}H{d}JKQV_uYy3yy=FG*5 zJv;!sWU2qyO&?d-$7WSZa*a{%?&IBkog1Ojn3qU2x>W!|SuUxypjQjJD!~Q0rea}! zr>WGqtlmsgWB1}Diw2w=OzjV%o{zFzff;dMCU+HDrCBZa6YRhbrLCI!3Z};S4dbI| zj9_XE*vobl!p4pEq-w(xaqrXkvl#9-KALEVb>Odwt(2zYpV7icKc`PvD|nZuo%sl+ zs;o#DelwX@fAm+4PE?~%1vN17;hvp*?hD-}K%(iCI4sCERdlW})p*@$&R~D^Plcx3 zb27V8Zgk&~Cn1cZ2+}S^$7>mF>~^iF#Oeb@Si%RH(b>b3Ogp?j7!GK7RAuY9ZzMjJ zn!5N$5dXtF=C>prUmqj95s8hh=(m)#qrmLN3{a|avE=Qj6|ooRguLv^l*_yaCj5TU z{b5G;VRJ2XpP$liyFCJj=#T!P6#dtLeRUSBs;h6HY_69JCe^a{H>a|LE1!mn+|5K= zvL>2?w5vW^$qpNW2_rY#gpsoeW62sfVHlg7tLfqEYe}WIFwk4XEUT0qDn+cU7fb`< z%sP)`4YXNKlvo|PFnABw;608;jDAU@vY1pEOtu=kTBR0~Ao@LdIJ8}RV@`Yv1aH=N z&3c!wyNMVkpGL~jABj<{!5sWSfN}1*8cT^jQzdc;A3gdTp0ODD>FB=;EgrrGf20JK zTw&9p+bbZB&y>tWlOB-wCc@Z1W{&0mSNw|){wx1)B;XnR%N=_!KR%Zw^Rm&uNVT2j zwCr8?S`BMWMjxCwW1CXxEPbl!_!g#cReN3nFu#l^Qce#=n@PrgNVTU`CL0A%+svAJ!W+U6zaulV)bGgf%yEv8F^MA5 zkA6p?#!=(&-&=QKrLnsJ1M%sMp4At(@@ungK5Aa|sr2{uRL3fnsYm8uFudos-d^Wh z>5a}Kel!Me-rMKvCB_bO^~wyK?k&^>jyfl3Jz9xBHzIN%UXoGTL`$!PZ>cPOQ@1@1{Rv z6|1pt@E!A*))TXl)fN>nLkFRMy#t|F`x~Eog&(5s9Tm4y2hpD>oz3whE16kxA(O;N zh-$NYe$!;}f26p`j{E>Lj?^~3sYf%)wjXkjWnd-G%s6j!mL<$ynb-Xhz5~&A%2V$x*af^gN$Ely>gV)JCxPelRft#cTa+bt zts7m1csIVW6zu?`1KXpyW-z&L!Hn6I?8L+GhmO~M&eVR0C&@$!e%9%C+`Q*)7iI4M zAIA&r=Mo+8-nIszC!0auS3wokm^EE8?hL!w9C+T1YXHW(WvksF#k-ZxG}+~M8c|DP_Zjh0^Ga-ZG46F0%L;u=12lYI4^ z{3GYgRF~xk&f*k;8<|@?-50j7*u%p;OuZfTAI&);i&)cGq3Dy) zpV+PmcoXBp3;=OJf-nHYfeFF@5D2MU6azpUoFEJUu_i$n0OF7YVE~9j6NCXEo|YgC z0C8A?FaX5i3BmvnPfrjAfH)#S7y#nP1YrP(qY{JxAdXHD27ovwK^Oqy841Dw5XUA6 z13(;?APfL;e1b3l#M%U50El%7!hl=+x$lxIq5@MI2fuqbrz)pE%Hi0ZgHfp9W8$?| zfhh;^TKco2+Kq)C0Jgl*KH&Yv^_Md?u5RDjl^NQ-z0dg<w-8-%=*00cqD1y zi$7u-ij_Csd7RJ|KW$!YoMx9?fjN{pHlWXpt>8giv~aItrixC7@?u`-Q}nW-Zxi}7 zp*tM9)6lOG`V67F9J<@kx3|!99eSRjU*AGk9J&WbCBGAobjf?2cc1sZYlioH=iQGJ z#&;`GEAW6r4;uQ-LR*0sIP?mfx-OFAq1M^mp(7k7m-s$I_s7uP3;#llbB;VKF;-1ktJm?i3saz++nSFT^L~A7uS%w+5eRe}2H|P_+;rl3=pN z^VLSMb2JzfFf{uX{EO~*cbq_G^vGe|vF>-Xu^sDn1(<}jW8DdYW#jj&MGYw^T5ZTr z3AsyHW;xgjjbtb$_{5zq5d6#X2g+v6JF4O5i1U-%qdXTG8BCFK41v$ym>2xKNq-l+w;3 z&p4HYR)i=mG_K2Nl6|Zt+@}>TK9n3{21Pl$7yD8UtcA$Nj8xeeaWQ$uFBOb) zXMGjoXDK}&p%DLg3(X9IRrSJP0>0qV@hi^0}A@{`ZyGhV`nL&0!74@`i2Hm=cj zd=3yX&&8>KoU`{i+xs~&^=9%zBdi%2bmilv=?s=x210SC%ViKg^$e^vpHJ?((g^E# zp1@o_UgWc2t6h$Fu`Gn*1wU7AmW49G&sVu0qTJc-{oM3#m0Jy8>p^qTy1+%*4O|$j z^_`C(=Q9kXewY)9Gul6M#HQqq*=sUK{2+np5on8y?dHm-C8q%2<(*{!T{+Q9H$KVOLV3DEEC>6c>#5ADu-b5LV?P}gUTnE zyhvDO6$FuHESr*=RyNUoKJzk{bdt6swA6%U^Vsj0%u;zdqMLj{D@R8p4q^GaaWEOT za`&B}5kQAnvy1R|EEO#=c_cm>(~@(Y>dV(Sd1dC}VAFawn)XJ?I)Lr@BPFM}m|TW8 z%O^qwsJaO&tm!aEDa>=Zn>V~!KGEj^rQ7Zv7-T0DAEf-a57!_eb=euTmvxB&NBd^C zt#x!qhi!i=Qv+yy&l>FS636N@7j#MnCaBHBMGIlDw_U%JIg1)E^ z`*A=-e38>#)0{koeCuubb8HWHt?9yk(l7 zWA?;PiP@_y2~3#hirn@S&k>zWWgPEQ-_6%a`Uun7S)5V)6B@U=JalX6q8)-dk7&Im zC!VR5oHQAxB`4oja<*P4$+d%qZuwSnNmEOq!l_0@C#KNSiSW8wh7O~XQod4o2xD=h zTgGR$xHKQaSS;y|eo}yNTn?`8TZ}2>%NY*p2|K)pBiVmsXGSz(-#Gj@1 zyVEQeJbD%rg4yQx8<$7Z8y6SGl=`ttNjYjOd@j=4uv{E|W@0?-K)jn4?s{QZ*0dL7)?|lH%Ni^_dEJc_-v#xw%bi(o^z9F^@GaU~QRm{h4?#EvWdZ7W4_Erfv7`#Xvjxs=F%WgGa;=ZmMQzIq3O^xx zGa)~cix3!AH}Sl+TV^p)!%}>_*0f8AG`v|p(Vs-)FH$jGL)T99Y31V=gYEFxRqmck zw$RRiosmMc5x%GXFY64Oro)aLovU>x1dxk$D@-@jF>+Q88|OZH)gcNeg*ojZ zwTnG5wDGxYpqM>WfytX_yDcbjEp)tiU{C6Nk+5(`oavXFQxFOdh%|Yv4>xRHZf>^8 z%XWO{npc=Rzj>Ltm%HH66J*_!u`eCjmN{-m0<%#xMOk#_t25g#xqNP>49!W4A2c_Z z8#XU7H{0B3?)+xM+{<0C2rW3JudnD9bw8tiqeg#u5TgbrWNPX=h(4@5*QZfj#=3t; zWY!@?@t4c@oOBdRg(>}iT?JJBKFa@P${%k0Fx^jc>JGyv<=?MiGkKXn4V%qLoUG|$ z5iJwMvPQuB>h3aEXVBOt%Au$7mj&?(oE0v};L2q|W8{@y_U&+6_96kNV{Q>9UrYwW zfmtXBeA(%{UN zbyqha`|V8}^*<)2kMgSTc{|v@4I7MoHywo=+4#-j?ghqS zy>^+z4c=6U%}zmhkHW+cs}g^hE$(;!UEFN^RYj(&T`JNiaj2s);WD4qUZoEsTD9tE zKFlC?$UG>U5@GZpk?S3fcuYMaw700xm4MSgmefOSE%7fZ7ar-zVg=(%z$*;kwz+=a~nm~O?*HZjg>a{zX$apyO$Gxu^AJi@4m#;CqhbHHmYm-Za+HJ8tA z6uQY>1JVhaSDPC)uQfN@#PXe`&!d^Rm%Ct5=+f6$^cvNfIp9T_1CkEVN2>!wr)vML z0TGoGL1KLF7;bMCDKsITR37j2He82?FAU zpeTxG{C~giRnPRyZW8?e|M_IL>#kR?UcGwt>QxmB1n$Pgk($=zE-c(|mkSK5kRZcd zfNd76+1e8*r)f*TKJl+5W>$bUt|JVNcHh=$*}{hS(A_y#V4nRj`09GBsPL)w*2fT} z;b>cGeF(Ai=guANt_*6!Oq*%u-O0W-5g6iZ1@hK7E;WmuGZs9{2;_Bdc)f~E_o5?J zuI+XgKWEFyV+;V6wHL~gG2S^?@zS3R$W(c-eh(U=HlY(nt*b*#%3Aqq%6i8~w_TPQ zt!uSie5t2^2h@4LlMaQG(CvBuX2pXePt2jpNqG0pA44S*dG|E(?(-SPnR#;FZ3Pg) z+;!Nn=xVUnCuif$G5N#Dn7m%bf;Ikm`P$<+w}Y|ajNd5V_&Bacf6;^NuS{!^5$qHL_4nGv-K8Esai%;cg0_y(j-TKmV4620>5Cnba`7+pEjUZ|d45J%r8tNfQt?9A^I?(A?1sn8 z1PuSznJ(=WB&7$#NlCj{i)p~dipvox(|19@81yg#2EcF>)xkx~2CSU0(!ho6c#(b_ z?}j<0PuruQovz9Zdz9n1I@OkCP_^6U?c#$lcj4K8xd)!|BK63R6F0CGy$xhUTST1u z48FxiPqnQYB%g=ju7Extz}Ft08n1dA-iwYYcjZ%f+U-Gv!o)+`>BL|S9{YK#orotw z7WLM@hO^7{TR~F|sI4&(_+LY7@Kyn?-Tw|;cv_^Ac5Q6$R|l%*8?1ed^o84) z3Xa|Q3`6fmDBoOkVh^GnPej^LSYVovx-x8n0dTR2*u5E{Z8Kn}JKB{o*@|mwZ13u@ zZQTSqDd6KQLo%T)%S$`GeCT5%QSkoJCiPF&q@ovTlJt$zs?2j0JTe+kf=juD#ki(E zpxnmC0d`lCQ-lK#@fcRs|F7{7V!(6!AESZ_L`c)?g`(+n3th+#eYHpmJ6_SF{VW~d z!d$E44*-^cI#NnI2Ak9{FcEcAtbPZ$yE-HX;Ep_L9q{lA(u1}j9PQ+|>GFVTSm$Y7 z_>lDS(w9cdx+SV*b%TSV{a2Vefh055K;xPw1iHVRkIi4&(w&i?XkS7V$iZsWfL_z9 zkQ7zsht0I~^VF?f9QDYKuufw`anK~q<4LwFmh1Ss|fKLPFj+^(zQX;1H&LtHNDe>KYSj5%s!K4CNZX3+2%Bp?+=zs#a6?S6 z1z%VWL<1cSr0mT3gZ~u0o2hXVja9G#5-Uf%t|{TFU)4G6ardlSkM zx|S!l(QC5&pKaIePqv98a(8D$-N2Q~vw&2e=5`k$$AR0=!8N55+u9Y2J;kw5|16VJ z!m{;NMLdc!DrcJ#mAsx-s$@KCxU1yJc!Rh_ZAmVXP3*^4Hcm%Dym%YHOCzfA-w*eJ z_=5i0eo$G)aK%LI2z+Pb#{n6p8QB*RqCDwNVi;3#g8L!ZL&@~W0f>vjFalH8SYsy) zMr!544DRyRnFoC|JcpqF1q7w0*3cqIFxaN(gN1gywZIwNO0L|MVA?4hx z+sx)lwvii<#949;{{}Y#tm4Wmnwg|R|I3r-ET1jn$0TKzkM?ihMxNz(6&=cZv^9sf zJ}Y?lC|&l=W9_r*H-!DKJ=IcB>AkE@rz6ZgwaV^*$H3>3LY(t~NXwgZDlBTI(YGWHrvmHeadD3*Wkvs{C zsC-GqQe{l_O~9Q_EnvsC{}&)gumq!XKwn$~o~7!drOjxmtK}7a)IoTL+>zXcg3(Gr znS}o~J?4m;BoW39(~Y6}uAerP z)nc!@8pGIvX4Vr_d8Jg*{2yp+qBh@r0J4h}n*Lbq3-h3q`ole;Qc|FnFJ7HfA{Q@$0DgdX+#Et zH^%T}F6S{z%qkl<5Gl4yhu!5NElTG%7mOwN9HOzhg-dv!9z%TmN%F5r3$>T=NR5(7 zSZW9$p1brW0T2Sfq-Aj_tt~v$v@qdW0V#38Yb~#J)6OVl2}{n&WU{z|#|eJPfxTNc zQCWm%-DIl9EjFTb9!k|_n5+nS97UD8`Su$VY4>4;ZZP-3EpsPpVf{9cLH$Ae(G?Wd z?z^J?*n-&HBSq~G_xf1vbD?{4Z0^gUJKJ^c2fDa55IfYaS3YAVIw<2l4=k6UYvPwY zVZ)7ZT!gu7Fc?E$QUCe{Cb?0QRMQ)7VuDk-GowMapCB9IidBOTGT~CDe-9`T!vW*L zicQ1!S&sivR#2H@U&k*7hJQ2bDDW*50>Z_%xJ!gB%vo(>I#;FPqCO#9nWwW6)|WnmN|}$*TG@t z0a-vj!R-yv30#hHf5&nsEHr96UTD~IP(B6CnjUx&7@(;8URK zPF4$HB+{%z8h>Aemrpak%JE4#wXb{+0%v6^L{09gnFQjl?Gk3LBBqjYDmy#=SKurT z&rF61*RtFxS;zR5b?UNk=}~fcs&%y9?Dh4q5g`MY9*K5rHV~K3C0yhqN`_ z4+!8t%=bila0LDsH9*c9Kqv)>3G48wR=-U{YKgoZ2oVht%@VYfBT)*4r^Y-wFag7$ zgY@KgW2|sXYd|oI0m^ZGEb4!r{UiI`l8}bh(#xJJR8evUYD>VgcGhx~XXzCSdX)l} zIj>;7Td@-Q@{FcaUiIBPF5L4M1C$M41!oa6kUQbn>VAY47Iy&tc^ety_W(RqG7>KC zlU~NXl<58km511h8mzw*QlC9>6-#U@S*yQ^qgkw*_5$<`vz;?9nc@xh6dCz+<7K%27eMuP` zQgmd`yNEsSgEtw#x3%ZZb&m99YtQ=|%{_17o@NG(?s+p@sSkVJV$Lg6zltE8s)Ua2 zAbW{+=BhY5iHQ!6AI1lOpr~>hWAKYGR603I3_4JPOIf5DU%^%Mu)PJeyPY2N5rbbM zf$He(7^Ke5G;t??c%g({e9{)4SsiHHiP5osEie2hbHs=IF9H%Ip(i;J7(CAn%QP8u zpku&b-q2D_5ztXl=k_V2e^JJMy1pZw8%_~Vu5iPf;1jfMf}P;205)BQYT`strt%A{ zjaMtrQ0+zIYe;kLo{+dAdZtIC>qxdu*O70G?fxOh8lMvaqtcNVFaa#Fyd}Te3KCv9Kji=gfMU}I~du~X8AhfKay{J z{KxVIoIerA)bU5wK!`qpLNtL9@ms~|Qw1!6i}LiJ z6|QdqtK$zzHP-ldXX)-^nV9@73z)pcYeF4zIFVRE3LI2nT zNCCbPm%BZLPl`U@o>z6}ivlVYNr;t1!EM^Nz^$qQm`&V--XCXyyh58+TSg!lm&)1` zH0>%VcW8oDcExSr^fb4@%;ZL1#(hfu>xhl)o>0**`Y1BfGH#<-fB;v|M>$Jhr!ji!HP^sacv-8LG!VYbKmY zs|D1BP`C!DM1u`pNgAa+4Ex3w{i{)18Ct49AwY=}3u+GwN169`)B={dGs@&Vp=Cm9 zfUOBTOGRpxzdKCj-b(DH2JkRuq`%eHMJ!rE^Iqw5%zBQ`2~7Aw=Rq!B&&<5GU9oRYNpv+&<26w!x%Qvk~GpG$au%qKHK23$Sf6 z(FFUyRqVovg3tg3p^t>!JGmefwIMl|08DBM2(;z>2X({>VN=6)vM$_IV6cLR5Uqly z@GxEH{zdwdA`AL*rX$KSUi;#RYC4T$yv&9b1zU+SYnz!?XkWcxQffBKIqW-x05^Z{ z&8i-z=LpNc99gZg_mJ$J;1LFzzF3JbiNmmv)dpZ2>p)L$a(LkLT4csGg53BHSb z)u|3NS+M!K2r+oY6LkAgxbPqVhaor)>yRmt8&fG)&RYzJ_Hf!)ET zKE}$g-#+?(#x#xp!{7C1X`xk>Ce;I45quvMC7|GOW@-=mxd|fp>sCN4YuW@-{`oQ5 z`B(Oc0T=iaVY#i}>-s7oVh)#3)fK(b8vRIIn3gsVH0 zoB9;mYP^v1w!8_#6s2B~AEC2VMFqBG;vyzjd%%0iOY&R0ka{;0Yy#CxM#>pPEn84d z^>UnywYC<{M&rUQ%q(uYS2^sESmRzj+gg)zksCQ;g#Yh_w*L)nhb;9JiW&cz%=Omz z|H;=Le_Xy(#~+jLc^XX?PDzPA|7m37@;mQ;0(tKzbYLmH_tP4)Sx-!U(2that{S z^(DR=Zr6IP3e1ZV5I!Gbb%hcaWMdx=3ls+eJ`@IsL+6ca(B^+N>!`ZAUD)^wu$aoH ztxWmMgveRkSMFa^+`XK228Ity2y5te`|!-~P1t!R{B)s zc5F&vz9YIY5#7b9SIiPM$P#58CRN5`r3=H1KutP86Y-$K*! z*aL(g&-JmCD3^Guh=+Q-9n`Sx+6QEF2b3i?`?8zEeTTA~#@TME@7+#!=#J}lQrN*} zDpqy}UXSDPt6vezoCB$c`VZPFxN5*6ALscDZ^l9dyqTAVJcHEAqdQKBV7P+@$%lu` zo;b%=xDK#DI>IbJ3<_Ou$x1_Xi890W#?;%_-YXWpooA&{mR7y8;T0GQCF^oIU6n%8=wfZ=FVN^bJk zeQ4s#ZNYWS1h_sK#n)e7C0s3h{TA$?feqDmd}%dNuzuG}r}*08SX^+!_J_m7u}B`- zHWqRGxH%SgSl=1{bA7+>$~B9u8*j0Yu_JsP#?RtIp^%CYbWA!LVfJR zSKYqn{^$0+(AmDN|4aW3eeQpymlr$h`(vbi95-HT+`vj_d*gXW#2U_Ht#LzQmA5Y1 zhO<@^9XF(5P1oXoi56TZY#**25%om4NYo8%aEFwp{7k(dHLB68%EgwFg% zOlf0WoZ7)i!ucGpbA@=o;$eGqvm*g*A|5E9HLwZUjt8wKiU-PVnoi;3eBRT73o6U) z!FB8om`?~-Yd*&VTd6Y|*u`rHOzVjP_9u3bq`QVfm z9x$zK4-Z$qN<6gqAnsI7HL$53LZJLctBIoF&&_l#y6J7f1+v{9TtEAt;d%q<=1-k) zX*E%}{zAAUU2FVwuKn897&{XE!v4YdiHd%09Yh(=j318I?bf#=(wtbIkY-zbq(M{P zMW_#N@0t5PB241rQ8{wz=eIu@(|Ag;C^^xS->LYE1^<4+N_f3ZPPe+BkBX@vz zS$S2k2~N|x76y5vPFQt_`YC4V0sj5h79ym(pbdcOT7BD<0ao(%bNMCA5i+?l3htFV z0+**}cO^8V;trBcY-$JYu8QLB$2-6s=nHx> zU@37Ozv+os@*BME3VS)k(fd&!o`DGG;S(qDQ&!%@(T*xtF0O@WYtd;6PSSug0Sf|7 zxyx(Z8jk7H0aH<60=tM3(I=v?Oug|{^BNc>K(SSwNH2dQg##0c`@Qg$^NJC={a6(D zhwPwAf0URNydI6R`aAlOWi?T`qq2ZXD23mS{s=X4QhEcM=QNRNT*rMde6Qtqj&)Y! zQ*CIGX=%`riZdY)58h5nfDszMJ=1m_j-PtKq2C46A>Pv z{G9QBo?pOvVzjgyOdv;kSVe%!Ip1veZX7=TOfXJj0n~v5Rk1Tg_uM+%TK_Owkj{f9K58_ahgZyOL-iiZ-gHDAfLuJHeJA>N@Tw zFhA`VJv$bg23qt1kh}Cn3tB*M_p?E(DX%iFs_dD=2cj^!hG|da&pgRjFS~7doCP*u zax+-D%g#CVFSP~%pC*JA`5L~m0_z7i*?0v`+&4ulpXtMMCSTFS8I{%>lRU zU$Y;mQI1W_z?WxWvBeYH4ZpqdI|sj0@VgMdar~~qkEaqrGW7n@5l7)-}ri{D=O;hwVC8}J*(Z)f~2!0&DNU4!2h`0**+oAJ8@zW~3H zd-2Eee~CVg|3x>4AJY7jZop3WU+I2c z)BK%ol0L%!O!uEP{2z346d?RBbYqW?^}a$kM;P2M(fyK!W5dL~=p+q~)BUoB|A%Qf z_>lg2x`7*()5SC#OK`h%Lp{OptxUu53Ac^#GcJNYf)RgY#1f5=Co?blyGFdo2r>#J z`Y+w{H2e>AleHlH-*nH`@E7PNmqGaN=-x@gNm2+(5*Us^xD#}93WYnP(P;*qsL?69 zImaNnhi>vrxV!15C=I)T7GYC5;F#ijA$^Ntdn`nP<0GTT_DTLadtjn;NnumH)JL z>G-`4e$bS}F+Q56d^(U$gLpwcw+P{vi;wUX>ov7869zla(-XG1-Ualh8-jAyxEUel zoh={F6gPdidGiaQBp?lG9TwJB(sqAuqBgYMpH95C+wQMI{HwOzC)<_2V#&-|`m$3= zIl)b6ZxL5HNCy?r5;=Dt6ydUie*E?KV`8zF{|a`M{iEmwsp8;OnU?fGBIlSKzB34; zM94Pr*pu9ThB4N*;^aXQ{qjb*Oye$qIIkFd9iNnCyS^ml9I+45 z4uRvOB{GB2jdLVcm3xtIMpWa14UM{ndmQ{GF{K!1i)wufC(Wsn|&;`@J{w< zZ6v$*miR5BYyV+l4Z(F*QPUc@97E2$@nQ0?N!@t}bi6X0P!tqTl3HitOK``^OQ zMjsCQ?U<%omx0}a|aB@D-ApVZ%i5(e^b%>^!;Xq}aA3{i+MWd+^V$VfZv*cRmDzv&l01kOEg^I8X{ zOus}gZ=~hH#8B#_W|*|6H`8)uGL$yKCpCkq+Zi;W=QKmPY9275r!_;lP7FgKS{fj@ zVhc-nb2F41RAJgPnxWi%4%60~q11Df=D-%~5svD`IF?j^r8G^UIr#5EOYt4s#8kMz z`9I{f5mOI){4~N((IV%bFi_v%ua=A4c znV-g*aSI)5^xrHVaa&`oNsgYXbDSx{gr_56QR&{2NmFcbO&$-gs<0qC_%8V}-x#rL zJ$ROv=2gKj@Mn0sxz#I73jW7P|1AQ5J4s!uK%fFafp$P{Xva&wGmpGLWOUrM`Fb`sJz=5;In%b=V)`ZhOl57m@ht$(t|_zXj`n^@?B8w6s(1 zu>cc=wOa_WPmF*q3W)YN@!P}?1&;aT3$}kMQt<-Pt>i;9@V>DBU$~@2Feq%xjMUN{ ztlOdeZEWZEc2c(C+M*l3srd1z0why8x&fJ4u8E>LO(4I$o8(6>fm=#~tH~Wm4|-oU zypX9l)>~s-q^p3!nwYx3inJ8xUTs=hpxR?{ByRUsl8~#GkM7gBNCQM>4w}5W8YNXOA-hhTok` z04B@?xTgfJyXZQ|@_F{ulH;`g+tH_`FI!_wj84|f<%|Z{!OwX3NsGcqAQAa!Kj4c0 zfE?zO7~>YsCzWd)UR;qh!iffkiBD!}B_l+<0oszQnG~WUz%K4(m@U^RX&_qgjtIDN z1%aH_!X*x`0h@y$D|Z4(Y7}rkn~S-{Y0xS??r&gb(wiN7vx1Lznh8r~Fa6rVV`y*X zkPt-jc5Pa;1+_4mEMBo}wNAN>vtN*cA4S-EZMBxmS~L797`2u?eTF|ySOB9uZE%F; zKhDO=I%+7bfFkhc63FG$P(}lfMwTZOFEpE<-U_v)WLcLDYUl-a71}En%!;1WTvWad zB{c!;oc%2lEDDMcDh5BL!PHNL!L0h1S_pNLGg?(Yt)W!oMM9s^P-^{Vw$eVUq1UuR zS>3NRluFZ~R13K0Bv`a9ArwsgYYnEdB@AYtLPZgt9r_JY;5hAP$fs`SV6)stXUl)9 zrGS|>OJU)^(_m_c!ou0|-%D_VdQj7v4NIPqXREzc_PCp!}8>c2^l_a0JCdSty~g9wy3h16ZQ|gq%o&Sj5)W9 zLrou}Ut!GQRwKF0zLL$RXH<6WN-syfDA|ZE@Q-y7O$gL)Cq8KwFwQ9WwuT|5#iZPGa0>3 zfD<;&Wa}tvIRVzRuFCF~(5K4ochfpvWcQ=>GHcAntPU$C5^?EztT?E)S9xDfVMTAV zhAI*qhj&@y{NIF>RC)Q!Fi@xK@hy6n!#ktt6~+0?mX|~oNxWx!V)moSi`iF%RLoy; zGK_vAKH~S6AU9Z-#A6CK)i5Qs%0p8$=6K77G9c#S?3*)`DnsaPl}Pn6IH;7M>x&|W zYDv~8JfHM--ppY8ccA?y5!duoo^n6YHh0@l>U8xUYuCSPM*f@b@1S}^kr13X^l6;#k2Y-;7BLQ1Bqr_6BV(SPa zb$4?DlYcp<&q*eIT#}qx&T*w`|#C$h48 z@uPbUez$;2@wXmshQV@)`^v(`-ihzX=kX_$Q*31k>1^8ZZzdib6=3=tjmTs(&=w=& z6f}pVQ0;g0+pEaHacf1&EYm!iF6FxWy3Lz4^oHml8kk?c$gk*e(c>Z?HvZh?N&(3E3q!b_qeYu>;nKC)^ z<-WeWsgYTD-9@S|m(BYr=5oYjM3#2x`n#}r&^sdaCUe|5xE6~TB;p8!YWBWX0P z>pk3hqhqO>)}bQ;mtC=)YCN82tS}MK3wa3^@TG;bt)a}qZmY5!-`Z&-MbvK%4b%=n zTy10|A>O?gPC@0hY1Yu*wS7lk#)!3s_N$ewp#y7EN1lTh+HHRd5F`^hs-eHP!=LT& z_eK0>G!L55oHL^tjUbC#aubl*)(F8V2Xn>{8r@JFOlZyl0&BB5OT^pW9B93w%^`D& zCzAeI;HI)!$>zXMb{h4c(-D7W#IHQIislG&L34z;pgH_5xqi~-kVJBhX^(i&;~fn; zX#_Kh^v{9ppWR2^BHn0&R*W1aVf)qQvww0U`@xHI-`V(T*^^~+=v&j~JEqNdZ0IxZ z8=YZ~azR#olRZkguX?OK%8lsik@hIpLe^j)N3NAr~(&9{@I z`G6S72i76^fEeama@C}W5#EcV{Y}oB^N5&15^l<>EF|H+zI+m?b|tY=Ex#Uwx-dhM z&5>kB%KMUDcOpJ|%OhYMS#Py$bqg}!Thrz{rp%hojTwABOG_CgKgJf>egZse>EJ+dE~hQ7nxZtS>ZJ_6>Gtg>#Q*IC;2U$y>OCw!kL}?DsbiPdGWAyhrA1V1R}(%4P7F1go$(!O2W5q%jp0sT?L^ zs}W+QOegkB4EY6s&8aMRF5#QUvbJ03sH1IdH)z&&SW#$fYi);xlq~C@w2Un4_5-}= z9l1*U0*pl9Hnsx4E8(7r?+@|C{i&=!hVv4!k>&U^$vPvTnq{(8UGNJLV%{5%`-$*JEasp~(wzq=gIK@xD5B+ZZu|8pYY}BJS?S1P4g2g1^chT`jcAxT+@p?!Vke=#va9}7 zIcb}ed`*xI^aNXY3Xr9C6k<@^EJXd9FM?{}TU}y!v$)k(h?1tA0G#c_eL3f|m2#yY z&C{rgr#TwGG)3c==4SlTyo_I(lkrRQF@9+-#xKpo_@y}*<~%k3qC?ER7(??eere9d zdD5rBAp*u8LaP}tE{?Zh@BeAt`|rl(8}pp;3_tPlDflpdJcDewnuK3u`VMn5)AO3C zsF@0yX_{slgRV~N5C@70 zh_M>|pvrM3viui_SI{Q+Gry1Tu+YE{5tl+gBGMXT9(k_M8e=$KxX>{523LSAhUN~h ziX<#{q`@mjOqKSAYPGmGbnNg{%%v==xO$u)^}rs;e;zfu1^-2Ss{3kiCWJ#%HlbNC zxBgSEpai~zRM3qJif%?lvVKwfp|EXdU@F`dZ7blG$U>&jJ@NxgloQ&)X>Mqj-DcqL ztYy~$9dP(HpMlFRg?9v3LNKfrMjl&B!+Tt9bfhBX5k_YbcKHdWX_vDmcmh0zPgm4; zxdnZJn}|{sJ1-NY>;DmL4W^+-3Mt#dLmU2|S^<-xsn;r^1tVAq$BNw}iDtDC{4a+@ z%}5Fhio|WfgoSQ9Ow?Sq!4!5>r1%9e))7K7eW)Z*8}2Ql3)}j&-6v7KRv}%?l#h&8 zh}J!8Gx2wMtsj49*B}=Rt*B-2_q-Zzl^U8q>=e7pzE>&Mt3X^|yt8*Zs*?($fV#;g z{dm7a!H7g`g|1iwoke?Vc<9&8@&{oN6AYkN_<&10iYSppP*lz*pv89LCqh?nKA=>( zgJIPE+`4M~2EB;~iwDVw&>fUJ1AOu0CSqg|*h9zGoS|Ky6g)0v)gK_CY(?IX`dbKB zbniTjhq)a8KT>?8J2ZALjs1(ny8cW2O5OWl5x!e%jMLI$SBU6&3<=tF(cKp}Ust~) zf5zB}_PA8R7gdI44fpqTX)F9+W8f*UBljUg*0Wds5e@Zn$-blyi7^G!3~6uKL%?$g zaM$D#iONVe0gXx57emZxO)m5+95pIx4YDIr35a3S;Yu`q!S*Bzi(a2i6c*v`P9kTL z9O-0nI1S}aT7WAj`&{E}{2B$!gAu?}@{I>i%hwH_Wx=l&piJWl$(Cub?ZM-c*Bh#= zeCH0^-JR`jYjmROHn7c=!k)FZrCWJMPa@mXLV>itooYhzAR)(wcwuDlbuDp1M?St;JuxMr2m?@oI*_*7U`XgE|*XwK@afRkzs!NTQ@ea+670*ils{H`(j&|NifP1%W!m ze_h^58>nQh18>&w>>U)d_>qtgJPtJO&av3W2clzt!npQpy9n?TDyEp-G4*v6>%Ri} z>}1fdf*xLdg-+FT8+kH1w^3;FJ16!Iw3GiP01dGrZ;LcCZv*zj9hn9XpA4-lhm)G{ z@N(Ry?xdq}_F)ExB07K*U*6;=dT$c##K?2&4UV*9bVA^HwW$*W=MTrH<(%>q2+k-BbDR{~opln)MmKsShdt&Ar4LW_DpR~5iFjPm zHUkV6EHFMvmGg%WvFf|riizo8C>@iVHpi+GaG4EgKIOpJzq+6rNk^O z->a4fYwk!j6Ja@T_;pr&!6Y@Lw1%N%ZT3)7>+o82cv^=yX&q!0T9XK|dwm!JL4-U& z7nFVXMHfJ$i?v<{ep2qx&cl$*{C}X$(DAv-X%g;GbtNtM8rUL-Wa|b$0c)AxPL}2M zlNC3M>Zx6Z573>1Ok%^MB>m0EKD9QOnDrYJDl8wutPQ4SCsl)5O3ct;$DfHl;#T)x zu{JxrG&BVQH~n1Z9}Ir4#)pY+(Nt1iaTq# z&#L1*xQWYS95TxS!OlMwJ2Ey&-#iSp6!;YMba0)KEa|-y(O4b4apgm3e8>$WurL22 z!@~%(X6WcB=HG3GH?;F^8E^}|)0U9NgV zXVs>9L-pE#H?*$imZ#6mlot#oGv(3{ZbO|nl*yE54RzzmUoTTG)^`J8PGqxqdTp|< zUx@lU*Ew!*HF~*&ci~u`=ASU%JWfhI6P4`&5D{tze-cjktLMpki=@)tj#9;_ib2wfGeJDRU?kz9K% z1D)1yZZ%uv)`QXRTC3eSCa@s7G+h8q66wK}Ss1EGt~ZBWzGP5_E<=t^=$rG4zXOY4 zg2Q>ik|!8Z^khW0I68}1_2)yj1Qm6eL_UKPIbP`HGIf$Up)%aT^Ry}#^6bvAqQ?7EQet@< zQUq^bXrFk&GCMi;9wZ1Zh_s=&Rko4B3=pCHo#3zj23Hf~s>bu0R}-TwJ#*9-o3TLe zB|d)I#jvvKnz#9^=1Bswa?q6%`zGq#lk>^wov0HEv?Z>*5a%rP?aEHJ|1~JK@QC^; z>`dyi9kE`FT)U4;EMUbXr`krpiXw0baD_Kn5w~xr2v3WZt3YvNtY+$+U(bHItzJtu zCR&GV6`OeoK^!Cdp)LGpR|fFZ5drVB#oWHvD%aEow%2kheU4S@!Ald(69u(roeGp7 zd;${}og*JoQ2}-jnP7Ndusu%E0VmXKyxpB(pFx3zEdkZQi38R?zKa;EF&ACqrn$ZR}}>Ql=R^S9>DCvVJ{0iGjmody;!j~#^!8LH?1_KP0l!W791-+ zjy(u$Op$gLpj~^RU2(a!9<-AVDc9XpijTtlg%?+(JYYalaR}RN}>)yQPYlC5Wj$xg~@BFxuQ>M=|vat*LrP^uTJNlyysrueZc@ zz7%5@|18|byY4zY-$$9^F@)`nwuQD%OE4~QdhTHv9ZSBz96||l%9JJa;D=45*joIK zz>f!0mg2{azcKTJszM$fB+|?0x?bGRvIPM|8_(~f^UdPS(YdA>T0OKGTHS}v;2|)` z!lFG|?#1Pnd%;l4y)ajV8a)IRmnZLr2}IA%#AELU7^~QSVrf1T%N}*`mUgvyTlWHa z&d`Ej7m#miUJ=J@WO<#&WXBCW*fC(E2RfV+(Q(;0pK!YqV~^%o{wKId_BND|6IvL@ z|0Mj~82kWTiuDryS+FEY`emfR7{fa<5Y=EN3hVxWyDSyXbpp}!5VRS!J`I^MJXe98 zj(r_Tqa`cY&3&E88w8HbLq3_rP-e}3E|3t%?_>DA3BR}DN5t?u@*(^gTIu8M0M~#n zo0GDUHefc=a!xYq6!NM$xd~fY<$fGdW;4Y=DU7)RG0EU+5M_GH%GN{L1|fR@e{yk9 z8Y@!CtVzpLO#*IR%Q2F)$QbT`JiQjq6CaHo{7j2>-vFrj@Bbt6G`pgZBw@NGvO@qX zbf@$o>_|-29fAY6HDHe)q#FgV(T#$Gxlz#CRe*`Q<{8pFM`@m;HP4ZnXEpPLTPn4X zBjK=Vt z@D2`e>oEYwpN0A`W$PBG>Qp(z_akr6ne6iz2lWFv$%(Rkwg&sNk#PgIQXRW~E+T_> zfrw-`71jq>fOYZBQGTfpsBj3>FAOJ2Qvx33a2q2q&R+j}DX6;GvWgdD_Z_EtHw(qw z4RYEPTnhk-7t2sBNL`!!_aW;>R$cjEdV<%#vyh4M9lEb;kyWMi@QmTws&dXmhGkxbP*S-|#_#a`7wnIMg z8fYNXUeJNOSzZfo!A7JGPcgfjg3sd>_ma1nIMa87zJ=CTGH#;^>|Mm*l3o912tu?i zf&(X3#~0OR8~;YeRQYIyGVKl4UhB=MdEQV@ZJ;~^8@0co-8!DPB4zMj{3-ixfWw$D zgQ?HFZM&^B&%|%C>zMP;)|UU-?rbP{o88frYM;Fs)>?y+#tE~=ICw7rQW`Cz4KNPF zdl*g^WIcNn>s!ie-B_8Q&<#1{G5jfkUd1E(_Ai=V%i`g^v$qAi(wR10sI+k+3)ouNVBMkR;_^1WFu)9=d!xatTrQIJSlc z?*_rCv$X$arjz>Y;C><;HpO9`D4(*}Mfe^>95lzNv+hUe{&;XQ3L0&I^Q9U~K(Tl` znJ2e`g@7Pfgg=?`;)J{tz3zudkJHFiynMbG5s)?15$xk4!~MwR*~z#Zen_Zf@!*zx zf;OOXyssr;n3o1sULTIFI7i<(<~yGs2Ar?$z=yM$khbtyg_UX_o5|{@MYHQaTu@-GY8? zfnm_xhGRPhdzIM19XMuHQ5<8MCU$p61%lo5$fuFZQw0AQi8G4-M6d^wjD+dB%dgkB ztk*#q0dyuPydg3dj|Wgs;&Ik)oL5{};B z+4qo+zKxF(LpT>a&uMjwTv5>MWhOu`FGB;+DdevMSPVz|b~&P=-33-nn|bBMH89!3 zF@S_QX;|cT5Mi>Kw>-smVf4K_20>e4J;T4zw<@U)O*TXzDZ#HoQ6qN((OPQo66U$edQ(Mn{!@#&H+5FA1%oOVFXysxa|_GA5ztZ1 zv!>t%3I+}R9Vz_Bm=DV7tXl}cY@t*D0TGh&LM;d~Ee#>d1;;YkFGQ30XrF}VJml~s zN3^zqW!FN(=8|gBy&N)burL1V{OrVN0MJjJlVB>vd!%|1l*f;&i0F^2i0Cf~KYvUU ze#7|kh!woT$zwAahwur=)a(PT2z!>T&cb4p9UDL$Pbc@_8valK z!hiPW*s&1heob-@MRd zQ*aeJblulk$Pm_%DNW=f5gv^~->stz#rZT9`zPRh9matsnKM~AYk=;?{=i9NIRr;j z*fwjVy@asA#8ur|Xa$Ahv1-&S#*7+RY6i+k)4&=7{hwiRs4c)C9n_e)QNWU>fdovW z=Wi>zu_r*z;jQtrA?0F7y#~!l;BJwGcgg8{tpO8+SRweFjgfyC@X%PnHnwKg2)|En z_#*^LM}^)z6mFRfFCrij9DqW*-Q-w+IzoBP*%V9zP}1V@w;>`aAh=uIy--2pKxFY} zp>J@GPUdLat9tcA?}(jUPV2YD-?95JR!0c|%^cxwz+E}VI4-H22G_cYHB0wPsjE$? z{6r${EQuNN-z^W=!Nq13&0mnGG-eq zi7#cvWYzgnKJDhm-wuHC;EWt;BTsQGw622U5>lEvsLyAgsmTPHjv&)a2*K6hKT?$9 zZtNW>bzZf9z6&(&9inkw&K+k2j+LMjfxhZn?fR)`t4tE^7(t21^{AVOFm>+|ogMmX z8N2>f=G2+QU%|CH7%-k->bL9v49m>MBjrU47+5wHB;{2H?fS`g8UUoFk@TMQ-zBHZ z?L*zhSDA@v#jfAh%tR0)nG%(?VZMauC2P~|dg`m&Y9k(yD=$c(FR9baB{XZ+yDFDV zX1#0zMz}cJnS#8uCmOgZ3ynQ3Otj?14}~P0+>~>?u~DKHyTu@8<<+jJbB;jYZ$2Sp zT*?J`D8?=ZJ(xiXDPE&f^AcCdaOqB}{C^)omQ~`Eq>ro3T_2?67E|Tspj`Ytxy(U_ z^-M%I*_y4R{;9p5WPygUFv=i$5DVCK0-vp@2Ho7{H&69J&g>9s399 z@kqem8s$2u{r!7iUgm(W&-+@qeB~sPHlfup6e0nS_9VoDz1s|DY}rb_a@y7W zO}QEyCLG8R>O8sff+;SM6e){{)*HMV1YiqxB3UM;^FM{M)3#tHl29N}d||ES z$=!Wgq%_zqT`wuBvvC)g(H^j?aTS=9w8?)js^3TeVH{n@$@8-dKJF|NV_8`Ps=4fI z(HPl>Sc~>khOvYBV0%?ClbeYyBbHLw#r-@r*X^&R%Dqr39KwwF9?Y+@Q2!8=UxE6C zU4XT={q+#vA{TWEBILzZY%kRNdh%k*e5vwIT2v-6SnE$6=$av#djqGF3iE%j!-J)Y8ep+Op(OcWu}5t`TmIHKr8R)>>0z#syP3 zw7tq(qE%vfy>C}k_=&D|u{ZHI;+_`B;#g&ky@CJ{H8021z@y1}s|xOW>&lNavV=r` zH;H_jn@e_vP~Nd)(3!+=K{p;YqHI<5zopKhE@(Iu=}u) zsv6qfg|*i&?}lNE|9T+R{{qyysqz`-FeS>PGzZhNZI);GuLDM~88>-(H%obVTP*B( zyp0N)hzvI(k{s%8B^D(d3{32L;jZmcxKUE#fhKDBNUushIdv#~Ke(xmxrt6NVFBO)@fgNe z>{!5TMsj)>kI;*z89e#GZ-g@tBy-rm>8v{e_ZewrB47i%AsC(v;F8)DsdFu~f;p!d zA#k-K;$_J2y zrYXSiikCKNyY_*k$QR+l*L1Y#$vH1lA#fMz-ss(Jlp=a}95Z|wNUh9teY}6<@*#!K zfr2(426|~N#Ia8pikZhlpgazPxN$V_(|7~^Y$R0(%{a7`iM_FnW}J18p{SO2I%&bs z{}gfoT+$l%Po--nF4uAJ-X!^gEf->623T=Zs}rn71x5eONCowN{WI*sTY=axs=pca z+0H0jauH^;UlV3?>o;_!8)zo`LNf{%%dq?0;Ahl)qfLbCOnmWX1GGaV3Dqq}MBFbT zH)T?OBLb|J)Dm6qG0FICCBso2Y3fCo%)4aW*)E?##bxBFPCOsHK2tbK|2eJMxf%l0xlS0Rbg8vo4jeS zuxOTB^vp)Di?xw#^vYgsCec`fu0bu+?rzqic={&lIRW+L#W4H>P+W|B96>GdsV6zO z3_@d!64aZ^=SRj1mdT+66*P-Y2ujVk=!rsK-X~Ef9!(sqYM?^EI=k#21K7&*bfA=H zhyZ$fvp_sP?;ncv(&MmP#Z_?4M0H#2QtDH_iRQ^VjaNLLLEIL&7ecCz43Kbm z>~Hx2(u|&ir7}+h7E6!9ekBrE!8xYJRtz=&Z0WB^a>V2{6!IQUP^!Eq4g}z^qy~s% zsZ|`O!)(FS+q`xq9j&8160Km(c&WZl0Iq7!Ss!G3_1IS4e+6qOg=jm;oJg`ewq05z znHAT%NiS~fG?2oH9Xw-@JOj^cfF#jGVibMm0Bh9|%RdL+s-L&H+v(Q#CcvNJXstu# zd3LY~P7x9F{tArK^%z-lQJh(9(q1JV0|SknBx9i^2gp3J?LANcLx}W?&b9BrY4x0z1MzdjBc0>na0@!HJUk^E{d&_}a z=0ks0f9Onu43p$^RN#p80kL>bK}Y>PA;NS-b}ponm?1?l=v(Q+dsx_W?{>jqdm z$KFJkWEVWu6dks^ZqQUSh7CWGqvz>x9~ryiW$ggrvLM|P0Ah8-uD|;p(?3x?oLzr3 z44%A8Oe^AEVeR7mq~XAV_g4QzHatp@opNI~vEgE1sPR7hF@nBXebnD@?<9~MGwaJ9 zj_?%=g+j4$5=!659x2_}5&@mjH-Q{*dvj!7E7eo?g@{G}a(tbQ?{}keHWnxbvB}{@ z5!^IRMlGo=`$1)~KMFCsS)8DR-o21$KhTQgh!vtWH2!@uQ_(D7uTJQ;5XW;3Ca2e(m5*0I0#3R?wR#2Awi7=+ucpr!|9)FvY_d@GT6y zk`)}?49o|oGxReIJv0mrAZm7kat4F0XixUmX4t7=BhCzS&U1oWnR;!r(6gFRagDk_ zqk;etyj(Wo)tVxx!W9licWB9#es3lZUH1|uyOcG?NH@41)vbF1NDt0Nf%9?LT_Wt@ z9C-00jrf8(J&}SP7K})KgN8{do^|w~5PIxjG#d4`wy3w$7b!AsisUzVhsh_NbEBU1 zQO_7X1NCY5$Id1Py9XQ=Di@a}fz`oF1WlD@IGPQ-Bw1%tN}R8{sus zHXv2C+u8uNurtoc@~KdLNCD>~D%glWjd$XYL`GvSKwt`jjBco7Gm?55mf-nc0KS8F zA>J4`KCvb1%4RkW`s0uQX42FzG%WyB+l0eoyR4V@XkuYw2wBLZR{>ybYho?QCQ?ra zSu<4|!bO|4p7LC49d@OWT->P2d-?w+Ni< zkx{l%Zy~%1}98Na&%| zhmo~(8wp-Y{QzqKjniWXAEZy`%Uw`z+ZbaCS2JCNWVky*X(d0-mf6h`FJ>7a*(5?S zDDr*=D;bco_DgUl?BKF!)a7kaAEJ+A%@mtrHE0dL!G|@U zdOi~MToLtrlpZtI06;eYT!-~z7uA%$s|zo#yJ!c#mbmpj1mdvouL$?Ykh`+L4L;5< z=J()AID+pX3S?Sz3z1}vpE1K#ho)DPK)r7i-wx_Obd;H8%0j5JMniy;a1u&$fpj zq$!=owG8iP(vzb}ja7kL9hcE6XfKBr&;;)-qY$W_i8u!c?|6$`z6=Lg7~?&GJIcy` z8MRf{L`~kcBsTXrwewwJ3jPX;A|V6mQc(*tO|N1`XrL?h34C$o8_tSw)CsF=JO@md ztkGu?082v8Q=+j(*?P<;UZNob(;6jK@hk`oe}tN?Q4$Ar-W8Z|HD1wT*sI*)Mp(S@ zZw>nu!)Rue$hu0**65QA!?r8JJRK{R4#TzD6g&7SG6%Pzf#7$Yutg@_2z?skOvV$;Xxsp7ujuhvM7)_JrNrDDuc1;mo#64 zC;0k=kh>UyUXe7dUTJ#U>6N&TvOpQHv(Q(#&JVKIR*|**nE=BLNSPs8x`_tbMBa|H zfzTy`mVOpqOVS7503fj0vVsEg`E&56Nv%v;9y8QRkI8a3oAgcmNtgS*;2t=zp~Luu zbe>SF8q!rktzHGQoJt&02ks7+YH(&xG8O8(K(Z3X=eD?(ux3pF@-{Nc>tb^oO5c2M zkcZ07X8UC~V<}hDwiWcD1>utWC!i326_n&lE@Xpk-)9@SJyIDfVA3GM1Ob)PCN^!Q zX&UZDVtd(z3aKc5=9pmiqn6m45PGmxF=Q3P=c2wEMFA#yIbfkO*U_g zGcJV~-*~E)s_R(N34Ac_I@OhkJQ8ki3{@11TmGGePNE*|GFfvIs>)(J0*XL~<8$rsRn**hK8bPJ{F8uo{N(eKT>dPh; zb^nS9rSB!BA1Hs%mA~(izn{WiMFh6Uw-$bmE(@*(hys-AohUb)f_9Ax&YDz}Dlf&+ z4^kD*K?ni;2W2Tu&B8%#AidtgL60YtmkG!u)`OhMm^R{oQTz2-=z zl|hW*N6>F?0}M{^C~1;Hbjn?FCqiLzJsXYzO?kJ)l=qB@qWVy^EV`3BNuVbn-kT*@QkjUTcBS*N&Y31kMY zdvjhPm%!OR++xp)a2bzC^&GBQ*edc;q^z^}mkHQz1wTSyIhVlg{4H1|5S3w%Mxqaf zyDu617)h&{NcgVVKV%6UR<(0dNggy+z`DHTY5+pXfq9bP?)Uv;j!tpaCb0w=&kYqgOj*UzydGXU~ z8d>@^Dv+Y_9w#zvvqXv1a!gL@4RH-+?CnCAT*)=x?Icej$%a2zX~+1Z{|@}fYk2z; zzhOAz!gRP^E;e!&GGM5KjQtTd60;UjP{Hx1<@`>IbZlV}2;PYoG-X^S0Vg^OoVuM^ z;2^{CTeAQR#V-dVD1+Er92AnVP6-r;aU3T3?NEsdkr|fe(TU>n&WWPOsr1+uu**>< z9fd(le&QdDfa;1!TZ+RA+r|hnI}OjSwFS!5L|dAX3xLB&?&<>5ZqiS6jq(Z zAX>^5%~CW%O2JX#XqsyxX&7PBJQz*$rAQh^m^9ysrnxVYh7nPS>rW%n5z!!*=u1pK zC5q18id`LRhk{i1Vbak%G!`xBmP8Msqq}pv`@9hChzp|&$l4)TwlFw|WOe)(64#YmlcMWIr z(_xUBpC09G=7L)H9I7y;sH}1}KieL%(AoS@FeSbA375CcojQQooUxA51|{w zh1S)fM5Fkz{1Oj-qE8r`apeXuN{Z4Tjgl zspvJR3w)^l4&d0>F>va^8+HdUMmNp+aYZk}5E}RQVX(;^7c67$&*A#kMWE;Ppl1{+ z%U;mW2T-VX6AhjWf?g!9Y#+}yVe2qoPGTmG`}@NOGkE_Di2vyx2PfUPaOphM;}rFD ze?p?L?+2h0J@KT!H{n3axsr0p4T|;^r-aBPYA;zG`i_L}(l>>^{op$#75eso@8YI! zmolE&(n@>LU}5UAK9L!jIDi4sO08Uz!5S-)46i8>#w-GHIzgZ`t*scFDIgCCTIB$8 z${zawe`Dl1kXm|N;N(E!ByNbH#}mZ@Wbdayp6T+b*wy_dT->RC8ejhz{OJxoL?dNI z?TKC|iHK*BAh;W3QJ&=_0h|;33L#As-Y~^Cks=qT2>UQxsO34Ns!{;JngZ{0nU$gv z2DN50*5K`JbZN)$1o*j>o@u^xhiS?SmB>XAceslKBkkla^Em{-UlZit;17m?$Us7O zu8d@a$Q0cZpP1UnqVr;nkB9u$iJc4p&I5jRLckt5?);kZ9S{LleyQj=5|AO038f7O zV!Fquad7nBQ~YIdqA}j%3jVx+2+OEkk`SE9cyMBGMSqU7KgC`=9pb47Fb>0yvf?KE zdXTKQ;|Fa*3`e|UBWXm0hXCyP`BHE-V8yXHZct|u`m|3zaot?-Egs%yOZ<;wePfbn z0AGLbe@iSjGtNVXN>4&Ai|Jg0M9Q7EX1^&2;uv)zzi`Y(ztMQQ!#G|DV%{2dcrHG6KKdb#yQfER z34Fu?FAobmzQhL$yk#%oJMstoQF98RaAR1$^!o@-=$u8Y4$Z9{ioYvYehJ~!r~MIh zg7Zo`Ll}cp8MI(v(D?^{LcEm#X}uPhUve{Yfz=?KOPi5Tv+#Or!q_7bnJ-F-$aFCy z5t%J|6RpW&$y^rMnj**!m%a}OX#xkSQ*IZ=m0OTN<^JE|YX8?5r%wH^7sk%cCU{Zs z*21os1ElGqtP##q{r+}R;B0Sw0KJPVV5x;t5ZGJ?S6fq6BW;W{ui_QcBh+(spi78d z&bn0R+jSpB8qS{TOKmMIB>TCVT!pn5E0+-Q+F?<-jPr&ks=I_J>`WJwcQ2;Pi}9=B zSHkaA*5p;qk(Q8D)%oX5=zBCjkxgBg-TewPwP{ z1(EuO;N#LqeY48dC@rPRdq=%!Nz|LcA)oruf;KYcC^jNEGrR>y(kSZ>b+0^@2VQwD z>3L*TygEFh^HmJd?l@FN_|7ju3*j;@!>a5-WkkUu z?WuH>fL7@)lv_d-!8hojJm$u}j|W$Sc}pRSjV zA=cq_%wk`}b4037=LSuxysD*2Z&v|TeWOa}jI3zwQ&qZfY#nX9XRoPJzr9nJK$W_- z$&0=2Xq6GZ4*v7~@IWMl727`)|WA42A7@Yn^XyOxVA*Fz>iSp(d*7jkFiz z_T9X2FHRhI&Ga5j3RclS5+!3(Zzo2>2#4R`&%i~~^A~zn0kY$eaz4JR2@CMXb~(m@!s6}J3Oh)z-_BCtWa5wZUtNPyA08jPS5rffps!Bqlld6$6MFTWA@6JjqD zUfnU5qMMMV2wBq9mz1V!Jy;c_1a|;m62bCPfJ#LYamf+_`9_$_;;kDZlJCw+bzZ9@MNeOdN0fN z%4x|Q?g&2urSXA;DRP=LH>He~FT?tWlL&*vn#%DWfB$1xiR609JDI}dG$|hM%*w$( ze7?x#$`z8xV4x>#ayMJkm+jNW>;XE@AJ2lwEBAUb*224hsh`Y8ku>?$#xK#i4Dy$rC0vC~+bAf*hfYBI3c*sMY z+FE>h|D9bq)tQC0O>E)**4SM1cD2_M|HaRPxsNks!yJ+Vj>LWh1#6;0uoWnruLYYR zC-^VXs;PsR$MwBX5iV0>M4w$;T`I}L%Uy%^YA`3-vf!=W*t;k4rWXL-AMqn^dMkbh z0K$FoI}^WE`0>3Q`p?Gi){furke*>^Kx_m@mP6h&00kqNQFnRQq%fnLQ{<8vD@Wlz z!aG-oA;M(HO%Z~X&gzW0aq8P!Qmq>uxvGUs`935|gv`brz$WKf>}0yiU6SS9a0!KQ z7rg4K*H2)s7e3-2D;0o6Sa`lwYr~}#7oQ zqSD@eNd#cr#i&&be|fk&e`Q?%bvDXLm4|V%NgO51KT905t@^%f6Q@Qk_@bvn#^o>M zK_qN>TK^Ag=K&{IRmK0wo86h+%_gwPW;YEsl!V8&AQ6~k5eQXK5d<-jB1I7_4D1p? zW+sFp3IwF86p4f2cyLc`@&%eO`z5MB_GKK4T1oKBv7Mi^(ctJ%B;HKHI z0u6k7wmk?>!{=fbR%4$AzCM~af3zIuB~!1_5^Q0~=8f&ir99Jvd^k!0?0Hg&m2K*1381-O-Z^ z4>(%P!fv$8jj^>#oy)p^iW;!6hTE7PO|Ar zd%ukNF4)A6dz@XaW%~!=7>NfvgVEnh{9J{Erx50#65~LH>j-l&=JAcMnSA4GhV9KU zf>h5tJ`xw;1WngLo2I(~#Q@5!Lv*^pDK>)Ni(T^*)-As1fhM|MmP&<*!X*On@>E@n;9I ztpn~u)gH*7%TqHK@!x~+YjHKs-xK`{-^as|I-o)av&WX+Wm^PW=InbXPRG`_xa~{X z#{2$iq{N&?>h}wA!*?xywnj`RAS}041*AWiYdoLtq)2+UOT3V^yyS9POS;#nj0m8f)Yh;_JdWH~WN~a; zR)6T$m$AQOF0g*4M3}7UJ)Lbc2KZ>|FjC*X7&}o{%eC!`)=~aaMo|q*Cdi9txAg4r zczfIG*{yk0#OYCzU2;RO3_H~ZtN?DD3rb7L(^H(GTFV7!fl-^VVD`zs2YKud+Iv@r z?*)a~`BZk2rwV9eWL+ekee7%WbNXhhE2gbDlk%5v?OAK@>ZRMV$0)zLcQxC&MTYdo z2%okP3OWk&umMIGZ(c>o8ItVZzvKezh^OZS@YV_y_XQ8(p%gM20Me$j!tmOv>z=x|ez%+no0^xG8ki^sbgR z+oqRYHjrWy=g2%R$2{j?f@3b*5F_s9xQ;CAc$X@G?QW?e@>R~}BhE4^z}c<%Hhs?H ztmPArdmLw3r0L9Ocb_F2s|~DlcpA@khL3C<>B=Hu16$LXDo^gx@C=wZJwL=(Wma=L zT)uZ$CYp|cmR!%$C-T|c>SaN;U%H&iIEXUz%dQQ{+a-S_5yzCj-Ae@(7A;6 zS3~7f=sZFPs-f~JbUrG++Rv*f*V>OEritJ>Lfk}9s5<5hEi|TCT(OH<;S7L%ucRXG zbGUU&zrUYF0>b9|VY6LWDqXh=ON|wC6vm*U!DX=xj@eZejjRM_y#lkv9;LK#?N~6@ zZ?2)exVP`jYuAZW(R?<{@C0IKVtxMxP}4LQpCYG4^Tdd2zO9>^j`yt$JxGeoFpc&~FKf@5A5UF^{tV zmcBTb;Prf3VF9p0&0IOKJT{NOii!)u4=4!!Eaxp-oKFNtCR`!&Rfxii3slHQqe5iv zQXvafh@zuHRyY?*b|p}xnR{$s$Jpg$S+|1Fh0Z&o1Xv~oob<0!AuW~NqHKCqc6(nD zWNmEPGW?L>9@R5;l?vOPG`-F%^OBOUlq*J>hk!j5fIV}rWd(o*5V2RB(mbSC5TyvO z7YtJD9j7o40sF)O<~c7$-PJ>QljvxPUT#(yGx-b?+4haInTLS=;sEo+mAhk5I+BQ@ z3|u+OIb)Ft1+*kzOw zeoaLYWXC$jE~*CUP^j)qr?!q310aS%epgXR<=b^;Y&+5%k2oZ z=ngp&n+sTyc$T|2d&X`6jw1uQ1ER!3?V=6Vsuj5?f}XG-wI&y|mgL%#8e|9Cv%S_w z477S#^kJU~i?=U2arx0VMB!(%ix_6k+?kJmjs37%=cIkorKQ7~7N=Dad=v=~rdsvQ zaz)&o-HIagvtovS&<@v`Zc=FW`1^?3vwt9f;b_Rx=dh|3?mdhY9t#5lW!qv!%|npq!rNJ(tV*ezA@R=Wr?gVYB% zkaPuu+bw$FqYKZHYSSIK@8so^U{d764 zmG|PPz3GgXhG}LhwEqtfiY9#l&h*^iKKY<@A>QI+OuBoDThg1_7l``s=;oM3xI?=J zJ&QXk${4g)*2^iM&vO=)$l~(A#5;qMLT3bJIUDDEjNvhu6J?>0tyPG=<~5wR?F6z3 z51!Z6x?uP$%vkf#;QKbZ;;md3g|;EbM0Yy4E!>t+2y%9=nVIvh$joC!b=uAjoou++ z#f#n$ote9Cp!XtBg5D3}K<~l1-jTcD1!N<7DY9Exl@{4XztO$Y=vDz(F)EkJEnm!& zFQ|pvLiqRtloXT{!JM)z*CSr}xK>xhbMW_F5ybGRgwc~B?iTdIw%QOU4r>lvm8({i zA)VrC5*%?g=INjQTji-J^?2H1_JT`{rYv;rwCv673+fa7UVb6Bd)WiY_-K5yIFm$pN^Xc}xGm9eG6Ykk?dlxU+yB+*5 zH9mcWDEM?W4t&}hM6bc?F-J{IGN(mVIR}B=A5bw2zE9cN@$a<$kFyu zqM+?#IMDVc+SQ|KSJuGiFMB7nUQbj#TAduI9B92kPWd{XqIEmT!Ea0s6al$%JaUyQ zB6o>{8NQZ<g)DVY3j2i~dAn$m7%y}!-s7i4@ z33i<4kSA-B`spAVb(g_#pP7e0k}>fms)txnMuWbIQ2Ily`@J!r$y{bK_i+NLms@bA z=WJ=>!<6$PubPU$L8SVSXGAvedlS|c& z{c$)sEiQhaMcTsIDyugreFE^|I6@eWDU-W8*SQK?b*`V3TfUj6I#+t{fpIRip>tJ) zI#;<~{VQM8xel_4eB+!Y@L_y6K`(s|8uFzd@Vs0bb^Dg@c`c}R<(6yL67TJ9jiUQBJ(gz*8gbFABWX)3%5D2$M1wSvG2%{ zhslfQ_z`y2XA1PwdOK-^j!~XdN4VT3Q+N--NVYNgh5Ag^cv6SSiy*!kCNJMcAbYx9 zM_Oh0_Z5m2G{WVNhRagA3vCh&caTTBNMC_xXk{?Bic4GNQ&eD7;g~|VSA{d2fQurq zj+W(aobx)ycT**-!rQ_fDJh>X|Cq|%*mEN3O*spv1GsY>g}BNV1RmL|iORhCsBr5~ zQ>auKaX;0TkJ<2Cec1Es!@h{3nqq@(RMUxEH;3AiHSe3Zg~cj{h4O3nXnDr&SP7b)s^Za$s`Plw&8HsLKCr zw3^;HRU2PWrFF_SeuE%2(Z+|m^Qm?nZclG@1_U_F5|h1qkLXxR>D5a4L;XrwSVeS7 z+58XfubE0Iyg+}E4+lW6@Hcr~N7TEjqW;MBuM3A~InRROcIVl08DBS_Y3l=3i5dkW zO)H`_7Oh{`r(%oxRP5L!6$6EQ$ZAqwG}K;2G$>2#HqMb87Ebvu zUo?s2O60?*5&QL86?GSa+VUUEPUuC}FWR8P z8q_j+7B}Tcg4@DZ5~?|rKR#nJ%%Cg!H#93>JT&LKJI5CY z?xaC^yPXcAhncYx9~8E8V!TA-^0Tnv&-`0KTK_Wsf*H~ooJW4g8)>&5`6)Ew*=~e} zl_~tv1s}fCBEkkoUUZ}A(vdTr=kO5@$7Tv&b*YXV!PcS7CyhKqFrL!Lcc_p8in<06 z<4_ahY8?)(0P$uxv>fASGOofcQBG@`7h&Ozs2WIZM9s6A*&9(E7Wv8-;d@k1EXxh3 zp6;Nqpri;EB+GKW5!LD`ZzC!ivjzt{x>Wgs$|*_amVXk~#{7Wa@qjuNCK^!dVA9_t zCQg^(6mbPPbo-n@dOxH1+6D%Pehf|&kc+i5da)H!~I5Q(J9Q;w!$fyTl*EZ|P`rdWV9 z_X#Ltm$fKw1fB}2#;!V0e{W+~V_7adE1`8G@H6r@IRbAMkHDaP0S`~k9?41gK z4PkZgmqn@>!TEm}d%Lae7Cz{PUE{eo>`umcceWYSMS9{r&0yT!+4P8O{IRiw5!dW3 zX5>qPV?&ES-m>F5!xk8Sywzwl$>xHD(<6L|D8}2b;9!^7H@`3_-HAWkXbQ**H7^ZM zBY0$e*;UQV890>_i_~3m%3tOwi_{RUY=U)cg<_79vvJPNaSKxx3fYZ9ZXRI09s?Fupv#T~2LC%IN73*xbvL{_>v@w2(wy)zDZCeDT zZ{Tl&Hsyr2yXBO>##6KnN3rFYK?LIl>Z}JpvOC#D83T<*c+LR@xZG}&pm1TuM z+kRErlHj)R)ir1nl2d+wr)WckHJMZ> zw8`;kQ%L;+E*H>vvg4@D_YS1Rg+3?^rZC4p> zKOhR)HsBa-^Mle4@i)=lloQ&1B&YlcPtnHo%V<+5w8`;kQa_G6-;?I$?Uwmc8;H`u{kLHl;H5^*2ZfsKFNet6XwJr zL8&3YDl4rR!x>g4i%dyyyvP*W!hikuYQHQ>z4ef6<`#H)jq&nvqTuDvai-^%i!#{R zCMCk3_i!KVoVLD>5tbr!5OYLU$pSkQN%eg*4#-5X>^;&qej%OcsI&$l$Jz$Q&!+UCqzHz_vRrQxVz{*0B&6^N zJLH_*p>RLmw!THfZEa>?7@VEf;tKj8G(#=BEH^sPMm=ZClhqBw$bzS`vA+}kyqCXc zV;BFtwT>1$40Em3?~_DPzrVtvtsF$DU4QM9vQ2gJUfe*TZwXu zZia!8kKrh(sU+Cdl&|~gVB}uudJ_9m^~7F>%tx)BenS-XgpEM;^g5XHd%QvE4?M%f zQdy&tl$%QWlbrHzd1@u9ApTr#{80pzB*&{H<%%k4up5Za@E(-@$kX=k4h-^Hw;$_t zfFisL3W{&0{f+KLl-)ewwx!4GMuv*vkXkoNf@7JE`>C%yQ0=FLd5S+;_PEaY^Jk*q z&tGxi&l|z^Z+LAZLGNmW`R}}W!aRGjMRzw_yHz@Z; z8|(f_6m&m}Bf4q78mS=vIYRhkBhQctbGp_$qM;To|@p||~yobtbTs<&Ms`C#7; zjaU)%wsJhOl`9(ehVng~<6jZv9{PBLn)Do#w_WUR3zM~>p4B8&ozUK!hU=}1g$Kj; zA(=lb_0;cI#VM~|S~LH}gz_RgSQzYSbgN_clJ=eLzz-5_PAMMM-w;h zd76a=bZHjW)=jloX<}#mV?dvlFpvR#S26Hal+9+lpT*q9>*(X-8AYgVr5u%fm?k z4N48=VR=yi{d(+My2s%Pn@kNm<3&#z?{SS&4*9_?rpV-2V7gdLm8W=3w%)7^WOH@( zl&=IyJz@QQmFmguqfvyczjD1%-Rj9%e+yS~Sxto4{91@j>=LPFCy+QzSmBKXVSYpx zGi)xE`D&hZ7Q2au->}X?5p))Eyv{Pl_#ZYjIq=!Yzpo0rjk*Q8=;1y&KIRoouAJ`&4xnVsnJ4={SH=#Hfb9ohOC!`xbHs;^0cr|N6?q<5y3 zzQpTm)ZV?mrX}+2%8}&*Ui$WhD)4;>4h&Pw?aj?T#s&L^5_=a z_HeaNw-sx}rRYwAYtt_wa4qCc zi`xfxZ;$sdNRfSjKVy^qb@y6ff=4@B816H7>BxhW+1^(fxdFHEEdu=kds#{5w;?d_ z?SLBKY_t|zqS0D=^M$auJ1n<6z*ADS58NH!(nf1Vh{1Bb(OUT^$xMOUGt4qSeL{$& z#;(F<8porn3DQy6ac@(4#$rR&TjG^IVP+`JFg!DqLp4`f3g`$`&R*>+RL3ZaLymnJL0&k)o;wYBmQ zrH(knMzYwSi;6OT|uYTT(7AZd)myr zt|>ex$TvEoO&T~%p4d~Yd<(8l;ZysYzJ$cw$KM+xB~jiSz9n-gJS%`_{~re?LX-13e* z)vR7ESv`!hIk8HRnw4CySt(!KtaR=>-`80=hVGK))gheH&Fg1MkqU|%8-hN$ImY`G zi2MdD*fi&6wvCX;>lMkhI^cq7CnCCu2I`2;Rdyj`L^KU_e-V8QMRF>a2sKc-UIR6v zT?2JcSNspT2NA9@*c8ifp_)PG_=~EL6zPTUsxO{iklF2i;SHXyZ-YKSbil91-{su+{jd}Ix zx0cbE{uIf5D>Svs&x)ix6*q|;sYab=;ateuq%IPu%F%R)d7JZLbdHW?8Oq%irFEi% zR%b26j%7`XoqGKG98&fT{)-@T2TZM;50n&oZ6=$UAkNM4b|;E9vnP(`ctLq3zVIzb zVY*|gwuZfk=ZL*hC9R>x98ZNa$HPnoJ$vxf9Pc$6$&ce8J@3r%( z*ok?y=7dgp)$9+DTi%bSn*D1<>k&aop=$GTJ*`EVX!CYPlJ;JJ#Oi906=($^1jkSx zZYq}qw}r>rWG$w#bbggafzO7=Su}IGR=WiG6Gr1}h=Rt~;XvbQ@znkGyr(3(vu(xa zVN6OVuSn57kd(giAOfaXn-?59(u3rbU&~XgMXysYcs0caB}K4WB*)Vnlq+7Ff47;> zu2p+;YY+~BRXxgV4kfAC$2K;hr#axs-Z@#`dHcMurM2I*D;M366v&=I8I9 ztMXI$r(~v&jqIN^ejZE|{5%8){ZGqss0x{%@y7(7xtITP#;@=3-yORPi?^9KVYJ=A ze--=s_*i6SPxkiR$^Z5?E~IQ1%hTi3fqQCw8f9>&9om;aV%})0_$}nPhW}mBe+jOX z#_MnkpSG8!JFQ@(8_|4$!EUu3h~uDWW|Y`_0V-GjFXCri!ThIyRN>v0egBa&2yE{= zaO4FjD6F!;<9FJkz3=c5w&D+@+X4AeyVWux)wWfXIz1rLx<(A*TQ*Dkjngio!QE*UFgqodP zPs)@p)=w`+`$Q9al@LjF+J#f4m$svd89Hd`@wVxyCRrMA9Xh$nVH6*sgXZ{pq4N)T z6qFPp%~7t`@Kng_}b&MMHq)dwnravh-D-_|UpT)*u$ zkr=IBA3J$wxH6Ej)`4xS(1KzHGc!C$48D}If|4RMIh5;lv&LXIIb3eqxYxqiNTM@j zeQz5s^IWsXuW4X0`@LNyQ`Nclrq|)bM%s8YbzZp21No2o%-7cRIv_7>66C=4$hz0d zR5z}q?9q0Jnh6Z{Hk&qDHT}~Nw0*?-LZ$W*&z{a_CT%0}%0Ro=9fH#yI#8k>WunOne#LY^~Vf` z>5(QnpaUbmGC9tjmLcw%$#Kz{Ng~%OGP>xI*WwgutA>#`C^BwWbuA3gJ+nUD^C_zt zZWp%uch$tOP~P-V+fGmotHWQOQ`G4?X4%o+H#FSZ-Z#ALlq&vpg_Hvxo7KgC;>c!@ zXMVO7+WGbmmrYxx3N6IO`nWt24YI|T}HP>kIj=n9&8yS@)+MUJC z<6*CxW0|^arCBj4bvX&%bdFW5RP|*6PwC58i!!&GzI+r>&~-EpbQPodM^HM3fK^Tv zT+NE;TY05z9*Yx{^b(Yg;~D;k2NnP^pA+ zJ(WW1b=d?^Nm~T6PMkzGs zTL-8JOc`>##-&{G1{qE(YOFDE4QyAMN*F+DV3Z;vh}6Jgf+z(xC@DgfAlI8p7)WPC z%$H1LI-^^H#*v1UhH-h{QrC|fPTr_H)h-gvH0t1V4rMoklkADRSC6K9>dxhp3~26d zBj)bb&J4D39sx<_?n!Xe8TtL~oiOS_{$78ps`L7#*31jUf6Ch27*WW|8k|U04uGhy z^LOJVvhp6{JXx7)$Et)yCD9F^CZ~KVPj$m@Qq^5zRi_AgVmY3$C|A@IFUQ;=VKI1~ zu+%zyU;x>xcsfNy5ZSA^N)Wd+h>Fl&MY*1^7)W>cAQG0Dk+9IsY?wk^#-yYfR-U*_ zg_Xpm4ptv9acPVd{p@RBroeE^T68YL;2Zxr7m+MCB*9aS(f7cw@ALO$Mm6a5(=D0l z=z7j}`d*@tnG#MUGy6f=Pxv42YOqX9_){$1?!fgVE2-O9tzzh1Dsswa@Ko=@YWu+W zO;&x1pm&ku)t++2hEhAezFcM&capt$JzJ`hZy+w8-7GrldupT8{j$)}Jr6!Qr*vda zc35 zMZdEFE@|1;lOa{A*Y9LAkAeB8t>0No6f(392Yu+!lrhZCLY+m7Zw%8Qo3gh$zpm8d?ruzI&VgZCW=8xp>#QNyb)VjB4g{&yl8}`$ql5Hb8Ati5gG_9JGCV~365J- zaz5dzPgKWg;pDZWtljhV8RNk@M8Sji;h^uVQ?0uBLFN4fIi(>e$$vR!Y14?Czj=aI4rmI*8@`+%JCxjeBcbwX|Ph`SQ5O64fW-tef14pidxHI(L{HCDJ+U3h9bq zV{cimXA?Ej+s!80Ier}}BL+lF_spVGL6(KO4&-B-hPis zHCG!qCv_Lm`uqm%Y@%nRIp7&ar{aL@(RDbWs|uUr{nn&RL-tHhQwf|*(hl;J0{>gH z7&amBrrULnvjh3%z{hl_yG`mK@V1wUz*a(lS&&J9r~gl;9oRBQ*MUv;rdoSpPNWWCCi^JF{(|B#9b(>9Nj9IL6oSyhq0tL1Xr(LASp zaIl?oh8mjm;d{2cWCp&g)%0g9WV;a!(CvLkj648F1GhWX-Idq7dfD}U$*ZkoX+>86 z!PiZvI)ErEg6KwttXw0vd>PMKOzPjF0pt6C2O0_dDZ|uEV81dcXj0|9KZf9=d(nc)?-`W5jzdG^=-Ekw@z$5auapL z%g8mjg>J;AjlHuMTi_AHz6Lv4M>4FY|C!q7%s_TjJXxw`Tp6H5MR~H?XkAhTG7ac*!-c=6rLuF7>1Usb5 zayQQTRD3Un)kR16P8Hc6bU8w}y_;0w&uK4wjAPMDe8b5hc%OCQ7Wo8`%fG1ip2~Hk z&d+U9a-@^hksRY;sj=iN-%4G)ule^KvB!)}!tBC`J^oFlAw@#F@-d<6`i%HKhvt|p zeXb6ZhgFULw@e-yj5sc)4t7Tz7pk1A7IO!tdtv#oN49^iAy z*PA?;Sa;gKTA$d$OB!L**w{FoO7t@&^2UkY)t9@TbC0|I>_N!}8moYCXIPIBa;EG@ zhO{BuHPf?OC&5$Lk3P*H_f`Jh_^9qbHTOS&bwoG!zkw*m$D44xx&LfrkUK9ji)iqC zPA791W8_Ra;xF(Yr0g5`&t<;+IR6V7i)+mN-$j(>`f_7`{7y;LxxeCGq^QE%RTi!P zb++Wyh?thEi@{K$-_diaR`VNZX9(RH?_m}I98_MU;{kIofzX!0n|NeU-teV!l zdsctxUZTx&8SvE}w9Rq#KM#LlI-bM~a6Um-@kdn6l|TMZ6?PvyVT~s9Za9A+e!0#3 zfw=$3 )ug+So#NV5kVII@yz)9c75DXnmli#&ehQOYIwq>*b}{HY__XIMCpcqH0* z--KbH4)6a$NzL$n`3vCX8wMm-W*E4c3W`u^!Z6@a$yXpV76a6Ww@M6TsNsriBBVaZ z_1dl~jaJTzZ5W_SwBRP$90Lv@((D`;$n8H0;`33QXyS=5K2#d#Uf z!T_rp@|e?L5~-o44s-T3)S6&UG>Hr>y}-{O?oH1{lF0^})s1TnP*a~=2Q}`mZ?4`V z)ZT9C>!W6uvJa=OVXu4wVqmG92=70eid56&DC+Wx1hNR7LlT351jvyX6b=eNz< zIesB!rmMYy-9}amhhux?R#E1-P~0=21Vy(8!3zcPb;cvq^LuHGg34r;Q#5$T?u>PtpAuUWk@$;q^OOw zj1-MAei=pz17*!8Wu!=gt40dnMllopYGHb>mXs6EMv=|@in_ktY!tTRuC^eb0PzkT4cXNQaO;Ry`JHGsLVA=Lynac~omV)j}o zhHHwwNw8yYyf^IG?6mlMZlW*6+eLJNj<;VV3f_JR2YsJGGqWFm@qqj1GPm)ErC%mC zJiZZ2RTM0}Q%?B~o?__39fC4Zfb>$8ga8WATOy((maNgVNpj!!v5PR3}fhq26UR z+8CX-`+=`j>R9n10RSh=D)4oVO3GFXb>#&vDb8`gDg=u-QdfL_3`fSEw@HCS|`Zoc$8 z-s)BU?)KfT+OQc=n}O}XrPy7!v(%)tHc;&lY=YpIPpc-JwZXbJ)v%Twt&Q50CXh8j zsZBM66SpZV#pE&7rjp<(+tdU?^C$jZ|0t36+Eg|(7e2c-^=+bPQ{Tlwr+GCx&1bEH z`3?bf`$c7>&9G=gn|X+*+RQuEX708E6hWJj#tV zc#4Pb5)bdO0u%uc<#;?)u9%0emp?ox{fNMDo7!rMV`5E!Vq!yRF%zv6!#BmmB)BS< zu?{%#rz#&srpL#Y%;w0dlf_4gf{#DJiF82iYySrS9pUxW{PXj;M~;Qdmhi2$<;9KL zDh%E}E~oq$Px1EM;_ZzT6qFPJZ{>KrRjw3oM?Ysek-@Cnv1z%mHcY)FCqBNO@EGjFYT);2s!~sm zvYDhkK0y?6G>(&MkG~+GZhKTlWaddZW!45wX1GW;ZjXvUX5@G>qg*MO=__$DK7ozf zV@-f!XhUc*L#-6UH^tB-xL$h{nJGRlgwL)${*oy8$R5I&kM8Q7rwFLaM`eVMzmZe^ z6;HK24(|<&-)sGvBH*JOkB`cg;^SJ@rD+CF6CT!S2Ci$X2~(_W2ry=)m0~ETSeXQ; z$A@42wc4+VOplMPnV-VYnu8gswdI5>`S6S44ciK+N~64vNbYV^TPql|r)E-_(L3{v#Alic*uRSPN+~0(g1pjZuhMP?-_=Z(O z!LN;#6a0o){a*-vZJ18*8^VkQU*zYFE0N%T#suFeZz%Y+v2cRlBo>V)u}<)7f|KAk zgcS?Em15G968t1M5`16o&qcg0=0_#-w^I<`p&$sEm*dI2a>X(qb?1$HRH?SL!L58b z;DYjVU@*!Ogu5R*yu-|#Msi)TlBQc52Panl-$-`aZcT6!tA?;*jlxQ?3QB1dN$^zt zsdQa#Y4PPsRh*J5*~Oin_8+249+_@C{0efcJ7d-YeG>?KdbH&^q&fr;F7F>V}6Vfd=I)Xmz`<&VSwp z27_Oxex13oHvIcc;F^T*28PB&yLMa?sD!E^#8{}T6sxF|P$j{!Q2FBndxSF2^Y_LF zRkbHyxy%~konF*R6!MkFp&g%uE$;7dB~}9eL_6Y~LL0GsHh?GhqI?40^A*z$-om>2 zh-M8c9*LVSr<~&{i39q;xW28+CjkgT;^cS|r(BW572dZAI#XcN7#Y{nYa%o8&L%Kn z{^B^WdhzU*io9JdJ+C@OCl@0%*2*_3Q=@qj99LIr5C014;??Q;5~IBOVmv3_^}C%! zQD2+kMEx$K8H}7sK;3><8L5fca>_G!swUo}nz-KzPy{t0$EykDirYS4BjAmX1=w>I z&u~rcH6_RLno!ja8iI`5ft6xNr`kah95Xhy{dwP76saCBvzaZbyzC|lUiRWdyma5K z>>;2oFO?Bq&X-f>0H5*lH1X1PDT;uXay(utSIkS(gZTUbL44?dXJcbSO`u|BLx?de ztrWvK#mXc&W@UApdg^agdxJ>zc-fk{usTjHAPQb?f#c1uq-X97zqPQ_MOypN`j#TM z;rvPk!sA79$_sf)UQZW~=TQ(}NgxOw%kg-uTqzzm*5} zE>q6Me0@X27I&y;uaK5m8@et#c^S|R9A7x9ZOhSOSZ#1lsr~=PTQ^s#2~LvR5LPU? zR*FeNN^+CnNOJwL@E}CxDE{79C{glc*za4nA_^Ja7AMuWZbLxb{y-U#)$Qbzx8^BX zeQ(mYDgs%RiR1RHb5&&=e;-o;+c@C;ZVmUygvf19?p^e$O@9-fW5R5mwuTuY{7 z@jAt<{XjZ;Uqzop35(Y$CM;7#MYv?=E?eHR_WX3}{gnD4w4uf86ceuI zz^7<`r8(KsC?-5p#SM?0058_<03NX0_|*@LVPJG`%=T}YEe_)KgL<-D?B74U*|hK! z%94L;{G<5$_5B*@A73!L@}87Q8`%dZ)kgLvpl%ycM%u`$<&^j0sW!3>Y$N?c5wsCG zUK>%axQ&EA#xlmNZ(qWK(tbR{IkkH_*G6hWRU2stGHxSQiXok9BS~5J{wACG zP?eYa69q3{i^G_iMLt&Y|2+R~t=E4I5p{X00^sREa>@tr6i?3*PhV*TC<30!@p!6S zF;BU@nm2Bu=2_%R9JR*{8Dwh1b2?;WcyS%Rz6!N|9cpl_2~~C25M*43R*EqxRfkD% zT!;SnaX4($p=WRW5Svr=shgQy+c=mg>hn;X$kw)!y3~G6=|H#g=W=Tz>(;3Xp-#C_ zgF1Z!Pu1z!s?)oy07X!za=bcKuDDK1ozpOjEGy?r)A7t5W)rPE^M|!V^o=AezOhk7 z*G9q#R%0Z%3=&8Yyt;y=Dy|LB307lxv0%Na3bnpqNe!wARf5$JWGq-#iq%v~u#(^@ z^pdBk%75_pcT%h21|F58 zNa-rQcbO{v2;PftsaNTms|yU0_ZB(jH}jO_og>LRP7q3pK=R~xlBZlvNuD9mQ1WUc zF#)~JAQ6;AenfN~$=lU7qt%2raY{45OzgN36o~HJ`|67PvJ9Nakx*pBT>vVKjHfBf zfC0DQDP%;py}S8)GNMXJ$%yt;xxVLUqL7heaTu2mjP_Jf_s0=ZJgiaOD?4@nRypNk zc&hHtRo!a}$Az5)QTKAZx>v5a?juNbD%g$4H6f|dH3SnkIxEExO*OhC*fBKLS-m|~ zA}+;4ZF_P&d>c{l@a;J8@SuG7W!MG_Paq&Doyaphs5T?r!2*>5Bi|{fd^}Gv@_jH; z_v0!QF3Rz^s4NK=-@#k>6~M%#T8UOviqs@HlAV~=b1$pT*9AXC>uVXS?yx@PT|`0a z$v9D;@>=+y{mGB>4@xHy!F8WJi(IgVTA)Ko8T=SB_$nCudodZpPa`UP7?LYx zd_n1Sp383|k&7}BnYYJPNq{PT@leZ>?txYlj?pzsxG6FGH?y?CHBo^<>AfoUkmk*A2u0K1Y#}6W2ACLt=Yat5R}d!WC(IajA6WBWE~hs*jPvu zDeNQc-dztnNoZ~ChML2UJ0n4;m%EG&vHuwCDvsf6*pM@n?HQQXyLuy>FOl{w`fmK- z8kfQ0>2(e!k9MJn4hBaTnn<}bOp(X66cI5Jc|2c?Jlkqc5fVwcUI$^EY_$$TfLGX; z5@X=P$59Y|7gi0@gPciKNBux7!Uo#vE+xWA@D$_j6gDGOz9+-k40iL(mraJxBnlZm z3y1p_*$!`Vdp565ZqLQXrI9?HurAv%daEa?Gm#A|f^V7U1{Owdk)&8z${l{2*q|f` zsznQTwO9q0uEox_!INCNpmdHfN_zIm7x22_OyqH|^NEhtPm>x z6|>1?2`%etOPuDEQu`FoZjDLqYHfmMr&ZRZd4le$A;DF`4D*U3(mjRy?%TLUKD$2K zAQ@Xz*N!H^Q_1LGVf;&J8CAtZGP+~WMUu01YkYA$ipy(A(%pN}LiCu$J=q(JS7#B| z1GA%lLw5+-Gmygw`X1%kF$hn?z4;xa?3WyGMs3_Fc@0k|ykk}-WW?oC_o?IP$t*6& zjF9gxlXI0@d~cNb4BYi!*5yW}RCr0@Y%E(aR+i7e)4y4o<)~&L=3XebgGR?!lseXN zzedvN&cMnj)NU37@C%ij85I_c(cB<5$QIX1)1%j;cqNAWsBPo*O4o3ixaW|DmN75`g0q^&X9GEj&QM`_xPZc;hn7(_T&;P zpq>SYYUu|CrJTj(E$(bTj@;8Nj%}-yF~d@v%MyDZXfR2rL4Z+=Ga zMeJsn7T%>H;6bv_wfDun^R9DY-zF^lDzUxmR61=ZmpK(!U!@IJ7w;8N1MUd*}|`F3P1O=Dtx2S;nlg}kQi2PghB4c z;(UP4Xd9jVIGXR&crBj0LHJrLxN-5kc8BQfmN46v$#u09VZp$>idlre|7c!GJF4I^&J%t0%8vA$d#jigBQJfye%-owp&KUDrD~Pj9~Q3 zakha2A$sdn+}Epd=$cNJ7B1DKLt?bBCy^jKJVaQ?k<%QD^j2L~A+EA^dr~NR0Zgft z#%v%9S55cdFjhpc@>N**l(f3)mT0<^U9I`9*42~5)CD&qr84={meRvuTQgGX=;Lx; zhndlLTHJ0-a$SRIxT&@_D$X|6u)z$V4|~mZVKY3?nq6(c%$=L!LDW*MrumXYR}OZl zUB-2nMoyl5=_p!(xgR)8WHOXYa|v2s<% z(*N*crwUhG1l*wXyoxL-ltT*ke8HYC+VdrQZsZy6NB>Y0IW@!D$hqs2nn2DW^FP3O z2cV}I;$=Rq2~ILS~U^Xb*yCV%!HX*$QG|c zgXv$v{&?QHvo^`8s#_$wn&=jnh#BZLyk*yG&fk(wi9UTTah`^K0QdhA(rtO2(jCL5 zpzEpybr<<4OEOs}+sCSL+S!ssk?s0wR7>$cejIbz8i8en`*$BXkz@1#SoyVSpAOXDNC4#ydZsfCXrPh?dEjg@Dik4`>&X@NEwzZ)mQF~ zU{+0kRJK?qo?X;JNnWS_#=wbJ{-D&YczK-){NU8#gS~NimOd#j(Wj9E>Flq^)h{lm zhw?W8GPpxFq^rmchS~4}+;~Msr7j-IFNs0T5o-6+)p}a{#<<*GBHhHHKTgjzyL_&M zLWJ$_aU&L3_aqG#+AxQm0z zC-n-GZ9EqccXl`vd zDfEJ|jbcx>Z|CA71T4H2d9t@H;y2mvTI}wjZ)(mIa=1I!k?Y%hIG3A09Q5>OH!Py3 zvsryl@o)+oQebcRancPf89h-mF;>{%iB)eQm&rLyLhdrjjiHz3&d7!z!@uE8v3Y?0 z^eO@dcg`38L5V$AJGb}h&cx1PRXEt)wt>w$4!jG2=+WSbCV(E0-9Rtnvi2J0X8W0z znGYYa*D*h&A?0Mp{5$v$1#|lG{zerZi#uIRNG)WGy_hhnp>eG2I;T-nB|RNz8X)~5#*s%`+uQpRkq_$1t6hbu3+ z*x=KGHK^6uCYDrDq7GX#J63UFBDo1JL3e*pT1s%-ZA7#7Q#ru6pjr&{V)EaVUP75k zZW?-2P+F$Yq>H-w1sPak?i>)5UTL|+jdav|g3?Zkig9UK59*N(E1~JUptQ46RS9>g zjCxtSmh|^zTdYqDZ;P7GJ*vDFRig{v`DvjwEmdn;DSwO`-CjFYukO#>j%I8DuHcx)FHvY%hbVcDVSqj&r~bF#AvW{b!{B0AKC=Kk~_nQy6G4W67` z`)abAZAIm5%oQkd>{IFh)+r|BuD5~kW*R6}zCQuEBD1`X>G|%EFYMxUM{W&7BN)P&pmqq7^C z%*Q{T*+P0+%+0Ntr@jVIRrXT#ujRd^csLt^i=Xx@XHTqEpCN!PqNGsmu}#$FExlgu zXXD;-SqNcTk7ybF;rWpld_f7m=qK1WDq)-i>sfqT0GvCN>PvpA7|#9LlRZ54 zWhMB^R0$qXf@q9_zju-*2=C%q`Kpqe90!>NxTxs#b4tMY@X~Ngu6J2SW`cXbzedn6 zoO~eanP4^wWR&kZT-IiyeADxT)APN<$MkfJzn_R;jssWvIt7frDz0$m*$OC@Xit@I z;0yX*vV;RWa08)Y&LE~UXfs_eyo_d3xm(G4Emd#F#88|gO0Q+3q5B-7SW{F+PlqtS z2j4HW9xFQ(Mw!f&S32BJs^X@^gG|&7FlN^{@F zWpjg)cxhZ+Hl5aDOzs%S_l$j$@DAkfTeuZbZNtpHc)U8{%YAX3+^-nQUw}SvB(AFy zC7@1TSiKM3c?K(d1{K@>A#VJS!xZ12$@RU+5I=V~m{^dRm>Yx-P{uEU@Ig6NtKXJS zu%=N!kl8a6?Cp3HWOmNXc}?s;Bon;R`Gu3_Y4;oL!fATmEMwnV_Z82O7)el^lZ5Z$Q@turLFPX$dsCzdgOi0d-yw8H`{1@gdw99T z;$h|KwJg0IxYv5UO4yxULa=p8z!i?YUAL&`;;n^tXo0yV`@REa9v6V7#~X zFdFmJQLjkjnnl*jNJA1Uy@sS$*N}iIop&$X2deVq+LGEp(v}P>YfC>MTy5zQ+=}D| z{|5ObPu8w}h^L>n(~{X0+t!0t?kGKXWKTE(V6rECRdP}~l?dA%vx1f#z4QHPg+9iJ zSa|^m=3Zeoc z44$fof$RyjG1$8~43>Btm^(ZWq0@hPRo$raXVWk924kl)rc_QdY~537*UW*7wshZ8 z+%P72U{A+}W!o>TxNe8BRTnMl$3UA{ARE@C*nIdXk^S)=MYWOVVJe+u zW)V(g!&0?p!^f0T{dG%5`}4nTGRM{j?e|%W}M6WhROs<;3$l$xJ@2e`p#bM;ID_#L!yT8G!&Cjyhb1IGv9c9`kjU}+Bjxh?BLN)U?!!rc zyU*i5LiQ|*imd?1{ME_*e(m$QAT#n)NPalc;CxxnilIyieV|Uy?33j!Avf{cO z##S2r(@(4Y)1=sZ__Iy>r*`CP^K}0tG029GC;ihusfh2G3|>GK9KA?5I8*!K$T6(T z$bQR4MI!R0_s~^%H@sg=VDW_7tuWe0NGc@p5;^4yc}f!5>KJ!dia-+Oc&rgZNq2QA zZ&7!3nsrwSh`KAG#+E^Qeo(;;yDODFHAb$xYK)QgZ$u|`*uZF@^~{%qo!?z0$Q6&Q z%_!Gh)kI6(RYRQO?#fCrKBu~?BzO}Wz51&=sbi@r^YBMwnJOykuac?aWunwg6|ca{ zncl!`P;O45Smq=zuI}BLX~yc_owkUk9P^lRbY&)HasZK;GgFSUCY%$i?iOL6(G$*0Oj%lt4-XEMbY0N)b-@AGGh(JN7%Q!y+{SCVvaA=P|2 z9%cjzWk&E%lE!J;ieIK%C>}#+Qu&BdG1pMC!YxW>CQ!Lbv3$o5$CWoXF7GBK zjq0>+kFO4xF+{owrgGT|dD^k%p5+ zqR)%Hu|6Na#(Mn2)w*+fyo4sv<&^YX^L0|Nhkd)Y;)y6W zgMBVIzpQoqahF-CiuVy0Tnbo)mz8$odB6tuCy%l#JuK)ie z?~n4oh_pNLf0ln7U-&o~OnGMSo|cTjk@co{I1(c5#m5jLHe&0ga24qje7Bzp-@+P| zxs4`^wmW3XQrVqn#WG@9xhqrU{!niYOu~o47M8}Cp@Fq{J?+K@*4eGvVm&pS)(B3k zgY!6yNbtu{JO!LDS(+-GvD=tBXx>{3M9x4IxYmH8#l7WYRd4Y&_|Ut@vFRcW_3#VL zmAizz;T_GT{V#PJeyO>%`dpzCREKp;p6VlfnmV7I@5&F(2)dl`7OtzNpVhH(&I)?Z zu8!hQY*x6GA>BScyMsLX&iyO!@bOul$5k`Yw_|UTTfUa(EWTQHwFcl0V~Zm6)iSx> z2&{aRv?C=AEFS&DwN#Tg7 z^bux!KlB>uOk;dGj!=C(RIaC@8d{w;WnMAB&Wefc+;=^#ux{7fyIsRIV&kuTZl#G` ztwd9di7(Q&I_PV*gYD6nDBh)X_%Fae_E0l(znLidqFZq|^LZ*A(M;p*CkPmQat6G! zjrM$rj)0<$*Hk`*&%N_~ErmAJ=>>!V?bC9~xA2rEb*(CL(10ldhRN|5rd+X3k4kMA zW#ih+hm2Mo$;y;7Jg}ie$%4{t_7ryE=a9&nbM%!~pN1bj3g-S8LDYqh3PD}T9F!Cx zHCV1EX@+5}23Hvrl*FM|#3=7yA7#`Zo7fu;#+=l-iX=Fy>eSgE&6_z~>+3&aZ&cTN zwz8>qPZnf~1v-<1d$oR=%`AeVx3V_dy5@dJWAQKFYCTm4iT5LMuDD!XPyc7#(!knF z;|o_V!Lu=Uh%Q`tg0`@Donpf4;F1<8eohd2RZHea;KMM3Y_X&u+4?+Aq?@kQ6ziAW0#}(XdNfD*d)cpTlTz5(d3uTj9wP4 z5h!$%b(@b!7o2L{CY!mQe2fs@8xaUH49=&Y+4Ot1zd>en`0I z`loH~Y}OzCuv1@UZcegGJ+)$D^;E!O^^|oRy{_kI@B(XNvcYUHn!iDKWP^DZg#LxU zv%%a$gx7(W^zPe;^&XVIsnCY~w}8+N?~_wz1Vet`21wrAms0&mp0DT`g!9;NSP8x*3hK<(V=)lLU? zbXcNc_Pq4;4`+w+EU7ER`6EDkW(RX)zXUgy9xQU-Bp^y2ucMoNTkVIr0#f-PMNMhL ze256Yz3AQ6vzllxDwOu}JvrrX^OU}GquPtJVJd?5BFAel%H_2e0UX`)rlh@i7&L4z zwJ~ru%!U}yUaB0Jul8c-Tp@H^d#T1wYA;dF#D@7^`cbWK!aw&^-l+Y27jM*lk~mwk zi@DuI`!Q;1Ki?M&$8g%uO;P(%sM?QQul*Ribvul$G}_No)%G(fHXr`F ziS{Eg$c9fVrCVdsopL`i8Td$Lx=6!LRnS&-$h-^7fV^Xz?#xxt zR~1MnBp+wK?D;s)VzIW?roKhQ_@V^R|3{o?4#d!t8Rh>Fe`AG`B3jrtYaATG0(?Y|hD%SMpO zUsObIMPQ7LhO_03kAJ8fSDGuC!?@SRm?Xt^x}7UlUu~|`x#?1k`2rU+pV3^ehK%%l z*;iEuoX(DTpkn=aJqL(t;-pfT8MZ0F{DVZT}1Kc>KvXU$~p&mD*xmG z6P4bWXb^*v;#}t-pL@>_w>i(yz4Q_aH^!(0k1_TNezA;loi)5sv5q&QBjJsKGv0hJ z;*ChD=wUMYqclJMO?bqQ=kdn;SX1SP62OlaaUy=~V*Id-oY*0JsLe5EU|PQN67R+f zc`E47 z(F56dL4M(Eym&&qFuj}aC1ieKN!-@g$~JJaKFYx1ii=j+1WL> zHln+7l@{f4RObSH=3-#{bRhA)4k8#T%5pc(VM%B~Fel14D;Fa29n;5GSW3ri5BwT4 zzS88JbswqenB6w3Ekx1;Ugx_U__j)G0=_K>S$rB8e;#H8B}L3`3(9gg&iQEyd|QZE z0{&~3auWEf3_OD9Rv8e>j@ccvIzq%$;B}zVf$yl~67Y=ZY=jvY=NfImD`IvBU+*yR zPo%(igfu0<>swM&F#mXCJ`g%=DFK0UO9|j9@cKZq1K(N6C*WC1U_ax)_zQ>xUnUWF zlu5Z8=ZvSocZRSU@b1=n6D`fU%$&QJKF`{QHn2?}zuF3`CW%iZT~D*K^`vz2iIZ&M zXp_LzwnDT?;NFqIzv@%fsi8r67DP6k8oC7!BiZDPB@WtZq_ZZ$c^x0nG^uLqmQCVs zw7`G!_w0>oq1h0zRAQYCI)-$t3$RFtuykzD9$R~Kh1-<%zGZCk!O$=mumSMSq7eyy_{i2DlM^|)U_i0Y(0r$4m~# zJcL*}a&zHlA(~?&>k+nT&^2{*wtjR_Kf0x1`7QMe2)qIuS0n6awuHBX|KN<7Ei+pV zGO;%rx)0Xq7Sd#VJ+Vzq%to+E2VT`-dLM`qRQG}Odiy}M_1x_P`3*xE`#_$SLjm>o zfn+l!s$;^&JC)7+Z3YheKoDbQT$#){{2%9!nfeVRWnN@Ra?X-;ZvVyR__R+$5rtMI zDk-RVG!i|dE&Lhu+i0ePVT1dz7(bI(FZ?%Z;n_}7G2kpWy8v^7c9q&|g|fGV#aP=5 zVlZytrG3p;2pMW?Uvnp}?Fc!Baw=WQ#ug7H9Ka}~cf-VH60X#_ajEO9RF^nPx|~9W z9tuLS5mijt2VUt=R*%#(&>G%_a1JgS-F!UiPTK9TQnJwJj_E~APc-t%PB88_Sja-XFkroR*-N|01 zJL!BVcT1rND6`X@ByWlCWQCgU^eb@G{6=C?(F1>{{HlNao5`;VH9hJNr1s`Lvj~sm zxf^dR&#c8n>nKVP$+J$t#Jie$tJ3^eu_y@tBB$TUa$hFc%CRTN%+AaSonPm}{ztjL zG`dtS+~B04)>&redq+M<95SqJ!En?N3rcf{cQQO5pJZ4Og-ex)>%A0vw1jGbV%tg& zX&DUGbW|2v@)s@n!0vqghW8NucA)NA;?i6~+MQJEO3nq$nkuuEtJgBII&+xB)DUsm zsez86JAzOoyAn6fnb2U`?ch6nOrG9i+mXZ+B88@tr$32H$Wy$I^W1ZeH^Cw~2xCuz?A6UbBtyTd^4iIe>Nt@hgJ?4JNAQvisX8ip;O~)N z{Kr2}elg5s=%1waWM~V*BN^($8_N*LM>3=Yo2@K!!pu?Q!U zk!5Iz$OxOCB_oP&3!kF*n$bi5m9^8XT^zH+tFG)V%)s}i4~Uw3P}+(NPMQ|u6JJ$C z0b3qDqJmsMq@yp^c~zDuSxL|3=PFSIEh>K~+dGhtz*e>+QCm16Wa4P9`cr7n4x70$ zirkHv>s>w2(NoPvpVt=t($6$6&Xk=q(Cy``W~qb;q!iiWfFqkLfrPWc>&mT~or_@9 zNUj@$s_8icOx9HfMca-X1^GqP=DLAtJ^EBB+J6$W32oF@wJ7_{9Td7E=U7%NHwxJ_ zX&h%DHwKmMMW`SNBR*`yGyDy_8a$CRK$U)82lj|i4@!D1egIv)vZYe@TGcWxahSx$ zCDk;EmCO;f%1S`PbwQiJ7`mnKZAcDE+mOK@SC-#S@aReL(6ULD=SR2yZ06*Fg-Ni+ zP8(dcXVe9fu0ty zKFP>NU)_YB){c>pCkQja2pwH2US$Bl|&<$5j6rU z_-EwiLv`f+*mFG(}Jm!2;iZX7`+Xh~VS%e((3ipUnBs&d%=6 z&d!!o?l)%1q?LN#uf~Qb2JtJQ7Hh`D$h!EILB?Yzv6uTTY~`EsQw~yk5vO#X*_|9l zUKVk9MU`y~|6?6hTKv6IRqr1^=*}AP6ZkU5ylcA9rx%RD#KYf{H63>!N?_x839X0-ZG-W*V&NIJ5SB_RWy* zi&F9ZTgLa%Y#_nfVDi4@J#-c8|KqwZ4@$%6$j#)xto!`LM=R%~?W`9TYXoBE^tJE~ zj0rrG$zwvQWyLo@x*iivaK&SS6Y4$8Lh;PfV*+~iD>3Dqg+c!1` zuLPTM8vK}X})u~SeNrHjTIJ$r)*vOr`b>I&T|gx`56US)*!cg=`WrL+jV`uFvT4!k!u$FQQb& zOAgeL=L&YK1pWut4f&e=2-l7In!8NKO94oGMnVhl%}8j4OJ}YKjRh9?$FWe9O=MLp z!sNe<1s`34A6<}kv0j*}4Tu>F>3S^S%!$W>R1DwcK)N0a595l*0w+{S!bc@IWdKhO zc+zYjXhKJk_)|+Dpfc8rT1*pXF(&Zc46yh^e(gCa9GiN*^=ZjD3rj|9ecJJek@B?) ziPxK~iri9ohZLiW7uSguZ|3$Rk!z)0CxQ*aiwS4HbLLEFzoWIYF#C%%Mf^qLYp7^W zlvYS0c062BkH-k)_}UvryXe|g`wRDH$X`UM_)8&FjQxd8pTPg%x*cD$ad7<*U$fnD z-GQ&!SmHY+k<;TlkAQD{CkB^}?}XMFEO6I#Mra2e%~ryD&`j7?|M*^zkD6lK;rr2; zM_4zk(-p+C&frJo`4K+E)WQ&jA4w&x_|A~iUeXg+>_?nX?<2@s@yv488QZ{+JHm;G zf@ArM89G}p$@ZsYtJ2zvXRMtoEIj@@ajr+f;`brCbCNh0B57DcC(c<|G9r=&xkUJv z)Jtm-|5|TVWLv<6SaX$HUZpsc3h69{`zxZdh*9}Xb*DL|CE}Ik#VgsaP{|F{UKz=T zzVn@+x-b;~?~P}=cASk}Q0x=(&rsDlQ4HbuCs)klp8_5K#K*l&ziIzup9%S=C>8%K zjViK#a@QvCKe+D3*KA*0cj0U9Ph9ulYqpK}X9eW+_-AkMjeqvVrQ@F^(F0-feG?Xd zfBuD!V-)ULq_+OTNmaHG%ksG8GaRdsHVr?U{W$FOgS3P5qV)qn;D5YVVEgsQ|0nT3 zpEJS-n}NUwr6TxQG019X8i*_IG)|~@4f5EWF;5&SVGypup5>ei2jtH=~`xtIRbOO+#_4PYV`x1Y0zBme3+)JEL@0RvO=4oGij8pN$V;~8m`8uBe zbv=yv@G$0S4-3iEU#)eCJbPKf7|GB7R!zbx72n@8tJKFi0Wp!QP^FbMov|!Z@i<33 z%Zp>;0j>P}8St{Gk1)kChjQM+k`+_;NJouPl8a9*@tr9)re^82CcKPQ)Voi6rPR7$ zf;2W>8ZTb?vv?)<0OXmiy|N~E$(=EDFpSIpdwo(YE!x;8MXUIvtO+Gi8k%KI$nEjC zt3bUbWPiQl_ObR?_N|b=ic;~{2T(=!S9XI0{s-41_?r7&{IvljJP)Uh1s@NmjRUFt zy8Fmltmckqg5LvUlG~RsL1~>G(dIfRC0nu4gE?cHuj?d6T`Ptt@j}rsAG{>p%NEyR96|ob6?K`vW=Xq_9 zPnz*O;4$w4PUbKyakC}pPhu<@Hm#3GsZ_h;BHFvqg`l9hcLoaPSFoN+Lr4+6L>nOH6J~85DVkaBBi=7 zf2&HiQUJfJn*0GyF1;K6xr+bMMCu78ui_oxXkhdM)x)9qN$|2m4)$QbBe01dVa0dQ zC0qcojb1f}V#n&6d2ZT&P2Jl&$cC{5QO?=9!5 zIOH_17mjQ6)#`9%uAW3IHSeYA&Q-Po&K15xXHpNvI#)YBh3()XZrB=!cLbJXi~DJ>Yqg{J9Gm}D=6#C8MSXQ0OTM}9Gw&Vn^wkN} zs_t6m&BGHWx&}Y(!iUk`WZuho7hGR;!U>{I^?!tWt>B~1g@{_-hbKMhSNJOb`KiVr zNABby}^n(8)msof<4X0?+x4OZy9T*6k=fgsA3U%&WZLvHggn&ec!I%PsO#f7DO6 z_d(Q(Yfw{#YVbU2pyk%MIf^5aF|VNtS>t)b^HUi&$J%0!=2C;5tKt|3y0p%2j#jSb zJ#OAQyB&`$=3XUY7pYshCerbtvCyY^IZ%6jHRx;SsyBK@`#nEH(oK55*Jh^%H~OIc z;yHP`JG|!QoHBC4$93LI=yR=kzFX(+6&$%Guy}-6a{dA5>QR@s+~w7GuQt0^9o(x? zZjSOUZ$xLp(@sb8M~Fz;6FVe0mK@;r<+rYHtaa-*tBf)h zuYqF&ZTpR`ToZQ$l)wU3`_MtO=n-kT?P|Vp(aAd;wbEKXgqEf6v$sEov7mW*F+TLw z^JuTu*A@P!uco1=mtuvBIPTi&96Um|=qYU5e4DTmA)nLtnlBwsUpDO^rZ{ zbn1&+ovSafa`@sw?vLAt9Nr4pK+Amvo=$!3io=_YE6qFaMvLWcxw+hOGhNhaFqis61MPKLYVooQ=*`UMg2#f179)yMToR@OcnJa2z%;>qhFKVf;(lG}0 z)xnvLtu~+r+W(?gIK2NL^6PnUoI7gw?sZaMi*T+EMmtv<-K!~XYMw|Z^&}Q)x{Q6$ ztgqtStC!unJc_ZeQ(xWST+MamI_`67f8cj#L``#3_eVJG$bZ4=Mvo=EibwLTpQ0x>haOw z6({wLUC!0(+nuXV;IVqfPIe>fBKPWy8@;!?SM}Z0FB&^qQry%yH}$&9dkbagIbgM$ znuwa}p6<5WiLCoE3+WiU3wF_0^-novtVnU9&(q1y)!Q!beV5k+rJ3mM#@$+D9DP$@ zT^&VFyEeV)UM(o@#H&C4J;QOZ?JoHJK(GU zR=Kfc2(MQqmOKnC`l=OX9DSAGUOkE!p?PZ&sr6NMXx3Lh?{=G2*hV)&FZ95CG0^4wh;=^C zg3PfXn3qPPe;kf2oZ+sF#rrT-OPO*m6Lob0GoUdn(s zYCS&6fn6!~mCxguZLD#|prl;FIpuP~4d>d^j!X{23Amg*%z^F}1GLOcEaJ7E&z^B| z6#0328cRvkW7%Z#Cxw2s2ju38witmhE51&8euW9l;y z&$PcGn$PZYH20%pQp0ad4X48wDk{!3Bw5Q0q;c3oaVy?*WyVo0bZK6SKjG+!qbA(R zbo)n#vw)rvnezKJ=LOnFctZn19T97|hGSsx0T$~Sa#VBn(;4PK=KMxS<}#JAS*EwC z^9yKq2|F2O-EVTmQb2XGxrSvi=dkAKR7gemSkG5)I(i~hDdB8@0$qAB!+G&Jhf~UM zCb`}lWjKwVb!5sKPMkYZDjH6GSI>Qh)4!3EtA^oBcgId0!+FCU7Yz)j$|5J%gNAb> z$>FpBCy3su`wK?&ckI3G!NE2CgxN`RI;u*-8BpBebX7GaSJGvN(?iu4&T>~zoND4* z0joaA@fw=(y*I_@OnIpsMuFBGr#kz%2OIR!oH6*d`OzYi`GzC&B6A>f8hbI$HHKEH zu~L@rnj^Co9G2NR-qG`#O7&sUNj*N%oI|t;oFF*O-5MTHbA4RH6Iik88h)lWNa+E$ zrJt#d!pT<1DeFu13ChY#`%EjoR$r=9QlHAM=Hu#y#hu5Jn^*>H}j6Y3A) zq@U3;*{rYBU&6Vt%PH%mqA>2AVXo%WN`)bna$!fpb)Kirs+__(ztze0ox)G5LT00z z>%1x^diJ@T8>+5ww!54>Rs(Q|u6Z~Qip)5dQ_yNJnlF`iN-t=26q!D*Od+dB8281o zV!A%RszO#j;Vdy0W6mJSb;grxSXdBsE^OKrONFelQdZ9ooOTtmrV3|&K$jj%MXaFI z`6*XVF>7WRN3HP(b*@8r?E5X@{L#zdl(gQL(to_}XpXe@3#XH-C(=3~xtbYII7H>F zGgA87rd_dA!TL^eh5zR0sbrlOPLivql66x!DQJ5tVn-}hvVIRk{po0w63z&#vh}BM zmK@hI2UTT!wSZ;bH=J0y&+-YUG)@6n&j_o&#Xp&eDEg(NxxV#~$Xx$ObBd}4*2BVy z`_z$XWOWrzajchheIB%W3MYUS0dtWn@xR~GgdgQO?{XXE1WYP&2dut%RXJhaI1|qQP;slD z3Ai##Et|ca&Q)^iv)l>@rzpldmsJhFLfa+~giLp=hjr<@t&Uj6<)v|$2C z9Zo|VHwV#*f*2QCrn6mJIBoknoJZ}(!g&X?C(G2KK6d+TZ0C;fUY)Ct{ctw6>d83G z8AE;T7|9ihzR)tm!C{$B3mut}b`R0>3wB;C^PDw?IglBDSaW_=kK28OlO1cDSKjA2 z_i=lGa3(BrII-Y3He{Jtnh4H|hz->XXc+=$yp%PlloCB>t%-J=aK^ztoa?ML$$lmq zd&^#w&YZmV6njIqY_M|;qvsIbH7S7mB6;Ztj6t0%$u2IOGZh`q4117pK0l-NoUu~v zAT}y_=|$L(b3IO}_7ftr648%2W$ko(xo|H3sAXa)-CiS{k6g}7`xW7Q<#L{|HwmX2 zY{+_I=}G(T?A(glSZ8X^JbQ=8T*ZD`bC%nEc@0Bz;hD^NftK3?aeYq!7NGn`)+J2HF0VQV~su`_ff%Cz?x zP92xC-##fat5Ld^`OwCzGRXC;%Q!#gTI1Swz{%H>u&JMTqTlN^?lymivZ@O@PaAhoC zidgJ%_%qjVuWk7=I77_z>p<;S}-Y`cOEl5k(z62c@hnrmP!wHs9yM>F08?`@RuQ zU(dE25Q3ZS>yGJHWI3)}xmU8-X3TLI8E0?dZ zaH<%YYj!SQDYOWCeAj<+`zp(^NVDm<;r}j=onpSuk}C<`%bZv$0}kiPtm|;f`}oW| zFC9j-VVM`Gf^T3h9&ul9bY$xIQbf=9nA2INh_9Y+mT+D!?QrV*o)pefL|QG=z_(C1 z&(79*iufM%Ef&tS4VqKY*TnanaC$9sIL&-Zgj2Vi)>F~f!na&FsW|o5np^r-3g>tw z&55PfzO~Z!orsVuGltsu)=Rreo3`(#zTj|dxl)mRhpjQt_hl{{Ege_^Y~f7y9nXbE z(x9L)pl6!zL@pb%%$ZV}bBJad&a6TXXRhz0$eb_Za2EK!5l$}b0{HI`J?lFyoQwG! z&QjmE!trCjz<;r{%6C>c9P9b-5Uuu|6VB!chqKOiK{(f<9L}4*OTu}goWps?_k(aw zRB$-&`F<46CfJSt4$)rURpDfoa5x|OeilwXw-twd*Mw8VZTnH*b>ZCSmUY~BLpblb z^*QDHT{wN*vcB{EDV$MmeJ=ZM31^Tl9QFCdN4eR~!Dy#GH}Pl|b5^>V?J%Ekl3hKy z!u-N1P}a#+C@fq!spTC`iLmU#dC0AEbXZQ|%yuIp|4 zC=xsG3Tq&oCa!(ajT8(pakK@0Ht*%1c|TI-KhM;kmKo^+c_@ z{;{HGcOAz*%?)Rv%W3P66`8>AJ{IL~Lvwaov5$gDRV7E3Gq%Z0Pt(zy`T{VxjVnC)=Z_*V(%1kUmJFP7H& z*9d1)n8R7;e_1#KUCu`TE5a%3cVssEUlY#DE@z8>y>NbUIdAzl3TI)!$+gwLSvVp4 zZ1-;w&SuwQJN<9vPJ_k%#0rG}VrjR3YnHYj@V_gZ6K;PU^6wH~o%@NC>tp{O(H!f_ zeCppTxt5ukF_w<{_lZn1*BZzC9|@O<67(+ z|8e2ecdc>C|CMmwbR+F)|JTB4c+NkTt>sKMH52E0Zm7RXEFCPWHghn&Wy@j=(kHjLhv=BWK{caGoga zaB>B1WU)`~!0#ec*7d^z0m{QO>`~WZ1p}6F67o2D3I)Q1^N4H1!hrxdL`Rdf%or*f z$R;uc-8z>7hx_Xvpr~+;x%H_MC?=d+ZcFbE zln_pLS5J*VDd7xqeg1(!q;PV$Hmn&aBb=G8HEIRQ3a5jct9GEga2mPeqE4V<9*)KV z*Td@uD(B(Y`(ba#8g&EsU=(B~;q-w2VyPiGcecG*pqgkd?`m!xsFg+Lp+Fsx`QEKz z+dzF?AGa0l0}X|<%a!R6cu+W3U28lXXd-nUUq#n2mO2KSWs&I=Xqlz-m_Tch3B{JK zfp%GB9t}L4h0{IINjPu0p3pPUML6%doZf+M!bx#`qi>+6aQ3@0{R4f3^NGtD80atc znd{~n92g{=IF~ar@R)G^Dymz0h{gvd35R!B{C9|^1*T+?nGu+lMP_zjx^RY+)wyD6 zK_F2$+ueC^NnoaMe!%{Y{|?cbz-+N|1)P-f-!R$`m?JU`-T8DwV4k!qG>W~G&QhAIR9}ie>Si~II~=9Tng+JPBUE{)aU2GLE)S)?`Zxl z@R@KbyOH)*;G~pZ(Aeim3J?EAWWF`6hy~}2aH_g}nm_z|;k;_r*s)YH{MRfpRl;v& zv1;w`@Vp$^LVD_k=g7io5nd<@=aKNzSvbAJD`nvf34b6jkM5S6otBObZzP09@Vkrfj0su>mKsoSS> z!rNt$nHL@-_PJ@i7b7mbYu@s-{4&wI<59^4c#2_s6jei`_JXz->i6eBOxxA7TW~8* zL-&pE7F>TCzfwCs#9xE0^a1eS5E|ld8;@TI0iU0(XUfmhf9%QE@g>Y};Mc{-W!j>l zre(V`twC!}aJh=E6;wh4-{I+{@rs%t->#maa)$TA*8q|K;B-xQW6or}RcJ^qdIi4j z1b*39H61jEX(*ka&ifAO{EYv19zM6@BKUh6F;$fFSGJF$`AzV)2Hb03Gfh8htLgO? zIMIz#G`2JDaQDGET2s6+INqj}n7w`moo{I2=kTk*z_}OUO_Df8c~F1Om+~j)%SZV; z;TgQRI@EnG>#ajY5;aw*KjVwA7t>gr1~IK-D8GgpV@J`~Q(0dWwKMg281?0P*EIAB zB2=L`o8Cq}ih(|e_C0NrRzJi18dT&DJT-uP{Dwts z(4pJ8e{3FHsE19vODL3U(@fE8(?!t6kbA_mzYEUJTLU)|JA~|1<{+M#27iR9*S+kP z)!vO-YCAq_+Wk>;u7{$bIJfEsJKqO;QiM%^?IG$7{k?)j{lM>wdJhI|ffzFaw8Ycw zhl;kZ=6Wbf1Lb!37qdUxG#&Iiq(?5-`nRpY&IoevcGY%{6dFbK+Oa*N=q>mM)7uZ} z{<%9}+hH>5_308k?E?Db^Y~R&P_|b(DEHSBplr8!plsKtLD{Zfqh3WJzYlcZ3q;R@ zU*RvJ<)9~y6RiS$;ZvfupbvgRv>r6y0eqPPbS~CXZ=?Q)zr-6qpl2{%c7y&5eIJ6d zJw5^D_8$k0LH*8vvK=mh&PV!BppN|R-5*#b->JmI8?dlS&E$!_R94+?f61)YuedD_X%ffFaBmc|N-kQ`w+R-KWG3tL2 z>0d(r04RU)_$cUQ(2qd}N&j^T*5P&lPXymLp-XU`*u5s@6hG(^?2CHuMS8gObC=+2 z@B{X5Z6Dj%$2RuS{&5`k)b`PSauHbD$2RuCS1QFGw(&2Uw4H3@PxwhNv5)qHZ1|Lv zGj7-)@&h~L$r(S+ICjPr_h)g)u|Jdrb;cL_Mb!z4zQXvZ4O;AB_6tRE?b#m`ork|R z2LEZ`wZQp7Uk4owx!>cW=%s4x-!Z{?dwKlC1fN>P_J|242#uoV`*D{W`8VF=xS(h@ z#xKY5KW=F11E2A#Oid3D*5f4!sa8M0&F zA`0_Xw_ty?pJ}fDFb$>iI^}urzk{DJ<#oaHo^-}ffX{K~2@jvw5lbVLuPq4Kz2laU^NOVe?;HQfX|CVS+#ymX_VX?OTrx+k6My%BzSVT!^>-0lJ{xQSIFeQ7^X3PSx@-ajlS+iU%yDr zPc{0iavEc4E%N1zzTK5IZiICj>%Y!-#6Xi^cc!z2Mp1UO_v1oQ6#o`}Wg9l_f&VEY z)c;>0f2QdVru>!))1?D7<@ZP!PdAv~HDTP(V19#zu`+n0!DKMM>%!^(8K5b@H^aEU zNuOfUzcuN3B6a%D2J@RQEdP_i{Qe8$#wI_nvl-uSFz*i-KWs4X6BvJFFt5iMk2aX! zyk%U*V1ECW@f?HsZC%Fe4Cc3T8Aq?sl;a;`emf;|LKNj{q1VaXnlTR9na9fk$k8oL zpT_%Aj6X*C2M`C(?Z&SGf>u9^=YBwoV4d}?CqM6JZbF{-H%v<#npdcw_P@{Lz)#s% zYuXiYm2u!(jf1c|<1rWqOv}8bscq7yoAj?x&zp#!vx+L2e^z#5xf=8!5#2()x?y}W zE`j*Y^lkVdQ!+S5eT^>}{)>kGZfK+RI=z6A--C8?{;~%575y>6DA>uGSd*sygtreS z#sqm^7-Po-BV@jh36?jsj-k7y{V~A~Xm{Ae8dSB6uJ1IA$6M%^x#blNDjG%m$|;Eh z{eg$0je0yp(IY5#NwFvzeE?4z8(Ow_O{&RvDI&^K#*aMTl&5i*@uc9y^3?Alz6t>P z{spEn!LArLynb1|jN?iTsscaCJ24-9AEl@)>NBtxQKgAdLMbAOK80UZ1OGSp6Gh|` ze%*p`MiQ_&|s0TN#CG9#$#UCW9UtxF~I|? z*so%OrP0USA8h}gu*(S zI_&Z7tS`!}L!&4LH!>N2E#-6zK2o3S+bziPlsVj+|Ze|oz( zQ9Jm-QLG;xuNXzqU!#5%F~0iaz7^=XHS8BPC}RNH2S0iP{7J@-R$-r<>mvJI4f13B z%tHO=i(Hh*J&AUnho3wTx(n^${nCo2n!eal)5V7Wi=lhqXO|&Yz96@&CiQ^5mP2oQ zl)D;wjsb(C^I?4TmH7MwQ$iHgjI-*|OzK>h!d|OWu{SuA( zV!grg1x&t$=wFt5!&YTOm#`9x<8QYg6k9ypOOc zW15!#>q(tH9`T>$jt*d|XvbB2#RK&&_mifx48Ce;SMV<&{YB{GbDPD+?~9mr{tUZu zyK|ZLe+&EU2Oc5)h8PL_GwfUx{=)gAP5wIQ&m-X9tA7Z7%>ASLC5oK>aQeaN7u_FG z^fKboA1L=4>cQpphCkCJ#9`3FpuDfRA9OBm+0+6pl}S{8655aYasSS5%jgRO-XRYVWKXm;rP1OF_4fe~# zJZPam+e`|bCpDX+^^652yfJp=35|2ba$K;f3idzTZ%Z-W`CP7x*b)0YW7oRq4?Y*_ z(VXQK?Z4*|E`zzEBXzzG4!@Feq9o@HSkdI z`JC_xjGKPYzs}Hi(f^FUW{Q5vIzIHcaK;JZp|nS@GlwBx0qiq(BHykbiN;NerYBDj zO$D9zDewP%Gy*sgax3Gt9TL~-xcUm>T?+a)-1K+nqu5U&-*b{bA3d^#`zIfzJ;)UM zjWIgjKK!_*I}NU2@UF3%zYcMl<8c_)1x%wyF~0`Q>W_Wbq#Cps^u#Xfv7jc#CK1gU39Y%dQ?&-KzUcN-K4f+4rr}x8gXva?Acd_2v z1KJ9BKj@wOzn}j`pr1J&1+e~NdaI45m*F>zo%3N{Zytg@f5JFmzo`W|_MhMnXWhV2~gIPY3PPdI^RJRZjy>5AxgXijBEkP({EPFke=*JK zUxTskC0}->~~BZKXm*ms~>v(i|e@;ZH9$_4#%K(AumIv;X+ zf23#(&KLHMuS2}P-SA)(mBadFT*D~(;5^Y{$SpG@5UoHt?-an?1**%bL9IW* zIUdq^ANKm>nzZ&eoX-GPf*-Jd6nlZ|k8|Q@@#Qkm1&g@8ih6>-4>ad9Lwk_j2T>lcr;lF5IpX9R5~`Xr$zeqG5%!{<>)YADC7@qxpR9 z#hA})nX(@-Wxry|ekOeQ6;t*jrhHDzl+R`(7Q5BuBu9)D}3aPJa)zRS*({f}uY%&+@Aa-9F5 z;d6gh!+gN^<(`6H-ULoTzw-R`1mX_U?Co@VL@e9amVLLHQiCdEUB>5qM_y-s6usXW z?-ESGJRtZM(BJO#%ZeOznGw24~6t3p`Um@ zwJsn&qP|ZXtk1`Bu42l`7{z*U&V&8egQ(Zw$F$xLgd#qp-*~^c2XS-n_?nddB2lR# zSo_I%jG}Mg$8D!XQCrZCpcS_ebph>wbzcuqj>mmb{#L~4L7=tauYi_*}<||s(T+^Rh>iDw->kp1Y zQJtA;|JjXoW<$j3c=Z3}t+=lNN=-DqfpNw77en(#YrGNTF&_QGUlahtI(n0IG`U$_QuoNNa<2KeQIn9o6bBMz(uor*Za?fO#Ux1tvoa`}qFG0xV5K8AYmImRZ$gV&*->5eIN zh~vw8P>wI_!RPsZ8K{m2dfmSa>HHi)CMciJXF^{a=w*F{%)CDU_KgRh*QW<_1Q$D9=%5jh>*PkhWd5Y=l zy*2)&kEZidtnpTd|G#K%$*vFpL`#tAI`7V!mpU}JjL{+;dB2mzF;u-6Jx&5!*tyoP5Isf zHtf42OZyra{jEXoY@ed5$k!hAT2WHRqprp9jxXfA z_Ho+d%|8SAc%18cV%>`TeE&=5SJW7O^k^16{q9kZ(OKjs{7bnR|59$=zm$97U&^ih zmvZb^tzP2$h}yrr_WP&)%__GE{d2c|ar_~xe2IS{&wdhPJO1FO1&G7l;5VtWG43Or ze!bHVoN>bC-I@RYj{M)-gZoCP7yDT{#t+la;Ai~&h2wW@7q$=kTUNjQyS`99AM~-F z_l>?`k$Qgi`tK&R(>o6SuFsEWJox++YY*t_jrF6qep&0Y75cRN-~FKx;wbC6n_v9@ zozL6P-gpu6Lv8PS#mA68`YG*JC{Bd(-)Yyol~>=`a~k@G*H3JhtoG#o(De)1^BctV z-tc3mU+$J~7xHnu57qPTcK>^S@|Sf84DdTFx22j@|IQ3j8f=+~e}@j2CyW zm$w}McJ^aGy^VbX){$;}Um){=&Y!iO`#tS<^7X>}$$IYW?>qbHZua2z-7DUB>*>{d zFZp}v&)V*bN6b;&PlpHS<7+k zx^vQ<{_@}D{PaBb3I8;nTVcN3ZRShXUqbfb|Gu0%<^A+1*4xfH)&@Phy5aCFQ;Aq_w@h2tq;%Vyq{+O`#1Gx`7hy@|BL+B{~+(w-&t4OX|MmS zoR|JZJHEvJjpN;!g1C2-CGOp={Z9RydeuVvzeT+01L}>t_p(RU{7yUnSHIzWyw3h# z%J~lUytAArd7k_V&P#*e@_Bd^z5X51CG^jQ<~lwMHv8&9ICtUuAeTDn`zf!t$Nlc9 zb!Z^=e>bK^&}Hm5{{n5FThlSvPcj~CAAUH?PgHA~_TP~OBIp?KfC6`~?-=;iLx*_0 z`6*7H^U|+b;>B=N&-I>tNhg%Y_boOS3i&%fhgW}Ex8T>WXqs!Hrh_&!#e4vMwTV%5 zr90;L?z(?1KI<w_vp~9Is-6yGCf*+t7~evYJ$iL=+5>3Ca6u+HBDGqvPW{c>a*rDSL_6X?}9_IdLNDM}Gbd=LJve=ib+0 zUCZNj?j8Fy+_%U2l;iEa>X}vloqF+$GNv9*{hab6J`JstIev3He~I?fVT_v}L9=4r zFMevhTg#0BErt&ywB3dCI1hFBEza=sM4^7u<5Ks_2=vD!3-48cehWGUbY?hzJu-qC zV7_|_{*VXy_aOh{m2i&{`io9xzwlEB?C+mPI@go!x_grF@0bslBR(`ef#={rYkaKf zS;#L(zD}pmz6$t-q&b{l$BFxT>Uyn4`Fj-n3N#AyEz_0o*DatO;6K7g+~9f-MZEg} z`f9@mFT-!+alYLe^(~#L>%ADbA8=n#w!`-*kNuYGe+2njqh7C+@zYnuHFoqk^pcD# zKm7;uIP2{KJ2whZx4qlOW4xoCd~VK^&xMaoD{t;k;rD#7E~pPbEKyn0PkQ6~x+tIJ z@H{!q!~D8Fw8y~(fbnBrE-nkq@oIYmJWm(o zafkbw`Elf9|J0P_Jzj!Z2mk>8uzIUm=+mY8d zjvaMA$Bs^Y6qP~zorLz}Kz`P%)sM~^q2PUY4JLKCZXP5|C<9lbA6O+pF92PnSbclVz2|}yR+VS?sXH} z_f9=8{)3(x(DT~A@DFeMUxU7^{(7gM+*$snzm<4ePBciJoDXWDLz*$zy-c5Us(fsouV$npE#@1Q*HZ?8O`|2zKc#K+fUee>_~|J!wBI`(`{}q68V}z7--~|a^RvUC*CTOW0h$f>DZd5vw%1#aHxM^} zfc|-gvOivjJeTta_#=ge#;=Zl|C>IVes6s?>dW=vcn}7;yVq0qLoTG>S>Jo>?T>!u zxVsj1;Qn4$M$_!&^!lx4`M>+Yf3r*ee`p8WrSNn;-YZPk^VQFY+jnnI)^_OjRs9G3 z95;Eqvz=-{ZVuYR=ZgP}{`$x_9Onug9|j4%xBdQ4`nmD{$NF19zcY`FhdsEzrlWtE z{x5cD^ACDZJDbk=R#B#R<2|tjEQfXXD82s8#JYLVbicbEoP+sf6`p^XjecO-9(tL^V*SGOIm6F~bqwRl zIM-$RnqSNJ#Ql#|Q_9PC9F|S-)90&ndHQ<}+7HLT55utz`*~sn;dj$%Ja9qGcYI#8 z2mE;8rr^(kJ-qgt*H8Q7Ll`$~@7R7?-%{h(E3?S6KXKexGr1Fb1MkTeX@S+d!hb!o z-~k@otOM>6c<>TL;S3Mv^u->``j&ZcA>j2Ihp)t4++JkSo1S$3WuJGm;14{w5Yj(0 z`6Hj;{5G8wJika=)Za?5>4HaIAw6dl;V+Y}VYTl^`c}c|6sS-5E^~l}zF*U@~ zK)DmbX{*6oi*xO>Q$2VUp8KQ&KjZgh6S6bFUuM`V*!>lb=A}FTWropvIAw~?qapBu zU0gqOmHcJqS_E$!Y=`jYm@OHP7yaqs=dNk_X$Ic}E`DIlT}aGk6Pd zUexd#gEvnl%H@loa|Z7Nu0|1b#o%ZDAS#(qn0_<(4d5~faP6{ep!D!F@tnUXg&TYW zxEg+wsEEOB|K$9|DAM3zz-1DOQ+2^9;kkR^H-{5SP(6by0apWVX5{PiX8V?;js~{| zE(F}i;E|GEibfioAnB!OvcX?Hi_^!1(v)iOP2h&W3k*KF5UZ7hNLp_2ufT19*9%TH z{TD@VdT?HfqP>C_hd0Bl{YXL?I$-dlz`YWp>8QrEWEoC(63WtP4<3_Hj+$b2#Pi0I zKB0X@>fpgs5-QPZ4<6gT3T^S=Lv~f#?ZL?j_t9Yw&Pb?6UwiPJg!}0S51yY;o&NCP z#R)Yid-+g(dbWRniVB`jtzSmePpC;1J?SeGYEfMe9@@S(#Ry&~?Rhz&4ox)qzfy`e zB{ZNnJ@TX4H=)BG`F9eU(p4k>Xb-Gb6IxRB3S6K0#CSoS*3?e0w%3OV4^dAKKAg~o zMtE?)_HAjp2OmvnM>7TM`khEh;{RUpGw6Obj z`fmYVCCll-l-QLbJlLPujT(7yp2VK`wQ!xkJe~&4lh}*Od2qqR-c;R#izoJ_J{}yM z*q>&3@O_DcXpslkP8>>`Jh(~XNZR4SZ4<}HZ$GkqH@%FfsS?Li(<-_?bx@!Fi4&=v z2Mo(DgdIFr_T@T$bw z^qB{*PkfSURn_$?jQYKuIG>t&@Vki%X_LY0`y#3*E~XtGd?@i5I_<%qCq73x?$i2q zLjH8(3slg9&nGUUQXYIIaRpWN;2VjnD9+$Y$ZsXROw&C$ThdyZ>B0GvUZpn-t_S%N zN$Y8c2S+Duq)ZR4lC+sV^Wa)ZTc|`euCFs+Ze@VK%&-S`;#4^)gew8JP1>%Lk-hk4d^j>peIxeNS(B@RFn-=%nBjy0ntlQw*=;oq^tC$!L=d(cG6F@?g5rxND=*U+K3;simA!i86Veal;HGm zy}r3lc(5OT>EU{PbDiQ1*6W+!D8*pCzPUkj4A$$Lo3zMay}r3gOAXfRo8M`T!Fql3 z2W>ET-eR`zpS0cJmw+>XKQwp=?EPudU-Y@bTY$d+K5OvH&+_`^7X4)KZs3N%w++4x z`LC01Q_fnteZ`ReAK+pJzrK*yH>4^UybrhyaBYM2`bw$h2J7{eQk@LWeUSUdQhg0B z0vtw`dd%Qo8nS=bYKp-m{$ZfnwyyR2Q7_8T4VQRI(dVLnAUN=~; z&;05=gZ28%uMQck*M9+Z!eG7r3#bbk8~+SfS3Ni{el_y8;7qj&arRPDHdUmy*pIHk z&#otBS3?A+(0!oSlX9qyf-}`CNWYzwQ)L>Q6aA1Um`j~D@*_d>1oNmWby#1fx{Wwl zBA8D#H+T%ntrpC$aDzqCKgBp`8Z4m38TY6;+XSIe#*-T`naRQ;!Kw4X+c#Tg$=XDo${E_!``0>_x>@ zyun+53jwDZ{3%YWdQk~A$KcDrg@B(HoSE&+9{gfeu%ucl_=9X$fVbNv)k{Wx^CF^| z!BT32!5;z71^&q3m!HNc4whD*8vHKsv%o(ZTy!zsUI<32>jqZ`UIm=L9=9(&{DWoe zUs0-Uf3O{`ju>1O@hD(LtGe}dea=qD=>YV#G59KQCUA`46pF#rd?;8}O&9FM z^Kxp7;AF}TeM^$csc{WhUoy3RpXjq-c~u7EjB)r&8Z+Ygfxr6Ji^{9&lAfvf>u;|> zz81zI$J5eFad!)Nwct#}Ux5o)6;!7OCBNdY!>#sLP>ULC`CWLsobhLZlWG2V#FJnJ z)uxG-=dZ+F4pvkpnrivQ(Els&Ji(c2^#**UCRj-gX{OWLpgezaC3Qq_rsA*9rr zjx^Wl(MT@}Jh}zrOvPWNE1O(J6=|u{Uxxl_z()jUD*jqs{p6}@dMlmYb~)~*1D9y6 zaX+kg@GVPqpTYZK?~cj$sYV9x#;Fdc9}%2Rbzxt|`5)r^sZ?|mzE%Kv{@ z6+L)xa&>i6a0=N$p6_d_=r$~$Ox0(xzFMlK!K1sezFKOv;8Yro@q>57RF1Y<{wVsH zaiqc1Hsa~sen_qJ;FpuzsUJM~@!p=grm?AiNA;({y8a!NuY=StT-U#&%Biube@9i&gYgS@ zs-y=m@;#y|c<>9p7*)fA(~`TW&VqIQwBO2yas*4^im`w*&qSc(cKoz_*fz zs%-{;1MHhIR2?(8%cuC-?u=pTYl8;^=L0@x@Wvx}OLWF?^`pUiflC4ZX0Tp=j8L}? z*6WWEs(43T|I0WZC^uuIiZ(dhQd9-FiNV8`5Irzsl;XG6xxKT1>j4ioxZ3kXO=di% z9y9o1;8wsH2J7|HX!VrAdi^w7y=JgpACFOQ7_8UFW7Nk6>-F2?>I;MQ`t5P`i@|#R zHdg&%uwK87RfQkX_0{XMajLYzdVMxdH8l9}b9h=~MyzUK@HyZZ;Qj`Wd4Z_=jPYu? z!Lxz;0;d>!;ZN+xX2hvw2FD&J{K9&iddc8);IY744SuR9-aef%LG3bl3Gj5_4-MYD z0#RYcMD@AByMSi`pEdYZ*!Rg9lhjWJ?*?87Or3Ol^?W~Bl{Z+=_mfpEgY|qrMfEaR z&-YW*2!r)}KUGaMSkL!URf@rW^#5}+rm1-bmjYe}yv*PhSU;?u5wBh|xDW8Fz}pPg z>xJp+BZKvNVY)hDu%5pY)b|GK`8z>fGgz-D64jpu>-9vUY96E8UqRw$l6u78=D>w0 zN%a++LRB$;^`f8}E!a7~52{Oo7t8)~^NgUn=D}|R=kLt=7gJmgMVn_NtEwLSHgE^Q z^C{vA)*mxwsHTsyd^+)0zdxFhsvhy+PiLg7K7#kyU%Z6<$BdckN0a{YJggUH%vLu% z_{@wsiof2%`Z)d4jHgs-5B_DwJXKZj9{Yip@pR0L1!{-j6uPnxUpJYtNFC|H`ID*G ze$4MFOH@)%t&hL<**ayVdeVbCrmR-ad2o-Em(?pCJSgQ=wMB3;9f$r=DeKgig7?^w zD8FOMdi8N1)}KNvBtC9ZmkjQH3}0tR*`#g=UPz3mrM#~0>#OCo=U>zTKsB;GE__#w|Gg!yxca`d=%hU1s zU6sdR9e;MJ5(ew|vr|*N< zt5}0|JbPbFHCV^9_tgx8_58C(%{ExiKYP?dgZ2ElSFJTz&yRc6DTDichJfwW{JLLtH(1ZF`_%x0kDb7N zDdj^o!r)WDUnYN~_-hEPU&reMYMH@0ULR2F4A$}NpnBI}9nTJ`Lk8=3bx2(>SjVeF zs@edpU&s5ys-eL;-XB(N4c77gW7W-I9q&I@Lk!mO{)n1wu#Wdf)UyWbc>jsoX|Rs> zpQwWd>v;aDI&QFz=bx(c2J89YsJdpbo)3;HYarndzwhug$NSGz9)oqf|4fxMSjY2Y zs+z$%o*z?n4c77cbJfyd9j`xEodrARNnfauI^C=Xzfk-YS(Gn0Gvx~vj(riOnQomDQ8ho$@)@!NfRpc-&&$xK%MK#*snbn9Yq+U{Q z8(bCV88uVCR~HN}Dfma#a=6Z4qZXIr=(`L;tW28 z{MVCmTB!!#g#4wXT-FhT+evx3trDYk{%??eJt>bh!r)v;zm$~M+G214sc$}u#%TGs zMSp&)gTcGdzLBW~tQ7`-Cpg0TMQ|qR^QWR#&c``_3cU<{x08xl-34coK94GHjWg-l z<$S87wL@?+<%fN*CzZAWV>y2&>GP>bD^hR@{Z)<6tD>yOOu9a=Dr2RZbUyd17L2w& zHtG8Os;qUvq#r?lH4T=tYL3(T^?6o#tApSa+6?`jgB7f2Ou9bbs%UL8>7!wfLBUGa zA0}O&cU86u#UEzp7gO1?%ybnp(|Trg8Yt0r=Wp>iyPB2FC->2i|CKomX+b zlv>?-+u)YKD}WCRPNv;>yFyV7>lcIX8_)ag8dfwYk5{H)^nlgC;KNIC-jZ6=8es4s z!L_aL;#ht@t+w7&jTu^(^I$XaCZBfvXSAGCH&45h!H z+Qh0cN#h>Sw?DO+)yd$Ff?HV63eF^b9@NTOJelP)NuLL`vQ`_c&sSPmuN$n-gIZa; z4A$pCt*olkba{to;VHM&R#u|~jlU7x+B$8pdKXVur#@s+qApLL|Fp4kCTsayRk*!v ztPT#I&HCC{2UB!!iV% z4K!|_ruB#K<@2$2)^vj_9n|S-4gLXmyWP%OH&e@>18!ZUy;Tj7oU8FXJnhf8%u^aSMSFfpeblOFa6P2sTe8+#gU7)SFQj&}3eMB= zvr(^J)WiC0fyTqc|9V(g4gP5-`*#m3??Rp4r6<>~r!~*uTcKe zxIFOf)Lzz?*oSfbAHe!KJgu+w18_L}KOTOOKdry@r%8{)SCk6TKx-q$3CoWFE|xaP z`pDqQu-n06L#?wO9F;cA>bgwJSN)pPM_7vt?g0Et>PV{|?8^EY!fuL2Spy92@QTJM z27k~{IP8ukFEPqa!4#(ALNN!I-)y&mH4{b`e}4ko>h;HlPj!I@Olb_QY zrUk7=tF^vAQ2*9xDb@rJ?vj>neJpq{wGsWZtP6rusI}nP)(yd#)CTkIfV3y90&7?w z(gn}8$_UP+S~a*nPgxC3`U8UJSser?)8(4jKc>yMUNHD~w0Bh6BI}3;PfUBps`ZlA z&*>>?ORVl5JU4BrHAHYS4MBUJNn36`D>#$Rp}qssR$5z({8_=Pt%5J>_A~C1_L4PL zu$F%&?G?^+MNs`U+!_P%Eg5}ZQ)1n;({nDkAsXTH=u)X|W2?U4OycrBOZ&tcVA5N_A3jSvYQ5n}52PNm z4tw$kQopcHdD2g%9k+h>q@POr$|}B2x0m%_PW#%bCpd+;{L5*ltS3C_H`C5oFL}~$ zrv1m-=Sk0&{+)H!lb$X8yj6F7NPnU9i&kgBT7RMR@2xmbdb#w=){~y}a_LvBWuEjJ z=|5T9Jn1#kf3Z$@(wn9KYF#(!+@AL7zgYz~gv#%h{=3!MgNLO5X$=ybBKCbe{g##F zNuQdo?AJXwBi*)-7g z*Qe*Pw|df3((>6yJ$QS10sBXf{Py%hcAiaKzOMg=>4oizg0;UKOD}3q_uy0M#qDQ3 z_+olV`wf$y+jB9!w0+Ez{#$yK{gVf)jA%ROW?df3tBi7XHNm>P0cjQN4xaP@X_f3n zf|JFcx};UHuXyD1WK^?rz8=z-C!@OEU$E9!JmUd-nkT(@MlE}ZC%sBW9s6w$uANcO z{?sF1JEMVp&67Sit&yGQ4K7dXZ;{d1t}IyhSBs3Mc6(2HOh$8iib?NP1LxZrE$vMn z+&81OonuQ#-{_3Cb_EZfl+oU9E?DcIl<}}V#H8=9#qsJ9J804~1;^M&O?o$pk6rA` z2Jd`;<5yQZ@TM;BR!zo_+EE5qsLuMj*^LCJP&vUp>W)8JuydHp%aK5Xzr;O+Jx`@F%ONAdb%uzkhg0l>(8O~0fU!BYW%Ii<*Dg7?w}JkO2w zp1s1Pr`}|HjLGpk4i4E+74e z@iL=DvOQ0*w#Sl)8TJnzydxvU9*up8BR{J}s(o6pmfw?+X4iX<(>4AG6Ur@V`tO#7_CwR^I^&9ZL_P9`3|__n)UWEbnh^A}IxEscoTb`KB!GUEw*wZWf4 z{+o=scKGg)d>B1txAfq%8T0IU2DAL7j0N^t!Rg_h4io)9T-|qk6vf*B@VVUX-R^Bk zKmtfJ6e%Vk-Ov$26$F$fAiYF-FA^XjaOotMgiAttFBCx{MIr(Tp+$NZ6{Hs_0s>Ne zpP6|M_V?x=K3|^MJ~wT5XCH>dn``Z(%iE=C%xleqn9C*p{E5>%8qJ?Kahj*0`Tc39 zc`=%o4^H!H=KT^cADre8jPvJP63p>v{ya;9Ig^<`Z}Kc8!MqJkpEr3El4!ohEzS57 z?gxh^nxCM%ql@?R<9~V)p67sgt#a<8aKEcs=sI&ZWle`r2Fl4h=akf-P4Cu!yn(R{oj&FqWj z<1cCEvCKi_bEx;>Z5netSq1opgUw%LbcwRiT$XtL9h5h|H zbc1;Z`XwCC*P$ED2hkgr!u{#cO=jslUH*z`{vKK%Z8rOG%M0PUPB3pa4@B>Pa+8|g zw|VzG=Vo&tb1-`@_~X@^&7l`)Jc#+972lgrF_)Wo|8=YRA)5D>i_IG3Q>cGTy#M=y z*&EIKtJ}@J(Y*h>!#oMi`=2|_E1AnpyubOQIRnl6za{29%)#V(bK0Kx$=v)`y1iiH z)eOFh6uR5|H*>j(w@3Dv-7nF2xrw(&_L_arygjnd+y~A3uchY6Xx^VJGp{l@VRgAV zn>m>5hwY7BeaL(Wvy!~{{JdQb-Y-mmQ|AcuO#(8__ zq&W=D`-i8^`Dot1JZmmvwv!TQ--U&qGaoZ}ZRiE_O@lvPeaZa9;H=Q!&BHI#{V6rm z<-ZHPVm`m3*JoYz#9ZItKUV)^{?y>VRzEk7G5E#mf6dDbmhG?1 z$p(Ac-vELJNZ@+9hFt!AtBmVTQpWc2$Tl zIL@vMg$8HaJ%j@WZ?snyt{WV@x{6@F_HO&T>{W%j2A{E47rGeyhrNdIwZXUTwS=Vx zKeN{nk_QwkOsnIgKLH~6e?YRw?Ez?jfIa5ZWHp6(BI&w)jq;B zgS&?`6T%E06w+MCH+XtTOJTpk3qx89SJ8aDqpbk1GQeNCiH~P|BGh3HCQisNAFpmF zbY)&ehJv#~I|z+$()93N3V3&DXQALOw-d_CqoLh|*7vAg_ZPbfZvk}wy|`-_u=`Dor>oFpt}4kkIUzQIA0gx=5S z`pZqce>hqA0?qq}lZ8=e-aniyOhoUCWc^)XDVp{-J&3=s+F+4N!QY3>7LFRcJ!Fn>&fs0Fb?ZXG@|>S9db}keiv$mYOG6e5H4Hu+vP5WL@Rq=Dh3*FH zVM~Sa23HFU5P}T$3R@;*7@QHZT=?1G!jKih?*=ys3lv@(+%haksP*FA{&omkDReN{ zFDzIXVQ~MjRl*X3hlZ^d5)B>`W*4>_JT)vtIBW2Nuu$Qt!GU36LY05tZ9gI`Txex* za@7c-m%%4OB871Vk0wz%tH?YvbOz1u zDZ)y0K8&BhHr@T4GC`?((MJ2 zAKc(;K4FBlg8Sol7H&R|00)Xl>8 z3sVj55Pndwqv`WYpN0P-WTBJm!K`iJCxwm7uJ+0);W#tz-#bE13D22>$QPsG>tp>+ z3w{DSpJW8{IpI8W5LpTBph@8u1s{>dgUCl0p??(qo3NPKPI&!!S@;R#6XAEUUA-(E z$M`xpAB)1T3az2uq|0||Mc~T2Dzy-ZQ54T{~!hO?7`F6r(2%gXb@N{t-%<f z^!?4`@PCC$uwIul!e0ut49*XKC9Gn0o!{5OJsVB$B>9bDMxF52!Yj1T7(#Z0zY&JR zbHFq{G623l6Hdg<=t-C1t773M@v_0ch6~~h7$>Facf$VM441^E20snAiSg*AFkZ0S zLlX)7u4wxGklq&IAr3@$cfj+z5$}lw=p#@s`bKz)*U)!Hz<5GLb+HzFO@=Oi0P5#q z5jDiI%nouH(ocw}DHfmyz^s|GBWjDj?lirFIAQw%5nkeAW+(X?;;SR-i969};e7ny z@u3Kb;jdh4v7NrJ^`W?j#W6odd?-FMI5DE3SjmH~zuZLU51DCdB(_IyDW&a$#^Ojc zJ)Zfd#$qtK#UAJ{o0^CP+;T0LrFDYYTRem=X+WRP@D}f2`r~Wp^4?_>dW#pqqW@Kru=JUSe3(d(B8zoTcK?Zm;%H)MW&+KZE! z?b4=s^nJSa;!L#HC@6m;+KUUh+3&Rw9Lek?Vyu{D(2@A{WB#T^a**J+KY?PM>k@9W5!;w5Hy zo*q0Ya*h}UzcX6Cz8OwESIj}Tm;=v8M9vehHR18Ib7_3O`0yic1Qw zuNqt&86v*I<kDq|^Ax9;PF|FRYdQ`d?(3-EW5wy2HjLH_J zHrzgNz7Iy`ivj37s5k$OEE0F1dqVt7`Ncn~RIJpFudlTi%)}X0E;eV5Be!6EOQQ~pDd_R( zaKAt5sQ3!gpMr6Zgs4+*%kvK*pUx)d#53*b`gnPs6Ln5}V6bPC^P=40U3`7i1+hMJ zu(ahvc%SM0i=sF44OZUgR=OzqqZ`8SWWMQ=SimjMgVO()={NB?#(DYun>er|UH=VJ z5!6Rh-G3KLxaDHl-wUS8qS}eYWgC>AO+7D*U!jx1xs|SniQH`aJEE?N*U-Gaxh7WW z%-2uroBdJO#EEEH-<*uPE|M;M{k*=pDYilL`sSuMmfJ-4cYoAP@gbVlH@#}y62Iz7 zmv_}Sx5aVj^HATcBDcj1Zuu_M2jS$d_zWEY`@f3(CAR*QFaHy)FPc0ML(v;p{q#UQ z!!1X$`sShd4|*_xFENsbVw-OK_~`zP22W?cBCmz>w-)B8UC(Xe_01#kD#m$z^H}^B z&Fh=TVy*7{eDM77SnS4JZt}Se`Kiuhu@CxEF&uT&6LBD#me+qpJr{?fPeK3TdDKhs zYjig#XT>%DiDS`y_Cx<-jhkfx`WD3BUn5wiq7Op6;Tp*@8(nEE%wD%fu`EKr2l38p z+%3z|m1~>GXKUWG1ficoeAt?5mR0C9*xzw$YFNUVd47j)wpe1BgIRrerE_h|M&=-* zen+2w^s-d&2AECuNL;3YL1Sfn029s=iMQ_T-8{^-BT z2+X+L&?5EZar&NBn_7)60q9H6-u$Z8N0x`^&9J}AYWY~E_u}d2gEMM1vs9oD!};1% z>tjpT-aP&Ue63asOBuQjJ)gB(TUz&_afh_%0laTkqphU_H(3d8U$d=cBHHo+d^w`# zCzg1FpVacT+(T!mCUT;7drS4cbbUeO5!63_*XUsBh`tAQtJT#q{4*Z!2K95FnmsHX z`*C~0@+)ihv7AFUf^mRrwfkGF{b{_M(EJr!r@!R`W+(IXHT^9unfdivyykPuKuo_4 z&iDFZ11#Z&_=+`yECm?93h|U-Us!H3myzvx@O!T_#8UHfx;@wRA8M)3?5ZD!T0SCSzJ(&dB5 zA#kJU088`X)aB&pW$1522U;$nFGwcRBRa^k>MI_n9vmHPAtShn4DI#k)s_l_=SGKE zc8uifAN@USB|6L!G>Y1F{v$16%&zkvX<2KCM@2_k)^n38W8wM!dTT6un1k5wH7PpU zB9Er)bF$;jh>o#%Fx#a;^-LtXag3!pbCBc@PJ(z{jJMoENM5wV(gfq3!JDIFEiExV z@D7c~S=wWKJa}_-yrnzFZE)W@FM6%zGmJL^Z;p0a24j33iziq{VZ4~d6D^Z4-sm!2 zKFKlz<2}Kfqt{s$V*CuW_jg4nTb5(|8F)W91moXMqwy3=G{)n=`@xAA-{_$6R7(cN z_k;I?3o(BBPrCgy%NC430B?>?x0EnD$)L_KJA8D8#bXRTztEn_h52%#GcA7TV#qI7 zqjM}7%yts651zM(&bJ&z>)@Bs1r}i}yWV8UC3sFfrpU6G*>%0wTUIg0k)48xRE}A1 z2^>e$$3aieL>k0=XIV9#Z6EV@vE|tWYA5Lc?RnprVvB7ecSZ%wPZ6`tQWfnM1MfS< z?69r}$ z^sgdgDl8qp;qlDouvan1EGf(m(jUf4zKc0;5vI~O_kozpmPlqNdDDWBKVxoNZebjz z{v&_K{AH;%ji=uXmK{$lDa=mNaW{-FIbK=zOy}`0p}o}1@t>vb4C**C0P3qw4mWEz z^yjv~*i1%@LS}z$q(oxN-&f&}d`8PaI?|9z|DNAh7KaL!N`gfP3gEf-bPU!XA=jdpCj;7b^grhS%9=QG@&ktSS zn%5`Y-kR4J-QSw$55NEM;OL%j&GSd^|MA@DzShq3>HfLy7xuIEWVTDKm(cNye%8;? z-NDUBKkG2`!gI8|>u(){4g&9w{@m)1z6ieT7+{@^z7D?Q7-(I>jpLVttU(wb1J98> zbqunGp|`z&`(chRtPW;g|JY)`u&(EEvJrldRbs!imZ7(SYs3z<{_cu@3-5c@`^x%= zna@8^H+F>emBHSzqpbfdq{r|2J&dsmi+Fy}p}h5t9b+Agrq5M&i5+WAL~BiHe7yA{ zIv%#yJ9dKg7TWI{C=X*NTB|H(>nEco!+2Bd6zgF0OUQq*ZNITTXLgdCmtp)WcB++r z;er1CUW2E`PPaBTcy8=W>ooMwSge6v8mSH=tg%5xgMKg4K(Bk4w799W_ymy zxB3P1c+c54p0ZX|rorqPeqGa)o?m!?4eonS7p{)V0p z7DmzRV`J(%re^H6x7IBt)1pusES_E}TW zbUYwqRk^i{FHg=!!}xUE0jql$U0*qyPuJ>p$XbWl&gT_gI`bLpG&H?`QQqjBbsqW!#53d0TkQrH#r~Y ze~!Cmy~yk!bonE3cdZXGK6^NvrAGIypG5HOZ#xO&ZE+8*{m`vO!~2_Y53MQayKp_O z#{F%r9?8>RTt>^6f2{e;4$}D|d=)M3nRPqHe`fLL*1hO#<`>oqO#dC2EdSSfCW^1m zzJibi>MQGSXeaY)>vc3ee{bU6Sns3#VgIk0iS!&z&!-S?mfY98JD)cxpdOcOCK{Q>yoZN!)a{y7L&zNtRsJk`Rq!4Dl{Jm4LNcelwWwb9Vuc}D5 z&>H-nj)Z$k5784@`CC=DC!R+Uvy7@cpf?4OUf{~ZF~c12f7;^ zU!>4TYVF|r_e&v+_ry1mx}s_Mc)PW?)SuZ^UpAE{G4u277vEG`YH;89kEKY1O{Aq1 z&s;{@&4lp*b4w}Zf8wpAJ@GwWu)aC*9i<%RGE;Bx z;`mNd!CJa}5OFJquXM$CmhLf^nK}yag^>6zl6NAF!;c%9@-&68W=DzUmzmU8aK9nG zzZA$EM2<8uk(2QQq|F%Ld;;E2i2qXRoyOB|JWJ<08X^s34kGt2LHja(m^2pM6!Op0 z_~BC5biV!3S7E-U_^+f5Xm8kmaqUPcC6mS-UY3&jzay?BSM7BbH_;Kx0>Cz_diPcQx@Y*10;CI{? zoh{?_t5`Lhw+HDNz%W} z@MBy8<2P;BNpdkwUruJh^>J^TB6%^pjyGNMVZI^1JO$4OI@6`r%yvmR4gEK8C*~j$ zvlNccnITQ*=}peBU_NqZrquigx_;OG=SaTHe0;vKGe`QGTdEGnJAxEQlhF0Sp5U2$ zd5O;V)Y4ffEkyUW()(S7(sJ}6Xm3;7(foO<L?pX$QLgLdl5^0egbe(V9fpS0v@5 zFTW4{180%+9XGqaox%GJ?&;hhU1q*vqW!~FWTP~A8$I3|Cfa`tC*Mf`_$wD_`@X+( z%l~+|^ZU2vv33mf$?d-(*F7psp)o>f26z26;d1Ye_&heFH#S5DtH7rD)mS21bc#q zG6zd^UVstgn6#M3+4XD&_9~(44<_-jf0LZYrRV7Xw!?g~&J)s{pJ+UYBsGNkkerY< zF$YWjP+rb;o|Lwsm$3Tar1TIS&f=$}=gf8~@eI_5&QlWE&5x%DybLU(>3rO80#8eo z&~!fTCSj+g8fZG-cd+w}R1Zz(`;G#8qv?F#iO#c9D>R+&I}6;Ang8CJk#p>Nz8fz) zkLKfL8=V*5S{zHr56(+(O~<=RotOXL@>kx*t3dk0&Z}=tmp|jY@z#9#yZ>+bdvD`( z`5LkJ-MKu2sc|AG^ z+S}B{Xa~3%4B1LQ^XoEwf#^cLB!p6FlXWXbY78 zlM<@R5$MvT^mK@}`!2c|Sj2w7i*}P+Rsd z=bi`U%c6uj@}JCh=_6<#Ed$>{*JkIVj{G;eEqGGG2l7j12PruRJ! z2~Fiy%r{K*`K}WQ&E(?-pHFBmTMp6XZevpP(bb&B!RZ@=>0jczyV_Tm#MP!>{G~X#Fg$ zFGtJX=z8E~;MVB5kbg&zF>*)rabCwMXX7ihoFCKKdvS9v{4~G;d$em(QYk`+C0o2b#B^7sxl!y#2gD zeu(Dn?}hSnG;e<|l!fE$_s-^HIg_|ZZqDrL?=F^o4Q@sj%l^z|;>ORTq+-64kFz@GLc7#%j9bq?+N}lafRIOBu&rnuL?;k~W6!{qJBtfAA~x4Ja>%Cnd=_=Xv}EvtvGtdlBakDJ`Hp}$~VcT(<$?g{mizV4JNx4A1lhUXvG{Vt!s%T4?5gVx=aXW!#~?SS%P-933Rx+*L`e%*cf3Hm;4 zf5y5;a)bLk{bvo~dEs?WWc2~JcP2cqut4%M9`p2- zKY;gl*16fnKIOi?3&vB|S#6uqKg0HN*C{stXFR?S%F})8JZye1sDsHq$j`^uRk3Yg zhWVbF!h9I(-nV(Y;^~LKg!$ao)wboB-B^BE1)D12-1Yu~`XsrL?Xrd14l_c* z{fuO9+d(Uj)9)9yO>SXpu5d4f@}x&{TU!CzF_Vyi$?a@J?!k~SX z+|`zdZVtbn`N@8^jyg|YJ`$dXP5#W5fW8g+GbQtpdFf%7+)p(`~ihDKIaL~vnI#d%Frn%;C@I-qU|Bt0{cHdWu0wQO`d)^czH^y z?E;$T|8(0GgF{j>ZMO|}q-5Kkpl6MT_a#$uZBJ_P^;JNA-ITK4Hnt9TbI9LiDO+sE z4ZfJN-FEE*9;fe*|CRESZI2iC+3}D+Q%h|g^|)I>ey)~!$abkd_ua-O=-(W(`842O z2*3BHsmE=zKjf|izsIhrXKZ5|aSxhJ$k5bZZJQc%)BH6d^$**5^dQJj(^9Y41~%dG zPdZRvv+ZXtm-zQ=ZrV)e7^qMwpVCAAO9Vj{1IJ$xy0w= zzhkS0=HCOjYioe!-vhX7Yl*(~3hr;Myl3lz=HFMiXX}Ti?T>RS?%775=Rp7To0Wgr zrl9%v2mZ1xK=bcE+_$Yn)Beo2EAHE3(ER%j4{WJu+WrYy@xZnoP1`TOt$1kLf#%;qnqqo5CKX~O! z+ZFU4a47fzn$KtP%JvG)=d*Zav-$Az#lLUx+ExwC=d*Zi`w-2)Z}7&}63xGF@W$2^ z&F8Q9&(JMs7|rL)Fewf+pZ~&5NkjAbFWi(3 zXg>diS=ou^^Iw>i18Dwz2thfG=HG`9lt0n@`v{`)0L{OTAS$n!g9)uK7N%O1DoyG6 z;`K`axV^!_sa9nybEzBuK8&Q;(fs=}Hf24Uf4@alP8gPNM%nWc$r|WkR8?>M5RBfOP zL?^DIZm3kC>GJ`XQX4B>Tk!PM*HS-H{$X~KzsA$|0euv=mVAHzV{WQ=p!xGx&6J+p z?Ed|{rp=Y<=y6cLQEx_9K>2NnZmw)+cJ=R@E7zI%_412vuDmq3Z+uHdZAG{5YX7%U zsxZ5rM`)weVs_n6YpXQi>G6JATczp$EdPlzn5W14X`d+7TeJ0(BiG>hn>y_kFJ@PN zsJ*g>$E5&h&5t1Mm4j#}*b{sL{lP8TAMK!AKz9Org8xJ>VDXO19drzfcT^rTmz!vP z_E%~rMQ%g)r`+_-M0&rpi&6_cq%OUm+Esxd{FRCP{_Ceoa~{X%ZMrETX#TuSHzkpI z6?^{XacXzvHaF{kz#VY5zIXR8T;}&Lw$$s1@p6+mmXLo_d%ZOs|F@*|RUWbRxvoz? z<%PkcNk8Siw)A*znE3s={z^TAhdV!4S}^nFdpZXy{V>k&mkm-f(ENVcmrCPL-sOj9 zK|_>Jm~WW){kfq^Pc*+jH(VKNNbeUvQkiaW-}tYUWd@tbSY6V2!U8?O{H+sTB@^nLR2%FjG5@%bCaD-~#;EWZC2 z(0u;J@yZQm*Zhs+l_wbI^EXaVOzqh5;rx&j6dldybDW^m ze0vj=*=RoB-UKC{ndgTyi4&B*?b-DvDeQbtRE9D0`8HQqov17}cud$NV{z$Sh@~!3)A>E3rmbnxkwrxG-d{atF=l^O>heo%s4^LVw)^Utw#ArpFUl zb)M48;Ea&@%5sBCLl!9M1_y>MRL&YKl10ihgSP}OR+@EwcRZ0*mnZ`at`_#K5^C^h zvQ)WgaL0ZDiqz%Z@BhIm=g*2#8X25iXN}Sq z&FAlmQT)+-{;n9sj^^__#V7@6KL3+LIfUl(DaR@|(KWMZeu`B{ce;Ie-m)`{AEd=9 ztqrc07OyNq4_rY=_Ji$8=8*)!u+R7Wi%cCZ4#EI)I@KE_RpKZbfrFe54cHKy5fVr%F4?Or8W9K zxJg)s(h0p+rORh3JSGs zv(YDZ)8%uN#pvI_9wbKzLO05$_ZxDRFmyZc7H};3D;CdF)}g1dc%G7tu2l#6*Ma%U zdbAI?FeG0oMn`Of_C#QTQi4tZ7lsrl`_aF!c%kwO`T~m=DreEz;5UIq%J1kM;3i>3 z%1!ij7GJMCK>y3)>y_u|T2JZmZBR%LetnyQw}54IXBOY6R6-A6@r_Cibp0nVUZ1u} zspncAJOu2GUbvOEx4u(aq2s}x;Ew3=kp9Ea&5EBZJ=h!EA6*O{LAEGE(7%8^!K2aL zSp0isGWrV^|6ZAeruUP_rEOIfq1%CHfCJG};QrW$p~XrlIuPs)cAz`nq|5)HB%!|m z&j4qke}VKP$Tp=2eHZKr-imH}hvu*C$}V(wum{<$l%d@rzki#yL#aSl2d@U7L8sM( z@utw7%5UiP)M-1F8|aaWi8#`JRPLjvfD^#a&^52p>$6Mw58Vhn1T6LB*SovP1p8N_ zc%VNAdyo?4edb_k6kIQ>+fPbe^fzD+@{{rrI)s%UyOow`JM@37Zo8HC=oGLA*{yU( z$3cH%1o>I{3|$2F1P^9*wNLjbQOr*EeX6vyJ<2+R^V9Y!yU}}>!}};{rAmdtKcVJ&f42Y(+(+F%zQpa@6f}_MRd=7G`}2C zl-_jxLDC^_?kdc|Y=6(B9Z`DlIQbrq|D?G>nU2<=|MGjtE6mF6bp zU!SF&R(yu?^wZ$?n~-)!d4(SRE%Xo4&nmBm(RdtDmcV>q>F1Q@!{50^`gz5l+0`Gs zpj>5kec$_nau?0NKXgHPjOOjv3(8Aw?9W_K%wN&<^Xu(FE-0$O@xn!=s=+D3CB=)G zKc7=K{deV49+#TM5#p16Rq2E72W|=e0?o(ct||U#J|1^XnZxY5e%F;H+(geJq+R-T zWdoXC@2=@L6m+uVr8xn%AFZwKAI5pJuftn%AF#S|82pPeJuT^ZHX% zTcdgX3Dc>ddHrcod!Tv!X;D8%^ZL`O4n_0&)2fa^)B1A+k<=+@T7P%U%#ijtG}aZ{dEU?6HV*CXXzg512nDwd_z6d z=V)3#KTEHql8OBKE(H6AR#Ih`x6<=dS*?WT^?PNt2AbE8@2U0ByncL7^+xmhy^7k( zl^)jbNvfzF(Y${5RQ=Gre)m-Sqj~*VRULxn^=DOeG@90*yVI+wlhL&PECbKt#{6Dg zjc4ZXv%XHRu3lqy5Z}3QKRM%l^{>h7_(_+cuzwjfRj(=Bqu}>eC!>}+-=BLCod1t9 z>Zr%j^!|3&3@`OLItT6-4$7#n4*rIxPlEG3Dx;zL4LTf-e^f?eHIO-oG%g@ya>hq$ z^Jy$S?ytA{IXAZ7z15-U_x^NSu16F6S)(2nX8bie|r z-!nR?JLdEFHc0;eM)h0o@-b$$bsa17`MDJEJE;`R|tbxw-(|=?(P& zbpv_bAo!w;BA?c z)O(Bg{#F|g?~`OsR-YKWJ97#vgW8am|gAJIqD08Z4lR&(CzX3Q7LP# zTA!JxueWTz>SOR|ctf-|bE(@LcptN7)_dr;PLb+Ez1vsS2y%;l^-Jw7W)y~r)G^OqH@ zR$a=@pG4;~o0qj({gU|xo9}FCR){(ZP2(%GLejCbVKN`h$Kcmj;8aOC1p9(yJ$LpXF{4oeS+rmsl}?V&~!ev znpv@`7(n;`hN;CKc;7B7PIc#&`TS{X)yf#B^OM!gTC3J%E_JhyqVLZ-)dtM2{Nq$t zF!TJgF)K-pGZi=*nE$d=KOV>WB1;`+@X4$!bulx~e;2Z{)g(jwYF4hAZE#|Xe08hA9;8rx!tBbA zMQWqvbpJ}-cz#^3HfMI_mknwFH|Cd3>OnNmFPqgWEBNyKe15Nf%*^xioviOwUxOcK zZB=(L2a^@>d;Kr#2enEdT|S7!GVf4lG2f8Q?csT(>|JUo`aR|nHIvyc{Rz*5d1n8l z{)m3ayjwkm>Ej{))XM%@y@xJh-lM|C;IB;MzyH0e7(}s(RXq%@pS@R&?Xd%xO`xm@Z7 z<>d%cu8v|3Ca?10eeLXWbqB_)Rj1`hQ_7OZ^rB?oXKdK&N z@ltcGjd0bnkEt=M=>C+NKW4w@Q|iRk+!vudsF`(I4M(exereVjH4$9}yfW*onqlYZ z$3l5*BIniSA>12a`H1ZE>In3IY<(Bi>1ZDqAMhu?s?|ej`Z%%?&iC5v-_)MWrRHcT zUn8>rP?s_D`G7~0D{4G*FcIK-3?P51Md&@bw7j{h?q#-}`M=xAvFjV5N7j9H2Qz$s0=5V9E2>gB-9CI@70zFA_9JyMdOGuCbyXydJIDvne%+n@R3%Y7 zy_1!9FVw-zS4?}R!||J5s3Xxbv=@e%{#93^&&Sa6`=uIzegV%%t;~9*CZfyXXhiZx z&E%F>uBX@cKeY(`9$c@LSwt(w^z(e_`E}ENLVsRL&xcvtkM6|EbF+37eE_a+PL`mZ z=avUHp!bI@+OHV5vGUxaU1JU+OX2>^^en5UuA#?!#l+`ZmbCilM7BLy^G5Uemu0Oz zn$N#%)B2$Ke9MY9iW}!!*0eF`Y_>m|HXhUS`Ij|qE}GBZtZPd#{UJC%6NtOE3eD$Z z_R!)nedRqgKUdb$m~Y_x(^a(fn4Zs~a5nMO zdPTGIAs@BT^XIAcMf*W|>i*~)IG@x5xlM1Nz78{aYQxZ_(0__ERntae`sXm7FoL|V zjl=k;T6FvGYZK7NVR`uCw>A~iPu~I0yP0ZeGtlSYdB#leY;+CQAFZLyLqCnB>#w0L zM9<0K4q%QWyDGzcuGuxT=?;2)y#3YQy|xy}e8WWB6CauCXvxg3`BCd=**wnLH`Cqf zXh$(Uy`O)m(+Ao$X4iZgUYZ>5w2tF^{BZ-3U+a+!Ji;Zk-3ZL`6D zWjEB!addsI_Cpg*WxgSQ3gwq6r-|l=9>V;Q7JwcA=R?Zz){4;+nSHd|%&zuoQ|*<( z57U}zmE!64c>U&{(@bl~>}szz*FH9QG-;vrV|KLyag`s)*-&)H-^YYeL z^IJ=|SL(*gxAt0dC$)pbK>zCfoQ~R9=3p`%j?XKnlePsN0LSB%(^>nO+0`EDq8(&* zwU4@LN0{w|_HP>Hbk)wI-MnEo4e&LC+vRlAK1-n6w-f)rXnom33t%qC_DoN051O}U zdTU}LP0!oE-E;bCjnOpTH>aOAhMBi-zR3Ap^EY^8&H(Kudhc?0em7^3_R!#&IbUeL zNp$^ALfh+$a|Ua@4PKEmM2lp0wZDdGN15$xey{F1UuowJ4$B##{f(yc7sus{(#-4F z{Lq$Q3olY2M6Nv`^TjxAA6L{EuZ=>}^%dky(1J0&?>)G` zlru>S=Qcfo{z^&CWDTCdhU2+n`eh$2&!=dc(L13&Ka?{?yNvDu<@wnhe=Q}MrI*X= z)ADDkmdzTnQYF z{(_Zfv$R-rZ@B+l4dQFj+n~Kw+ii}PVsJyZxmq^*@1rmt4&KaMMtWHwf4I%l_Am#L zL2y|A(wF|10MPXccJsJ+kAOf!Y&hULMuV4c15+U7p(~ceVB< zv#UG`)kZSA`YWN@1T_6#sUs~^n~i=2P5^($&H5`|IbqsyW?tTO%?;NcF_*gW_FtqX zq|@z}y7Bg3lr|d8+l$fKax`yG#%O71Uj8_=Vl*#*Vl`6+UmtHDIyDu|%bx_TE1I`2 zleDpD-XBlW;?TVRvrbE4c9l2DS~@d79uJbNl`-@3^J-R#cHH2^7HOJSCci%P{?+)b z4DAbMSANdY<}&m0qi=4O7GUs~x!KxFX1;z8lBYA^b2<4LexCzK zzUG1E&u$N+0c3+Vkz1O(l)fLgQJanC{pXF^JT!lQ zZlkt>xlCHX+LIf#5N22Xvr&s@4kAarOi*5K)HX1$B5qLrjLH2@d(M|9{CaHBJhJKW z*$M5>SJc>|`7#F)em%d}CZYd=_diTztF{77-$$B~yH$&1E+aHQtjsFba+vLemuK6w zYZ#~bOC;O1$~km_RS%!7LVh2#38L6rvEz`=CjK^q;IGls65)Nl+{4-= zbRc*uI0*fDJdE$=9?`rPts#V3pY}y{tmV53XnsguhZNFYn%& zmxq61yj-LA2ZgMwZ_URmu4--A`e6V6rv2@!T0dO>Z8%?!wCmbn-2UI-1n}1wuLA82 zN7@Z-62|L-6Tq`E?vq99+nZYLBDVi{K5uG`neD_0;}@gJP0b%2%6v=9Mbq)}G1<4Z zO=vn^PQ9Hum}EhGD)=bIlUV$Y_B%QPeV@6U_Ybn}Xtwoqf68UvKD?(j<~Gss@WToB zwSgGt<24Vo>1aM)^FRy5^nASLffmgS?-#=OO2@p1S{}yv_{}42AI53<1v4aR*U)tS zz=X8FUDre8^~+<;vVrX%&L8T;2=qBAT|} z$L9U3NgL_-PI=eg+< zH@}N#=9%?Z25-s}^!P3B;yd$1-RJvvF3Yp%DFz?Ov+C;Bckz>Xk{)32g*;imXYl1b zn?9=eUHY4Oie6#x{XA8l_`|#Si#$z#Ww4O1>+##(#ohDWb)W6;TqEB@FEjYV{7QQ3 z9q;1J@+<2V2Di(9PoKE+UED9fihkPQ{`sEz^dH~Fhv!$-gE=*8IBqL1qX0{!&SPJ-y0a8h4PQaWFq}etmr*vr`I!{B|UEbd^^99o?`Hm{Kk5&!7uZh=-(S`DfmeL+2BeA-ueN9s~7m_rw#tFps9Yv z;Fbl=^!o;PDfn1_X>i|y=DM(tA3r^wK?N;z&EVk$E%mAfk11%S*Ee`-L2KRH;CTgY zbYFv)7qr!T7#vpciQeDf*aBaDgu$r=?er-I7ZkMD=Nr7Wpo1P{@a}?+dYHlc3p(iz zgDVO;>q!QmD(IqT8GNyzt6pUAm4Z+8?+w0P&`tl*;J*vH>-!9TS>UH1GgvC@p`SCj zQejX18nbIWrlA*b+j04Sp#R>uu)m&Ra5cC7dRaN$o}JKm zv%&%TC4)aH9H{p`!14$2+ek>)!Y}l}2KOoaQqMlf<8=I>qF{)=!Qdf*?D`w~+xcqalBW;ErV{pB!8F~u3;SaREFjH@RgzryBaO1*R zdWON(+-B=~1&{B6_V3{Axq2Og3kv7zzUY|{-�NFE+RtnWy{x!q4{xh(~14*8`Yc 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 KxGKKq{{J6SvnUP# diff --git a/pyaedt/dlls/PDFReport/Newtonsoft.Json.xml b/pyaedt/dlls/PDFReport/Newtonsoft.Json.xml deleted file mode 100644 index 3357dd6170e..00000000000 --- a/pyaedt/dlls/PDFReport/Newtonsoft.Json.xml +++ /dev/null @@ -1,11338 +0,0 @@ - - - - Newtonsoft.Json - - - - - Represents a BSON Oid (object id). - - - - - Gets or sets the value of the Oid. - - The value of the Oid. - - - - Initializes a new instance of the class. - - The Oid value. - - - - Represents a reader that provides fast, non-cached, forward-only access to serialized BSON data. - - - - - Gets or sets a value indicating whether binary data reading should be compatible with incorrect Json.NET 3.5 written binary. - - - true if binary data reading will be compatible with incorrect Json.NET 3.5 written binary; otherwise, false. - - - - - Gets or sets a value indicating whether the root object will be read as a JSON array. - - - true if the root object will be read as a JSON array; otherwise, false. - - - - - Gets or sets the used when reading values from BSON. - - The used when reading values from BSON. - - - - Initializes a new instance of the class. - - The containing the BSON data to read. - - - - Initializes a new instance of the class. - - The containing the BSON data to read. - - - - Initializes a new instance of the class. - - The containing the BSON data to read. - if set to true the root object will be read as a JSON array. - The used when reading values from BSON. - - - - Initializes a new instance of the class. - - The containing the BSON data to read. - if set to true the root object will be read as a JSON array. - The used when reading values from BSON. - - - - Reads the next JSON token from the underlying . - - - true if the next token was read successfully; false if there are no more tokens to read. - - - - - Changes the reader's state to . - If is set to true, the underlying is also closed. - - - - - Represents a writer that provides a fast, non-cached, forward-only way of generating BSON data. - - - - - Gets or sets the used when writing values to BSON. - When set to no conversion will occur. - - The used when writing values to BSON. - - - - Initializes a new instance of the class. - - The to write to. - - - - Initializes a new instance of the class. - - The to write to. - - - - Flushes whatever is in the buffer to the underlying and also flushes the underlying stream. - - - - - Writes the end. - - The token. - - - - Writes a comment /*...*/ containing the specified text. - - Text to place inside the comment. - - - - Writes the start of a constructor with the given name. - - The name of the constructor. - - - - Writes raw JSON. - - The raw JSON to write. - - - - Writes raw JSON where a value is expected and updates the writer's state. - - The raw JSON to write. - - - - Writes the beginning of a JSON array. - - - - - Writes the beginning of a JSON object. - - - - - Writes the property name of a name/value pair on a JSON object. - - The name of the property. - - - - Closes this writer. - If is set to true, the underlying is also closed. - If is set to true, the JSON is auto-completed. - - - - - Writes a value. - An error will raised if the value cannot be written as a single JSON token. - - The value to write. - - - - Writes a null value. - - - - - Writes an undefined value. - - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a [] value. - - The [] value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a [] value that represents a BSON object id. - - The Object ID value to write. - - - - Writes a BSON regex. - - The regex pattern. - The regex options. - - - - Specifies how constructors are used when initializing objects during deserialization by the . - - - - - First attempt to use the public default constructor, then fall back to a single parameterized constructor, then to the non-public default constructor. - - - - - Json.NET will use a non-public default constructor before falling back to a parameterized constructor. - - - - - Converts a binary value to and from a base 64 string value. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Converts a to and from JSON and BSON. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Creates a custom object. - - The object type to convert. - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Creates an object which will then be populated by the serializer. - - Type of the object. - The created object. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Gets a value indicating whether this can write JSON. - - - true if this can write JSON; otherwise, false. - - - - - Converts a to and from JSON. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified value type. - - Type of the value. - - true if this instance can convert the specified value type; otherwise, false. - - - - - Converts a to and from JSON. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified value type. - - Type of the value. - - true if this instance can convert the specified value type; otherwise, false. - - - - - Provides a base class for converting a to and from JSON. - - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Converts a F# discriminated union type to and from JSON. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Converts an Entity Framework to and from JSON. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Converts an to and from JSON. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Gets a value indicating whether this can write JSON. - - - true if this can write JSON; otherwise, false. - - - - - Converts a to and from the ISO 8601 date format (e.g. "2008-04-12T12:53Z"). - - - - - Gets or sets the date time styles used when converting a date to and from JSON. - - The date time styles used when converting a date to and from JSON. - - - - Gets or sets the date time format used when converting a date to and from JSON. - - The date time format used when converting a date to and from JSON. - - - - Gets or sets the culture used when converting a date to and from JSON. - - The culture used when converting a date to and from JSON. - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Converts a to and from a JavaScript Date constructor (e.g. new Date(52231943)). - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing property value of the JSON that is being converted. - The calling serializer. - The object value. - - - - Converts a to and from JSON. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Converts a to and from JSON and BSON. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Converts an to and from its name string value. - - - - - Gets or sets a value indicating whether the written enum text should be camel case. - The default value is false. - - true if the written enum text will be camel case; otherwise, false. - - - - Gets or sets the naming strategy used to resolve how enum text is written. - - The naming strategy used to resolve how enum text is written. - - - - Gets or sets a value indicating whether integer values are allowed when serializing and deserializing. - The default value is true. - - true if integers are allowed when serializing and deserializing; otherwise, false. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - true if the written enum text will be camel case; otherwise, false. - - - - Initializes a new instance of the class. - - The naming strategy used to resolve how enum text is written. - true if integers are allowed when serializing and deserializing; otherwise, false. - - - - Initializes a new instance of the class. - - The of the used to write enum text. - - - - Initializes a new instance of the class. - - The of the used to write enum text. - - The parameter list to use when constructing the described by . - If null, the default constructor is used. - When non-null, there must be a constructor defined in the that exactly matches the number, - order, and type of these parameters. - - - - - Initializes a new instance of the class. - - The of the used to write enum text. - - The parameter list to use when constructing the described by . - If null, the default constructor is used. - When non-null, there must be a constructor defined in the that exactly matches the number, - order, and type of these parameters. - - true if integers are allowed when serializing and deserializing; otherwise, false. - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Converts a to and from Unix epoch time - - - - - Gets or sets a value indicating whether the dates before Unix epoch - should converted to and from JSON. - - - true to allow converting dates before Unix epoch to and from JSON; - false to throw an exception when a date being converted to or from JSON - occurred before Unix epoch. The default value is false. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - - true to allow converting dates before Unix epoch to and from JSON; - false to throw an exception when a date being converted to or from JSON - occurred before Unix epoch. The default value is false. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing property value of the JSON that is being converted. - The calling serializer. - The object value. - - - - Converts a to and from a string (e.g. "1.2.3.4"). - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing property value of the JSON that is being converted. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Converts XML to and from JSON. - - - - - Gets or sets the name of the root element to insert when deserializing to XML if the JSON structure has produced multiple root elements. - - The name of the deserialized root element. - - - - Gets or sets a value to indicate whether to write the Json.NET array attribute. - This attribute helps preserve arrays when converting the written XML back to JSON. - - true if the array attribute is written to the XML; otherwise, false. - - - - Gets or sets a value indicating whether to write the root JSON object. - - true if the JSON root object is omitted; otherwise, false. - - - - Gets or sets a value indicating whether to encode special characters when converting JSON to XML. - If true, special characters like ':', '@', '?', '#' and '$' in JSON property names aren't used to specify - XML namespaces, attributes or processing directives. Instead special characters are encoded and written - as part of the XML element name. - - true if special characters are encoded; otherwise, false. - - - - Writes the JSON representation of the object. - - The to write to. - The calling serializer. - The value. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Checks if the is a namespace attribute. - - Attribute name to test. - The attribute name prefix if it has one, otherwise an empty string. - true if attribute name is for a namespace attribute, otherwise false. - - - - Determines whether this instance can convert the specified value type. - - Type of the value. - - true if this instance can convert the specified value type; otherwise, false. - - - - - Specifies how dates are formatted when writing JSON text. - - - - - Dates are written in the ISO 8601 format, e.g. "2012-03-21T05:40Z". - - - - - Dates are written in the Microsoft JSON format, e.g. "\/Date(1198908717056)\/". - - - - - Specifies how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON text. - - - - - Date formatted strings are not parsed to a date type and are read as strings. - - - - - Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . - - - - - Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . - - - - - Specifies how to treat the time value when converting between string and . - - - - - Treat as local time. If the object represents a Coordinated Universal Time (UTC), it is converted to the local time. - - - - - Treat as a UTC. If the object represents a local time, it is converted to a UTC. - - - - - Treat as a local time if a is being converted to a string. - If a string is being converted to , convert to a local time if a time zone is specified. - - - - - Time zone information should be preserved when converting. - - - - - The default JSON name table implementation. - - - - - Initializes a new instance of the class. - - - - - Gets a string containing the same characters as the specified range of characters in the given array. - - The character array containing the name to find. - The zero-based index into the array specifying the first character of the name. - The number of characters in the name. - A string containing the same characters as the specified range of characters in the given array. - - - - Adds the specified string into name table. - - The string to add. - This method is not thread-safe. - The resolved string. - - - - Specifies default value handling options for the . - - - - - - - - - Include members where the member value is the same as the member's default value when serializing objects. - Included members are written to JSON. Has no effect when deserializing. - - - - - Ignore members where the member value is the same as the member's default value when serializing objects - so that it is not written to JSON. - This option will ignore all default values (e.g. null for objects and nullable types; 0 for integers, - decimals and floating point numbers; and false for booleans). The default value ignored can be changed by - placing the on the property. - - - - - Members with a default value but no JSON will be set to their default value when deserializing. - - - - - Ignore members where the member value is the same as the member's default value when serializing objects - and set members to their default value when deserializing. - - - - - Specifies float format handling options when writing special floating point numbers, e.g. , - and with . - - - - - Write special floating point values as strings in JSON, e.g. "NaN", "Infinity", "-Infinity". - - - - - Write special floating point values as symbols in JSON, e.g. NaN, Infinity, -Infinity. - Note that this will produce non-valid JSON. - - - - - Write special floating point values as the property's default value in JSON, e.g. 0.0 for a property, null for a of property. - - - - - Specifies how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. - - - - - Floating point numbers are parsed to . - - - - - Floating point numbers are parsed to . - - - - - Specifies formatting options for the . - - - - - No special formatting is applied. This is the default. - - - - - Causes child objects to be indented according to the and settings. - - - - - Provides an interface for using pooled arrays. - - The array type content. - - - - Rent an array from the pool. This array must be returned when it is no longer needed. - - The minimum required length of the array. The returned array may be longer. - The rented array from the pool. This array must be returned when it is no longer needed. - - - - Return an array to the pool. - - The array that is being returned. - - - - Provides an interface to enable a class to return line and position information. - - - - - Gets a value indicating whether the class can return line information. - - - true if and can be provided; otherwise, false. - - - - - Gets the current line number. - - The current line number or 0 if no line information is available (for example, when returns false). - - - - Gets the current line position. - - The current line position or 0 if no line information is available (for example, when returns false). - - - - Instructs the how to serialize the collection. - - - - - Gets or sets a value indicating whether null items are allowed in the collection. - - true if null items are allowed in the collection; otherwise, false. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class with a flag indicating whether the array can contain null items. - - A flag indicating whether the array can contain null items. - - - - Initializes a new instance of the class with the specified container Id. - - The container Id. - - - - Instructs the to use the specified constructor when deserializing that object. - - - - - Instructs the how to serialize the object. - - - - - Gets or sets the id. - - The id. - - - - Gets or sets the title. - - The title. - - - - Gets or sets the description. - - The description. - - - - Gets or sets the collection's items converter. - - The collection's items converter. - - - - The parameter list to use when constructing the described by . - If null, the default constructor is used. - When non-null, there must be a constructor defined in the that exactly matches the number, - order, and type of these parameters. - - - - [JsonContainer(ItemConverterType = typeof(MyContainerConverter), ItemConverterParameters = new object[] { 123, "Four" })] - - - - - - Gets or sets the of the . - - The of the . - - - - The parameter list to use when constructing the described by . - If null, the default constructor is used. - When non-null, there must be a constructor defined in the that exactly matches the number, - order, and type of these parameters. - - - - [JsonContainer(NamingStrategyType = typeof(MyNamingStrategy), NamingStrategyParameters = new object[] { 123, "Four" })] - - - - - - Gets or sets a value that indicates whether to preserve object references. - - - true to keep object reference; otherwise, false. The default is false. - - - - - Gets or sets a value that indicates whether to preserve collection's items references. - - - true to keep collection's items object references; otherwise, false. The default is false. - - - - - Gets or sets the reference loop handling used when serializing the collection's items. - - The reference loop handling. - - - - Gets or sets the type name handling used when serializing the collection's items. - - The type name handling. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class with the specified container Id. - - The container Id. - - - - Provides methods for converting between .NET types and JSON types. - - - - - - - - Gets or sets a function that creates default . - Default settings are automatically used by serialization methods on , - and and on . - To serialize without using any default settings create a with - . - - - - - Represents JavaScript's boolean value true as a string. This field is read-only. - - - - - Represents JavaScript's boolean value false as a string. This field is read-only. - - - - - Represents JavaScript's null as a string. This field is read-only. - - - - - Represents JavaScript's undefined as a string. This field is read-only. - - - - - Represents JavaScript's positive infinity as a string. This field is read-only. - - - - - Represents JavaScript's negative infinity as a string. This field is read-only. - - - - - Represents JavaScript's NaN as a string. This field is read-only. - - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation using the specified. - - The value to convert. - The format the date will be converted to. - The time zone handling when the date is converted to a string. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation using the specified. - - The value to convert. - The format the date will be converted to. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - The string delimiter character. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - The string delimiter character. - The string escape handling. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Serializes the specified object to a JSON string. - - The object to serialize. - A JSON string representation of the object. - - - - Serializes the specified object to a JSON string using formatting. - - The object to serialize. - Indicates how the output should be formatted. - - A JSON string representation of the object. - - - - - Serializes the specified object to a JSON string using a collection of . - - The object to serialize. - A collection of converters used while serializing. - A JSON string representation of the object. - - - - Serializes the specified object to a JSON string using formatting and a collection of . - - The object to serialize. - Indicates how the output should be formatted. - A collection of converters used while serializing. - A JSON string representation of the object. - - - - Serializes the specified object to a JSON string using . - - The object to serialize. - The used to serialize the object. - If this is null, default serialization settings will be used. - - A JSON string representation of the object. - - - - - Serializes the specified object to a JSON string using a type, formatting and . - - The object to serialize. - The used to serialize the object. - If this is null, default serialization settings will be used. - - The type of the value being serialized. - This parameter is used when is to write out the type name if the type of the value does not match. - Specifying the type is optional. - - - A JSON string representation of the object. - - - - - Serializes the specified object to a JSON string using formatting and . - - The object to serialize. - Indicates how the output should be formatted. - The used to serialize the object. - If this is null, default serialization settings will be used. - - A JSON string representation of the object. - - - - - Serializes the specified object to a JSON string using a type, formatting and . - - The object to serialize. - Indicates how the output should be formatted. - The used to serialize the object. - If this is null, default serialization settings will be used. - - The type of the value being serialized. - This parameter is used when is to write out the type name if the type of the value does not match. - Specifying the type is optional. - - - A JSON string representation of the object. - - - - - Deserializes the JSON to a .NET object. - - The JSON to deserialize. - The deserialized object from the JSON string. - - - - Deserializes the JSON to a .NET object using . - - The JSON to deserialize. - - The used to deserialize the object. - If this is null, default serialization settings will be used. - - The deserialized object from the JSON string. - - - - Deserializes the JSON to the specified .NET type. - - The JSON to deserialize. - The of object being deserialized. - The deserialized object from the JSON string. - - - - Deserializes the JSON to the specified .NET type. - - The type of the object to deserialize to. - The JSON to deserialize. - The deserialized object from the JSON string. - - - - Deserializes the JSON to the given anonymous type. - - - The anonymous type to deserialize to. This can't be specified - traditionally and must be inferred from the anonymous type passed - as a parameter. - - The JSON to deserialize. - The anonymous type object. - The deserialized anonymous type from the JSON string. - - - - Deserializes the JSON to the given anonymous type using . - - - The anonymous type to deserialize to. This can't be specified - traditionally and must be inferred from the anonymous type passed - as a parameter. - - The JSON to deserialize. - The anonymous type object. - - The used to deserialize the object. - If this is null, default serialization settings will be used. - - The deserialized anonymous type from the JSON string. - - - - Deserializes the JSON to the specified .NET type using a collection of . - - The type of the object to deserialize to. - The JSON to deserialize. - Converters to use while deserializing. - The deserialized object from the JSON string. - - - - Deserializes the JSON to the specified .NET type using . - - The type of the object to deserialize to. - The object to deserialize. - - The used to deserialize the object. - If this is null, default serialization settings will be used. - - The deserialized object from the JSON string. - - - - Deserializes the JSON to the specified .NET type using a collection of . - - The JSON to deserialize. - The type of the object to deserialize. - Converters to use while deserializing. - The deserialized object from the JSON string. - - - - Deserializes the JSON to the specified .NET type using . - - The JSON to deserialize. - The type of the object to deserialize to. - - The used to deserialize the object. - If this is null, default serialization settings will be used. - - The deserialized object from the JSON string. - - - - Populates the object with values from the JSON string. - - The JSON to populate values from. - The target object to populate values onto. - - - - Populates the object with values from the JSON string using . - - The JSON to populate values from. - The target object to populate values onto. - - The used to deserialize the object. - If this is null, default serialization settings will be used. - - - - - Serializes the to a JSON string. - - The node to serialize. - A JSON string of the . - - - - Serializes the to a JSON string using formatting. - - The node to serialize. - Indicates how the output should be formatted. - A JSON string of the . - - - - Serializes the to a JSON string using formatting and omits the root object if is true. - - The node to serialize. - Indicates how the output should be formatted. - Omits writing the root object. - A JSON string of the . - - - - Deserializes the from a JSON string. - - The JSON string. - The deserialized . - - - - Deserializes the from a JSON string nested in a root element specified by . - - The JSON string. - The name of the root element to append when deserializing. - The deserialized . - - - - Deserializes the from a JSON string nested in a root element specified by - and writes a Json.NET array attribute for collections. - - The JSON string. - The name of the root element to append when deserializing. - - A value to indicate whether to write the Json.NET array attribute. - This attribute helps preserve arrays when converting the written XML back to JSON. - - The deserialized . - - - - Deserializes the from a JSON string nested in a root element specified by , - writes a Json.NET array attribute for collections, and encodes special characters. - - The JSON string. - The name of the root element to append when deserializing. - - A value to indicate whether to write the Json.NET array attribute. - This attribute helps preserve arrays when converting the written XML back to JSON. - - - A value to indicate whether to encode special characters when converting JSON to XML. - If true, special characters like ':', '@', '?', '#' and '$' in JSON property names aren't used to specify - XML namespaces, attributes or processing directives. Instead special characters are encoded and written - as part of the XML element name. - - The deserialized . - - - - Serializes the to a JSON string. - - The node to convert to JSON. - A JSON string of the . - - - - Serializes the to a JSON string using formatting. - - The node to convert to JSON. - Indicates how the output should be formatted. - A JSON string of the . - - - - Serializes the to a JSON string using formatting and omits the root object if is true. - - The node to serialize. - Indicates how the output should be formatted. - Omits writing the root object. - A JSON string of the . - - - - Deserializes the from a JSON string. - - The JSON string. - The deserialized . - - - - Deserializes the from a JSON string nested in a root element specified by . - - The JSON string. - The name of the root element to append when deserializing. - The deserialized . - - - - Deserializes the from a JSON string nested in a root element specified by - and writes a Json.NET array attribute for collections. - - The JSON string. - The name of the root element to append when deserializing. - - A value to indicate whether to write the Json.NET array attribute. - This attribute helps preserve arrays when converting the written XML back to JSON. - - The deserialized . - - - - Deserializes the from a JSON string nested in a root element specified by , - writes a Json.NET array attribute for collections, and encodes special characters. - - The JSON string. - The name of the root element to append when deserializing. - - A value to indicate whether to write the Json.NET array attribute. - This attribute helps preserve arrays when converting the written XML back to JSON. - - - A value to indicate whether to encode special characters when converting JSON to XML. - If true, special characters like ':', '@', '?', '#' and '$' in JSON property names aren't used to specify - XML namespaces, attributes or processing directives. Instead special characters are encoded and written - as part of the XML element name. - - The deserialized . - - - - Converts an object to and from JSON. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Gets a value indicating whether this can read JSON. - - true if this can read JSON; otherwise, false. - - - - Gets a value indicating whether this can write JSON. - - true if this can write JSON; otherwise, false. - - - - Converts an object to and from JSON. - - The object type to convert. - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. If there is no existing value then null will be used. - The existing value has a value. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Instructs the to use the specified when serializing the member or class. - - - - - Gets the of the . - - The of the . - - - - The parameter list to use when constructing the described by . - If null, the default constructor is used. - - - - - Initializes a new instance of the class. - - Type of the . - - - - Initializes a new instance of the class. - - Type of the . - Parameter list to use when constructing the . Can be null. - - - - Represents a collection of . - - - - - Instructs the how to serialize the collection. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class with the specified container Id. - - The container Id. - - - - The exception thrown when an error occurs during JSON serialization or deserialization. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class - with a specified error message. - - The error message that explains the reason for the exception. - - - - Initializes a new instance of the class - with a specified error message and a reference to the inner exception that is the cause of this exception. - - The error message that explains the reason for the exception. - The exception that is the cause of the current exception, or null if no inner exception is specified. - - - - Initializes a new instance of the class. - - The that holds the serialized object data about the exception being thrown. - The that contains contextual information about the source or destination. - The parameter is null. - The class name is null or is zero (0). - - - - Instructs the to deserialize properties with no matching class member into the specified collection - and write values during serialization. - - - - - Gets or sets a value that indicates whether to write extension data when serializing the object. - - - true to write extension data when serializing the object; otherwise, false. The default is true. - - - - - Gets or sets a value that indicates whether to read extension data when deserializing the object. - - - true to read extension data when deserializing the object; otherwise, false. The default is true. - - - - - Initializes a new instance of the class. - - - - - Instructs the not to serialize the public field or public read/write property value. - - - - - Base class for a table of atomized string objects. - - - - - Gets a string containing the same characters as the specified range of characters in the given array. - - The character array containing the name to find. - The zero-based index into the array specifying the first character of the name. - The number of characters in the name. - A string containing the same characters as the specified range of characters in the given array. - - - - Instructs the how to serialize the object. - - - - - Gets or sets the member serialization. - - The member serialization. - - - - Gets or sets the missing member handling used when deserializing this object. - - The missing member handling. - - - - Gets or sets how the object's properties with null values are handled during serialization and deserialization. - - How the object's properties with null values are handled during serialization and deserialization. - - - - Gets or sets a value that indicates whether the object's properties are required. - - - A value indicating whether the object's properties are required. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class with the specified member serialization. - - The member serialization. - - - - Initializes a new instance of the class with the specified container Id. - - The container Id. - - - - Instructs the to always serialize the member with the specified name. - - - - - Gets or sets the type used when serializing the property's collection items. - - The collection's items type. - - - - The parameter list to use when constructing the described by . - If null, the default constructor is used. - When non-null, there must be a constructor defined in the that exactly matches the number, - order, and type of these parameters. - - - - [JsonProperty(ItemConverterType = typeof(MyContainerConverter), ItemConverterParameters = new object[] { 123, "Four" })] - - - - - - Gets or sets the of the . - - The of the . - - - - The parameter list to use when constructing the described by . - If null, the default constructor is used. - When non-null, there must be a constructor defined in the that exactly matches the number, - order, and type of these parameters. - - - - [JsonProperty(NamingStrategyType = typeof(MyNamingStrategy), NamingStrategyParameters = new object[] { 123, "Four" })] - - - - - - Gets or sets the null value handling used when serializing this property. - - The null value handling. - - - - Gets or sets the default value handling used when serializing this property. - - The default value handling. - - - - Gets or sets the reference loop handling used when serializing this property. - - The reference loop handling. - - - - Gets or sets the object creation handling used when deserializing this property. - - The object creation handling. - - - - Gets or sets the type name handling used when serializing this property. - - The type name handling. - - - - Gets or sets whether this property's value is serialized as a reference. - - Whether this property's value is serialized as a reference. - - - - Gets or sets the order of serialization of a member. - - The numeric order of serialization. - - - - Gets or sets a value indicating whether this property is required. - - - A value indicating whether this property is required. - - - - - Gets or sets the name of the property. - - The name of the property. - - - - Gets or sets the reference loop handling used when serializing the property's collection items. - - The collection's items reference loop handling. - - - - Gets or sets the type name handling used when serializing the property's collection items. - - The collection's items type name handling. - - - - Gets or sets whether this property's collection items are serialized as a reference. - - Whether this property's collection items are serialized as a reference. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class with the specified name. - - Name of the property. - - - - Represents a reader that provides fast, non-cached, forward-only access to serialized JSON data. - - - - - Asynchronously reads the next JSON token from the source. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns true if the next token was read successfully; false if there are no more tokens to read. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously skips the children of the current token. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously reads the next JSON token from the source as a []. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the []. This result will be null at the end of an array. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously reads the next JSON token from the source as a . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the . This result will be null at the end of an array. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Specifies the state of the reader. - - - - - A read method has not been called. - - - - - The end of the file has been reached successfully. - - - - - Reader is at a property. - - - - - Reader is at the start of an object. - - - - - Reader is in an object. - - - - - Reader is at the start of an array. - - - - - Reader is in an array. - - - - - The method has been called. - - - - - Reader has just read a value. - - - - - Reader is at the start of a constructor. - - - - - Reader is in a constructor. - - - - - An error occurred that prevents the read operation from continuing. - - - - - The end of the file has been reached successfully. - - - - - Gets the current reader state. - - The current reader state. - - - - Gets or sets a value indicating whether the source should be closed when this reader is closed. - - - true to close the source when this reader is closed; otherwise false. The default is true. - - - - - Gets or sets a value indicating whether multiple pieces of JSON content can - be read from a continuous stream without erroring. - - - true to support reading multiple pieces of JSON content; otherwise false. - The default is false. - - - - - Gets the quotation mark character used to enclose the value of a string. - - - - - Gets or sets how time zones are handled when reading JSON. - - - - - Gets or sets how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. - - - - - Gets or sets how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. - - - - - Gets or sets how custom date formatted strings are parsed when reading JSON. - - - - - Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . - A null value means there is no maximum. - The default value is 64. - - - - - Gets the type of the current JSON token. - - - - - Gets the text value of the current JSON token. - - - - - Gets the .NET type for the current JSON token. - - - - - Gets the depth of the current token in the JSON document. - - The depth of the current token in the JSON document. - - - - Gets the path of the current JSON token. - - - - - Gets or sets the culture used when reading JSON. Defaults to . - - - - - Initializes a new instance of the class. - - - - - Reads the next JSON token from the source. - - true if the next token was read successfully; false if there are no more tokens to read. - - - - Reads the next JSON token from the source as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the source as a . - - A . This method will return null at the end of an array. - - - - Reads the next JSON token from the source as a []. - - A [] or null if the next JSON token is null. This method will return null at the end of an array. - - - - Reads the next JSON token from the source as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the source as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the source as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the source as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the source as a of . - - A of . This method will return null at the end of an array. - - - - Skips the children of the current token. - - - - - Sets the current token. - - The new token. - - - - Sets the current token and value. - - The new token. - The value. - - - - Sets the current token and value. - - The new token. - The value. - A flag indicating whether the position index inside an array should be updated. - - - - Sets the state based on current token type. - - - - - Releases unmanaged and - optionally - managed resources. - - true to release both managed and unmanaged resources; false to release only unmanaged resources. - - - - Changes the reader's state to . - If is set to true, the source is also closed. - - - - - The exception thrown when an error occurs while reading JSON text. - - - - - Gets the line number indicating where the error occurred. - - The line number indicating where the error occurred. - - - - Gets the line position indicating where the error occurred. - - The line position indicating where the error occurred. - - - - Gets the path to the JSON where the error occurred. - - The path to the JSON where the error occurred. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class - with a specified error message. - - The error message that explains the reason for the exception. - - - - Initializes a new instance of the class - with a specified error message and a reference to the inner exception that is the cause of this exception. - - The error message that explains the reason for the exception. - The exception that is the cause of the current exception, or null if no inner exception is specified. - - - - Initializes a new instance of the class. - - The that holds the serialized object data about the exception being thrown. - The that contains contextual information about the source or destination. - The parameter is null. - The class name is null or is zero (0). - - - - Initializes a new instance of the class - with a specified error message, JSON path, line number, line position, and a reference to the inner exception that is the cause of this exception. - - The error message that explains the reason for the exception. - The path to the JSON where the error occurred. - The line number indicating where the error occurred. - The line position indicating where the error occurred. - The exception that is the cause of the current exception, or null if no inner exception is specified. - - - - Instructs the to always serialize the member, and to require that the member has a value. - - - - - The exception thrown when an error occurs during JSON serialization or deserialization. - - - - - Gets the line number indicating where the error occurred. - - The line number indicating where the error occurred. - - - - Gets the line position indicating where the error occurred. - - The line position indicating where the error occurred. - - - - Gets the path to the JSON where the error occurred. - - The path to the JSON where the error occurred. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class - with a specified error message. - - The error message that explains the reason for the exception. - - - - Initializes a new instance of the class - with a specified error message and a reference to the inner exception that is the cause of this exception. - - The error message that explains the reason for the exception. - The exception that is the cause of the current exception, or null if no inner exception is specified. - - - - Initializes a new instance of the class. - - The that holds the serialized object data about the exception being thrown. - The that contains contextual information about the source or destination. - The parameter is null. - The class name is null or is zero (0). - - - - Initializes a new instance of the class - with a specified error message, JSON path, line number, line position, and a reference to the inner exception that is the cause of this exception. - - The error message that explains the reason for the exception. - The path to the JSON where the error occurred. - The line number indicating where the error occurred. - The line position indicating where the error occurred. - The exception that is the cause of the current exception, or null if no inner exception is specified. - - - - Serializes and deserializes objects into and from the JSON format. - The enables you to control how objects are encoded into JSON. - - - - - Occurs when the errors during serialization and deserialization. - - - - - Gets or sets the used by the serializer when resolving references. - - - - - Gets or sets the used by the serializer when resolving type names. - - - - - Gets or sets the used by the serializer when resolving type names. - - - - - Gets or sets the used by the serializer when writing trace messages. - - The trace writer. - - - - Gets or sets the equality comparer used by the serializer when comparing references. - - The equality comparer. - - - - Gets or sets how type name writing and reading is handled by the serializer. - The default value is . - - - should be used with caution when your application deserializes JSON from an external source. - Incoming types should be validated with a custom - when deserializing with a value other than . - - - - - Gets or sets how a type name assembly is written and resolved by the serializer. - The default value is . - - The type name assembly format. - - - - Gets or sets how a type name assembly is written and resolved by the serializer. - The default value is . - - The type name assembly format. - - - - Gets or sets how object references are preserved by the serializer. - The default value is . - - - - - Gets or sets how reference loops (e.g. a class referencing itself) is handled. - The default value is . - - - - - Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. - The default value is . - - - - - Gets or sets how null values are handled during serialization and deserialization. - The default value is . - - - - - Gets or sets how default values are handled during serialization and deserialization. - The default value is . - - - - - Gets or sets how objects are created during deserialization. - The default value is . - - The object creation handling. - - - - Gets or sets how constructors are used during deserialization. - The default value is . - - The constructor handling. - - - - Gets or sets how metadata properties are used during deserialization. - The default value is . - - The metadata properties handling. - - - - Gets a collection that will be used during serialization. - - Collection that will be used during serialization. - - - - Gets or sets the contract resolver used by the serializer when - serializing .NET objects to JSON and vice versa. - - - - - Gets or sets the used by the serializer when invoking serialization callback methods. - - The context. - - - - Indicates how JSON text output is formatted. - The default value is . - - - - - Gets or sets how dates are written to JSON text. - The default value is . - - - - - Gets or sets how time zones are handled during serialization and deserialization. - The default value is . - - - - - Gets or sets how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. - The default value is . - - - - - Gets or sets how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. - The default value is . - - - - - Gets or sets how special floating point numbers, e.g. , - and , - are written as JSON text. - The default value is . - - - - - Gets or sets how strings are escaped when writing JSON text. - The default value is . - - - - - Gets or sets how and values are formatted when writing JSON text, - and the expected date format when reading JSON text. - The default value is "yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFFK". - - - - - Gets or sets the culture used when reading JSON. - The default value is . - - - - - Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . - A null value means there is no maximum. - The default value is 64. - - - - - Gets a value indicating whether there will be a check for additional JSON content after deserializing an object. - The default value is false. - - - true if there will be a check for additional JSON content after deserializing an object; otherwise, false. - - - - - Initializes a new instance of the class. - - - - - Creates a new instance. - The will not use default settings - from . - - - A new instance. - The will not use default settings - from . - - - - - Creates a new instance using the specified . - The will not use default settings - from . - - The settings to be applied to the . - - A new instance using the specified . - The will not use default settings - from . - - - - - Creates a new instance. - The will use default settings - from . - - - A new instance. - The will use default settings - from . - - - - - Creates a new instance using the specified . - The will use default settings - from as well as the specified . - - The settings to be applied to the . - - A new instance using the specified . - The will use default settings - from as well as the specified . - - - - - Populates the JSON values onto the target object. - - The that contains the JSON structure to read values from. - The target object to populate values onto. - - - - Populates the JSON values onto the target object. - - The that contains the JSON structure to read values from. - The target object to populate values onto. - - - - Deserializes the JSON structure contained by the specified . - - The that contains the JSON structure to deserialize. - The being deserialized. - - - - Deserializes the JSON structure contained by the specified - into an instance of the specified type. - - The containing the object. - The of object being deserialized. - The instance of being deserialized. - - - - Deserializes the JSON structure contained by the specified - into an instance of the specified type. - - The containing the object. - The type of the object to deserialize. - The instance of being deserialized. - - - - Deserializes the JSON structure contained by the specified - into an instance of the specified type. - - The containing the object. - The of object being deserialized. - The instance of being deserialized. - - - - Serializes the specified and writes the JSON structure - using the specified . - - The used to write the JSON structure. - The to serialize. - - - - Serializes the specified and writes the JSON structure - using the specified . - - The used to write the JSON structure. - The to serialize. - - The type of the value being serialized. - This parameter is used when is to write out the type name if the type of the value does not match. - Specifying the type is optional. - - - - - Serializes the specified and writes the JSON structure - using the specified . - - The used to write the JSON structure. - The to serialize. - - The type of the value being serialized. - This parameter is used when is Auto to write out the type name if the type of the value does not match. - Specifying the type is optional. - - - - - Serializes the specified and writes the JSON structure - using the specified . - - The used to write the JSON structure. - The to serialize. - - - - Specifies the settings on a object. - - - - - Gets or sets how reference loops (e.g. a class referencing itself) are handled. - The default value is . - - Reference loop handling. - - - - Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. - The default value is . - - Missing member handling. - - - - Gets or sets how objects are created during deserialization. - The default value is . - - The object creation handling. - - - - Gets or sets how null values are handled during serialization and deserialization. - The default value is . - - Null value handling. - - - - Gets or sets how default values are handled during serialization and deserialization. - The default value is . - - The default value handling. - - - - Gets or sets a collection that will be used during serialization. - - The converters. - - - - Gets or sets how object references are preserved by the serializer. - The default value is . - - The preserve references handling. - - - - Gets or sets how type name writing and reading is handled by the serializer. - The default value is . - - - should be used with caution when your application deserializes JSON from an external source. - Incoming types should be validated with a custom - when deserializing with a value other than . - - The type name handling. - - - - Gets or sets how metadata properties are used during deserialization. - The default value is . - - The metadata properties handling. - - - - Gets or sets how a type name assembly is written and resolved by the serializer. - The default value is . - - The type name assembly format. - - - - Gets or sets how a type name assembly is written and resolved by the serializer. - The default value is . - - The type name assembly format. - - - - Gets or sets how constructors are used during deserialization. - The default value is . - - The constructor handling. - - - - Gets or sets the contract resolver used by the serializer when - serializing .NET objects to JSON and vice versa. - - The contract resolver. - - - - Gets or sets the equality comparer used by the serializer when comparing references. - - The equality comparer. - - - - Gets or sets the used by the serializer when resolving references. - - The reference resolver. - - - - Gets or sets a function that creates the used by the serializer when resolving references. - - A function that creates the used by the serializer when resolving references. - - - - Gets or sets the used by the serializer when writing trace messages. - - The trace writer. - - - - Gets or sets the used by the serializer when resolving type names. - - The binder. - - - - Gets or sets the used by the serializer when resolving type names. - - The binder. - - - - Gets or sets the error handler called during serialization and deserialization. - - The error handler called during serialization and deserialization. - - - - Gets or sets the used by the serializer when invoking serialization callback methods. - - The context. - - - - Gets or sets how and values are formatted when writing JSON text, - and the expected date format when reading JSON text. - The default value is "yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFFK". - - - - - Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . - A null value means there is no maximum. - The default value is 64. - - - - - Indicates how JSON text output is formatted. - The default value is . - - - - - Gets or sets how dates are written to JSON text. - The default value is . - - - - - Gets or sets how time zones are handled during serialization and deserialization. - The default value is . - - - - - Gets or sets how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. - The default value is . - - - - - Gets or sets how special floating point numbers, e.g. , - and , - are written as JSON. - The default value is . - - - - - Gets or sets how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. - The default value is . - - - - - Gets or sets how strings are escaped when writing JSON text. - The default value is . - - - - - Gets or sets the culture used when reading JSON. - The default value is . - - - - - Gets a value indicating whether there will be a check for additional content after deserializing an object. - The default value is false. - - - true if there will be a check for additional content after deserializing an object; otherwise, false. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class - using values copied from the passed in . - - - - - Represents a reader that provides fast, non-cached, forward-only access to JSON text data. - - - - - Asynchronously reads the next JSON token from the source. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns true if the next token was read successfully; false if there are no more tokens to read. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously reads the next JSON token from the source as a []. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the []. This result will be null at the end of an array. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously reads the next JSON token from the source as a . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the . This result will be null at the end of an array. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Initializes a new instance of the class with the specified . - - The containing the JSON data to read. - - - - Gets or sets the reader's property name table. - - - - - Gets or sets the reader's character buffer pool. - - - - - Reads the next JSON token from the underlying . - - - true if the next token was read successfully; false if there are no more tokens to read. - - - - - Reads the next JSON token from the underlying as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the underlying as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the underlying as a . - - A . This method will return null at the end of an array. - - - - Reads the next JSON token from the underlying as a []. - - A [] or null if the next JSON token is null. This method will return null at the end of an array. - - - - Reads the next JSON token from the underlying as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the underlying as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the underlying as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the underlying as a of . - - A of . This method will return null at the end of an array. - - - - Changes the reader's state to . - If is set to true, the underlying is also closed. - - - - - Gets a value indicating whether the class can return line information. - - - true if and can be provided; otherwise, false. - - - - - Gets the current line number. - - - The current line number or 0 if no line information is available (for example, returns false). - - - - - Gets the current line position. - - - The current line position or 0 if no line information is available (for example, returns false). - - - - - Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. - - - - - Asynchronously flushes whatever is in the buffer to the destination and also flushes the destination. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the JSON value delimiter. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the specified end token. - - The end token to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously closes this writer. - If is set to true, the destination is also closed. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the end of the current JSON object or array. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes indent characters. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes an indent space. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes raw JSON without changing the writer's state. - - The raw JSON to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a null value. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the property name of a name/value pair of a JSON object. - - The name of the property. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the property name of a name/value pair of a JSON object. - - The name of the property. - A flag to indicate whether the text should be escaped when it is written as a JSON property name. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the beginning of a JSON array. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the beginning of a JSON object. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the start of a constructor with the given name. - - The name of the constructor. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes an undefined value. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the given white space. - - The string of white space characters. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a [] value. - - The [] value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a comment /*...*/ containing the specified text. - - Text to place inside the comment. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the end of an array. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the end of a constructor. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the end of a JSON object. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes raw JSON where a value is expected and updates the writer's state. - - The raw JSON to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Gets or sets the writer's character array pool. - - - - - Gets or sets how many s to write for each level in the hierarchy when is set to . - - - - - Gets or sets which character to use to quote attribute values. - - - - - Gets or sets which character to use for indenting when is set to . - - - - - Gets or sets a value indicating whether object names will be surrounded with quotes. - - - - - Initializes a new instance of the class using the specified . - - The to write to. - - - - Flushes whatever is in the buffer to the underlying and also flushes the underlying . - - - - - Closes this writer. - If is set to true, the underlying is also closed. - If is set to true, the JSON is auto-completed. - - - - - Writes the beginning of a JSON object. - - - - - Writes the beginning of a JSON array. - - - - - Writes the start of a constructor with the given name. - - The name of the constructor. - - - - Writes the specified end token. - - The end token to write. - - - - Writes the property name of a name/value pair on a JSON object. - - The name of the property. - - - - Writes the property name of a name/value pair on a JSON object. - - The name of the property. - A flag to indicate whether the text should be escaped when it is written as a JSON property name. - - - - Writes indent characters. - - - - - Writes the JSON value delimiter. - - - - - Writes an indent space. - - - - - Writes a value. - An error will raised if the value cannot be written as a single JSON token. - - The value to write. - - - - Writes a null value. - - - - - Writes an undefined value. - - - - - Writes raw JSON. - - The raw JSON to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a value. - - The value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a [] value. - - The [] value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a comment /*...*/ containing the specified text. - - Text to place inside the comment. - - - - Writes the given white space. - - The string of white space characters. - - - - Specifies the type of JSON token. - - - - - This is returned by the if a read method has not been called. - - - - - An object start token. - - - - - An array start token. - - - - - A constructor start token. - - - - - An object property name. - - - - - A comment. - - - - - Raw JSON. - - - - - An integer. - - - - - A float. - - - - - A string. - - - - - A boolean. - - - - - A null token. - - - - - An undefined token. - - - - - An object end token. - - - - - An array end token. - - - - - A constructor end token. - - - - - A Date. - - - - - Byte data. - - - - - - Represents a reader that provides validation. - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - - - - Sets an event handler for receiving schema validation errors. - - - - - Gets the text value of the current JSON token. - - - - - - Gets the depth of the current token in the JSON document. - - The depth of the current token in the JSON document. - - - - Gets the path of the current JSON token. - - - - - Gets the quotation mark character used to enclose the value of a string. - - - - - - Gets the type of the current JSON token. - - - - - - Gets the .NET type for the current JSON token. - - - - - - Initializes a new instance of the class that - validates the content returned from the given . - - The to read from while validating. - - - - Gets or sets the schema. - - The schema. - - - - Gets the used to construct this . - - The specified in the constructor. - - - - Changes the reader's state to . - If is set to true, the underlying is also closed. - - - - - Reads the next JSON token from the underlying as a of . - - A of . - - - - Reads the next JSON token from the underlying as a []. - - - A [] or null if the next JSON token is null. - - - - - Reads the next JSON token from the underlying as a of . - - A of . - - - - Reads the next JSON token from the underlying as a of . - - A of . - - - - Reads the next JSON token from the underlying as a of . - - A of . - - - - Reads the next JSON token from the underlying as a . - - A . This method will return null at the end of an array. - - - - Reads the next JSON token from the underlying as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the underlying as a of . - - A of . - - - - Reads the next JSON token from the underlying . - - - true if the next token was read successfully; false if there are no more tokens to read. - - - - - Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. - - - - - Asynchronously closes this writer. - If is set to true, the destination is also closed. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously flushes whatever is in the buffer to the destination and also flushes the destination. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the specified end token. - - The end token to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes indent characters. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the JSON value delimiter. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes an indent space. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes raw JSON without changing the writer's state. - - The raw JSON to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the end of the current JSON object or array. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the end of an array. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the end of a constructor. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the end of a JSON object. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a null value. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the property name of a name/value pair of a JSON object. - - The name of the property. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the property name of a name/value pair of a JSON object. - - The name of the property. - A flag to indicate whether the text should be escaped when it is written as a JSON property name. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the beginning of a JSON array. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a comment /*...*/ containing the specified text. - - Text to place inside the comment. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes raw JSON where a value is expected and updates the writer's state. - - The raw JSON to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the start of a constructor with the given name. - - The name of the constructor. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the beginning of a JSON object. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the current token. - - The to read the token from. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the current token. - - The to read the token from. - A flag indicating whether the current token's children should be written. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the token and its value. - - The to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the token and its value. - - The to write. - - The value to write. - A value is only required for tokens that have an associated value, e.g. the property name for . - null can be passed to the method for tokens that don't have a value, e.g. . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a [] value. - - The [] value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes an undefined value. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the given white space. - - The string of white space characters. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously ets the state of the . - - The being written. - The value being written. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Gets or sets a value indicating whether the destination should be closed when this writer is closed. - - - true to close the destination when this writer is closed; otherwise false. The default is true. - - - - - Gets or sets a value indicating whether the JSON should be auto-completed when this writer is closed. - - - true to auto-complete the JSON when this writer is closed; otherwise false. The default is true. - - - - - Gets the top. - - The top. - - - - Gets the state of the writer. - - - - - Gets the path of the writer. - - - - - Gets or sets a value indicating how JSON text output should be formatted. - - - - - Gets or sets how dates are written to JSON text. - - - - - Gets or sets how time zones are handled when writing JSON text. - - - - - Gets or sets how strings are escaped when writing JSON text. - - - - - Gets or sets how special floating point numbers, e.g. , - and , - are written to JSON text. - - - - - Gets or sets how and values are formatted when writing JSON text. - - - - - Gets or sets the culture used when writing JSON. Defaults to . - - - - - Initializes a new instance of the class. - - - - - Flushes whatever is in the buffer to the destination and also flushes the destination. - - - - - Closes this writer. - If is set to true, the destination is also closed. - If is set to true, the JSON is auto-completed. - - - - - Writes the beginning of a JSON object. - - - - - Writes the end of a JSON object. - - - - - Writes the beginning of a JSON array. - - - - - Writes the end of an array. - - - - - Writes the start of a constructor with the given name. - - The name of the constructor. - - - - Writes the end constructor. - - - - - Writes the property name of a name/value pair of a JSON object. - - The name of the property. - - - - Writes the property name of a name/value pair of a JSON object. - - The name of the property. - A flag to indicate whether the text should be escaped when it is written as a JSON property name. - - - - Writes the end of the current JSON object or array. - - - - - Writes the current token and its children. - - The to read the token from. - - - - Writes the current token. - - The to read the token from. - A flag indicating whether the current token's children should be written. - - - - Writes the token and its value. - - The to write. - - The value to write. - A value is only required for tokens that have an associated value, e.g. the property name for . - null can be passed to the method for tokens that don't have a value, e.g. . - - - - - Writes the token. - - The to write. - - - - Writes the specified end token. - - The end token to write. - - - - Writes indent characters. - - - - - Writes the JSON value delimiter. - - - - - Writes an indent space. - - - - - Writes a null value. - - - - - Writes an undefined value. - - - - - Writes raw JSON without changing the writer's state. - - The raw JSON to write. - - - - Writes raw JSON where a value is expected and updates the writer's state. - - The raw JSON to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a [] value. - - The [] value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - An error will raised if the value cannot be written as a single JSON token. - - The value to write. - - - - Writes a comment /*...*/ containing the specified text. - - Text to place inside the comment. - - - - Writes the given white space. - - The string of white space characters. - - - - Releases unmanaged and - optionally - managed resources. - - true to release both managed and unmanaged resources; false to release only unmanaged resources. - - - - Sets the state of the . - - The being written. - The value being written. - - - - The exception thrown when an error occurs while writing JSON text. - - - - - Gets the path to the JSON where the error occurred. - - The path to the JSON where the error occurred. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class - with a specified error message. - - The error message that explains the reason for the exception. - - - - Initializes a new instance of the class - with a specified error message and a reference to the inner exception that is the cause of this exception. - - The error message that explains the reason for the exception. - The exception that is the cause of the current exception, or null if no inner exception is specified. - - - - Initializes a new instance of the class. - - The that holds the serialized object data about the exception being thrown. - The that contains contextual information about the source or destination. - The parameter is null. - The class name is null or is zero (0). - - - - Initializes a new instance of the class - with a specified error message, JSON path and a reference to the inner exception that is the cause of this exception. - - The error message that explains the reason for the exception. - The path to the JSON where the error occurred. - The exception that is the cause of the current exception, or null if no inner exception is specified. - - - - Specifies how JSON comments are handled when loading JSON. - - - - - Ignore comments. - - - - - Load comments as a with type . - - - - - Specifies how duplicate property names are handled when loading JSON. - - - - - Replace the existing value when there is a duplicate property. The value of the last property in the JSON object will be used. - - - - - Ignore the new value when there is a duplicate property. The value of the first property in the JSON object will be used. - - - - - Throw a when a duplicate property is encountered. - - - - - Contains the LINQ to JSON extension methods. - - - - - Returns a collection of tokens that contains the ancestors of every token in the source collection. - - The type of the objects in source, constrained to . - An of that contains the source collection. - An of that contains the ancestors of every token in the source collection. - - - - Returns a collection of tokens that contains every token in the source collection, and the ancestors of every token in the source collection. - - The type of the objects in source, constrained to . - An of that contains the source collection. - An of that contains every token in the source collection, the ancestors of every token in the source collection. - - - - Returns a collection of tokens that contains the descendants of every token in the source collection. - - The type of the objects in source, constrained to . - An of that contains the source collection. - An of that contains the descendants of every token in the source collection. - - - - Returns a collection of tokens that contains every token in the source collection, and the descendants of every token in the source collection. - - The type of the objects in source, constrained to . - An of that contains the source collection. - An of that contains every token in the source collection, and the descendants of every token in the source collection. - - - - Returns a collection of child properties of every object in the source collection. - - An of that contains the source collection. - An of that contains the properties of every object in the source collection. - - - - Returns a collection of child values of every object in the source collection with the given key. - - An of that contains the source collection. - The token key. - An of that contains the values of every token in the source collection with the given key. - - - - Returns a collection of child values of every object in the source collection. - - An of that contains the source collection. - An of that contains the values of every token in the source collection. - - - - Returns a collection of converted child values of every object in the source collection with the given key. - - The type to convert the values to. - An of that contains the source collection. - The token key. - An that contains the converted values of every token in the source collection with the given key. - - - - Returns a collection of converted child values of every object in the source collection. - - The type to convert the values to. - An of that contains the source collection. - An that contains the converted values of every token in the source collection. - - - - Converts the value. - - The type to convert the value to. - A cast as a of . - A converted value. - - - - Converts the value. - - The source collection type. - The type to convert the value to. - A cast as a of . - A converted value. - - - - Returns a collection of child tokens of every array in the source collection. - - The source collection type. - An of that contains the source collection. - An of that contains the values of every token in the source collection. - - - - Returns a collection of converted child tokens of every array in the source collection. - - An of that contains the source collection. - The type to convert the values to. - The source collection type. - An that contains the converted values of every token in the source collection. - - - - Returns the input typed as . - - An of that contains the source collection. - The input typed as . - - - - Returns the input typed as . - - The source collection type. - An of that contains the source collection. - The input typed as . - - - - Represents a collection of objects. - - The type of token. - - - - Gets the of with the specified key. - - - - - - Represents a JSON array. - - - - - - - - Writes this token to a asynchronously. - - A into which this method will write. - The token to monitor for cancellation requests. - A collection of which will be used when writing the token. - A that represents the asynchronous write operation. - - - - Asynchronously loads a from a . - - A that will be read for the content of the . - If this is null, default load settings will be used. - The token to monitor for cancellation requests. The default value is . - A representing the asynchronous load. The property contains the JSON that was read from the specified . - - - - Asynchronously loads a from a . - - A that will be read for the content of the . - The used to load the JSON. - If this is null, default load settings will be used. - The token to monitor for cancellation requests. The default value is . - A representing the asynchronous load. The property contains the JSON that was read from the specified . - - - - Gets the container's children tokens. - - The container's children tokens. - - - - Gets the node type for this . - - The type. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class from another object. - - A object to copy from. - - - - Initializes a new instance of the class with the specified content. - - The contents of the array. - - - - Initializes a new instance of the class with the specified content. - - The contents of the array. - - - - Loads an from a . - - A that will be read for the content of the . - A that contains the JSON that was read from the specified . - - - - Loads an from a . - - A that will be read for the content of the . - The used to load the JSON. - If this is null, default load settings will be used. - A that contains the JSON that was read from the specified . - - - - Load a from a string that contains JSON. - - A that contains JSON. - A populated from the string that contains JSON. - - - - - - - Load a from a string that contains JSON. - - A that contains JSON. - The used to load the JSON. - If this is null, default load settings will be used. - A populated from the string that contains JSON. - - - - - - - Creates a from an object. - - The object that will be used to create . - A with the values of the specified object. - - - - Creates a from an object. - - The object that will be used to create . - The that will be used to read the object. - A with the values of the specified object. - - - - Writes this token to a . - - A into which this method will write. - A collection of which will be used when writing the token. - - - - Gets the with the specified key. - - The with the specified key. - - - - Gets or sets the at the specified index. - - - - - - Determines the index of a specific item in the . - - The object to locate in the . - - The index of if found in the list; otherwise, -1. - - - - - Inserts an item to the at the specified index. - - The zero-based index at which should be inserted. - The object to insert into the . - - is not a valid index in the . - - - - - Removes the item at the specified index. - - The zero-based index of the item to remove. - - is not a valid index in the . - - - - - Returns an enumerator that iterates through the collection. - - - A of that can be used to iterate through the collection. - - - - - Adds an item to the . - - The object to add to the . - - - - Removes all items from the . - - - - - Determines whether the contains a specific value. - - The object to locate in the . - - true if is found in the ; otherwise, false. - - - - - Copies the elements of the to an array, starting at a particular array index. - - The array. - Index of the array. - - - - Gets a value indicating whether the is read-only. - - true if the is read-only; otherwise, false. - - - - Removes the first occurrence of a specific object from the . - - The object to remove from the . - - true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . - - - - - Represents a JSON constructor. - - - - - Writes this token to a asynchronously. - - A into which this method will write. - The token to monitor for cancellation requests. - A collection of which will be used when writing the token. - A that represents the asynchronous write operation. - - - - Asynchronously loads a from a . - - A that will be read for the content of the . - The token to monitor for cancellation requests. The default value is . - - A that represents the asynchronous load. The - property returns a that contains the JSON that was read from the specified . - - - - Asynchronously loads a from a . - - A that will be read for the content of the . - The used to load the JSON. - If this is null, default load settings will be used. - The token to monitor for cancellation requests. The default value is . - - A that represents the asynchronous load. The - property returns a that contains the JSON that was read from the specified . - - - - Gets the container's children tokens. - - The container's children tokens. - - - - Gets or sets the name of this constructor. - - The constructor name. - - - - Gets the node type for this . - - The type. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class from another object. - - A object to copy from. - - - - Initializes a new instance of the class with the specified name and content. - - The constructor name. - The contents of the constructor. - - - - Initializes a new instance of the class with the specified name and content. - - The constructor name. - The contents of the constructor. - - - - Initializes a new instance of the class with the specified name. - - The constructor name. - - - - Writes this token to a . - - A into which this method will write. - A collection of which will be used when writing the token. - - - - Gets the with the specified key. - - The with the specified key. - - - - Loads a from a . - - A that will be read for the content of the . - A that contains the JSON that was read from the specified . - - - - Loads a from a . - - A that will be read for the content of the . - The used to load the JSON. - If this is null, default load settings will be used. - A that contains the JSON that was read from the specified . - - - - Represents a token that can contain other tokens. - - - - - Occurs when the list changes or an item in the list changes. - - - - - Occurs before an item is added to the collection. - - - - - Occurs when the items list of the collection has changed, or the collection is reset. - - - - - Gets the container's children tokens. - - The container's children tokens. - - - - Raises the event. - - The instance containing the event data. - - - - Raises the event. - - The instance containing the event data. - - - - Raises the event. - - The instance containing the event data. - - - - Gets a value indicating whether this token has child tokens. - - - true if this token has child values; otherwise, false. - - - - - Get the first child token of this token. - - - A containing the first child token of the . - - - - - Get the last child token of this token. - - - A containing the last child token of the . - - - - - Returns a collection of the child tokens of this token, in document order. - - - An of containing the child tokens of this , in document order. - - - - - Returns a collection of the child values of this token, in document order. - - The type to convert the values to. - - A containing the child values of this , in document order. - - - - - Returns a collection of the descendant tokens for this token in document order. - - An of containing the descendant tokens of the . - - - - Returns a collection of the tokens that contain this token, and all descendant tokens of this token, in document order. - - An of containing this token, and all the descendant tokens of the . - - - - Adds the specified content as children of this . - - The content to be added. - - - - Adds the specified content as the first children of this . - - The content to be added. - - - - Creates a that can be used to add tokens to the . - - A that is ready to have content written to it. - - - - Replaces the child nodes of this token with the specified content. - - The content. - - - - Removes the child nodes from this token. - - - - - Merge the specified content into this . - - The content to be merged. - - - - Merge the specified content into this using . - - The content to be merged. - The used to merge the content. - - - - Gets the count of child JSON tokens. - - The count of child JSON tokens. - - - - Represents a collection of objects. - - The type of token. - - - - An empty collection of objects. - - - - - Initializes a new instance of the struct. - - The enumerable. - - - - Returns an enumerator that can be used to iterate through the collection. - - - A that can be used to iterate through the collection. - - - - - Gets the of with the specified key. - - - - - - Determines whether the specified is equal to this instance. - - The to compare with this instance. - - true if the specified is equal to this instance; otherwise, false. - - - - - Determines whether the specified is equal to this instance. - - The to compare with this instance. - - true if the specified is equal to this instance; otherwise, false. - - - - - Returns a hash code for this instance. - - - A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. - - - - - Represents a JSON object. - - - - - - - - Writes this token to a asynchronously. - - A into which this method will write. - The token to monitor for cancellation requests. - A collection of which will be used when writing the token. - A that represents the asynchronous write operation. - - - - Asynchronously loads a from a . - - A that will be read for the content of the . - The token to monitor for cancellation requests. The default value is . - - A that represents the asynchronous load. The - property returns a that contains the JSON that was read from the specified . - - - - Asynchronously loads a from a . - - A that will be read for the content of the . - The used to load the JSON. - If this is null, default load settings will be used. - The token to monitor for cancellation requests. The default value is . - - A that represents the asynchronous load. The - property returns a that contains the JSON that was read from the specified . - - - - Gets the container's children tokens. - - The container's children tokens. - - - - Occurs when a property value changes. - - - - - Occurs when a property value is changing. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class from another object. - - A object to copy from. - - - - Initializes a new instance of the class with the specified content. - - The contents of the object. - - - - Initializes a new instance of the class with the specified content. - - The contents of the object. - - - - Gets the node type for this . - - The type. - - - - Gets an of of this object's properties. - - An of of this object's properties. - - - - Gets a with the specified name. - - The property name. - A with the specified name or null. - - - - Gets the with the specified name. - The exact name will be searched for first and if no matching property is found then - the will be used to match a property. - - The property name. - One of the enumeration values that specifies how the strings will be compared. - A matched with the specified name or null. - - - - Gets a of of this object's property values. - - A of of this object's property values. - - - - Gets the with the specified key. - - The with the specified key. - - - - Gets or sets the with the specified property name. - - - - - - Loads a from a . - - A that will be read for the content of the . - A that contains the JSON that was read from the specified . - - is not valid JSON. - - - - - Loads a from a . - - A that will be read for the content of the . - The used to load the JSON. - If this is null, default load settings will be used. - A that contains the JSON that was read from the specified . - - is not valid JSON. - - - - - Load a from a string that contains JSON. - - A that contains JSON. - A populated from the string that contains JSON. - - is not valid JSON. - - - - - - - - Load a from a string that contains JSON. - - A that contains JSON. - The used to load the JSON. - If this is null, default load settings will be used. - A populated from the string that contains JSON. - - is not valid JSON. - - - - - - - - Creates a from an object. - - The object that will be used to create . - A with the values of the specified object. - - - - Creates a from an object. - - The object that will be used to create . - The that will be used to read the object. - A with the values of the specified object. - - - - Writes this token to a . - - A into which this method will write. - A collection of which will be used when writing the token. - - - - Gets the with the specified property name. - - Name of the property. - The with the specified property name. - - - - Gets the with the specified property name. - The exact property name will be searched for first and if no matching property is found then - the will be used to match a property. - - Name of the property. - One of the enumeration values that specifies how the strings will be compared. - The with the specified property name. - - - - Tries to get the with the specified property name. - The exact property name will be searched for first and if no matching property is found then - the will be used to match a property. - - Name of the property. - The value. - One of the enumeration values that specifies how the strings will be compared. - true if a value was successfully retrieved; otherwise, false. - - - - Adds the specified property name. - - Name of the property. - The value. - - - - Determines whether the JSON object has the specified property name. - - Name of the property. - true if the JSON object has the specified property name; otherwise, false. - - - - Removes the property with the specified name. - - Name of the property. - true if item was successfully removed; otherwise, false. - - - - Tries to get the with the specified property name. - - Name of the property. - The value. - true if a value was successfully retrieved; otherwise, false. - - - - Returns an enumerator that can be used to iterate through the collection. - - - A that can be used to iterate through the collection. - - - - - Raises the event with the provided arguments. - - Name of the property. - - - - Raises the event with the provided arguments. - - Name of the property. - - - - Returns the responsible for binding operations performed on this object. - - The expression tree representation of the runtime value. - - The to bind this object. - - - - - Represents a JSON property. - - - - - Writes this token to a asynchronously. - - A into which this method will write. - The token to monitor for cancellation requests. - A collection of which will be used when writing the token. - A that represents the asynchronous write operation. - - - - Asynchronously loads a from a . - - A that will be read for the content of the . - The token to monitor for cancellation requests. The default value is . - A representing the asynchronous creation. The - property returns a that contains the JSON that was read from the specified . - - - - Asynchronously loads a from a . - - A that will be read for the content of the . - The used to load the JSON. - If this is null, default load settings will be used. - The token to monitor for cancellation requests. The default value is . - A representing the asynchronous creation. The - property returns a that contains the JSON that was read from the specified . - - - - Gets the container's children tokens. - - The container's children tokens. - - - - Gets the property name. - - The property name. - - - - Gets or sets the property value. - - The property value. - - - - Initializes a new instance of the class from another object. - - A object to copy from. - - - - Gets the node type for this . - - The type. - - - - Initializes a new instance of the class. - - The property name. - The property content. - - - - Initializes a new instance of the class. - - The property name. - The property content. - - - - Writes this token to a . - - A into which this method will write. - A collection of which will be used when writing the token. - - - - Loads a from a . - - A that will be read for the content of the . - A that contains the JSON that was read from the specified . - - - - Loads a from a . - - A that will be read for the content of the . - The used to load the JSON. - If this is null, default load settings will be used. - A that contains the JSON that was read from the specified . - - - - Represents a view of a . - - - - - Initializes a new instance of the class. - - The name. - - - - When overridden in a derived class, returns whether resetting an object changes its value. - - - true if resetting the component changes its value; otherwise, false. - - The component to test for reset capability. - - - - When overridden in a derived class, gets the current value of the property on a component. - - - The value of a property for a given component. - - The component with the property for which to retrieve the value. - - - - When overridden in a derived class, resets the value for this property of the component to the default value. - - The component with the property value that is to be reset to the default value. - - - - When overridden in a derived class, sets the value of the component to a different value. - - The component with the property value that is to be set. - The new value. - - - - When overridden in a derived class, determines a value indicating whether the value of this property needs to be persisted. - - - true if the property should be persisted; otherwise, false. - - The component with the property to be examined for persistence. - - - - When overridden in a derived class, gets the type of the component this property is bound to. - - - A that represents the type of component this property is bound to. - When the or - - methods are invoked, the object specified might be an instance of this type. - - - - - When overridden in a derived class, gets a value indicating whether this property is read-only. - - - true if the property is read-only; otherwise, false. - - - - - When overridden in a derived class, gets the type of the property. - - - A that represents the type of the property. - - - - - Gets the hash code for the name of the member. - - - - The hash code for the name of the member. - - - - - Represents a raw JSON string. - - - - - Asynchronously creates an instance of with the content of the reader's current token. - - The reader. - The token to monitor for cancellation requests. The default value is . - A representing the asynchronous creation. The - property returns an instance of with the content of the reader's current token. - - - - Initializes a new instance of the class from another object. - - A object to copy from. - - - - Initializes a new instance of the class. - - The raw json. - - - - Creates an instance of with the content of the reader's current token. - - The reader. - An instance of with the content of the reader's current token. - - - - Specifies the settings used when cloning JSON. - - - - - Initializes a new instance of the class. - - - - - Gets or sets a flag that indicates whether to copy annotations when cloning a . - The default value is true. - - - A flag that indicates whether to copy annotations when cloning a . - - - - - Specifies the settings used when loading JSON. - - - - - Initializes a new instance of the class. - - - - - Gets or sets how JSON comments are handled when loading JSON. - The default value is . - - The JSON comment handling. - - - - Gets or sets how JSON line info is handled when loading JSON. - The default value is . - - The JSON line info handling. - - - - Gets or sets how duplicate property names in JSON objects are handled when loading JSON. - The default value is . - - The JSON duplicate property name handling. - - - - Specifies the settings used when merging JSON. - - - - - Initializes a new instance of the class. - - - - - Gets or sets the method used when merging JSON arrays. - - The method used when merging JSON arrays. - - - - Gets or sets how null value properties are merged. - - How null value properties are merged. - - - - Gets or sets the comparison used to match property names while merging. - The exact property name will be searched for first and if no matching property is found then - the will be used to match a property. - - The comparison used to match property names while merging. - - - - Specifies the settings used when selecting JSON. - - - - - Gets or sets a timeout that will be used when executing regular expressions. - - The timeout that will be used when executing regular expressions. - - - - Gets or sets a flag that indicates whether an error should be thrown if - no tokens are found when evaluating part of the expression. - - - A flag that indicates whether an error should be thrown if - no tokens are found when evaluating part of the expression. - - - - - Represents an abstract JSON token. - - - - - Writes this token to a asynchronously. - - A into which this method will write. - The token to monitor for cancellation requests. - A collection of which will be used when writing the token. - A that represents the asynchronous write operation. - - - - Writes this token to a asynchronously. - - A into which this method will write. - A collection of which will be used when writing the token. - A that represents the asynchronous write operation. - - - - Asynchronously creates a from a . - - An positioned at the token to read into this . - The token to monitor for cancellation requests. The default value is . - - A that represents the asynchronous creation. The - property returns a that contains - the token and its descendant tokens - that were read from the reader. The runtime type of the token is determined - by the token type of the first token encountered in the reader. - - - - - Asynchronously creates a from a . - - An positioned at the token to read into this . - The used to load the JSON. - If this is null, default load settings will be used. - The token to monitor for cancellation requests. The default value is . - - A that represents the asynchronous creation. The - property returns a that contains - the token and its descendant tokens - that were read from the reader. The runtime type of the token is determined - by the token type of the first token encountered in the reader. - - - - - Asynchronously creates a from a . - - A positioned at the token to read into this . - The token to monitor for cancellation requests. The default value is . - - A that represents the asynchronous creation. The - property returns a that contains the token and its descendant tokens - that were read from the reader. The runtime type of the token is determined - by the token type of the first token encountered in the reader. - - - - - Asynchronously creates a from a . - - A positioned at the token to read into this . - The used to load the JSON. - If this is null, default load settings will be used. - The token to monitor for cancellation requests. The default value is . - - A that represents the asynchronous creation. The - property returns a that contains the token and its descendant tokens - that were read from the reader. The runtime type of the token is determined - by the token type of the first token encountered in the reader. - - - - - Gets a comparer that can compare two tokens for value equality. - - A that can compare two nodes for value equality. - - - - Gets or sets the parent. - - The parent. - - - - Gets the root of this . - - The root of this . - - - - Gets the node type for this . - - The type. - - - - Gets a value indicating whether this token has child tokens. - - - true if this token has child values; otherwise, false. - - - - - Compares the values of two tokens, including the values of all descendant tokens. - - The first to compare. - The second to compare. - true if the tokens are equal; otherwise false. - - - - Gets the next sibling token of this node. - - The that contains the next sibling token. - - - - Gets the previous sibling token of this node. - - The that contains the previous sibling token. - - - - Gets the path of the JSON token. - - - - - Adds the specified content immediately after this token. - - A content object that contains simple content or a collection of content objects to be added after this token. - - - - Adds the specified content immediately before this token. - - A content object that contains simple content or a collection of content objects to be added before this token. - - - - Returns a collection of the ancestor tokens of this token. - - A collection of the ancestor tokens of this token. - - - - Returns a collection of tokens that contain this token, and the ancestors of this token. - - A collection of tokens that contain this token, and the ancestors of this token. - - - - Returns a collection of the sibling tokens after this token, in document order. - - A collection of the sibling tokens after this tokens, in document order. - - - - Returns a collection of the sibling tokens before this token, in document order. - - A collection of the sibling tokens before this token, in document order. - - - - Gets the with the specified key. - - The with the specified key. - - - - Gets the with the specified key converted to the specified type. - - The type to convert the token to. - The token key. - The converted token value. - - - - Get the first child token of this token. - - A containing the first child token of the . - - - - Get the last child token of this token. - - A containing the last child token of the . - - - - Returns a collection of the child tokens of this token, in document order. - - An of containing the child tokens of this , in document order. - - - - Returns a collection of the child tokens of this token, in document order, filtered by the specified type. - - The type to filter the child tokens on. - A containing the child tokens of this , in document order. - - - - Returns a collection of the child values of this token, in document order. - - The type to convert the values to. - A containing the child values of this , in document order. - - - - Removes this token from its parent. - - - - - Replaces this token with the specified token. - - The value. - - - - Writes this token to a . - - A into which this method will write. - A collection of which will be used when writing the token. - - - - Returns the indented JSON for this token. - - - ToString() returns a non-JSON string value for tokens with a type of . - If you want the JSON for all token types then you should use . - - - The indented JSON for this token. - - - - - Returns the JSON for this token using the given formatting and converters. - - Indicates how the output should be formatted. - A collection of s which will be used when writing the token. - The JSON for this token using the given formatting and converters. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to []. - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from [] to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Creates a for this token. - - A that can be used to read this token and its descendants. - - - - Creates a from an object. - - The object that will be used to create . - A with the value of the specified object. - - - - Creates a from an object using the specified . - - The object that will be used to create . - The that will be used when reading the object. - A with the value of the specified object. - - - - Creates an instance of the specified .NET type from the . - - The object type that the token will be deserialized to. - The new object created from the JSON value. - - - - Creates an instance of the specified .NET type from the . - - The object type that the token will be deserialized to. - The new object created from the JSON value. - - - - Creates an instance of the specified .NET type from the using the specified . - - The object type that the token will be deserialized to. - The that will be used when creating the object. - The new object created from the JSON value. - - - - Creates an instance of the specified .NET type from the using the specified . - - The object type that the token will be deserialized to. - The that will be used when creating the object. - The new object created from the JSON value. - - - - Creates a from a . - - A positioned at the token to read into this . - - A that contains the token and its descendant tokens - that were read from the reader. The runtime type of the token is determined - by the token type of the first token encountered in the reader. - - - - - Creates a from a . - - An positioned at the token to read into this . - The used to load the JSON. - If this is null, default load settings will be used. - - A that contains the token and its descendant tokens - that were read from the reader. The runtime type of the token is determined - by the token type of the first token encountered in the reader. - - - - - Load a from a string that contains JSON. - - A that contains JSON. - A populated from the string that contains JSON. - - - - Load a from a string that contains JSON. - - A that contains JSON. - The used to load the JSON. - If this is null, default load settings will be used. - A populated from the string that contains JSON. - - - - Creates a from a . - - A positioned at the token to read into this . - The used to load the JSON. - If this is null, default load settings will be used. - - A that contains the token and its descendant tokens - that were read from the reader. The runtime type of the token is determined - by the token type of the first token encountered in the reader. - - - - - Creates a from a . - - A positioned at the token to read into this . - - A that contains the token and its descendant tokens - that were read from the reader. The runtime type of the token is determined - by the token type of the first token encountered in the reader. - - - - - Selects a using a JSONPath expression. Selects the token that matches the object path. - - - A that contains a JSONPath expression. - - A , or null. - - - - Selects a using a JSONPath expression. Selects the token that matches the object path. - - - A that contains a JSONPath expression. - - A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression. - A . - - - - Selects a using a JSONPath expression. Selects the token that matches the object path. - - - A that contains a JSONPath expression. - - The used to select tokens. - A . - - - - Selects a collection of elements using a JSONPath expression. - - - A that contains a JSONPath expression. - - An of that contains the selected elements. - - - - Selects a collection of elements using a JSONPath expression. - - - A that contains a JSONPath expression. - - A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression. - An of that contains the selected elements. - - - - Selects a collection of elements using a JSONPath expression. - - - A that contains a JSONPath expression. - - The used to select tokens. - An of that contains the selected elements. - - - - Returns the responsible for binding operations performed on this object. - - The expression tree representation of the runtime value. - - The to bind this object. - - - - - Returns the responsible for binding operations performed on this object. - - The expression tree representation of the runtime value. - - The to bind this object. - - - - - Creates a new instance of the . All child tokens are recursively cloned. - - A new instance of the . - - - - Creates a new instance of the . All child tokens are recursively cloned. - - A object to configure cloning settings. - A new instance of the . - - - - Adds an object to the annotation list of this . - - The annotation to add. - - - - Get the first annotation object of the specified type from this . - - The type of the annotation to retrieve. - The first annotation object that matches the specified type, or null if no annotation is of the specified type. - - - - Gets the first annotation object of the specified type from this . - - The of the annotation to retrieve. - The first annotation object that matches the specified type, or null if no annotation is of the specified type. - - - - Gets a collection of annotations of the specified type for this . - - The type of the annotations to retrieve. - An that contains the annotations for this . - - - - Gets a collection of annotations of the specified type for this . - - The of the annotations to retrieve. - An of that contains the annotations that match the specified type for this . - - - - Removes the annotations of the specified type from this . - - The type of annotations to remove. - - - - Removes the annotations of the specified type from this . - - The of annotations to remove. - - - - Compares tokens to determine whether they are equal. - - - - - Determines whether the specified objects are equal. - - The first object of type to compare. - The second object of type to compare. - - true if the specified objects are equal; otherwise, false. - - - - - 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 null. - - - - Represents a reader that provides fast, non-cached, forward-only access to serialized JSON data. - - - - - Gets the at the reader's current position. - - - - - Initializes a new instance of the class. - - The token to read from. - - - - Initializes a new instance of the class. - - The token to read from. - The initial path of the token. It is prepended to the returned . - - - - Reads the next JSON token from the underlying . - - - true if the next token was read successfully; false if there are no more tokens to read. - - - - - Gets the path of the current JSON token. - - - - - Specifies the type of token. - - - - - No token type has been set. - - - - - A JSON object. - - - - - A JSON array. - - - - - A JSON constructor. - - - - - A JSON object property. - - - - - A comment. - - - - - An integer value. - - - - - A float value. - - - - - A string value. - - - - - A boolean value. - - - - - A null value. - - - - - An undefined value. - - - - - A date value. - - - - - A raw JSON value. - - - - - A collection of bytes value. - - - - - A Guid value. - - - - - A Uri value. - - - - - A TimeSpan value. - - - - - Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. - - - - - Gets the at the writer's current position. - - - - - Gets the token being written. - - The token being written. - - - - Initializes a new instance of the class writing to the given . - - The container being written to. - - - - Initializes a new instance of the class. - - - - - Flushes whatever is in the buffer to the underlying . - - - - - Closes this writer. - If is set to true, the JSON is auto-completed. - - - Setting to true has no additional effect, since the underlying is a type that cannot be closed. - - - - - Writes the beginning of a JSON object. - - - - - Writes the beginning of a JSON array. - - - - - Writes the start of a constructor with the given name. - - The name of the constructor. - - - - Writes the end. - - The token. - - - - Writes the property name of a name/value pair on a JSON object. - - The name of the property. - - - - Writes a value. - An error will be raised if the value cannot be written as a single JSON token. - - The value to write. - - - - Writes a null value. - - - - - Writes an undefined value. - - - - - Writes raw JSON. - - The raw JSON to write. - - - - Writes a comment /*...*/ containing the specified text. - - Text to place inside the comment. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a [] value. - - The [] value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Represents a value in JSON (string, integer, date, etc). - - - - - Writes this token to a asynchronously. - - A into which this method will write. - The token to monitor for cancellation requests. - A collection of which will be used when writing the token. - A that represents the asynchronous write operation. - - - - Initializes a new instance of the class from another object. - - A object to copy from. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Gets a value indicating whether this token has child tokens. - - - true if this token has child values; otherwise, false. - - - - - Creates a comment with the given value. - - The value. - A comment with the given value. - - - - Creates a string with the given value. - - The value. - A string with the given value. - - - - Creates a null value. - - A null value. - - - - Creates a undefined value. - - A undefined value. - - - - Gets the node type for this . - - The type. - - - - Gets or sets the underlying token value. - - The underlying token value. - - - - Writes this token to a . - - A into which this method will write. - A collection of s which will be used when writing the token. - - - - Indicates whether the current object is equal to another object of the same type. - - - true if the current object is equal to the parameter; otherwise, false. - - An object to compare with this object. - - - - Determines whether the specified is equal to the current . - - The to compare with the current . - - true if the specified is equal to the current ; otherwise, false. - - - - - Serves as a hash function for a particular type. - - - A hash code for the current . - - - - - Returns a that represents this instance. - - - ToString() returns a non-JSON string value for tokens with a type of . - If you want the JSON for all token types then you should use . - - - A that represents this instance. - - - - - Returns a that represents this instance. - - The format. - - A that represents this instance. - - - - - Returns a that represents this instance. - - The format provider. - - A that represents this instance. - - - - - Returns a that represents this instance. - - The format. - The format provider. - - A that represents this instance. - - - - - Returns the responsible for binding operations performed on this object. - - The expression tree representation of the runtime value. - - The to bind this object. - - - - - Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. - - An object to compare with this instance. - - A 32-bit signed integer that indicates the relative order of the objects being compared. The return value has these meanings: - Value - Meaning - Less than zero - This instance is less than . - Zero - This instance is equal to . - Greater than zero - This instance is greater than . - - - is not of the same type as this instance. - - - - - Specifies how line information is handled when loading JSON. - - - - - Ignore line information. - - - - - Load line information. - - - - - Specifies how JSON arrays are merged together. - - - - Concatenate arrays. - - - Union arrays, skipping items that already exist. - - - Replace all array items. - - - Merge array items together, matched by index. - - - - Specifies how null value properties are merged. - - - - - The content's null value properties will be ignored during merging. - - - - - The content's null value properties will be merged. - - - - - Specifies the member serialization options for the . - - - - - All public members are serialized by default. Members can be excluded using or . - This is the default member serialization mode. - - - - - Only members marked with or are serialized. - This member serialization mode can also be set by marking the class with . - - - - - All public and private fields are serialized. Members can be excluded using or . - This member serialization mode can also be set by marking the class with - and setting IgnoreSerializableAttribute on to false. - - - - - Specifies metadata property handling options for the . - - - - - Read metadata properties located at the start of a JSON object. - - - - - Read metadata properties located anywhere in a JSON object. Note that this setting will impact performance. - - - - - Do not try to read metadata properties. - - - - - Specifies missing member handling options for the . - - - - - Ignore a missing member and do not attempt to deserialize it. - - - - - Throw a when a missing member is encountered during deserialization. - - - - - Specifies null value handling options for the . - - - - - - - - - Include null values when serializing and deserializing objects. - - - - - Ignore null values when serializing and deserializing objects. - - - - - Specifies how object creation is handled by the . - - - - - Reuse existing objects, create new objects when needed. - - - - - Only reuse existing objects. - - - - - Always create new objects. - - - - - Specifies reference handling options for the . - Note that references cannot be preserved when a value is set via a non-default constructor such as types that implement . - - - - - - - - Do not preserve references when serializing types. - - - - - Preserve references when serializing into a JSON object structure. - - - - - Preserve references when serializing into a JSON array structure. - - - - - Preserve references when serializing. - - - - - Specifies reference loop handling options for the . - - - - - Throw a when a loop is encountered. - - - - - Ignore loop references and do not serialize. - - - - - Serialize loop references. - - - - - Indicating whether a property is required. - - - - - The property is not required. The default state. - - - - - The property must be defined in JSON but can be a null value. - - - - - The property must be defined in JSON and cannot be a null value. - - - - - The property is not required but it cannot be a null value. - - - - - - Contains the JSON schema extension methods. - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - - - - - Determines whether the is valid. - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - The source to test. - The schema to test with. - - true if the specified is valid; otherwise, false. - - - - - - Determines whether the is valid. - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - The source to test. - The schema to test with. - When this method returns, contains any error messages generated while validating. - - true if the specified is valid; otherwise, false. - - - - - - Validates the specified . - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - The source to test. - The schema to test with. - - - - - Validates the specified . - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - The source to test. - The schema to test with. - The validation event handler. - - - - - An in-memory representation of a JSON Schema. - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - - - - Gets or sets the id. - - - - - Gets or sets the title. - - - - - Gets or sets whether the object is required. - - - - - Gets or sets whether the object is read-only. - - - - - Gets or sets whether the object is visible to users. - - - - - Gets or sets whether the object is transient. - - - - - Gets or sets the description of the object. - - - - - Gets or sets the types of values allowed by the object. - - The type. - - - - Gets or sets the pattern. - - The pattern. - - - - Gets or sets the minimum length. - - The minimum length. - - - - Gets or sets the maximum length. - - The maximum length. - - - - Gets or sets a number that the value should be divisible by. - - A number that the value should be divisible by. - - - - Gets or sets the minimum. - - The minimum. - - - - Gets or sets the maximum. - - The maximum. - - - - Gets or sets a flag indicating whether the value can not equal the number defined by the minimum attribute (). - - A flag indicating whether the value can not equal the number defined by the minimum attribute (). - - - - Gets or sets a flag indicating whether the value can not equal the number defined by the maximum attribute (). - - A flag indicating whether the value can not equal the number defined by the maximum attribute (). - - - - Gets or sets the minimum number of items. - - The minimum number of items. - - - - Gets or sets the maximum number of items. - - The maximum number of items. - - - - Gets or sets the of items. - - The of items. - - - - Gets or sets a value indicating whether items in an array are validated using the instance at their array position from . - - - true if items are validated using their array position; otherwise, false. - - - - - Gets or sets the of additional items. - - The of additional items. - - - - Gets or sets a value indicating whether additional items are allowed. - - - true if additional items are allowed; otherwise, false. - - - - - Gets or sets whether the array items must be unique. - - - - - Gets or sets the of properties. - - The of properties. - - - - Gets or sets the of additional properties. - - The of additional properties. - - - - Gets or sets the pattern properties. - - The pattern properties. - - - - Gets or sets a value indicating whether additional properties are allowed. - - - true if additional properties are allowed; otherwise, false. - - - - - Gets or sets the required property if this property is present. - - The required property if this property is present. - - - - Gets or sets the a collection of valid enum values allowed. - - A collection of valid enum values allowed. - - - - Gets or sets disallowed types. - - The disallowed types. - - - - Gets or sets the default value. - - The default value. - - - - Gets or sets the collection of that this schema extends. - - The collection of that this schema extends. - - - - Gets or sets the format. - - The format. - - - - Initializes a new instance of the class. - - - - - Reads a from the specified . - - The containing the JSON Schema to read. - The object representing the JSON Schema. - - - - Reads a from the specified . - - The containing the JSON Schema to read. - The to use when resolving schema references. - The object representing the JSON Schema. - - - - Load a from a string that contains JSON Schema. - - A that contains JSON Schema. - A populated from the string that contains JSON Schema. - - - - Load a from a string that contains JSON Schema using the specified . - - A that contains JSON Schema. - The resolver. - A populated from the string that contains JSON Schema. - - - - Writes this schema to a . - - A into which this method will write. - - - - Writes this schema to a using the specified . - - A into which this method will write. - The resolver used. - - - - Returns a that represents the current . - - - A that represents the current . - - - - - - Returns detailed information about the schema exception. - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - - - - Gets the line number indicating where the error occurred. - - The line number indicating where the error occurred. - - - - Gets the line position indicating where the error occurred. - - The line position indicating where the error occurred. - - - - Gets the path to the JSON where the error occurred. - - The path to the JSON where the error occurred. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class - with a specified error message. - - The error message that explains the reason for the exception. - - - - Initializes a new instance of the class - with a specified error message and a reference to the inner exception that is the cause of this exception. - - The error message that explains the reason for the exception. - The exception that is the cause of the current exception, or null if no inner exception is specified. - - - - Initializes a new instance of the class. - - The that holds the serialized object data about the exception being thrown. - The that contains contextual information about the source or destination. - The parameter is null. - The class name is null or is zero (0). - - - - - Generates a from a specified . - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - - - - Gets or sets how undefined schemas are handled by the serializer. - - - - - Gets or sets the contract resolver. - - The contract resolver. - - - - Generate a from the specified type. - - The type to generate a from. - A generated from the specified type. - - - - Generate a from the specified type. - - The type to generate a from. - The used to resolve schema references. - A generated from the specified type. - - - - Generate a from the specified type. - - The type to generate a from. - Specify whether the generated root will be nullable. - A generated from the specified type. - - - - Generate a from the specified type. - - The type to generate a from. - The used to resolve schema references. - Specify whether the generated root will be nullable. - A generated from the specified type. - - - - - Resolves from an id. - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - - - - Gets or sets the loaded schemas. - - The loaded schemas. - - - - Initializes a new instance of the class. - - - - - Gets a for the specified reference. - - The id. - A for the specified reference. - - - - - The value types allowed by the . - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - - - - No type specified. - - - - - String type. - - - - - Float type. - - - - - Integer type. - - - - - Boolean type. - - - - - Object type. - - - - - Array type. - - - - - Null type. - - - - - Any type. - - - - - - Specifies undefined schema Id handling options for the . - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - - - - Do not infer a schema Id. - - - - - Use the .NET type name as the schema Id. - - - - - Use the assembly qualified .NET type name as the schema Id. - - - - - - Returns detailed information related to the . - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - - - - Gets the associated with the validation error. - - The JsonSchemaException associated with the validation error. - - - - Gets the path of the JSON location where the validation error occurred. - - The path of the JSON location where the validation error occurred. - - - - Gets the text description corresponding to the validation error. - - The text description. - - - - - Represents the callback method that will handle JSON schema validation events and the . - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - - - - A camel case naming strategy. - - - - - Initializes a new instance of the class. - - - A flag indicating whether dictionary keys should be processed. - - - A flag indicating whether explicitly specified property names should be processed, - e.g. a property name customized with a . - - - - - Initializes a new instance of the class. - - - A flag indicating whether dictionary keys should be processed. - - - A flag indicating whether explicitly specified property names should be processed, - e.g. a property name customized with a . - - - A flag indicating whether extension data names should be processed. - - - - - Initializes a new instance of the class. - - - - - Resolves the specified property name. - - The property name to resolve. - The resolved property name. - - - - Resolves member mappings for a type, camel casing property names. - - - - - Initializes a new instance of the class. - - - - - Resolves the contract for a given type. - - The type to resolve a contract for. - The contract for a given type. - - - - Used by to resolve a for a given . - - - - - Gets a value indicating whether members are being get and set using dynamic code generation. - This value is determined by the runtime permissions available. - - - true if using dynamic code generation; otherwise, false. - - - - - Gets or sets the default members search flags. - - The default members search flags. - - - - Gets or sets a value indicating whether compiler generated members should be serialized. - - - true if serialized compiler generated members; otherwise, false. - - - - - Gets or sets a value indicating whether to ignore the interface when serializing and deserializing types. - - - true if the interface will be ignored when serializing and deserializing types; otherwise, false. - - - - - Gets or sets a value indicating whether to ignore the attribute when serializing and deserializing types. - - - true if the attribute will be ignored when serializing and deserializing types; otherwise, false. - - - - - Gets or sets a value indicating whether to ignore IsSpecified members when serializing and deserializing types. - - - true if the IsSpecified members will be ignored when serializing and deserializing types; otherwise, false. - - - - - Gets or sets a value indicating whether to ignore ShouldSerialize members when serializing and deserializing types. - - - true if the ShouldSerialize members will be ignored when serializing and deserializing types; otherwise, false. - - - - - Gets or sets the naming strategy used to resolve how property names and dictionary keys are serialized. - - The naming strategy used to resolve how property names and dictionary keys are serialized. - - - - Initializes a new instance of the class. - - - - - Resolves the contract for a given type. - - The type to resolve a contract for. - The contract for a given type. - - - - Gets the serializable members for the type. - - The type to get serializable members for. - The serializable members for the type. - - - - Creates a for the given type. - - Type of the object. - A for the given type. - - - - Creates the constructor parameters. - - The constructor to create properties for. - The type's member properties. - Properties for the given . - - - - Creates a for the given . - - The matching member property. - The constructor parameter. - A created for the given . - - - - Resolves the default for the contract. - - Type of the object. - The contract's default . - - - - Creates a for the given type. - - Type of the object. - A for the given type. - - - - Creates a for the given type. - - Type of the object. - A for the given type. - - - - Creates a for the given type. - - Type of the object. - A for the given type. - - - - Creates a for the given type. - - Type of the object. - A for the given type. - - - - Creates a for the given type. - - Type of the object. - A for the given type. - - - - Creates a for the given type. - - Type of the object. - A for the given type. - - - - Creates a for the given type. - - Type of the object. - A for the given type. - - - - Determines which contract type is created for the given type. - - Type of the object. - A for the given type. - - - - Creates properties for the given . - - The type to create properties for. - /// The member serialization mode for the type. - Properties for the given . - - - - Creates the used by the serializer to get and set values from a member. - - The member. - The used by the serializer to get and set values from a member. - - - - Creates a for the given . - - The member's parent . - The member to create a for. - A created for the given . - - - - Resolves the name of the property. - - Name of the property. - Resolved name of the property. - - - - Resolves the name of the extension data. By default no changes are made to extension data names. - - Name of the extension data. - Resolved name of the extension data. - - - - Resolves the key of the dictionary. By default is used to resolve dictionary keys. - - Key of the dictionary. - Resolved key of the dictionary. - - - - Gets the resolved name of the property. - - Name of the property. - Name of the property. - - - - The default naming strategy. Property names and dictionary keys are unchanged. - - - - - Resolves the specified property name. - - The property name to resolve. - The resolved property name. - - - - The default serialization binder used when resolving and loading classes from type names. - - - - - Initializes a new instance of the class. - - - - - When overridden in a derived class, controls the binding of a serialized object to a type. - - Specifies the name of the serialized object. - Specifies the name of the serialized object. - - The type of the object the formatter creates a new instance of. - - - - - When overridden in a derived class, controls the binding of a serialized object to a type. - - The type of the object the formatter creates a new instance of. - Specifies the name of the serialized object. - Specifies the name of the serialized object. - - - - Represents a trace writer that writes to the application's instances. - - - - - Gets the that will be used to filter the trace messages passed to the writer. - For example a filter level of will exclude messages and include , - and messages. - - - The that will be used to filter the trace messages passed to the writer. - - - - - Writes the specified trace level, message and optional exception. - - The at which to write this trace. - The trace message. - The trace exception. This parameter is optional. - - - - Provides information surrounding an error. - - - - - Gets the error. - - The error. - - - - Gets the original object that caused the error. - - The original object that caused the error. - - - - Gets the member that caused the error. - - The member that caused the error. - - - - Gets the path of the JSON location where the error occurred. - - The path of the JSON location where the error occurred. - - - - Gets or sets a value indicating whether this is handled. - - true if handled; otherwise, false. - - - - Provides data for the Error event. - - - - - Gets the current object the error event is being raised against. - - The current object the error event is being raised against. - - - - Gets the error context. - - The error context. - - - - Initializes a new instance of the class. - - The current object. - The error context. - - - - Get and set values for a using dynamic methods. - - - - - Initializes a new instance of the class. - - The member info. - - - - Sets the value. - - The target to set the value on. - The value to set on the target. - - - - Gets the value. - - The target to get the value from. - The value. - - - - Provides methods to get attributes. - - - - - Returns a collection of all of the attributes, or an empty collection if there are no attributes. - - When true, look up the hierarchy chain for the inherited custom attribute. - A collection of s, or an empty collection. - - - - Returns a collection of attributes, identified by type, or an empty collection if there are no attributes. - - The type of the attributes. - When true, look up the hierarchy chain for the inherited custom attribute. - A collection of s, or an empty collection. - - - - Used by to resolve a for a given . - - - - - - - - - Resolves the contract for a given type. - - The type to resolve a contract for. - The contract for a given type. - - - - Used to resolve references when serializing and deserializing JSON by the . - - - - - Resolves a reference to its object. - - The serialization context. - The reference to resolve. - The object that was resolved from the reference. - - - - Gets the reference for the specified object. - - The serialization context. - The object to get a reference for. - The reference to the object. - - - - Determines whether the specified object is referenced. - - The serialization context. - The object to test for a reference. - - true if the specified object is referenced; otherwise, false. - - - - - Adds a reference to the specified object. - - The serialization context. - The reference. - The object to reference. - - - - Allows users to control class loading and mandate what class to load. - - - - - When implemented, controls the binding of a serialized object to a type. - - Specifies the name of the serialized object. - Specifies the name of the serialized object - The type of the object the formatter creates a new instance of. - - - - When implemented, controls the binding of a serialized object to a type. - - The type of the object the formatter creates a new instance of. - Specifies the name of the serialized object. - Specifies the name of the serialized object. - - - - Represents a trace writer. - - - - - Gets the that will be used to filter the trace messages passed to the writer. - For example a filter level of will exclude messages and include , - and messages. - - The that will be used to filter the trace messages passed to the writer. - - - - Writes the specified trace level, message and optional exception. - - The at which to write this trace. - The trace message. - The trace exception. This parameter is optional. - - - - Provides methods to get and set values. - - - - - Sets the value. - - The target to set the value on. - The value to set on the target. - - - - Gets the value. - - The target to get the value from. - The value. - - - - Contract details for a used by the . - - - - - Gets the of the collection items. - - The of the collection items. - - - - Gets a value indicating whether the collection type is a multidimensional array. - - true if the collection type is a multidimensional array; otherwise, false. - - - - Gets or sets the function used to create the object. When set this function will override . - - The function used to create the object. - - - - Gets a value indicating whether the creator has a parameter with the collection values. - - true if the creator has a parameter with the collection values; otherwise, false. - - - - Initializes a new instance of the class. - - The underlying type for the contract. - - - - Contract details for a used by the . - - - - - Gets or sets the default collection items . - - The converter. - - - - Gets or sets a value indicating whether the collection items preserve object references. - - true if collection items preserve object references; otherwise, false. - - - - Gets or sets the collection item reference loop handling. - - The reference loop handling. - - - - Gets or sets the collection item type name handling. - - The type name handling. - - - - Initializes a new instance of the class. - - The underlying type for the contract. - - - - Handles serialization callback events. - - The object that raised the callback event. - The streaming context. - - - - Handles serialization error callback events. - - The object that raised the callback event. - The streaming context. - The error context. - - - - Sets extension data for an object during deserialization. - - The object to set extension data on. - The extension data key. - The extension data value. - - - - Gets extension data for an object during serialization. - - The object to set extension data on. - - - - Contract details for a used by the . - - - - - Gets the underlying type for the contract. - - The underlying type for the contract. - - - - Gets or sets the type created during deserialization. - - The type created during deserialization. - - - - Gets or sets whether this type contract is serialized as a reference. - - Whether this type contract is serialized as a reference. - - - - Gets or sets the default for this contract. - - The converter. - - - - Gets the internally resolved for the contract's type. - This converter is used as a fallback converter when no other converter is resolved. - Setting will always override this converter. - - - - - Gets or sets all methods called immediately after deserialization of the object. - - The methods called immediately after deserialization of the object. - - - - Gets or sets all methods called during deserialization of the object. - - The methods called during deserialization of the object. - - - - Gets or sets all methods called after serialization of the object graph. - - The methods called after serialization of the object graph. - - - - Gets or sets all methods called before serialization of the object. - - The methods called before serialization of the object. - - - - Gets or sets all method called when an error is thrown during the serialization of the object. - - The methods called when an error is thrown during the serialization of the object. - - - - Gets or sets the default creator method used to create the object. - - The default creator method used to create the object. - - - - Gets or sets a value indicating whether the default creator is non-public. - - true if the default object creator is non-public; otherwise, false. - - - - Contract details for a used by the . - - - - - Gets or sets the dictionary key resolver. - - The dictionary key resolver. - - - - Gets the of the dictionary keys. - - The of the dictionary keys. - - - - Gets the of the dictionary values. - - The of the dictionary values. - - - - Gets or sets the function used to create the object. When set this function will override . - - The function used to create the object. - - - - Gets a value indicating whether the creator has a parameter with the dictionary values. - - true if the creator has a parameter with the dictionary values; otherwise, false. - - - - Initializes a new instance of the class. - - The underlying type for the contract. - - - - Contract details for a used by the . - - - - - Gets the object's properties. - - The object's properties. - - - - Gets or sets the property name resolver. - - The property name resolver. - - - - Initializes a new instance of the class. - - The underlying type for the contract. - - - - Contract details for a used by the . - - - - - Gets or sets the object constructor. - - The object constructor. - - - - Initializes a new instance of the class. - - The underlying type for the contract. - - - - Contract details for a used by the . - - - - - Initializes a new instance of the class. - - The underlying type for the contract. - - - - Contract details for a used by the . - - - - - Gets or sets the object member serialization. - - The member object serialization. - - - - Gets or sets the missing member handling used when deserializing this object. - - The missing member handling. - - - - Gets or sets a value that indicates whether the object's properties are required. - - - A value indicating whether the object's properties are required. - - - - - Gets or sets how the object's properties with null values are handled during serialization and deserialization. - - How the object's properties with null values are handled during serialization and deserialization. - - - - Gets the object's properties. - - The object's properties. - - - - Gets a collection of instances that define the parameters used with . - - - - - Gets or sets the function used to create the object. When set this function will override . - This function is called with a collection of arguments which are defined by the collection. - - The function used to create the object. - - - - Gets or sets the extension data setter. - - - - - Gets or sets the extension data getter. - - - - - Gets or sets the extension data value type. - - - - - Gets or sets the extension data name resolver. - - The extension data name resolver. - - - - Initializes a new instance of the class. - - The underlying type for the contract. - - - - Contract details for a used by the . - - - - - Initializes a new instance of the class. - - The underlying type for the contract. - - - - Maps a JSON property to a .NET member or constructor parameter. - - - - - Gets or sets the name of the property. - - The name of the property. - - - - Gets or sets the type that declared this property. - - The type that declared this property. - - - - Gets or sets the order of serialization of a member. - - The numeric order of serialization. - - - - Gets or sets the name of the underlying member or parameter. - - The name of the underlying member or parameter. - - - - Gets the that will get and set the during serialization. - - The that will get and set the during serialization. - - - - Gets or sets the for this property. - - The for this property. - - - - Gets or sets the type of the property. - - The type of the property. - - - - Gets or sets the for the property. - If set this converter takes precedence over the contract converter for the property type. - - The converter. - - - - Gets or sets the member converter. - - The member converter. - - - - Gets or sets a value indicating whether this is ignored. - - true if ignored; otherwise, false. - - - - Gets or sets a value indicating whether this is readable. - - true if readable; otherwise, false. - - - - Gets or sets a value indicating whether this is writable. - - true if writable; otherwise, false. - - - - Gets or sets a value indicating whether this has a member attribute. - - true if has a member attribute; otherwise, false. - - - - Gets the default value. - - The default value. - - - - Gets or sets a value indicating whether this is required. - - A value indicating whether this is required. - - - - Gets a value indicating whether has a value specified. - - - - - Gets or sets a value indicating whether this property preserves object references. - - - true if this instance is reference; otherwise, false. - - - - - Gets or sets the property null value handling. - - The null value handling. - - - - Gets or sets the property default value handling. - - The default value handling. - - - - Gets or sets the property reference loop handling. - - The reference loop handling. - - - - Gets or sets the property object creation handling. - - The object creation handling. - - - - Gets or sets or sets the type name handling. - - The type name handling. - - - - Gets or sets a predicate used to determine whether the property should be serialized. - - A predicate used to determine whether the property should be serialized. - - - - Gets or sets a predicate used to determine whether the property should be deserialized. - - A predicate used to determine whether the property should be deserialized. - - - - Gets or sets a predicate used to determine whether the property should be serialized. - - A predicate used to determine whether the property should be serialized. - - - - Gets or sets an action used to set whether the property has been deserialized. - - An action used to set whether the property has been deserialized. - - - - Returns a that represents this instance. - - - A that represents this instance. - - - - - Gets or sets the converter used when serializing the property's collection items. - - The collection's items converter. - - - - Gets or sets whether this property's collection items are serialized as a reference. - - Whether this property's collection items are serialized as a reference. - - - - Gets or sets the type name handling used when serializing the property's collection items. - - The collection's items type name handling. - - - - Gets or sets the reference loop handling used when serializing the property's collection items. - - The collection's items reference loop handling. - - - - A collection of objects. - - - - - Initializes a new instance of the class. - - The type. - - - - When implemented in a derived class, extracts the key from the specified element. - - The element from which to extract the key. - The key for the specified element. - - - - Adds a object. - - The property to add to the collection. - - - - Gets the closest matching object. - First attempts to get an exact case match of and then - a case insensitive match. - - Name of the property. - A matching property if found. - - - - Gets a property by property name. - - The name of the property to get. - Type property name string comparison. - A matching property if found. - - - - Contract details for a used by the . - - - - - Initializes a new instance of the class. - - The underlying type for the contract. - - - - Lookup and create an instance of the type described by the argument. - - The type to create. - Optional arguments to pass to an initializing constructor of the JsonConverter. - If null, the default constructor is used. - - - - A kebab case naming strategy. - - - - - Initializes a new instance of the class. - - - A flag indicating whether dictionary keys should be processed. - - - A flag indicating whether explicitly specified property names should be processed, - e.g. a property name customized with a . - - - - - Initializes a new instance of the class. - - - A flag indicating whether dictionary keys should be processed. - - - A flag indicating whether explicitly specified property names should be processed, - e.g. a property name customized with a . - - - A flag indicating whether extension data names should be processed. - - - - - Initializes a new instance of the class. - - - - - Resolves the specified property name. - - The property name to resolve. - The resolved property name. - - - - Represents a trace writer that writes to memory. When the trace message limit is - reached then old trace messages will be removed as new messages are added. - - - - - Gets the that will be used to filter the trace messages passed to the writer. - For example a filter level of will exclude messages and include , - and messages. - - - The that will be used to filter the trace messages passed to the writer. - - - - - Initializes a new instance of the class. - - - - - Writes the specified trace level, message and optional exception. - - The at which to write this trace. - The trace message. - The trace exception. This parameter is optional. - - - - Returns an enumeration of the most recent trace messages. - - An enumeration of the most recent trace messages. - - - - Returns a of the most recent trace messages. - - - A of the most recent trace messages. - - - - - A base class for resolving how property names and dictionary keys are serialized. - - - - - A flag indicating whether dictionary keys should be processed. - Defaults to false. - - - - - A flag indicating whether extension data names should be processed. - Defaults to false. - - - - - A flag indicating whether explicitly specified property names, - e.g. a property name customized with a , should be processed. - Defaults to false. - - - - - Gets the serialized name for a given property name. - - The initial property name. - A flag indicating whether the property has had a name explicitly specified. - The serialized property name. - - - - Gets the serialized name for a given extension data name. - - The initial extension data name. - The serialized extension data name. - - - - Gets the serialized key for a given dictionary key. - - The initial dictionary key. - The serialized dictionary key. - - - - Resolves the specified property name. - - The property name to resolve. - The resolved property name. - - - - Hash code calculation - - - - - - Object equality implementation - - - - - - - Compare to another NamingStrategy - - - - - - - Represents a method that constructs an object. - - The object type to create. - - - - When applied to a method, specifies that the method is called when an error occurs serializing an object. - - - - - Provides methods to get attributes from a , , or . - - - - - Initializes a new instance of the class. - - The instance to get attributes for. This parameter should be a , , or . - - - - Returns a collection of all of the attributes, or an empty collection if there are no attributes. - - When true, look up the hierarchy chain for the inherited custom attribute. - A collection of s, or an empty collection. - - - - Returns a collection of attributes, identified by type, or an empty collection if there are no attributes. - - The type of the attributes. - When true, look up the hierarchy chain for the inherited custom attribute. - A collection of s, or an empty collection. - - - - Get and set values for a using reflection. - - - - - Initializes a new instance of the class. - - The member info. - - - - Sets the value. - - The target to set the value on. - The value to set on the target. - - - - Gets the value. - - The target to get the value from. - The value. - - - - A snake case naming strategy. - - - - - Initializes a new instance of the class. - - - A flag indicating whether dictionary keys should be processed. - - - A flag indicating whether explicitly specified property names should be processed, - e.g. a property name customized with a . - - - - - Initializes a new instance of the class. - - - A flag indicating whether dictionary keys should be processed. - - - A flag indicating whether explicitly specified property names should be processed, - e.g. a property name customized with a . - - - A flag indicating whether extension data names should be processed. - - - - - Initializes a new instance of the class. - - - - - Resolves the specified property name. - - The property name to resolve. - The resolved property name. - - - - Specifies how strings are escaped when writing JSON text. - - - - - Only control characters (e.g. newline) are escaped. - - - - - All non-ASCII and control characters (e.g. newline) are escaped. - - - - - HTML (<, >, &, ', ") and control characters (e.g. newline) are escaped. - - - - - Indicates the method that will be used during deserialization for locating and loading assemblies. - - - - - In simple mode, the assembly used during deserialization need not match exactly the assembly used during serialization. Specifically, the version numbers need not match as the LoadWithPartialName method of the class is used to load the assembly. - - - - - In full mode, the assembly used during deserialization must match exactly the assembly used during serialization. The Load method of the class is used to load the assembly. - - - - - Specifies type name handling options for the . - - - should be used with caution when your application deserializes JSON from an external source. - Incoming types should be validated with a custom - when deserializing with a value other than . - - - - - Do not include the .NET type name when serializing types. - - - - - Include the .NET type name when serializing into a JSON object structure. - - - - - Include the .NET type name when serializing into a JSON array structure. - - - - - Always include the .NET type name when serializing. - - - - - Include the .NET type name when the type of the object being serialized is not the same as its declared type. - Note that this doesn't include the root serialized object by default. To include the root object's type name in JSON - you must specify a root type object with - or . - - - - - Determines whether the collection is null or empty. - - The collection. - - true if the collection is null or empty; otherwise, false. - - - - - Adds the elements of the specified collection to the specified generic . - - The list to add to. - The collection of elements to add. - - - - Converts the value to the specified type. If the value is unable to be converted, the - value is checked whether it assignable to the specified type. - - The value to convert. - The culture to use when converting. - The type to convert or cast the value to. - - The converted type. If conversion was unsuccessful, the initial value - is returned if assignable to the target type. - - - - - Helper method for generating a MetaObject which calls a - specific method on Dynamic that returns a result - - - - - Helper method for generating a MetaObject which calls a - specific method on Dynamic, but uses one of the arguments for - the result. - - - - - Helper method for generating a MetaObject which calls a - specific method on Dynamic, but uses one of the arguments for - the result. - - - - - Returns a Restrictions object which includes our current restrictions merged - with a restriction limiting our type - - - - - Helper class for serializing immutable collections. - Note that this is used by all builds, even those that don't support immutable collections, in case the DLL is GACed - https://github.com/JamesNK/Newtonsoft.Json/issues/652 - - - - - Gets the type of the typed collection's items. - - The type. - The type of the typed collection's items. - - - - Gets the member's underlying type. - - The member. - The underlying type of the member. - - - - Determines whether the property is an indexed property. - - The property. - - true if the property is an indexed property; otherwise, false. - - - - - Gets the member's value on the object. - - The member. - The target object. - The member's value on the object. - - - - Sets the member's value on the target object. - - The member. - The target. - The value. - - - - Determines whether the specified MemberInfo can be read. - - The MemberInfo to determine whether can be read. - /// if set to true then allow the member to be gotten non-publicly. - - true if the specified MemberInfo can be read; otherwise, false. - - - - - Determines whether the specified MemberInfo can be set. - - The MemberInfo to determine whether can be set. - if set to true then allow the member to be set non-publicly. - if set to true then allow the member to be set if read-only. - - true if the specified MemberInfo can be set; otherwise, false. - - - - - Builds a string. Unlike this class lets you reuse its internal buffer. - - - - - Determines whether the string is all white space. Empty string will return false. - - The string to test whether it is all white space. - - true if the string is all white space; otherwise, false. - - - - - Specifies the state of the . - - - - - An exception has been thrown, which has left the in an invalid state. - You may call the method to put the in the Closed state. - Any other method calls result in an being thrown. - - - - - The method has been called. - - - - - An object is being written. - - - - - An array is being written. - - - - - A constructor is being written. - - - - - A property is being written. - - - - - A write method has not been called. - - - - Specifies that an output will not be null even if the corresponding type allows it. - - - Specifies that when a method returns , the parameter will not be null even if the corresponding type allows it. - - - Initializes the attribute with the specified return value condition. - - The return value condition. If the method returns this value, the associated parameter will not be null. - - - - Gets the return value condition. - - - Specifies that an output may be null even if the corresponding type disallows it. - - - Specifies that null is allowed as an input even if the corresponding type disallows it. - - - - Specifies that the method will not return if the associated Boolean parameter is passed the specified value. - - - - - Initializes a new instance of the class. - - - The condition parameter value. Code after the method will be considered unreachable by diagnostics if the argument to - the associated parameter matches this value. - - - - Gets the condition parameter value. - - - diff --git a/pyaedt/dlls/PDFReport/PdfSharpCore.Charting.dll b/pyaedt/dlls/PDFReport/PdfSharpCore.Charting.dll deleted file mode 100644 index 9c20d41c026e4921ce343424a7475a5dd4d2da4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 80384 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 diff --git a/pyaedt/dlls/PDFReport/PdfSharpCore.dll b/pyaedt/dlls/PDFReport/PdfSharpCore.dll deleted file mode 100644 index 7d7ecbfd78038dbeb2f7d237fe1ee51aa6c277c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 546816 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

Mxul-?LPi(kN5!8?NP`94gkF_iQCftYhz4 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 ) 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

KdMRk%OLQz9Y))ya|jsvSZGc9$!up1 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

X!vzZIfx)pV-Ap*`U@Nq^ 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 - - - SixLabors.Fonts - - - -

- BinaryReader using big-endian encoding. - - - - - Buffer used for temporary storage before conversion into primitives - - - - - Initializes a new instance of the class. - Constructs a new binary reader with the given bit converter, reading - to the given stream, using the given encoding. - - Stream to read data from - if set to true [leave open]. - - - - Gets the underlying stream of the EndianBinaryReader. - - - - - Seeks within the stream. - - Offset to seek to. - Origin of seek operation. If SeekOrigin.Begin, the offset will be set to the start of stream position. - - - - Reads a single byte from the stream. - - The byte read - - - - Reads a single signed byte from the stream. - - The byte read - - - - Reads a 16-bit signed integer from the stream, using the bit converter - for this reader. 2 bytes are read. - - The 16-bit integer read - - - - Reads a fixed 32-bit value from the stream. - 4 bytes are read. - - The 32-bit value read. - - - - Reads a 64-bit signed integer from the stream. - 8 bytes are read. - - The 64-bit integer read. - - - - Reads a 16-bit unsigned integer from the stream. - 2 bytes are read. - - The 16-bit unsigned integer read. - - - - Reads a 16-bit unsigned integer from the stream representing an offset position. - 2 bytes are read. - - The 16-bit unsigned integer read. - - - - Reads array of 16-bit unsigned integers from the stream. - - The length. - - The 16-bit unsigned integer read. - - - - - Reads array of 16-bit unsigned integers from the stream to the buffer. - - The buffer to read to. - - - - Reads array or 32-bit unsigned integers from the stream. - - The length. - - The 32-bit unsigned integer read. - - - - - Reads array of 16-bit unsigned integers from the stream. - - The length. - - The 16-bit signed integer read. - - - - - Reads an array of 16-bit signed integers from the stream to the buffer. - - The buffer to read to. - - - - Reads a 8-bit unsigned integer from the stream, using the bit converter - for this reader. 1 bytes are read. - - The 8-bit unsigned integer read. - - - - Reads a 24-bit unsigned integer from the stream, using the bit converter - for this reader. 3 bytes are read. - - The 24-bit unsigned integer read. - - - - Reads a 32-bit unsigned integer from the stream, using the bit converter - for this reader. 4 bytes are read. - - The 32-bit unsigned integer read. - - - - Reads a 32-bit unsigned integer from the stream representing an offset position. - 4 bytes are read. - - The 32-bit unsigned integer read. - - - - Reads the specified number of bytes, returning them in a new byte array. - If not enough bytes are available before the end of the stream, this - method will return what is available. - - The number of bytes to read. - The bytes read. - - - - Reads a string of a specific length, which specifies the number of bytes - to read from the stream. These bytes are then converted into a string with - the encoding for this reader. - - The bytes to read. - The encoding. - - The string read from the stream. - - - - - Reads the uint32 string. - - a 4 character long UTF8 encoded string. - - - - Reads the given number of bytes from the stream, throwing an exception - if they can't all be read. - - Buffer to read into. - Number of bytes to read. - - - - An disposable buffer that is backed by an array pool. - - The type of buffer element. - - - - Options for enabling color font support during layout and rendering. - - - - - Don't try rendering color glyphs at all - - - - - Render using glyphs accessed via Microsoft's COLR/CPAL table extensions to OpenType - - - - - Base class for exceptions thrown by this library. - - - - - - Initializes a new instance of the class. - - The message that describes the error. - - - - Exception for detailing missing font families. - - - - - - Initializes a new instance of the class. - - The name of the missing font family. - - - - Initializes a new instance of the class. - - The name of the missing font family. - - The collection of directories that were searched for the font family. - Pass an empty collection if font families were not searched in directories. - - - - - Gets the name of the font family that was not found. - - - - - Gets the collection of directories that were unsuccessfully searched for the font family. - - - If the exception did not originate from the then this property will be empty. - - - - - Helper methods to throw exceptions - - - - - Throws an . - - - - - Throws an . - - - - - Exception for detailing missing font families. - - - - - - Initializes a new instance of the class. - - The code point for the glyph we where unable to find. - - - - Exception font loading can throw if it encounters invalid data during font loading. - - - - - - Initializes a new instance of the class. - - The message that describes the error. - - - - Exception font loading can throw if it encounters invalid data during font loading. - - - - - - Initializes a new instance of the class. - - The message that describes the error. - The table. - - - - Gets the table where the error originated. - - - - - Exception font loading can throw if it finds a required table is missing during font loading. - - - - - - Initializes a new instance of the class. - - The message that describes the error. - The table. - - - - Gets the table where the error originated. - - - - - - Represents a font face with metrics, which is a set of glyphs with a specific style (regular, italic, bold etc). - - The font source is a filesystem path. - - - - - - - - Gets the filesystem path to the font face source. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Reads a from the specified stream. - - The file path. - a . - - - - Defines a particular format for text, including font face, size, and style attributes. - This class cannot be inherited. - - - - - Initializes a new instance of the class. - - The font family. - The size of the font in PT units. - - - - Initializes a new instance of the class. - - The font family. - The size of the font in PT units. - The font style. - - - - Initializes a new instance of the class. - - The prototype. - The font style. - - - - Initializes a new instance of the class. - - The prototype. - The size of the font in PT units. - The font style. - - - - Initializes a new instance of the class. - - The prototype. - The size of the font in PT units. - - - - Gets the family. - - - - - Gets the name. - - - - - Gets the size of the font in PT units. - - - - - Gets the font metrics. - - - - - Gets a value indicating whether this is bold. - - - - - Gets a value indicating whether this is italic. - - - - - Gets the requested style. - - - - - Gets the filesystem path to the font family source. - - - When this method returns, contains the filesystem path to the font family source, - if the path exists; otherwise, the default value for the type of the path parameter. - This parameter is passed uninitialized. - - - if the was created via a filesystem path; otherwise, . - - - - - Gets the glyphs for the given codepoint. - - The code point of the character. - Options for enabling color font support during layout and rendering. - Returns the glyph - - - - Gets the glyphs for the given codepoint. - - The code point of the character. - The text attributes to apply to the glyphs. - Options for enabling color font support during layout and rendering. - Returns the glyph - - - - Represents a collection of font families. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - The collection of directories used to search for font families. - - Use this constructor instead of the parameterless constructor if the fonts added to that collection - are actually added after searching inside physical file system directories. The message of the - will include the searched directories. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Extension methods for . - - - - - Adds the fonts from the collection to this . - - The font collection. - The containing the system fonts. - - - - Adds the fonts from the collection to this . - - The font collection. - The delegate that defines the conditions of to add into the font collection. - The containing the system fonts. - - - - Provides basic descriptive metadata for the font. - - - - - Initializes a new instance of the class. - - The name table. - The os2 table. - The head table. - - - - Gets the style. - - - - - Gets the name of the font in the invariant culture. - - - - - Gets the name of the font family in the invariant culture. - - - - - Gets the font sub family in the invariant culture. - - - - - Gets the name of the font. - - The culture to load metadata in. - The font name. - - - - Gets the name of the font family. - - The culture to load metadata in. - The font family name. - - - - Gets the font sub family. - - The culture to load metadata in. - The font sub family name. - - - - Gets the name matching the given culture and id. - If is passed this method will return the first name matching the id. - - The culture to load metadata in. - The name id to match. - The name. - - - - Reads a from the specified stream. - - The file path. - a . - - - - Reads a from the specified stream. - - The stream. - a . - - - - Reads a from the specified stream. - - The reader. - - a . - - - - - Reads all the s from the file at the specified path (typically a .ttc file like simsun.ttc). - - The file path. - a . - - - - Reads all the s from the specified stream (typically a .ttc file like simsun.ttc). - - The stream to read the font collection from. - a . - - - - Defines a group of type faces having a similar basic design and certain - variations in styles. - - - - - Initializes a new instance of the struct. - - The name. - The collection. - The culture the family was extracted against - - - - Gets the name. - - - - - Gets the culture this instance was extracted against. - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - if the current left is equal to the - parameter; otherwise, . - - - - - Compares two objects for inequality. - - The on the left side of the operand. - The on the right side of the operand. - - if the current left is unequal to the - parameter; otherwise, . - - - - - Create a new instance of the for the named font family with regular styling. - - The size of the font in PT units. - The new . - - - - Create a new instance of the for the named font family. - - The size of the font in PT units. - The font style. - The new . - - - - Gets the collection of that are currently available. - - The . - - - - Gets the collection of filesystem paths to the font family sources. - - - When this method returns, contains the filesystem paths to the font family sources, - if the path exists; otherwise, an empty value for the type of the paths parameter. - This parameter is passed uninitialized. - - - if the was created via filesystem paths; otherwise, . - - - - - Gets the specified font metrics matching the given font style. - - The font style to use when searching for a match. - - When this method returns, contains the metrics associated with the specified name, - if the name is found; otherwise, the default value for the type of the metrics parameter. - This parameter is passed uninitialized. - - - if the contains font metrics - with the specified name; otherwise, . - - - - - - - - - - - - - - - - - Represents a font face with metrics, which is a set of glyphs with a specific style (regular, italic, bold etc). - - - - - Gets the basic description of the face. - - - - - Gets the number of font units per EM square for this face. - - - - - Gets the scale factor that is applied to all glyphs in this face. - Calculated as 72 * so that 1pt = 1px. - - - - - Gets the typographic ascender of the face, expressed in font units. - - - - - Gets the typographic descender of the face, expressed in font units. - - - - - Gets the typographic line gap of the face, expressed in font units. - This field should be combined with the and - values to determine default line spacing. - - - - - Gets the typographic line spacing of the face, expressed in font units. - - - - - Gets the maximum advance width, in font units, for all glyphs in this face. - - - - - Gets the maximum advance height, in font units, for all glyphs in this - face.This is only relevant for vertical layouts, and is set to for - fonts that do not provide vertical metrics. - - - - - Gets the recommended horizontal size in font design units for subscripts for this font. - - - - - Gets the recommended vertical size in font design units for subscripts for this font. - - - - - Gets the recommended horizontal offset in font design units for subscripts for this font. - - - - - Gets the recommended vertical offset in font design units for subscripts for this font. - - - - - Gets the recommended horizontal size in font design units for superscripts for this font. - - - - - Gets the recommended vertical size in font design units for superscripts for this font. - - - - - Gets the recommended horizontal offset in font design units for superscripts for this font. - - - - - Gets the recommended vertical offset in font design units for superscripts for this font. - - - - - Gets thickness of the strikeout stroke in font design units. - - - - - Gets the position of the top of the strikeout stroke relative to the baseline in font design units. - - - - - Gets the suggested distance of the top of the underline from the baseline (negative values indicate below baseline). - - - - - Gets the suggested values for the underline thickness. In general, the underline thickness should match the thickness of - the underscore character (U+005F LOW LINE), and should also match the strikeout thickness, which is specified in the OS/2 table. - - - - - Gets the italic angle in counter-clockwise degrees from the vertical. Zero for upright text, negative for text that leans to the right (forward). - - - - - Gets the specified glyph id matching the codepoint. - - The codepoint. - - When this method returns, contains the glyph id associated with the specified codepoint, - if the codepoint is found; otherwise, 0. - This parameter is passed uninitialized. - - - if the face contains a glyph for the specified codepoint; otherwise, . - - - - - Gets the specified glyph id matching the codepoint pair. - - The codepoint. - The next codepoint. Can be null. - - When this method returns, contains the glyph id associated with the specified codepoint, - if the codepoint is found; otherwise, 0. - This parameter is passed uninitialized. - - - When this method return, contains a value indicating whether the next codepoint should be skipped. - - - if the face contains a glyph for the specified codepoint; otherwise, . - - - - - Tries to get the glyph class for a given glyph id. - The font needs to have a GDEF table defined. - - The glyph identifier. - The glyph class. - true, if the glyph class could be retrieved. - - - - Tries to get the mark attachment class for a given glyph id. - The font needs to have a GDEF table defined. - - The glyph identifier. - The mark attachment class. - true, if the mark attachment class could be retrieved. - - - - Gets the glyph metrics for a given code point. - - The Unicode code point to get the glyph for. - Options for enabling color font support during layout and rendering. - The glyph metrics to find. - - - - Gets the glyph metrics for a given code point and glyph id. - - The Unicode codepoint. - - The previously matched or substituted glyph id for the codepoint in the face. - If this value equals 0 the default fallback metrics are returned. - - Options for enabling color font support during layout and rendering. - The . - - - - Applies any available substitutions to the collection of glyphs. - - The glyph substitution collection. - - - - Applies any available positioning updates to the collection of glyphs. - - The glyph positioning collection. - - - - Stores a set of four single precision floating points that represent the location and size of a rectangle. - - - This struct is fully mutable. This is done (against the guidelines) for the sake of performance, - as it avoids the need to create new values for modification operations. - - - - - Represents a that has X, Y, Width, and Height values set to zero. - - - - - Initializes a new instance of the struct. - - The horizontal position of the rectangle. - The vertical position of the rectangle. - The width of the rectangle. - The height of the rectangle. - - - - Initializes a new instance of the struct. - - - The which specifies the rectangles point in a two-dimensional plane. - - - The which specifies the rectangles height and width. - - - - - Gets the x-coordinate of this . - - - - - Gets the y-coordinate of this . - - - - - Gets the width of this . - - - - - Gets the height of this . - - - - - Gets the coordinates of the upper-left corner of the rectangular region represented by this . - - - - - Gets the size of this . - - - - - Gets a value indicating whether this is empty. - - - - - Gets the y-coordinate of the top edge of this . - - - - - Gets the x-coordinate of the right edge of this . - - - - - Gets the y-coordinate of the bottom edge of this . - - - - - Gets the x-coordinate of the left edge of this . - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the current left is equal to the parameter; otherwise, false. - - - - - Compares two objects for inequality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the current left is unequal to the parameter; otherwise, false. - - - - - Creates a new with the specified location and size. - The left coordinate of the rectangle. - The top coordinate of the rectangle. - The right coordinate of the rectangle. - The bottom coordinate of the rectangle. - The . - - - - Returns the center point of the given . - - The rectangle. - The . - - - - Creates a rectangle that represents the intersection between and - . If there is no intersection, an empty rectangle is returned. - - The first rectangle. - The second rectangle. - The . - - - - Creates a new from the given - that is inflated by the specified amount. - - The rectangle. - The amount to inflate the width by. - The amount to inflate the height by. - A new . - - - - Creates a new by transforming the given rectangle by the given matrix. - - The source rectangle. - The transformation matrix. - A transformed . - - - - Creates a rectangle that represents the union between and . - - The first rectangle. - The second rectangle. - The . - - - - Deconstructs this rectangle into four floats. - - The out value for X. - The out value for Y. - The out value for the width. - The out value for the height. - - - - Creates a FontRectangle that represents the intersection between this FontRectangle and the . - - The rectangle. - New representing the intersections between the two rectangles. - - - - Creates a new inflated by the specified amount. - - The width. - The height. - New representing the inflated rectangle - - - - Creates a new inflated by the specified amount. - - The size. - New representing the inflated rectangle - - - - Determines if the specified point is contained within the rectangular region defined by - this . - - The x-coordinate of the given point. - The y-coordinate of the given point. - The . - - - - Determines if the specified point is contained within the rectangular region defined by this . - - The point. - The . - - - - Determines if the rectangular region represented by is entirely contained - within the rectangular region represented by this . - - The rectangle. - The . - - - - Determines if the specified intersects the rectangular region defined by - this . - - The other rectangle. - The . - - - - Adjusts the location of this rectangle by the specified amount. - - The point. - New representing the offset rectangle. - - - - Adjusts the location of this rectangle by the specified amount. - - The amount to offset the x-coordinate. - The amount to offset the y-coordinate. - New representing the inflated rectangle. - - - - - - - - - - - - - - - - The font styles - - - - - Regular - - - - - Bold - - - - - Italic - - - - - Bold and Italic - - - - - A glyph from a particular font face. - - - - - Gets the glyph metrics. - - - - - Calculates the bounding box. - - The location to calculate from. - The dpi scale the bounds in relation to. - The bounding box - - - - Renders the glyph to the render surface in font units relative to a bottom left origin at (0,0) - - The surface. - The location. - The options to render using. - Too many control points. - - - - Represents the bounds of a for a given . - - - - - Initializes a new instance of the struct. - - The Unicode codepoint for the glyph. - The glyph bounds. - - - - Gets the Unicode codepoint of the glyph. - - - - - Gets the glyph bounds. - - - - - - - - A glyphs layout and location - - - - - Gets the glyph. - - - - - Gets the codepoint represented by this glyph. - - - - - Gets the location. - - - - - Gets the ascender - - - - - Gets the ascender - - - - - Gets the lie gap - - - - - Gets the line height of the glyph. - - - - - Gets the width. - - - - - Gets the height. - - - - - Gets a value indicating whether this glyph is the first glyph on a new line. - - - - - Gets a value indicating whether the glyph represents a whitespace character. - - The . - - - - - - - Represents a glyph metric from a particular font face. - - - - - Gets the font metrics. - - - - - Gets the Unicode codepoint of the glyph. - - - - - Gets the advance width for horizontal layout, expressed in font units. - - - - - Gets the advance height for vertical layout, expressed in font units. - - - - - Gets the left side bearing for horizontal layout, expressed in font units. - - - - - Gets the right side bearing for horizontal layout, expressed in font units. - - - - - Gets the top side bearing for vertical layout, expressed in font units. - - - - - Gets the bottom side bearing for vertical layout, expressed in font units. - - - - - Gets the width, expressed in font units. - - - - - Gets the height, expressed in font units. - - - - - Gets the glyph type. - - - - - Gets the color of this glyph when the is - - - - - - - - - - - Gets the glyph Id. - - - - - Performs a semi-deep clone (FontMetrics are not cloned) for rendering - This allows caching the original in the font metrics. - - The original glyph metrics. - The text run this glyph is a member of. - The codepoint for this glyph. - The new . - - - - Gets the outline for the current glyph. - - The . - - - - Gets the bounds. - - - - - Apply an offset to the glyph. - - The x-offset. - The y-offset. - - - - Applies an advance to the glyph. - - The x-advance. - The y-advance. - - - - Sets a new advance width. - - The x-advance. - - - - Sets a new advance height. - - The y-advance. - - - - Renders the glyph to the render surface in font units relative to a bottom left origin at (0,0) - - The surface. - Size of the point. - The location. - The options used to influence the rendering of this glyph. - Too many control points - - - - Represents a collection of glyph metrics that are mapped to input codepoints. - - - - - Contains a map the index of a map within the collection, non-sequential codepoint offsets, and their glyph ids, point size, and mtrics. - - - - - Initializes a new instance of the class. - - The text options. - - - - - - - - - - - - - - - - - - - - - - - - - - - - Gets the glyph metrics at the given codepoint offset. - - The zero-based index within the input codepoint collection. - The font size in PT units of the font containing this glyph. - Whether the glyph is the result of a decomposition substitution. - - When this method returns, contains the glyph metrics associated with the specified offset, - if the value is found; otherwise, the default value for the type of the metrics parameter. - This parameter is passed uninitialized. - - The metrics. - - - - Updates the collection of glyph ids to the metrics collection to overwrite any glyphs that have been previously - identified as fallbacks. - - The font face with metrics. - The glyph substitution collection. - if the metrics collection does not contain any fallbacks; otherwise . - - - - Adds the collection of glyph ids to the metrics collection. - identified as fallbacks. - - The font face with metrics. - The glyph substitution collection. - if the metrics collection does not contain any fallbacks; otherwise . - - - - Updates the position of the glyph at the specified index. - - The font metrics. - The zero-based index of the element. - - - - Updates the advanced metrics of the glyphs at the given index and id, - adding dx and dy to the current advance. - - The font face with metrics. - The zero-based index of the element. - The id of the glyph to offset. - The delta x-advance. - The delta y-advance. - - - - Returns a value indicating whether the element at the given index should be processed. - - The font face with metrics. - The zero-based index of the elements to position. - if the element should be processed; otherwise, . - - - - The combined set of properties that uniquely identify the glyph that is to be rendered - at a particular size and dpi. - - - - - Gets the name of the Font this glyph belongs to. - - - - - Gets the color details of this glyph. - - - - - Gets the type of this glyph. - - - - - Gets the style of the font this glyph belongs to. - - - - - Gets the index of the glyph within the font tables. - - - - - Gets the codepoint represented by this glyph. - - - - - Gets the rendered point size. - - - - - Gets the dots-per-inch the glyph is to be rendered at. - - - - - Gets the text run this glyph belongs to. - - - - - Compares two objects for equality. - - - The on the left side of the operand. - - - The on the right side of the operand. - - - True if the current left is equal to the parameter; otherwise, false. - - - - - Compares two objects for inequality. - - - The on the left side of the operand. - - - The on the right side of the operand. - - - True if the current left is unequal to the parameter; otherwise, false. - - - - - - - - - - - - - - Represents the shaped bounds of a glyph. - Uses a class over a struct for ease of use. - - - - - Contains supplementary data that allows the shaping of glyphs. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - The data to copy properties from. - Whether to clear features. - - - - Gets or sets the glyph id. - - - - - Gets or sets the leading codepoint. - - - - - Gets or sets the codepoint count represented by this glyph. - - - - - Gets or sets the text direction. - - - - - Gets or sets the text run this glyph belongs to. - - - - - Gets or sets the id of any ligature this glyph is a member of. - - - - - Gets or sets the ligature component index of the glyph. - - - - - Gets or sets the index of any mark attachment. - - - - - Gets or sets the index of any cursive attachment. - - - - - Gets or sets the collection of features. - - - - - Gets or sets the shaping bounds. - - - - - Gets or sets a value indicating whether this glyph is the result of a decomposition substitution - - - - - Represents a collection of glyph indices that are mapped to input codepoints. - - - - - Contains a map the index of a map within the collection, non-sequential codepoint offsets, and their glyph ids. - - - - - Initializes a new instance of the class. - - The text options. - - - - Gets the number of glyphs ids contained in the collection. - This may be more or less than original input codepoint count (due to substitution process). - - - - - - - - - - - Gets or sets the running id of any ligature glyphs contained withing this collection are a member of. - - - - - - - - - - - Gets the shaping data at the specified position. - - The zero-based index of the elements to get. - The zero-based index within the input codepoint collection. - The . - - - - - - - - - - - - - Adds the glyph id and the codepoint it represents to the collection. - - The id of the glyph to add. - The codepoint the glyph represents. - The resolved text direction for the codepoint. - The text run this glyph belongs to. - The zero-based index within the input codepoint collection. - - - - Moves the specified glyph to the specified position. - - The index to move from. - The index to move to. - - - - Removes all elements from the collection. - - - - - Gets the specified glyph ids matching the given codepoint offset. - - The zero-based index within the input codepoint collection. - - When this method returns, contains the shaping data associated with the specified offset, - if the value is found; otherwise, the default value for the type of the data parameter. - This parameter is passed uninitialized. - - - if the contains glyph ids - for the specified offset; otherwise, . - - - - - Performs a 1:1 replacement of a glyph id at the given position. - - The zero-based index of the element to replace. - The replacement glyph id. - - - - Performs a 1:1 replacement of a glyph id at the given position while removing a series of glyph ids at the given positions within the sequence. - - The zero-based index of the element to replace. - The indices at which to remove elements. - The replacement glyph id. - The ligature id. - - - - Performs a 1:1 replacement of a glyph id at the given position while removing a series of glyph ids. - - The zero-based index of the element to replace. - The number of glyphs to remove. - The replacement glyph id. - - - - Replaces a single glyph id with a collection of glyph ids. - - The zero-based index of the element to replace. - The collection of replacement glyph ids. - - - - Represents the various versions of a glyph records. - - - - - This is a fall back glyph due to a missing code point. - - - - - This is a standard glyph to be drawn in the style the user defines. - - - - - This is a single layer of the multi-layer colored glyph (emoji). - - - - - Defines modes to determine how to apply hinting. The use of mathematical instructions - to adjust the display of an outline font so that it lines up with a rasterized grid. - - - - - Do not hint the glyphs. - - - - - Hint the glyphs in a vertical direction only. . - - - - - Hint the glyphs in both directions. - - - - - Horizontal alignment modes. - - - - - Aligns text from the left. - - - - - Aligns text from the right. - - - - - Aligns text from the center. - - - - - A surface that can have a glyph rendered to it as a series of actions, where the engine support colored glyphs (emoji). - - - - - Sets the color to use for the current glyph. - - The color to override the renders brush with. - - - - Provides access to the color details for the current glyph. - - - - - Gets the blue component - - - - - Gets the green component - - - - - Gets the red component - - - - - Gets the alpha component - - - - - Compares two objects for equality. - - - The on the left side of the operand. - - - The on the right side of the operand. - - - True if the current left is equal to the parameter; otherwise, false. - - - - - Compares two objects for inequality. - - - The on the left side of the operand. - - - The on the right side of the operand. - - - True if the current left is unequal to the parameter; otherwise, false. - - - - - - - - Compares the for equality to this color. - - - The other to compare to. - - - True if the current color is equal to the parameter; otherwise, false. - - - - - - - - A readable and writable collection of fonts. - - - - - - Adds a font to the collection. - - The filesystem path to the font file. - The new . - - - - Adds a font to the collection. - - The filesystem path to the font file. - The description of the added font. - The new . - - - - Adds a font to the collection. - - The font stream. - The new . - - - - Adds a font to the collection. - - The font stream. - The description of the added font. - The new . - - - - Adds a true type font collection (.ttc). - - The font collection path. - The new . - - - - Adds a true type font collection (.ttc). - - The font collection path. - The descriptions of the added fonts. - The new . - - - - Adds a true type font collection (.ttc). - - The font stream. - The new . - - - - Adds a true type font collection (.ttc). - - The font stream. - The descriptions of the added fonts. - The new . - - - - Adds a font to the collection. - - The filesystem path to the font file. - The culture of the font to add. - The new . - - - - Adds a font to the collection. - - The filesystem path to the font file. - The culture of the font to add. - The description of the added font. - The new . - - - - Adds a font to the collection. - - The font stream. - The culture of the font to add. - The new . - - - - Adds a font to the collection. - - The font stream. - The culture of the font to add. - The description of the added font. - The new . - - - - Adds a true type font collection (.ttc). - - The font collection path. - The culture of the fonts to add. - The new . - - - - Adds a true type font collection (.ttc). - - The font collection path. - The culture of the fonts to add. - The descriptions of the added fonts. - The new . - - - - Adds a true type font collection (.ttc). - - The font stream. - The culture of the fonts to add. - The new . - - - - Adds a true type font collection (.ttc). - - The font stream. - The culture of the fonts to add. - The descriptions of the added fonts. - The new . - - - - Represents a collection of - - - - - Adds the font metrics and culture to the . - - The font metrics to add. - The culture of the font metrics to add. - The new . - - - - Adds the font metrics to the . - - The font metrics to add. - - - - A surface that can have a glyph rendered to it as a series of actions with the options of providing glyph decoration details. - - - - - Provides a callback to enable custom logic to request decoration details. - a custom TextRun might use alternative triggers to determine what decorations it needs access to. - - The text decorations the render wants render info for. - - - - Provides the positions required for drawing text decorations onto the - - The type of decoration these details correspond to. - The start position from where to draw the decorations from. - The end position from where to draw the decorations to. - The thickness to draw the decoration. - - - - A surface that can have a glyph rendered to it as a series of actions. - - - - - Begins the figure. - - - - - Sets a new start point to draw lines from. - - The point. - - - - Draw a quadratic bezier curve connecting the previous point to . - - The second control point. - The point. - - - - Draw a cubic bezier curve connecting the previous point to . - - The second control point. - The third control point. - The point. - - - - Draw a straight line connecting the previous point to . - - The point. - - - - Ends the figure. - - - - - Ends the glyph. - - - - - Begins the glyph. - - The bounds the glyph will be rendered at and at what size. - The set of parameters that uniquely represents a version of a glyph in at particular font size, font family, font style and DPI. - Returns true if the glyph should be rendered otherwise it returns false. - - - - Called once all glyphs have completed rendering. - - - - - Called before any glyphs have been rendered. - - The bounds the text will be rendered at and at whats size. - - - - A surface that can have a glyph rendered to it as a series of actions. - - - - - Renders the text. - - The target renderer surface. - The text. - The options. - Returns the original - - - - Defines the contract for glyph shaping collections. - - - - - Gets the collection count. - - - - - Gets a value indicating whether the text layout mode is vertical. - - - - - Gets the text options used by this collection. - - - - - Gets the glyph id at the specified index. - - The zero-based index of the elements to get. - The . - - - - Gets the shaping data at the specified position. - - The zero-based index of the elements to get. - The . - - - - Adds the shaping feature to the collection which should be applied to the glyph at a specified index. - - The zero-based index of the element. - The feature to apply. - - - - Enables a previously added shaping feature. - - The zero-based index of the element. - The feature to enable. - - - - Disables a previously added shaping feature. - - The zero-based index of the element. - The feature to disable. - - - - The raw stream containing the uncompressed image data. - - - - - A value indicating whether this instance of the given entity has been disposed. - - if this instance has been disposed; otherwise, . - - If the entity is disposed, it must not be disposed a second - time. The isDisposed field is set the first time the entity - is disposed. If the isDisposed field is true, then the Dispose() - method will not dispose again. This help not to prolong the entity's - life in the Garbage Collector. - - - - - The read crc data. - - - - - The stream responsible for decompressing the input stream. - - - - - Initializes a new instance of the class. - - The stream. - - Thrown if the compression method is incorrect. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Represents a readonly collection of fonts. - - - - - Gets the collection of in this - using the invariant culture. - - - - - Gets the specified font family matching the invariant culture and font family name. - - The font family name. - The first matching the given name. - is - The collection contains no matches. - - - - Gets the specified font family matching the invariant culture and font family name. - - The font family name. - - When this method returns, contains the family associated with the specified name, - if the name is found; otherwise, the default value for the type of the family parameter. - This parameter is passed uninitialized. - - - if the contains a family - with the specified name; otherwise, . - - is - - - - Gets the collection of in this - using the given culture. - - The culture of the families to return. - The . - - - - Gets the specified font family matching the given culture and font family name. - - The font family name. - The culture to use when searching for a match. - The first matching the given name. - is - The collection contains no matches. - - - - Gets the specified font family matching the given culture and font family name. - - The font family name. - The culture to use when searching for a match. - - When this method returns, contains the family associated with the specified name, - if the name is found; otherwise, the default value for the type of the family parameter. - This parameter is passed uninitialized. - - - if the contains a family - with the specified name; otherwise, . - - is - - - - Represents a readonly collection of font metrics. - The interface uses compiler pattern matching to provide enumeration capabilities. - - - - - Gets the specified font metrics matching the given culture and font family name. - - The font family name. - The culture to use when searching for a match. - The font style to use when searching for a match. - - When this method returns, contains the metrics associated with the specified name, - if the name is found; otherwise, the default value for the type of the family parameter. - This parameter is passed uninitialized. - - - if the contains font metrics - with the specified name; otherwise, . - - is - - - - Gets the collection of available font metrics for a given culture and font family name. - - The font family name. - The culture to use when searching for a match. - The . - is - - - - Gets the collection of available font styles for a given culture and font family name. - - The font family name. - The culture to use when searching for a match. - The . - is - - - - - - - Represents a readonly collection of Operating System fonts. - - - - - - Gets the collection of Operating System directories that were searched for font families. - - - - - - Kerning is the contextual adjustment of inter-glyph spacing. - This property controls metric kerning, kerning that utilizes adjustment data contained in the font. - - - - - Specifies that kerning is applied. - - - - - Specifies that kerning is not applied. - - - - - Specifies that kerning is applied at the discretion of the layout engine. - - - - - Defines modes to determine the layout direction of text. - - - - - Text is laid out horizontally from top to bottom. - - - - - Text is laid out horizontally from bottom to top. - - - - - Text is laid out vertically from left to right. - - - - - Text is laid out vertically from right to left. - - - - - An integer type for constants used to specify supported string encodings in various CFString functions. - - - - - An encoding constant that identifies the UTF 8 encoding. - - - - - An encoding constant that identifies kTextEncodingUnicodeDefault + kUnicodeUTF16LEFormat encoding. This constant specifies little-endian byte order. - - - - - Options you can use to determine how CFURL functions parse a file system path name. - - - - - Indicates a POSIX style path name. Components are slash delimited. A leading slash indicates an absolute path; a trailing slash is not significant. - - - - - Returns the number of values currently in an array. - - The array to examine. - The number of values in . - - - - Returns the type identifier for the CFArray opaque type. - - The type identifier for the CFArray opaque type. - CFMutableArray objects have the same type identifier as CFArray objects. - - - - Retrieves a value at a given index. - - The array to examine. - The index of the value to retrieve. If the index is outside the index space of (0 to N-1 inclusive where N is the count of ), the behavior is undefined. - The value at the index in . If the return value is a Core Foundation Object, ownership follows The Get Rule. - - - - Returns the unique identifier of an opaque type to which a Core Foundation object belongs. - - The CFType object to examine. - A value of type CFTypeID that identifies the opaque type of . - - This function returns a value that uniquely identifies the opaque type of any Core Foundation object. - You can compare this value with the known CFTypeID identifier obtained with a “GetTypeID” function specific to a type, for example CFDateGetTypeID. - These values might change from release to release or platform to platform. - - - - - Returns the number (in terms of UTF-16 code pairs) of Unicode characters in a string. - - The string to examine. - The number (in terms of UTF-16 code pairs) of characters stored in . - - - - Copies the character contents of a string to a local C string buffer after converting the characters to a given encoding. - - The string whose contents you wish to access. - - The C string buffer into which to copy the string. On return, the buffer contains the converted characters. If there is an error in conversion, the buffer contains only partial results. - The buffer must be large enough to contain the converted characters and a NUL terminator. For example, if the string is Toby, the buffer must be at least 5 bytes long. - - The length of in bytes. - The string encoding to which the character contents of should be converted. The encoding must specify an 8-bit encoding. - upon success or if the conversion fails or the provided buffer is too small. - This function is useful when you need your own copy of a string’s character data as a C string. You also typically call it as a “backup” when a prior call to the function fails. - - - - Quickly obtains a pointer to a C-string buffer containing the characters of a string in a given encoding. - - The string whose contents you wish to access. - The string encoding to which the character contents of should be converted. The encoding must specify an 8-bit encoding. - A pointer to a C string or NULL if the internal storage of does not allow this to be returned efficiently. - - - This function either returns the requested pointer immediately, with no memory allocations and no copying, in constant time, or returns NULL. If the latter is the result, call an alternative function such as the function to extract the characters. - - - Whether or not this function returns a valid pointer or NULL depends on many factors, all of which depend on how the string was created and its properties. In addition, the function result might change between different releases and on different platforms. So do not count on receiving a non-NULL result from this function under any circumstances. - - - - - - Releases a Core Foundation object. - - A CFType object to release. This value must not be NULL. - - - - Returns the path portion of a given URL. - - The CFURL object whose path you want to obtain. - The operating system path style to be used to create the path. See for a list of possible values. - The URL's path in the format specified by . Ownership follows the create rule. See The Create Rule. - This function returns the URL's path as a file system path for a given path style. - - - - Returns the type identifier for the CFURL opaque type. - - The type identifier for the CFURL opaque type. - - - - Returns an array of font URLs. - - This function returns a retained reference to a CFArray of CFURLRef objects representing the URLs of the available fonts, or NULL on error. The caller is responsible for releasing the array. - - - - An enumerator that enumerates over available macOS system fonts. - The enumerated strings are the absolute paths to the font files. - - - Internally, it calls the native CoreText's method to retrieve - the list of fonts so using this class must be guarded by RuntimeInformation.IsOSPlatform(OSPlatform.OSX). - - - - - - Represents a font face with metrics, which is a set of glyphs with a specific style (regular, italic, bold etc). - - The font source is a stream. - - - - - Initializes a new instance of the class. - - The name table. - The maximum profile table. - The cmap table. - The glyph table. - The os2 table. - The horizontal head table. - The horizontal metrics table. - The vertical head table. - The vertical metrics table. - The head table. - The kerning table. - The table needed to use TrueType or OpenType fonts on PostScript printers. - The glyph substitution table. - The glyph positioning table. - The COLR table - The CPAL table - The font program table. - The control value table. - The control value program table. - The glyph definition table. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Reads a from the specified stream. - - The file path. - a . - - - - Reads a from the specified stream. - - The file path. - Position in the stream to read the font from. - a . - - - - Reads a from the specified stream. - - The stream. - a . - - - - Reads a from the specified stream. - - The file path. - a . - - - - Reads a from the specified stream. - - The stream. - a . - - - - Provides a collection of fonts. - - - - - Gets the default set of locations we probe for System Fonts. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Provides a collection of fonts. - - - - - Gets the collection containing the globally installed system fonts. - - - - - Gets the collection of s installed on current system. - - - - - - - - - - - Create a new instance of the for the named font family with regular styling. - - The font family name. - The size of the font in PT units. - The new . - - - - Create a new instance of the for the named font family. - - The font family name. - The size of the font in PT units. - The font style. - The new . - - - - - - - - - - - - - Create a new instance of the for the named font family with regular styling. - - The font family name. - The font culture. - The size of the font in PT units. - The new . - - - - Create a new instance of the for the named font family. - - The font family name. - The font culture. - The size of the font in PT units. - The font style. - The new . - - - - The maximum length of a context. Taken from HarfBuzz - hb-ot-layout-common.hh - - - - - Gets the sequence lookup records. - The seqLookupRecords array lists the sequence lookup records that specify actions to be taken on glyphs at various positions within the input sequence. - These do not have to be ordered in sequence position order; they are ordered according to the desired result. - All of the sequence lookup records are processed in order, and each applies to the results of the actions indicated by the preceding record. - - - - - In OpenType Layout, index values identify glyphs. For efficiency and ease of representation, a font developer - can group glyph indices to form glyph classes. Class assignments vary in meaning from one lookup subtable - to another. For example, in the GSUB and GPOS tables, classes are used to describe glyph contexts. - GDEF tables also use the idea of glyph classes. - - - - - - Gets the class id for the given glyph id. - Any glyph not included in the range of covered glyph IDs automatically belongs to Class 0. - - The glyph identifier. - The class id. - - - - - - - - - - Loads the class sequence rule set table. - - The big endian binary reader. - Offset from beginning of the ClassSequenceRuleSet table. - A class sequence rule set table. - - - - Each subtable (except an Extension LookupType subtable) in a lookup references a Coverage table (Coverage), - which specifies all the glyphs affected by a substitution or positioning operation described in the subtable. - The GSUB, GPOS, and GDEF tables rely on this notion of coverage. - If a glyph does not appear in a Coverage table, the client can skip that subtable and move - immediately to the next subtable. - - - - - - Features provide information about how to use the glyphs in a font to render a script or language. - For example, an Arabic font might have a feature for substituting initial glyph forms, and a Kanji font - might have a feature for positioning glyphs vertically. All OpenType Layout features define data for - glyph substitution, glyph positioning, or both. - - - - - - - Provides enumeration for the different font features. - - - - - - Access All Alternates. Shortcode: aalt. - This feature makes all variations of a selected character accessible. This serves several purposes: An application may not support the feature by which the desired glyph would normally be accessed; - the user may need a glyph outside the context supported by the normal substitution, or the user may not know what feature produces the desired glyph. - Since many-to-one substitutions are not covered, ligatures would not appear in this table unless they were variant forms of another ligature. - - - - - Above-base Forms. Shortcode: abvf. - Substitutes the above-base form of a vowel. - - - - - Above-base Mark Positioning. Shortcode: abvm. - Positions marks above base glyphs. - - - - - Above-base Substitutions. Shortcode: abvs. - Substitutes a ligature for a base glyph and mark that’s above it. - - - - - Alternative Fractions. Shortccde: afrc. - Replaces figures separated by a slash with an alternative form. - - - - - Akhand. Shortcode: akhn. - Preferentially substitutes a sequence of characters with a ligature. This substitution is done irrespective of any characters that may precede or follow the sequence. - - - - - Below-base Forms. Shortcode: blwf. - Substitutes the below-base form of a consonant in conjuncts. - - - - - Below-base Mark Positioning. Shortcode: blwm. - Positions marks below base glyphs. - - - - - Below-base Substitutions. Shortcode: blws. - Produces ligatures that comprise of base glyph and below-base forms. - - - - - Contextual Alternates. Shortcode: calt. - In specified situations, replaces default glyphs with alternate forms which provide better joining behavior. - Used in script typefaces which are designed to have some or all of their glyphs join. - - - - - Case-Sensitive Forms. Shortcode: case. - Shifts various punctuation marks up to a position that works better with all-capital sequences or sets of lining figures; - also changes oldstyle figures to lining figures. By default, glyphs in a text face are designed to work with lowercase characters. - Some characters should be shifted vertically to fit the higher visual center of all-capital or lining text. - Also, lining figures are the same height (or close to it) as capitals, and fit much better with all-capital text. - - - - - Glyph Composition/Decomposition. Shortcode: ccmp. - To minimize the number of glyph alternates, it is sometimes desirable to decompose the default glyph for a character into two or more glyphs. - Additionally, it may be preferable to compose default glyphs for two or more characters into a single glyph for better glyph processing. - This feature permits such composition/decomposition. The feature should be processed as the first feature processed, and should be processed only when it is called. - - - - - Conjunct Form After Ro. Shortcode: cfar. - Substitutes alternate below-base or post-base forms in Khmer script when occurring after conjoined Ro (“Coeng Ra”). - - - - - Conjunct Forms. Shortcode: cjct. - Produces conjunct forms of consonants in Indic scripts. This is similar to the Akhands feature, but is applied at a different sequential point in the process of shaping an Indic syllable. - - - - - Contextual Ligatures. Shortcode: clig. - Replaces a sequence of glyphs with a single glyph which is preferred for typographic purposes. Unlike other ligature features, 'clig' specifies the context in which the ligature is recommended. - This capability is important in some script designs and for swash ligatures. - - - - - Centered CJK Punctuation. Shortcode: cpct. - Centers specific punctuation marks for those fonts that do not include centered and non-centered forms. - - - - - Capital Spacing. Shortcode: cpsp. - Globally adjusts inter-glyph spacing for all-capital text. Most typefaces contain capitals and lowercase characters, and the capitals are positioned to work with the lowercase. - When capitals are used for words, they need more space between them for legibility and esthetics. - This feature would not apply to monospaced designs. Of course the user may want to override this behavior in order to do more pronounced letterspacing for esthetic reasons. - - - - - Contextual Swash. Shortcode: cswh. - This feature replaces default character glyphs with corresponding swash glyphs in a specified context. Note that there may be more than one swash alternate for a given character. - - - - - Cursive Positioning. Shortcode: curs. - In cursive scripts like Arabic, this feature cursively positions adjacent glyphs. - - - - - Petite Capitals From Capitals. Shortcode: c2pc. - This feature turns capital characters into petite capitals. It is generally used for words which would otherwise be set in all caps, such as acronyms, - but which are desired in petite-cap form to avoid disrupting the flow of text. See the 'pcap' feature description for notes on the relationship of caps, - smallcaps and petite caps. - - - - - Small Capitals From Capitals. Shortcode: c2sc. - This feature turns capital characters into small capitals. It is generally used for words which would otherwise be set in all caps, - such as acronyms, but which are desired in small-cap form to avoid disrupting the flow of text. - - - - - Distances. Shortcode: dist. - Provides a means to control distance between glyphs. - - - - - Discretionary Ligatures. Shortcode: dlig. - Replaces a sequence of glyphs with a single glyph which is preferred for typographic purposes. - This feature covers those ligatures which may be used for special effect, at the user’s preference. - - - - - Denominators. Shortcode: dnom. - Replaces selected figures which follow a slash with denominator figures. - - - - - Dotless Forms. Shortcode: dtls. - This feature provides dotless forms for Math Alphanumeric characters, such as U+1D422 MATHEMATICAL BOLD SMALL I, U+1D423 MATHEMATICAL BOLD SMALL J, - U+1D456 U+MATHEMATICAL ITALIC SMALL I, U+1D457 MATHEMATICAL ITALIC SMALL J, and so on. The dotless forms are to be used as base forms for placing mathematical accents over them. - - - - - Expert Forms. Shortcode: expt. - Like the JIS78 Forms feature, this feature replaces standard forms in Japanese fonts with corresponding forms preferred by typographers. - Although most of the JIS78 substitutions are included, the expert substitution goes on to handle many more characters. - - - - - Final Glyph on Line Alternates. Shortcode: falt. - Replaces line final glyphs with alternate forms specifically designed for this purpose (they would have less or more advance width as need may be), to help justification of text. - - - - - Terminal Form #2. Shortcode: fin2. - Replaces the Alaph glyph at the end of Syriac words with its appropriate form, when the preceding base character cannot be joined to, - and that preceding base character is not a Dalath, Rish, or dotless Dalath-Rish. - - - - - Terminal Form #3. Shortcode: fin3. - Replaces Alaph glyphs at the end of Syriac words when the preceding base character is a Dalath, Rish, or dotless Dalath-Rish. - - - - - Terminal Forms. Shortcode: fina. - Replaces glyphs for characters that have applicable joining properties with an alternate form when occurring in a final context. - - - - - Flattened ascent forms. Shortcode: flac. - This feature provides flattened forms of accents to be used over high-rise bases such as capitals. - This feature should only change the shape of the accent and should not move it in the vertical or horizontal direction. - Moving of the accents is done by the math handling client. Accents are flattened by the Math engine if their base is higher than MATH.MathConstants.FlattenedAccentBaseHeight. - - - - - Fractions. Shortcode: frac. - Replaces figures separated by a slash with “common” (diagonal) fractions. - - - - - Full Widths. Shortcode: fwid. - Replaces glyphs set on other widths with glyphs set on full (usually em) widths. In a CJKV font, this may include “lower ASCII” Latin characters and various symbols. - In a European font, this feature replaces proportionally-spaced glyphs with monospaced glyphs, which are generally set on widths of 0.6 em. - - - - - Half Forms. Shortcode: half. - Produces the half forms of consonants in Indic scripts. - - - - - Halant Forms. Shortcode: haln. - Produces the halant forms of consonants in Indic scripts. - - - - - Alternate Half Widths. Shortcode: halt. - Respaces glyphs designed to be set on full-em widths, fitting them onto half-em widths. This differs from 'hwid' in that it does not substitute new glyphs. - - - - - Historical Forms. Shortcode: hist. - Some letterforms were in common use in the past, but appear anachronistic today. The best-known example is the long form of s; others would include the old Fraktur k. - Some fonts include the historical forms as alternates, so they can be used for a “period” effect. This feature replaces the default (current) forms with the historical alternates. - While some ligatures are also used for historical effect, this feature deals only with single characters. - - - - - Horizontal Kana Alternates. Shortcode: hkna. - Replaces standard kana with forms that have been specially designed for only horizontal writing. This is a typographic optimization for improved fit and more even color. Also see 'vkna'. - - - - - Historical Ligatures. Shortcode: hlig. - Some ligatures were in common use in the past, but appear anachronistic today. Some fonts include the historical forms as alternates, so they can be used for a “period” effect. - This feature replaces the default (current) forms with the historical alternates. - - - - - Hangul. Shortcode: hngl. - Replaces hanja (Chinese-style) Korean characters with the corresponding hangul (syllabic) characters. This effectively reverses the standard input method, - in which hangul are entered and replaced by hanja. Many of these substitutions are one-to-one (GSUB lookup type 1), - but hanja substitution often requires the user to choose from several possible hangul characters (GSUB lookup type 3). - - - - - Hojo Kanji Forms (JIS X 0212-1990 Kanji Forms). Shortcode: hojo. - The JIS X 0212-1990 (aka, “Hojo Kanji”) and JIS X 0213:2004 character sets overlap significantly. - In some cases their prototypical glyphs differ. When building fonts that support both JIS X 0212-1990 and JIS X 0213:2004 (such as those supporting the Adobe-Japan 1-6 character collection), - it is recommended that JIS X 0213:2004 forms be preferred as the encoded form. The 'hojo' feature is used to access the JIS X 0212-1990 glyphs for the cases when the JIS X 0213:2004 form is encoded. - - - - - Half Widths. Shortcode: hwid. - Replaces glyphs on proportional widths, or fixed widths other than half an em, with glyphs on half-em (en) widths. Many CJKV fonts have glyphs which are set on multiple widths; this feature selects the half-em version. - There are various contexts in which this is the preferred behavior, including compatibility with older desktop documents. - - - - - Initial Forms. Shortcode: init. - Replaces glyphs for characters that have applicable joining properties with an alternate form when occurring in an initial context. - - - - - Isolated Forms. Shortcode: isol. - Replaces glyphs for characters that have applicable joining properties with an alternate form when occurring in a isolate (non-joining) context. - - - - - Italics. Shortcode: ital. - Some fonts (such as Adobe’s Pro Japanese fonts) will have both Roman and Italic forms of some characters in a single font. - This feature replaces the Roman glyphs with the corresponding Italic glyphs. - - - - - Justification Alternates. Shortcode: jalt. - Improves justification of text by replacing glyphs with alternate forms specifically designed for this purpose (they would have less or more advance width as need may be). - - - - - JIS78 Forms. Shortcode: jp78. - This feature replaces default (JIS90) Japanese glyphs with the corresponding forms from the JIS C 6226-1978 (JIS78) specification. - - - - - JIS83 Forms. Shortcode: jp83. - This feature replaces default (JIS90) Japanese glyphs with the corresponding forms from the JIS X 0208-1983 (JIS83) specification. - - - - - JIS90 Forms. Shortcode: jp90. - This feature replaces Japanese glyphs from the JIS78 or JIS83 specifications with the corresponding forms from the JIS X 0208-1990 (JIS90) specification. - - - - - JIS2004 Forms. Shortcode: jp04. - The National Language Council (NLC) of Japan has defined new glyph shapes for a number of JIS characters, which were incorporated into JIS X 0213:2004 as new prototypical forms. - The 'jp04' feature is a subset of the 'nlck' feature, and is used to access these prototypical glyphs in a manner that maintains the integrity of JIS X 0213:2004. - - - - - Kerning. Shortcode: kern. - Adjusts amount of space between glyphs, generally to provide optically consistent spacing between glyphs. - Although a well-designed typeface has consistent inter-glyph spacing overall, some glyph combinations require adjustment for improved legibility. - Besides standard adjustment in the horizontal direction, this feature can supply size-dependent kerning data via device tables, “cross-stream” kerning in the Y text direction, - and adjustment of glyph placement independent of the advance adjustment. Note that this feature may apply to runs of more than two glyphs, and would not be used in monospaced fonts. - Also note that this feature does not apply to text set vertically. - - - - - Left Bounds. Shortcode: lfbd. - Aligns glyphs by their apparent left extents at the left ends of horizontal lines of text, replacing the default behavior of aligning glyphs by their origins. - This feature is called by the Optical Bounds ('opbd') feature. - - - - - Standard Ligatures. Shortcode: liga. - Replaces a sequence of glyphs with a single glyph which is preferred for typographic purposes. This feature covers the ligatures which the designer/manufacturer judges should be used in normal conditions. - - - - - Leading Jamo Forms. Shortcode: ljmo. - Substitutes the leading jamo form of a cluster. - - - - - Lining Figures. Shortcode: lnum. - This feature changes selected non-lining figures to lining figures. - - - - - Localized Forms. Shortcode: locl. - Many scripts used to write multiple languages over wide geographical areas have developed localized variant forms of specific letters, - which are used by individual literary communities. For example, a number of letters in the Bulgarian and Serbian alphabets have forms distinct from their Russian counterparts and from each other. - In some cases the localized form differs only subtly from the script “norm”, in others the forms are radically distinct. This feature enables localized forms of glyphs to be substituted for default forms. - - - - - Left-to-right glyph alternates. Shortcode: ltra. - This feature applies glyphic variants (other than mirrored forms) appropriate for left-to-right text (for mirrored forms, see 'ltrm'). - - - - - Left-to-right mirrored forms. Shortcode: ltrm. - This feature applies mirrored forms appropriate for left-to-right text. (For left-to-right glyph alternates, see 'ltra'). - - - - - Mark Positioning. Shortcode: mark. - Positions mark glyphs with respect to base glyphs. - - - - - Medial Forms #2. Shortcode: med2. - Replaces Alaph glyphs in the middle of Syriac words when the preceding base character can be joined to. - - - - - Medial Forms. Shortcode: medi - Replaces glyphs for characters that have applicable joining properties with an alternate form when occurring in a medial context. - This applies to characters that have the Unicode Joining_Type property value Dual_Joining. - - - - - Mathematical Greek. Shortcode: mgrk. - Replaces standard typographic forms of Greek glyphs with corresponding forms commonly used in mathematical notation (which are a subset of the Greek alphabet). - - - - - Mark to Mark Positioning. Shortcode: mkmk. - Positions marks with respect to other marks. Required in various non-Latin scripts like Arabic. - - - - - Shortcode: mset. - Positions Arabic combining marks in fonts for Windows 95 using glyph substitution. - - - - - Alternate Annotation Forms. Shortcode: nalt. - Replaces default glyphs with various notational forms (e.g. glyphs placed in open or solid circles, squares, parentheses, diamonds or rounded boxes). - In some cases an annotation form may already be present, but the user may want a different one. - - - - - NLC Kanji Forms. Shortcode: nlck. - The National Language Council (NLC) of Japan has defined new glyph shapes for a number of JIS characters in 2000. The 'nlck' feature is used to access those glyphs. - - - - - Nukta Forms. Shortcode: nukt. - Produces Nukta forms in Indic scripts. - - - - - Numerators. Shortcode: numr. - Replaces selected figures which precede a slash with numerator figures, and replaces the typographic slash with the fraction slash. - - - - - Oldstyle Figures. Shortcode: onum. - This feature changes selected figures from the default or lining style to oldstyle form. - - - - - Optical Bounds. Shortcode: opbd. - Aligns glyphs by their apparent left or right extents in horizontal setting, or apparent top or bottom extents in vertical setting, - replacing the default behavior of aligning glyphs by their origins. Another name for this behavior would be visual justification. - The optical edge of a given glyph is only indirectly related to its advance width or bounding box; this feature provides a means for getting true visual alignment. - - - - - Ordinals. Shortcode: ordn. - Replaces default alphabetic glyphs with the corresponding ordinal forms for use after figures. One exception to the follows-a-figure rule is the numero character (U+2116), - which is actually a ligature substitution, but is best accessed through this feature. - - - - - Ornaments. Shortcode: ornm. - This is a dual-function feature, which uses two input methods to give the user access to ornament glyphs (e.g. fleurons, dingbats and border elements) in the font. - One method replaces the bullet character with a selection from the full set of available ornaments; - the other replaces specific “lower ASCII” characters with ornaments assigned to them. The first approach supports the general or browsing user; - the second supports the power user. - - - - - Proportional Alternate Widths. Shortcode: palt. - Respaces glyphs designed to be set on full-em widths, fitting them onto individual (more or less proportional) horizontal widths. - This differs from 'pwid' in that it does not substitute new glyphs (GPOS, not GSUB feature). The user may prefer the monospaced form, - or may simply want to ensure that the glyph is well-fit and not rotated in vertical setting (Latin forms designed for proportional spacing would be rotated). - - - - - Petite Capitals. Shortcode: pcap. - Some fonts contain an additional size of capital letters, shorter than the regular smallcaps and whimsically referred to as petite caps. - Such forms are most likely to be found in designs with a small lowercase x-height, where they better harmonise with lowercase text than - the taller smallcaps (for examples of petite caps, see the Emigre type families Mrs Eaves and Filosofia). This feature turns lowercase characters into petite capitals. - Forms related to petite capitals, such as specially designed figures, may be included. - - - - - Proportional Kana. Shortcode: pkna. - Replaces glyphs, kana and kana-related, set on uniform widths (half or full-width) with proportional glyphs. - - - - - Proportional Figures. Shortcode: pnum. - Replaces figure glyphs set on uniform (tabular) widths with corresponding glyphs set on glyph-specific (proportional) widths. - Tabular widths will generally be the default, but this cannot be safely assumed. Of course this feature would not be present in monospaced designs. - - - - - Pre-base Forms. Shortcode: pref. - Substitutes the pre-base form of a consonant. - - - - - Pre-base Substitutions. Shortcode: pres. - Produces the pre-base forms of conjuncts in Indic scripts. It can also be used to substitute the appropriate glyph variant for pre-base vowel signs. - - - - - Post-base Forms. Shortcode: pstf. - Substitutes the post-base form of a consonant. - - - - - Post-base Substitutions. Shortcode: psts. - Substitutes a sequence of a base glyph and post-base glyph, with its ligaturised form. - - - - - Proportional Widths. Shortcode: pwid. - Replaces glyphs set on uniform widths (typically full or half-em) with proportionally spaced glyphs. - The proportional variants are often used for the Latin characters in CJKV fonts, but may also be used for Kana in Japanese fonts. - - - - - Quarter Widths. Shortcode: qwid. - Replaces glyphs on other widths with glyphs set on widths of one quarter of an em (half an en). The characters involved are normally figures and some forms of punctuation. - - - - - Randomize. Shortcode: rand. - In order to emulate the irregularity and variety of handwritten text, this feature allows multiple alternate forms to be used. - - - - - Required Contextual Alternates. Shortcode: rclt. - In specified situations, replaces default glyphs with alternate forms which provide for better joining behavior or other glyph relationships. - Especially important in script typefaces which are designed to have some or all of their glyphs join, but applicable also to e.g. variants to improve spacing. - This feature is similar to 'calt', but with the difference that it should not be possible to turn off 'rclt' substitutions: they are considered essential to correct layout of the font. - - - - - Required Ligatures. Shortcode: rlig. - Replaces a sequence of glyphs with a single glyph which is preferred for typographic purposes. This feature covers those ligatures, which the script determines as required to be used in normal conditions. - This feature is important for some scripts to insure correct glyph formation. - - - - - Rakar Forms. Shortcode: rkrf. - Produces conjoined forms for consonants with rakar in Devanagari and Gujarati scripts. - - - - - Reph Form. Shortcode: rphf. - Substitutes the Reph form for a consonant and halant sequence. - - - - - Right Bounds. Shortcode: rtbd. - Aligns glyphs by their apparent right extents at the right ends of horizontal lines of text, replacing the default behavior of aligning glyphs by their origins. - This feature is called by the Optical Bounds ('opbd') feature. - - - - - Right-to-left alternates. Shortcode: rtla. - This feature applies glyphic variants (other than mirrored forms) appropriate for right-to-left text. (For mirrored forms, see 'rtlm'.) - - - - - Right-to-left mirrored forms. Shortcode: rtlm. - This feature applies mirrored forms appropriate for right-to-left text other than for those characters that would be covered by the character-level mirroring step performed by an OpenType layout engine. - (For right-to-left glyph alternates, see 'rtla'.) - - - - - Ruby Notation Forms. Shortcode: ruby. - Japanese typesetting often uses smaller kana glyphs, generally in superscripted form, to clarify the meaning of kanji which may be unfamiliar to the reader. - These are called “ruby”, from the old typesetting term for four-point-sized type. This feature identifies glyphs in the font which have been designed for this use, - substituting them for the default designs. - - - - - Required Variation Alternates. Shortcode: rvrn. - his feature is used in fonts that support OpenType Font Variations in order to select alternate glyphs for particular variation instances. - - - - - Stylistic Alternates. Shortcode: salt. - Many fonts contain alternate glyph designs for a purely esthetic effect; these don’t always fit into a clear category like swash or historical. - As in the case of swash glyphs, there may be more than one alternate form. This feature replaces the default forms with the stylistic alternates. - - - - - Scientific Inferiors. Shortcode: sinf. - Replaces lining or oldstyle figures with inferior figures (smaller glyphs which sit lower than the standard baseline, primarily for chemical or mathematical notation). - May also replace lowercase characters with alphabetic inferiors. - - - - - Optical size. Shortcode: size. - This feature stores two kinds of information about the optical size of the font: design size - (the point size for which the font is optimized) and size range (the range of point sizes which the font can serve well), - as well as other information which helps applications use the size range. The design size is useful for determining proper tracking behavior. - The size range is useful in families which have fonts covering several ranges. Additional values serve to identify the set of fonts which share related size ranges, - and to identify their shared name. Note that sizes refer to nominal final output size, and are independent of viewing magnification or resolution. - - - - - Small Capitals. Shortcode: smcp. - This feature turns lowercase characters into small capitals. This corresponds to the common SC font layout. It is generally used for display lines set in Large and small caps, such as titles. - Forms related to small capitals, such as oldstyle figures, may be included. - - - - - Simplified Forms. Shortcode: smpl. - Replaces “traditional” Chinese or Japanese forms with the corresponding “simplified” forms. - - - - - Math script style alternates. Shortcode: ssty. - This feature provides glyph variants adjusted to be more suitable for use in subscripts and superscripts. - - - - - Stretching Glyph Decomposition. Shortcode: stch. - Unicode characters, such as the Syriac Abbreviation Mark (U+070F), that enclose other characters need to be able - to stretch in order to dynamically adapt to the width of the enclosed text. This feature defines a decomposition set - consisting of an odd number of glyphs which describe the stretching glyph. The odd numbered glyphs in the decomposition are - fixed reference points which are distributed evenly from the start to the end of the enclosed text. The even numbered glyphs may - be repeated as necessary to fill the space between the fixed glyphs. The first and last glyphs may either be simple glyphs with width at the baseline, - or mark glyphs. All other decomposition glyphs should have width, but must be defined as mark glyphs. - - - - - Subscript. Shortcode: subs. - The 'subs' feature may replace a default glyph with a subscript glyph, or it may combine a glyph substitution with positioning adjustments for proper placement. - - - - - Superscript. Shortcode: sups. - Replaces lining or oldstyle figures with superior figures (primarily for footnote indication), and replaces lowercase letters with superior letters (primarily for abbreviated French titles). - - - - - Swash. Shortcode: swsh. - This feature replaces default character glyphs with corresponding swash glyphs. Note that there may be more than one swash alternate for a given character. - - - - - Titling. Shortcode: titl. - This feature replaces the default glyphs with corresponding forms designed specifically for titling. - These may be all-capital and/or larger on the body, and adjusted for viewing at larger sizes. - - - - - Trailing Jamo Forms. Shortcode: tjmo. - Substitutes the trailing jamo form of a cluster. - - - - - Traditional Name Forms. Shortcode: tnam. - Replaces “simplified” Japanese kanji forms with the corresponding “traditional” forms. This is equivalent to the Traditional Forms feature, - but explicitly limited to the traditional forms considered proper for use in personal names (as many as 205 glyphs in some fonts). - - - - - Tabular Figures. Shortcode: tnum. - Replaces figure glyphs set on proportional widths with corresponding glyphs set on uniform (tabular) widths. - Tabular widths will generally be the default, but this cannot be safely assumed. Of course this feature would not be present in monospaced designs. - - - - - Traditional Forms. Shortcode: trad. - Replaces 'simplified' Chinese hanzi or Japanese kanji forms with the corresponding 'traditional' forms. - - - - - Third Widths. Shortcode: twid. - Replaces glyphs on other widths with glyphs set on widths of one third of an em. The characters involved are normally figures and some forms of punctuation. - - - - - Unicase. Shortcode: unic. - This feature maps upper- and lowercase letters to a mixed set of lowercase and small capital forms, resulting in a single case alphabet - (for an example of unicase, see the Emigre type family Filosofia). The letters substituted may vary from font to font, as appropriate to the design. - If aligning to the x-height, smallcap glyphs may be substituted, or specially designed unicase forms might be used. Substitutions might also include specially designed figures. - - - - - Alternate Vertical Metrics. Shortcode: valt. - Repositions glyphs to visually center them within full-height metrics, for use in vertical setting. Typically applies to full-width Latin glyphs, - which are aligned on a common horizontal baseline and not rotated when set vertically in CJKV fonts. - - - - - Vattu Variants. Shortcode: vatu. - In an Indic consonant conjunct, substitutes a ligature glyph for a base consonant and a following vattu (below-base) form of a conjoining consonant, or for a half form of a consonant and a following vattu form. - - - - - Vertical Alternates. Shortcode: vert. - Transforms default glyphs into glyphs that are appropriate for upright presentation in vertical writing mode.While the glyphs for most - characters in East Asian writing systems remain upright when set in vertical writing mode, some must be transformed — - usually by rotation, shifting, or different component ordering — for vertical writing mode. - - - - - Alternate Vertical Half Metrics. Shortcode: vhal. - Respaces glyphs designed to be set on full-em heights, fitting them onto half-em heights. - - - - - Vowel Jamo Forms. Shortcode: vjmo. - Substitutes the vowel jamo form of a cluster. - - - - - Vertical Kana Alternates. Shortcode: vkna. - Replaces standard kana with forms that have been specially designed for only vertical writing. This is a typographic optimization for improved fit and more even color. Also see 'hkna'. - - - - - Vertical Kerning. Shortcode: vkrn - Adjusts amount of space between glyphs, generally to provide optically consistent spacing between glyphs. - Although a well-designed typeface has consistent inter-glyph spacing overall, some glyph combinations require adjustment for improved legibility. - Besides standard adjustment in the vertical direction, this feature can supply size-dependent kerning data via device tables, - “cross-stream” kerning in the X text direction, and adjustment of glyph placement independent of the advance adjustment. - Note that this feature may apply to runs of more than two glyphs, and would not be used in monospaced fonts. Also note that this feature applies only to text set vertically. - - - - - Proportional Alternate Vertical Metrics. Shortcode: vpal. - Respaces glyphs designed to be set on full-em heights, fitting them onto individual (more or less proportional) vertical heights. This differs from 'valt' in that it does not substitute new glyphs (GPOS, not GSUB feature). - The user may prefer the monospaced form, or may simply want to ensure that the glyph is well-fit. - - - - - Vertical Alternates and Rotation. Shortcode: vrt2. - Replaces some fixed-width (half-, third- or quarter-width) or proportional-width glyphs (mostly Latin or katakana) with forms suitable for vertical writing (that is, rotated 90 degrees clockwise). - Note that these are a superset of the glyphs covered in the 'vert' table. - - - - - Vertical Alternates for Rotation. Shortcode: vrtr. - Transforms default glyphs into glyphs that are appropriate for sideways presentation in vertical writing mode. - While the glyphs for most characters in East Asian writing systems remain upright when set in vertical writing mode, glyphs for other characters — - such as those of other scripts or for particular Western-style punctuation — are expected to be presented sideways in vertical writing. - - - - - Slashed Zero. Shortcode: zero. - Some fonts contain both a default form of zero, and an alternative form which uses a diagonal slash through the counter. Especially in condensed designs, it can be difficult to distinguish between 0 and O (zero and capital O) in any situation where capitals and lining figures may be arbitrarily mixed. - This feature allows the user to change from the default 0 to a slashed form. - - - - - The GSUB and GPOS tables use the Glyph Class Definition table (GlyphClassDef) to identify which glyph classes to adjust with lookups. - - - - - - Base glyph (single character, spacing glyph). - - - - - Ligature glyph (multiple character, spacing glyph). - - - - - Mark glyph (non-spacing combining glyph). - - - - - Component glyph (part of single character, spacing glyph). - - - - - The GDEF table contains three kinds of information in subtables: - 1. glyph class definitions that classify different types of glyphs in a font; - 2. attachment point lists that identify glyph positioning attachments for each glyph; - and 3. ligature caret lists that provide information for caret positioning and text selection involving ligatures. - - - - - - Initializes a new instance of the class. - - The horizontal value, in design units. - The vertical value, in design units. - - - - Gets the horizontal value, in design units. - - - - - Gets the vertical value, in design units. - - - - - Loads the anchor table. - - The big endian binary reader. - The offset to the beginning of the anchor table. - The anchor table. - - - - Represents the anchor coordinates for a given table. - - - - - Gets the horizontal value, in design units. - - - - - Gets the vertical value, in design units. - - - - - Initializes a new instance of the class. - - The big endian binary reader. - The offset to the beginning of the base array table. - The class count. - - - - Gets the base records. - - - - - Initializes a new instance of the struct. - - The big endian binary reader. - The class count. - Offset to the from beginning of BaseArray table. - - - - Gets the base anchor tables. - - - - - Class2Record used in Pair Adjustment Positioning Format 2. - A Class2Record consists of two ValueRecords, one for the first glyph in a class pair (valueRecord1) and one for the second glyph (valueRecord2). - Note that both fields of a Class2Record are optional: If the PairPos subtable has a value of zero (0) for valueFormat1 or valueFormat2, - then the corresponding record (valueRecord1 or valueRecord2) will be empty — that is, not present. - - - - - Initializes a new instance of the struct. - - The big endian binary reader. - The value format for value record 1. - The value format for value record 2. - - - - Gets the positioning for the first glyph. - - - - - Gets the positioning for second glyph. - - - - - In a ComponentRecord, the zero-based ligatureAnchorOffsets array lists offsets to Anchor tables by mark class. - If a component does not define an attachment point for a particular class of marks, then the offset to the corresponding Anchor table will be NULL. - Example 8 at the end of this chapter shows a MarkLigPosFormat1 subtable used to attach mark accents to a ligature glyph in the Arabic script. - - - - - Initializes a new instance of the class. - - The big endian binary reader. - Number of defined mark classes. - Offset from beginning of LigatureAttach table. - - - - Initializes a new instance of the class. - - The big endian binary reader. - The offset to exitAnchor table, from beginning of CursivePos subtable. - Offsets to entry and exit Anchor table, from beginning of CursivePos subtable. - - - - Gets the entry anchor table. - - - - - Gets the exit anchor table. - - - - - EntryExitRecord sued in Cursive Attachment Positioning Format1. - Each EntryExitRecord consists of two offsets: one to an Anchor table that identifies the entry point on the glyph (entryAnchorOffset), - and an offset to an Anchor table that identifies the exit point on the glyph (exitAnchorOffset). - - - - - Initializes a new instance of the struct. - - The big endian binary reader. - The offset to exitAnchor table, from beginning of CursivePos subtable. - - - - Gets the offset to entryAnchor table, from beginning of CursivePos subtable. - - - - - Gets the offset to exitAnchor table, from beginning of CursivePos subtable. - - - - - The LigatureArray table contains a count (ligatureCount) and an array of offsets (ligatureAttachOffsets) to LigatureAttach tables. - The ligatureAttachOffsets array lists the offsets to LigatureAttach tables, one for each ligature glyph listed in the ligatureCoverage table, - in the same order as the ligatureCoverage index. - - - - - Initializes a new instance of the class. - - The big endian binary reader. - The offset to the start of the ligature array table. - Number of defined mark classes. - - - - Each LigatureAttach table consists of an array (componentRecords) and count (componentCount) of the component glyphs in a ligature. - The array stores the ComponentRecords in the same order as the components in the ligature. - The order of the records also corresponds to the writing direction — that is, the logical direction — of the text. - For text written left to right, the first component is on the left; for text written right to left, the first component is on the right. - - - - - Initializes a new instance of the class. - - The big endian binary reader. - Number of defined mark classes. - Offset from beginning of LigatureAttach table. - - - - The headers of the GSUB and GPOS tables contain offsets to Lookup List tables (LookupList) for - glyph substitution (GSUB table) and glyph positioning (GPOS table). The LookupList table contains - an array of offsets to Lookup tables (lookupOffsets). - - - - - - A Lookup table (Lookup) defines the specific conditions, type, and results of a substitution - or positioning action that is used to implement a feature. For example, a substitution - operation requires a list of target glyph indices to be replaced, a list of replacement glyph - indices, and a description of the type of substitution action. - - - - - - A single adjustment positioning subtable (SinglePos) is used to adjust the placement or advance of a single glyph, - such as a subscript or superscript. In addition, a SinglePos subtable is commonly used to implement lookup data for contextual positioning. - A SinglePos subtable will have one of two formats: one that applies the same adjustment to a series of glyphs(Format 1), - and one that applies a different adjustment for each unique glyph(Format 2). - - - - - - A pair adjustment positioning subtable (PairPos) is used to adjust the placement or advances of two glyphs in relation to one another — - for instance, to specify kerning data for pairs of glyphs. Compared to a typical kerning table, however, - a PairPos subtable offers more flexibility and precise control over glyph positioning. - The PairPos subtable can adjust each glyph in a pair independently in both the X and Y directions, - and it can explicitly describe the particular type of adjustment applied to each glyph. - PairPos subtables can be either of two formats: one that identifies glyphs individually by index(Format 1), and one that identifies glyphs by class (Format 2). - - - - - - Cursive Attachment Positioning Subtable. - Some cursive fonts are designed so that adjacent glyphs join when rendered with their default positioning. - However, if positioning adjustments are needed to join the glyphs, a cursive attachment positioning (CursivePos) subtable can describe - how to connect the glyphs by aligning two anchor points: the designated exit point of a glyph, and the designated entry point of the following glyph. - - - - - - Mark-to-Base Attachment Positioning Subtable. The MarkToBase attachment (MarkBasePos) subtable is used to position combining mark glyphs with respect to base glyphs. - For example, the Arabic, Hebrew, and Thai scripts combine vowels, diacritical marks, and tone marks with base glyphs. - - - - - - Mark-to-Ligature Attachment Positioning Subtable. - The MarkToLigature attachment (MarkLigPos) subtable is used to position combining mark glyphs with respect to ligature base glyphs. - With MarkToBase attachment, described previously, each base glyph has an attachment point defined for each class of marks. - MarkToLigature attachment is similar, except that each ligature glyph is defined to have multiple components (in a virtual sense — not actual glyphs), - and each component has a separate set of attachment points defined for the different mark classes. - - - - - - Lookup Type 6: Mark-to-Mark Attachment Positioning Subtable. - The MarkToMark attachment (MarkMarkPos) subtable is identical in form to the MarkToBase attachment subtable, although its function is different. - MarkToMark attachment defines the position of one mark relative to another mark as when, for example, - positioning tone marks with respect to vowel diacritical marks in Vietnamese. - - - - - - Lookup Type 7: Contextual Positioning Subtables. - A Contextual Positioning subtable describes glyph positioning in context so a text-processing client can adjust the position - of one or more glyphs within a certain pattern of glyphs. - - - - - - LookupType 8: Chained Contexts Positioning Subtable. - A Chained Contexts Positioning subtable describes glyph positioning in context with an ability to look back and/or look ahead in the sequence of glyphs. - The design of the Chained Contexts Positioning subtable is parallel to that of the Contextual Positioning subtable, including the availability of three formats. - Each format can describe one or more chained backtrack, input, and lookahead sequence combinations, and one or more positioning adjustments for glyphs in each input sequence. - - - - - - This lookup provides a mechanism whereby any other lookup type’s subtables are stored at a 32-bit offset location in the GPOS table. - This is needed if the total size of the subtables exceeds the 16-bit limits of the various other offsets in the GPOS table. - In this specification, the subtable stored at the 32-bit offset location is termed the “extension” subtable. - - - - - - Initializes a new instance of the class. - - The big endian binary reader. - The number of mark classes. - The offset to the start of the mark array table. - - - - A Mark2Record declares one Anchor table for each mark class (including Class 0) identified in the MarkRecords of the MarkArray. - Each Anchor table specifies one mark2 attachment point used to attach all the mark1 glyphs in a particular class to the mark2 glyph. - - - - - Initializes a new instance of the class. - - The big endian binary reader. - The Number of Mark2 records. - Offset to the beginning of MarkArray table. - - - - Gets the mark anchor table. - - - - - The MarkArray table defines the class and the anchor point for a mark glyph. - Three GPOS subtable types — MarkToBase attachment, MarkToLigature attachment, - and MarkToMark attachment — use the MarkArray table to specify data for attaching marks. - The MarkArray table contains a count of the number of MarkRecords(markCount) and an array of those records(markRecords). - Each mark record defines the class of the mark and an offset to the Anchor table that contains data for the mark. - - - - - - Initializes a new instance of the class. - - The big endian binary reader. - The offset to the start of the mark array table. - - - - Gets the mark records. - - - - - Defines a mark record used in a mark array table: - - - - - - Initializes a new instance of the struct. - - The big endian binary reader. - Offset to the beginning of MarkArray table. - - - - Gets the class defined for the associated mark. - - - - - Gets the mark anchor table. - - - - - PairValueRecords are used in pair adjustment positioning subtables to adjust the placement or advances of two glyphs in relation to one another. - - - - - - Initializes a new instance of the struct. - - The big endian binary reader. - The types of data in valueRecord1 — for the first glyph in the pair (may be zero). - The types of data in valueRecord2 — for the first glyph in the pair (may be zero). - - - - Gets the second glyph ID. - - - - - Gets the Positioning data for the first glyph in the pair. - - - - - Gets the Positioning data for the second glyph in the pair. - - - - - A ValueFormat flags field defines the types of positioning adjustment data that ValueRecords specify. - - - - - - GPOS subtables use ValueRecords to describe all the variables and values used to adjust the position - of a glyph or set of glyphs. A ValueRecord may define any combination of X and Y values (in design units) - to add to (positive values) or subtract from (negative values) the placement and advance values provided in the font. - - - - - - Initializes a new instance of the struct. - - The big endian binary reader. - Defines the types of data in the ValueRecord. - - - - The Glyph Positioning table (GPOS) provides precise control over glyph placement for - sophisticated text layout and rendering in each script and language system that a font supports. - - - - - - The headers of the GSUB and GPOS tables contain offsets to Lookup List tables (LookupList) for - glyph substitution (GSUB table) and glyph positioning (GPOS table). The LookupList table contains - an array of offsets to Lookup tables (lookupOffsets). - - - - - - A Lookup table (Lookup) defines the specific conditions, type, and results of a substitution - or positioning action that is used to implement a feature. For example, a substitution - operation requires a list of target glyph indices to be replaced, a list of replacement glyph - indices, and a description of the type of substitution action. - - - - - - Single substitution (SingleSubst) subtables tell a client to replace a single glyph with another glyph. - The subtables can be either of two formats. Both formats require two distinct sets of glyph indices: - one that defines input glyphs (specified in the Coverage table), and one that defines the output glyphs. - Format 1 requires less space than Format 2, but it is less flexible. - - - - - - A Multiple Substitution (MultipleSubst) subtable replaces a single glyph with more than one glyph, - as when multiple glyphs replace a single ligature. The subtable has a single format: MultipleSubstFormat1. - - - - - - An Alternate Substitution (AlternateSubst) subtable identifies any number of aesthetic alternatives - from which a user can choose a glyph variant to replace the input glyph. - - - - - - A Ligature Substitution (LigatureSubst) subtable identifies ligature substitutions where a single glyph replaces multiple glyphs. - One LigatureSubst subtable can specify any number of ligature substitutions. - The subtable has one format: LigatureSubstFormat1. - - - - - - A Contextual Substitution subtable describes glyph substitutions in context that replace one - or more glyphs within a certain pattern of glyphs. - - - - - - A Chained Contexts Substitution subtable describes glyph substitutions in context - with an ability to look back and/or look ahead in the sequence of glyphs. - - - - - - This lookup provides a mechanism whereby any other lookup type’s subtables are stored at a 32-bit offset location - in the GSUB table. This is needed if the total size of the subtables exceeds the 16-bit limits of the various - other offsets in the GSUB table. In this specification, the subtable stored at the 32-bit offset location is - termed the "extension" subtable. - - - - - - An Alternate Substitution (AlternateSubst) subtable identifies any number of aesthetic alternatives - from which a user can choose a glyph variant to replace the input glyph. - - - - - - The Glyph Substitution (GSUB) table provides data for substitution of glyphs for appropriate rendering of scripts, - such as cursively-connecting forms in Arabic script, or for advanced typographic effects, such as ligatures. - - - - - - LookupFlag bit enumeration, see: https://docs.microsoft.com/en-us/typography/opentype/spec/chapter2#lookup-table - - - - - This bit relates only to the correct processing of the cursive attachment lookup type (GPOS lookup type 3). - When this bit is set, the last glyph in a given sequence to which the cursive attachment lookup is applied, will be positioned on the baseline. - - - - - If set, skips over base glyphs. - - - - - If set, skips over ligatures. - - - - - If set, skips over all combining marks. - - - - - If set, indicates that the lookup table structure is followed by a MarkFilteringSet field. - The layout engine skips over all mark glyphs not in the mark filtering set indicated. - - - - - If not zero, skips over all marks of attachment type different from specified. - - - - - Provides enumeration determining when to zero mark advances. - - - - - OpenType Layout fonts may contain one or more groups of glyphs used to render various scripts, - which are enumerated in a ScriptList table. Both the GSUB and GPOS tables define - Script List tables (ScriptList): - - - - - - For all formats for both contextual and chained contextual lookups, a common record format - is used to specify an action—a nested lookup—to be applied to a glyph at a particular - sequence position within the input sequence. - - - - - - This is a shaper for Arabic, and other cursive scripts. - The shaping state machine was ported from fontkit. - - - - - - - - - Assigns the substitution features to each glyph within the collection. - - The glyph shaping collection. - The zero-based index of the elements to assign. - The number of elements to assign. - - - - Default shaper, which will be applied to all glyphs. - Based on fontkit: - - - - - - - - This is a shaper for the Hangul script, used by the Korean language. - The shaping state machine was ported from fontkit. - - - - - - Creates a Shaper based on the given script language. - - The script language. - The text options. - A shaper for the given script. - - - - Data type for tag identifiers. Tags are four byte integers, each byte representing a character. - Tags are used to identify tables, design-variation axes, scripts, languages, font features, and baselines with - human-readable names. - - - - - Initializes a new instance of the struct. - - The tag value. - - - - Gets the Tag value as 32 bit unsigned integer. - - - - - Converts the string representation of a number to its Tag equivalent. - - A string containing a tag to convert. - The . - - - - - - - - - - - - - - - - Provides a map from Unicode to OTF . - - - - - - Prevents a default instance of the class from being created. - - - - - Subtable format 14 specifies the Unicode Variation Sequences (UVSes) supported by the font. - A Variation Sequence, according to the Unicode Standard, comprises a base character followed - by a variation selector. For example, <U+82A6, U+E0101>. - - - - - Represents the outline of a glyph. - - - - - Initializes a new instance of the struct. - - The vectorial points defining the shape of this glyph. - The point indices for the last point of each contour, in increasing numeric order. - Value indicating whether the corresponding item is on a curve - - - - Gets the vectorial points defining the shape of this glyph. - - - - - Gets the point indices for the last point of each contour, in increasing numeric order. - - - - - Gets at value indicating whether the corresponding item is on a curve. - - - - - Represents a single simple glyph table entry. - The type is mutable by design to reduce copying during transformation. - - - - - Initializes a new instance of the struct. - - The vectorial points defining the shape of this glyph. - A value indicating whether the corresponding item is on a curve. - The point indices for the last point of each contour, in increasing numeric order. - The glyph bounds. - The glyph hinting insttructions. - - - - Gets the number of control points. - - - - - Gets or sets the vectorial points defining the shape of this glyph. - - - - - Gets or sets the point indices for the last point of each contour, in increasing numeric order. - - - - - Gets or sets a value indicating whether the corresponding item is on a curve. - - - - - Gets or sets the glyph bounds. - - - - - Gets or sets the hinting instructions. - - - - - Transforms a glyph vector by a specified 3x2 matrix. - - The glyph vector to transform. - The transformation matrix. - The new . - - - - Scales a glyph vector uniformly by a specified scale. - - The glyph vector to translate. - The uniform scale to use. - The new . - - - - Translates a glyph vector by a specified x and y coordinates. - - The glyph vector to translate. - The x-offset. - The y-offset. - The new . - - - - Creates a new glyph table entry that is a deep copy of the specified instance. - - The source glyph table entry to copy. - The cloned . - - - - Represents the raw glyph outlines for a given glyph comprised of a collection of glyph table entries. - The type is mutable by design to reduce copying during transformation. - - - - - Transforms a glyph vector by a specified 3x2 matrix. - - The glyph vector to transform. - The transformation matrix. - The new . - - - - Scales a glyph vector uniformly by a specified scale. - - The glyph vector to translate. - The uniform scale to use. - The new . - - - - Scales a glyph vector uniformly by a specified scale. - - The glyph vector to translate. - The vector scale to use. - The new . - - - - Translates a glyph vector by a specified x and y coordinates. - - The glyph vector to translate. - The x-offset. - The y-offset. - The new . - - - - Appends the second glyph vector's control points to the first. - - The first glyph vector. - The second glyph vector. - The bounds for the composite glyph. - The new . - - - - Applies True Type hinting to the specified glyph vector. - - The hinting mode. - The glyph vector to hint. - The True Type interpreter. - The first phantom point. - The second phantom point. - The third phantom point. - The fourth phantom point. - - - - Creates a new glyph vector that is a deep copy of the specified instance. - - The source glyph vector to copy. - The cloned . - - - - Returns a value indicating whether the current instance is empty. - - The indicating the result. - - - - Returns the bounds for the current instance. - - The . - - - - Returns the result of combining each glyph within this instance as a single outline. - - The . - - - - Returns a new instance with the composite bounds set to the specified value - - The src glyph vector. - The composite bounds. - The . - - - - Fast (x mod m) calculator, with the restriction that - should be power of 2. - - - - - Gets the name of the font. - - - The name of the font. - - - - - Gets the name of the font. - - - The name of the font. - - - - - Gets the name of the font. - - - The name of the font. - - - - - Gets the name of the font. - - - The name of the font. - - - - - woff font table format. - - - - - woff2 font table format. - - - - - otf font table format. - - - - - Represents a font collection header (for .ttc font collections). - A font collection contains one or more fonts where typically the glyf table is shared by multiple fonts to save space, - but other tables are not. - Each font in the collection has its own set of tables. - - - - - Gets the tag, should be "ttcf". - - - - - Gets the array of offsets to the OffsetTable of each font. Use for each font. - - - - - Reads the UIntBase128 Data Type. - - The binary reader using big endian encoding. - The result as uint. - true, if succeeded. - - - - Reads the UIntBase255 Data Type. - - The binary reader using big endian encoding. - The UIntBase255 result. - - - - Text alignment modes. - - - - - Aligns text from the left or top when the text direction is - and from the right or bottom when the text direction is . - - - - - Aligns text from the right or bottom when the text direction is - and from the left or top when the text direction is . - - - - - Aligns text from the center. - - - - - Provides enumeration of various text attributes. - - - - - No attributes are applied - - - - - The text set slightly below the normal line of type. - - - - - The text set slightly above the normal line of type. - - - - - Provides enumeration of various text decorations. - - - - - No attributes are applied - - - - - The text is underlined - - - - - The text contains a horizontal line through the center. - - - - - The text contains a horizontal line above it - - - - - Specifies the writing direction for text. - - - - - Left to right. - - - - - Right to left. - - - - - Automatically determined. - - - - - Encapsulated logic or laying out text. - - - - - Reorders a series of runs from logical to visual order, returning the left most run. - - - The ordered bidi run. - The . - - - - Encapsulated logic for laying out and then measuring text properties. - - - - - Measures the text. - - The text. - The text shaping options. - The size of the text if it was to be rendered. - - - - Measures the text. - - The text. - The text shaping options. - The size of the text if it was to be rendered. - - - - Measures the text. - - The text. - The text shaping options. - The size of the text if it was to be rendered. - - - - Measures the text. - - The text. - The text shaping options. - The size of the text if it was to be rendered. - - - - Measures the character bounds of the text. For each control character the list contains a null element. - - The text. - The text shaping options. - The list of character bounds of the text if it was to be rendered. - Whether any of the characters had non-empty bounds. - - - - Measures the character bounds of the text. For each control character the list contains a null element. - - The text. - The text shaping options. - The list of character bounds of the text if it was to be rendered. - Whether any of the characters had non-empty bounds. - - - - Gets the number of lines contained within the text. - - The text. - The text shaping options. - The line count. - - - - Gets the number of lines contained within the text. - - The text. - The text shaping options. - The line count. - - - - Provides configuration options for rendering and shaping text. - - - - - Initializes a new instance of the class. - - The font. - - - - Initializes a new instance of the class from properties - copied from the given instance. - - The options whose properties are copied into this instance. - - - - Gets or sets the font. - - - - - Gets or sets the collection of fallback font families to use when - a specific glyph is missing from . - - - - - Gets or sets the DPI (Dots Per Inch) to render/measure the text at. - - Defaults to 72. - - - - - Gets or sets the width of the tab. Measured as the distance in spaces. - - Defaults to 4. - - - - - Gets or sets a value indicating whether to apply hinting - The use of mathematical instructions - to adjust the display of an outline font so that it lines up with a rasterized grid. - - - - - Gets or sets the line spacing. Applied as a multiple of the line height. - - Defaults to 1. - - - - - Gets or sets the rendering origin. - - - - - Gets or sets the length relative to the current DPI at which text will automatically wrap onto a newline. - - - If value is -1 then wrapping is disabled. - - - - - Gets or sets the word breaking mode to use when wrapping text. - - - - - Gets or sets the text direction. - - - - - Gets or sets the text alignment of the text within the box. - - - - - Gets or sets the horizontal alignment of the text box. - - - - - Gets or sets the vertical alignment of the text box. - - - - - Gets or sets the layout mode for the text lines. - - - - - Gets or sets the kerning mode indicating whether to apply kerning (character spacing adjustments) - to the glyph positions from information found within the font. - - - - - Gets or sets a value indicating whether to enable various color font formats. - - - - - Gets or sets the collection of additional feature tags to apply during glyph shaping. - - - - - Gets or sets an optional collection of text runs to apply to the body of text. - - - - - Encapsulated logic for laying out and then rendering text to a surface. - - - - - Initializes a new instance of the class. - - The renderer. - - - - Renders the text to the . - - The target renderer. - The text. - The style. - - - - Renders the text to the . - - The target renderer. - The text. - The style. - - - - Renders the text. - - The text. - The style. - - - - Renders the text. - - The text. - The style. - - - - Represents a run of text spanning a series of graphemes within a string. - - - - - Gets or sets the inclusive start index of the first grapheme in this . - - - - - Gets or sets the exclusive end index of the last grapheme in this . - - - - - Gets or sets the font for this run. - - - - - Gets or sets the text attributes applied to this run. - - - - - Gets or sets the text decorations applied to this run. - - - - - Returns the slice of the given text representing this . - - The text to slice. - The . - - - - - - - A helper type for avoiding allocations while building arrays. - - The type of item contained in the array. - - - - Initializes a new instance of the struct. - - The intitial capacity of the array. - - - - Gets or sets the number of items in the array. - - - - - Returns a reference to specified element of the array. - - The index of the element to return. - The . - - Thrown when index less than 0 or index greater than or equal to . - - - - - Adds the given item to the array. - - The item to add. - - - - Appends a given number of empty items to the array returning - the items as a slice. - - The number of items in the slice. - Whether to clear the new slice, Defaults to . - The . - - - - Appends the slice to the array copying the data across. - - The array slice. - The . - - - - Clears the array. - Allocated memory is left intact for future usage. - - - - - Returns the current state of the array as a slice. - - The . - - - - Returns the current state of the array as a slice. - - The number of items in the slice. - The . - - - - Returns the current state of the array as a slice. - - The index at which to begin the slice. - The number of items in the slice. - The . - - - - ArraySlice represents a contiguous region of arbitrary memory similar - to and though constrained - to arrays. - Unlike , it is not a byref-like type. - - The type of item contained in the slice. - - - - Initializes a new instance of the struct. - - The underlying data buffer. - - - - Initializes a new instance of the struct. - - The underlying data buffer. - The offset position in the underlying buffer this slice was created from. - The number of items in the slice. - - - - Gets an empty - - - - - Gets the offset position in the underlying buffer this slice was created from. - - - - - Gets the number of items in the slice. - - - - - Gets a representing this slice. - - - - - Returns a reference to specified element of the slice. - - The index of the element to return. - The . - - Thrown when index less than 0 or index greater than or equal to . - - - - - Defines an implicit conversion of a to a - - - - - Defines an implicit conversion of an array to a - - - - - Copies the contents of this slice into destination span. If the source - and destinations overlap, this method behaves as if the original values in - a temporary location before the destination is overwritten. - - The slice to copy items into. - - Thrown when the destination slice is shorter than the source Span. - - - - - Fills the contents of this slice with the given value. - - - - - Forms a slice out of the given slice, beginning at 'start', of given length - - The index at which to begin this slice. - The desired length for the slice (exclusive). - - Thrown when the specified or end index is not in range (<0 or >Length). - - - - - - - - - - - - - - - - - - - - Implementation of Unicode Bidirection Algorithm (UAX #9) - https://unicode.org/reports/tr9/ - - - - The Bidi algorithm uses a number of memory arrays for resolved - types, level information, bracket types, x9 removal maps and - more... - - - This implementation of the Bidi algorithm has been designed - to reduce memory pressure on the GC by re-using the same - work buffers, so instances of this class should be re-used - as much as possible. - - - - - - The original BidiCharacterType types as provided by the caller - - - - - Paired bracket types as provided by caller - - - - - Paired bracket values as provided by caller - - - - - Try if the incoming data is known to contain brackets - - - - - True if the incoming data is known to contain embedding runs - - - - - True if the incoming data is known to contain isolating runs - - - - - Two directional mapping of isolate start/end pairs - - - The forward mapping maps the start index to the end index. - The reverse mapping maps the end index to the start index. - - - - - The working BidiCharacterType types - - - - - The buffer underlying _workingTypes - - - - - The buffer underlying resolvedLevels - - - - - The resolve paragraph embedding level - - - - - The status stack used during resolution of explicit - embedding and isolating runs - - - - - Mapping used to virtually remove characters for rule X9 - - - - - Re-usable list of level runs - - - - - Mapping for the current isolating sequence, built - by joining level runs from the x9 map. - - - - - A stack of pending isolate openings used by FindIsolatePairs() - - - - - The level of the isolating run currently being processed - - - - - The direction of the isolating run currently being processed - - - - - The length of the isolating run currently being processed - - - - - A mapped slice of the resolved types for the isolating run currently - being processed - - - - - A mapped slice of the original types for the isolating run currently - being processed - - - - - A mapped slice of the run levels for the isolating run currently - being processed - - - - - A mapped slice of the paired bracket types of the isolating - run currently being processed - - - - - A mapped slice of the paired bracket values of the isolating - run currently being processed - - - - - Maximum pairing depth for paired brackets - - - - - Reusable list of pending opening brackets used by the - LocatePairedBrackets method - - - - - Resolved list of paired brackets - - - - - Initializes a new instance of the class. - - - - - Gets a per-thread instance that can be re-used as often - as necessary. - - - - - Gets the resolved levels. - - - - - Gets the resolved paragraph embedding level - - - - - Process data from a BidiData instance - - The Bidi Unicode data. - - - - Processes Bidi Data - - - - - Resolve the paragraph embedding level if not explicitly passed - by the caller. Also used by rule X5c for FSI isolating sequences. - - The data to be evaluated - The resolved embedding level - - - - Build a list of matching isolates for a directionality slice - Implements BD9 - - - - - Resolve the explicit embedding levels from the original - data. Implements rules X1 to X8. - - - - - Build a map to the original data positions that excludes all - the types defined by rule X9 - - - - - Find the original character index for an entry in the X9 map - - Index in the x9 removal map - Index to the original data - - - - Add a new level run - - - This method resolves the sos and eos values for the run - and adds the run to the list - /// - The index of the start of the run (in x9 removed units) - The length of the run (in x9 removed units) - The level of the run - - - - Find all runs of the same level, populating the _levelRuns - collection - - - - - Given a character index, find the level run that starts at that position - - The index into the original (unmapped) data - The index of the run that starts at that index - - - - Determine and the process all isolated run sequences - - - - - Process a single isolated run sequence, where the character sequence - mapping is currently held in _isolatedRunMapping. - - - - - Locate all pair brackets in the current isolating run - - A sorted list of BracketPairs - - - - Inspect a paired bracket set and determine its strong direction - - The paired bracket to be inspected - The direction of the bracket set content - - - - Look for a strong type before a paired bracket - - The paired bracket set to be inspected - The sos in case nothing found before the bracket - The strong direction before the brackets - - - - Sets the direction of a bracket pair, including setting the direction of - NSM's inside the brackets and following. - - The paired brackets - The resolved direction for the bracket pair - - - - Resets whitespace levels. Implements rule L1 - - - - - Assign levels to any characters that would be have been - removed by rule X9. The idea is to keep level runs together - that would otherwise be broken by an interfering isolate/embedding - control character. - - - - - Check if a directionality type represents whitespace - - - - - Convert a level to a direction where odd is RTL and - even is LTR - - The level to convert - A directionality - - - - Helper to check if a directionality is removed by rule X9 - - The bidi type to check - True if rule X9 would remove this character; otherwise false - - - - Check if a a directionality is neutral for rules N1 and N2 - - - - - Maps a direction to a strong type for rule N0 - - The direction to map - A strong direction - R, L or ON - - - - Hold the start and end index of a pair of brackets - - - - - Initializes a new instance of the struct. - - Index of the opening bracket - Index of the closing bracket - - - - Gets the index of the opening bracket - - - - - Gets the index of the closing bracket - - - - - Status stack entry used while resolving explicit - embedding levels - - - - - Provides information about a level run - a continuous - sequence of equal levels. - - - - - Provides enumeration for the Unicode Bidirectional character types. - . - - - - - Left-to-right. - - - - - Right-to-left. - - - - - Arabic Letter. - - - - - European Number - - - - - European Separator - - - - - European Terminator - - - - - Arabic Number. - - - - - Common Separator - - - - - Nonspacing Mark. - - - - - Boundary Neutral. - - - - - Paragraph Separator - - - - - Segment Separator - - - - - White Space. - - - - - Other Neutral. - - - - - Left-to-right Embedding. - - - - - Left-to-right Override - - - - - Right-to-left Embedding - - - - - Right-to-left Override. - - - - - Pop Directional Format - - - - - Left-to-right Isolate - - - - - Right-to-left Isolate. - - - - - First Strong Isolate - - - - - Pop Directional Isolate. - - - - - Represents the Unicode Bidi value of a given . - - - - - - Initializes a new instance of the struct. - - The codepoint. - - - - Gets the Unicode Bidirectional character type. - - - - - Gets the Unicode Bidirectional paired bracket type. - - - - - Gets the codepoint representing the bracket pairing for this instance. - - - When this method returns, contains the codepoint representing the bracket pairing for this instance; - otherwise, the default value for the type of the parameter. - This parameter is passed uninitialized. - . - if this instance has a bracket pairing; otherwise, - - - - Represents a unicode string and all associated attributes - for each character required for the Bidi algorithm - - - - - Gets the length of the data held by the BidiData - - - - - Gets the bidi character type of each code point - - - - - Gets the paired bracket type for each code point - - - - - Gets the paired bracket value for code point - - - The paired bracket values are the code points - of each character where the opening code point - is replaced with the closing code point for easier - matching. Also, bracket code points are mapped - to their canonical equivalents - - - - - Initialize with a text value. - - The text to process. - The paragraph embedding level - - - - Save the Types and PairedBracketTypes of this bididata - - - This is used when processing embedded style runs with - BidiCharacterType overrides. TextLayout saves the data, - overrides the style runs to neutral, processes the bidi - data for the entire paragraph and then restores this data - before processing the embedded runs. - - - - - Restore the data saved by SaveTypes - - - - - Gets a temporary level buffer. Used by TextLayout when - resolving style runs with different BidiCharacterType. - - Length of the required ExpandableBuffer - An uninitialized level ExpandableBuffer - - - - A simple bi-directional dictionary. - - Key type - Value type - - - - Provides enumeration for classifying characters into opening and closing paired brackets - for the purposes of the Unicode Bidirectional Algorithm. - . - - - - - None. - - - - - Open. - - - - - Close. - - - - - Represents a Unicode value ([ U+0000..U+10FFFF ], inclusive). - - - This type's constructors and conversion operators validate the input, so consumers can call the APIs - assuming that the underlying instance is well-formed. - - - - - Initializes a new instance of the struct. - - The char representing the UTF-16 code unit - - If represents a UTF-16 surrogate code point - U+D800..U+DFFF, inclusive. - - - - - Initializes a new instance of the struct. - - A char representing a UTF-16 high surrogate code unit. - A char representing a UTF-16 low surrogate code unit. - - If does not represent a UTF-16 high surrogate code unit - or does not represent a UTF-16 low surrogate code unit. - - - - - Initializes a new instance of the struct. - - The value to create the codepoint. - - If does not represent a value Unicode scalar value. - - - - - Initializes a new instance of the struct. - - The value to create the codepoint. - - If does not represent a value Unicode scalar value. - - - - - Gets a value indicating whether this value is ASCII ([ U+0000..U+007F ]) - and therefore representable by a single UTF-8 code unit. - - - - - Gets a value indicating whether this value is within the BMP ([ U+0000..U+FFFF ]) - and therefore representable by a single UTF-16 code unit. - - - - - Gets the Unicode plane (0 to 16, inclusive) which contains this scalar. - - - - - Gets the Unicode value as an integer. - - - - - Gets the length in code units () of the - UTF-16 sequence required to represent this scalar value. - - - The return value will be 1 or 2. - - - - - Gets the length in code units of the - UTF-8 sequence required to represent this scalar value. - - - The return value will be 1 through 4, inclusive. - - - - - Gets a instance that represents the Unicode replacement character U+FFFD. - - - - - Returns if is a valid Unicode code - point, i.e., is in [ U+0000..U+10FFFF ], inclusive. - - The value to evaluate. - if represents a valid codepoint; otherwise, - - - - Returns if is a valid Unicode code - point, i.e., is in [ U+0000..U+10FFFF ], inclusive. - - The value to evaluate. - if represents a valid codepoint; otherwise, - - - - Gets a value indicating whether the given codepoint is white space. - - The codepoint to evaluate. - if is a whitespace character; otherwise, - - - - Gets a value indicating whether the given codepoint is a non-breaking space. - - The codepoint to evaluate. - if is a non-breaking space character; otherwise, - - - - Gets a value indicating whether the given codepoint is a zero-width-non-joiner. - - The codepoint to evaluate. - if is a zero-width-non-joiner character; otherwise, - - - - Gets a value indicating whether the given codepoint is a zero-width-joiner. - - The codepoint to evaluate. - if is a zero-width-joiner character; otherwise, - - - - Gets a value indicating whether the given codepoint is a variation selector. - - - The codepoint to evaluate. - if is a variation selector character; otherwise, - - - - Gets a value indicating whether the given codepoint is a control character. - - The codepoint to evaluate. - if is a control character; otherwise, - - - - Returns a value that indicates whether the specified codepoint is categorized as a decimal digit. - - The codepoint to evaluate. - if is a decimal digit; otherwise, - - - - Returns a value that indicates whether the specified codepoint is categorized as a letter. - - The codepoint to evaluate. - if is a letter; otherwise, - - - - Returns a value that indicates whether the specified codepoint is categorized as a letter or decimal digit. - - The codepoint to evaluate. - if is a letter or decimal digit; otherwise, - - - - Returns a value that indicates whether the specified codepoint is categorized as a lowercase letter. - - The codepoint to evaluate. - if is a lowercase letter; otherwise, - - - - Returns a value that indicates whether the specified codepoint is categorized as a number. - - The codepoint to evaluate. - if is a number; otherwise, - - - - Returns a value that indicates whether the specified codepoint is categorized as punctuation. - - The codepoint to evaluate. - if is punctuation; otherwise, - - - - Returns a value that indicates whether the specified codepoint is categorized as a separator. - - The codepoint to evaluate. - if is a separator; otherwise, - - - - Returns a value that indicates whether the specified codepoint is categorized as a symbol. - - The codepoint to evaluate. - if is a symbol; otherwise, - - - - Returns a value that indicates whether the specified codepoint is categorized as a mark. - - The codepoint to evaluate. - if is a symbol; otherwise, - - - - Returns a value that indicates whether the specified codepoint is categorized as an uppercase letter. - - The codepoint to evaluate. - if is a uppercase letter; otherwise, - - - - Gets a value indicating whether the given codepoint is a tabulation indicator. - - The codepoint to evaluate. - if is a tabulation indicator; otherwise, - - - - Gets a value indicating whether the given codepoint is a new line indicator. - - The codepoint to evaluate. - if is a new line indicator; otherwise, - - - - Returns the number of codepoints in a given string buffer. - - The source buffer to parse. - The . - - - - Gets the canonical representation of a given codepoint. - - - The code point to be mapped. - The mapped canonical code point, or the passed . - - - - Gets the for the given codepoint. - - The codepoint to evaluate. - The . - - - - Gets the codepoint representing the bidi mirror for this instance. - - - The code point to be mapped. - - When this method returns, contains the codepoint representing the bidi mirror for this instance; - otherwise, the default value for the type of the parameter. - This parameter is passed uninitialized. - . - if this instance has a mirror; otherwise, - - - - Gets the codepoint representing the vertical mirror for this instance. - - - The code point to be mapped. - - When this method returns, contains the codepoint representing the vertical mirror for this instance; - otherwise, the default value for the type of the parameter. - This parameter is passed uninitialized. - . - if this instance has a mirror; otherwise, - - - - Gets the for the given codepoint. - - The codepoint to evaluate. - The . - - - - Gets the for the given codepoint. - - The codepoint to evaluate. - The . - - - - Gets the for the given codepoint. - - The codepoint to evaluate. - The . - - - - Gets the for the given codepoint. - - The codepoint to evaluate. - The . - - - - Gets the for the given codepoint. - - The codepoint to evaluate. - The . - - - - Reads the at specified position. - - The text to read from. - The index to read at. - The count of chars consumed reading the buffer. - The . - - - - Decodes the from the provided UTF-16 source buffer at the specified position. - - The buffer to read from. - The index to read at. - The . - - - - Decodes the from the provided UTF-16 source buffer at the specified position. - - The buffer to read from. - The index to read at. - The count of chars consumed reading the buffer. - The . - - - - - - - - - - - - - - - - - - - - - - Returns this instance displayed as "'<char>' (U+XXXX)"; e.g., "'e' (U+0065)" - - The . - - - - Unicode Grapheme Cluster classes. - - - - - - This is not a property value; it is used in the rules to represent any code point. - - - - - U+000D CARRIAGE RETURN (CR) - - - - - U+000A LINE FEED (LF) - - - - - General_Category = Line_Separator, or
- General_Category = Paragraph_Separator, or
- General_Category = Control, or
- General_Category = Unassigned and Default_Ignorable_Code_Point, or
- General_Category = Format
- and not U+000D CARRIAGE RETURN
- and not U+000A LINE FEED
- and not U+200C ZERO WIDTH NON-JOINER (ZWNJ)
- and not U+200D ZERO WIDTH JOINER (ZWJ)
- and not Prepended_Concatenation_Mark = Yes -
-
- - - Grapheme_Extend = Yes, or
- Emoji_Modifier = Yes
- This includes:
- General_Category = Nonspacing_Mark
- General_Category = Enclosing_Mark
- U+200C ZERO WIDTH NON-JOINER
- plus a few General_Category = Spacing_Mark needed for canonical equivalence. -
-
- - - Regional_Indicator = Yes
- This consists of the range:
- U+1F1E6 REGIONAL INDICATOR SYMBOL LETTER A - ..U+1F1FF REGIONAL INDICATOR SYMBOL LETTER Z -
-
- - - Indic_Syllabic_Category = Consonant_Preceding_Repha, or
- Indic_Syllabic_Category = Consonant_Prefixed, or
- Prepended_Concatenation_Mark = Yes -
-
- - - Grapheme_Cluster_Break ≠ Extend, and
- General_Category = Spacing_Mark, or
- any of the following (which have General_Category = Other_Letter):
- U+0E33 ( ำ ) THAI CHARACTER SARA AM
- U+0EB3 ( ຳ ) LAO VOWEL SIGN AM -
-
- - - Hangul_Syllable_Type = L, such as:
- U+1100 ( ᄀ ) HANGUL CHOSEONG KIYEOK
- U+115F ( ᅟ ) HANGUL CHOSEONG FILLER
- U+A960 ( ꥠ ) HANGUL CHOSEONG TIKEUT-MIEUM
- U+A97C ( ꥼ ) HANGUL CHOSEONG SSANGYEORINHIEUH -
-
- - - Hangul_Syllable_Type=V, such as:
- U+1160 ( ᅠ ) HANGUL JUNGSEONG FILLER
- U+11A2 ( ᆢ ) HANGUL JUNGSEONG SSANGARAEA
- U+D7B0 ( ힰ ) HANGUL JUNGSEONG O-YEO
- U+D7C6 ( ퟆ ) HANGUL JUNGSEONG ARAEA-E -
-
- - - Hangul_Syllable_Type = T, such as:
- U+11A8 ( ᆨ ) HANGUL JONGSEONG KIYEOK
- U+11F9 ( ᇹ ) HANGUL JONGSEONG YEORINHIEUH
- U+D7CB ( ퟋ ) HANGUL JONGSEONG NIEUN-RIEUL
- U+D7FB ( ퟻ ) HANGUL JONGSEONG PHIEUPH-THIEUTH -
-
- - - Hangul_Syllable_Type=LV, that is:
- U+AC00 ( 가 ) HANGUL SYLLABLE GA
- U+AC1C ( 개 ) HANGUL SYLLABLE GAE
- U+AC38 ( 갸 ) HANGUL SYLLABLE GYA -
-
- - - Hangul_Syllable_Type=LVT, that is:
- U+AC01 ( 각 ) HANGUL SYLLABLE GAG
- U+AC02 ( 갂 ) HANGUL SYLLABLE GAGG
- U+AC03 ( 갃 ) HANGUL SYLLABLE GAGS
- U+AC04 ( 간 ) HANGUL SYLLABLE GAN -
-
- - - Extended Pictographic - - - - - U+200D ZERO WIDTH JOINER - - - - - Represents the Unicode Joining value of a given . - - - - - - Initializes a new instance of the struct. - - The codepoint. - - - - Gets the Unicode joining type. - - - - - Gets the Unicode joining group. - - - - - Unicode Joining Groups - . - - - - - African_Feh - - - - - African_Noon - - - - - African_Qaf - - - - - Ain - - - - - Alaph - - - - - Alef - - - - - Beh - - - - - Beth - - - - - Burushaski_Yeh_Barree - - - - - Dal - - - - - Dalath_Rish - - - - - E - - - - - Farsi_Yeh - - - - - Fe - - - - - Feh - - - - - Final_Semkath - - - - - Gaf - - - - - Gamal - - - - - Hah - - - - - Hanifi_Rohingya_Kinna_Ya - - - - - Hanifi_Rohingya_Pa - - - - - He - - - - - Heh - - - - - Heh_Goal - - - - - Heth - - - - - Kaf - - - - - Kaph - - - - - Khaph - - - - - Knotted_Heh - - - - - Lam - - - - - Lamadh - - - - - Malayalam_Bha - - - - - Malayalam_Ja - - - - - Malayalam_Lla - - - - - Malayalam_Llla - - - - - Malayalam_Nga - - - - - Malayalam_Nna - - - - - Malayalam_Nnna - - - - - Malayalam_Nya - - - - - Malayalam_Ra - - - - - Malayalam_Ssa - - - - - Malayalam_Tta - - - - - Manichaean_Aleph - - - - - Manichaean_Ayin - - - - - Manichaean_Beth - - - - - Manichaean_Daleth - - - - - Manichaean_Dhamedh - - - - - Manichaean_Five - - - - - Manichaean_Gimel - - - - - Manichaean_Heth - - - - - Manichaean_Hundred - - - - - Manichaean_Kaph - - - - - Manichaean_Lamedh - - - - - Manichaean_Mem - - - - - Manichaean_Nun - - - - - Manichaean_One - - - - - Manichaean_Pe - - - - - Manichaean_Qoph - - - - - Manichaean_Resh - - - - - Manichaean_Sadhe - - - - - Manichaean_Samekh - - - - - Manichaean_Taw - - - - - Manichaean_Ten - - - - - Manichaean_Teth - - - - - Manichaean_Thamedh - - - - - Manichaean_Twenty - - - - - Manichaean_Waw - - - - - Manichaean_Yodh - - - - - Manichaean_Zayin - - - - - Meem - - - - - Mim - - - - - No_Joining_Group - - - - - Noon - - - - - Nun - - - - - Nya - - - - - Pe - - - - - Qaf - - - - - Qaph - - - - - Reh - - - - - Reversed_Pe - - - - - Rohingya_Yeh - - - - - Sad - - - - - Sadhe - - - - - Seen - - - - - Semkath - - - - - Shin - - - - - Straight_Waw - - - - - Swash_Kaf - - - - - Syriac_Waw - - - - - Tah - - - - - Taw - - - - - Teh_Marbuta - - - - - Hamza_On_Heh_Goal - - - - - Teth - - - - - Thin_Yeh - - - - - Vertical_Tail - - - - - Waw - - - - - Yeh - - - - - Yeh_Barree - - - - - Yeh_With_Tail - - - - - Yudh - - - - - Yudh_He - - - - - Zain - - - - - Zhain - - - - - Unicode Joining Types - Table 9-3. - - - - - Right Joining (R) - - - - - Left Joining (L) - - - - - Dual Joining (D) - - - - - Join Causing (C) - - - - - Non Joining (U) - - - - - Transparent (T) - - - - - Information about a potential line break position. - - - - - Initializes a new instance of the struct. - - The code point index to measure to - The code point index to actually break the line at - True if this is a required line break; otherwise false - - - - Gets the break position, before any trailing whitespace. - This doesn't include trailing whitespace. - - - - - Gets the break position, after any trailing whitespace. - This includes trailing whitespace. - - - - - Gets a value indicating whether there should be a forced line break here. - - - - - Unicode line break classes. - - - - - - Open punctuation - - - - - Closing punctuation - - - - - Closing parenthesis - - - - - Ambiguous quotation - - - - - Glue - - - - - Non-starters - - - - - Exclamation/Interrogation - - - - - Symbols allowing break after - - - - - Infix separator - - - - - Prefix - - - - - Postfix - - - - - Numeric - - - - - Alphabetic - - - - - Hebrew Letter - - - - - Ideographic - - - - - Inseparable characters - - - - - Hyphen - - - - - Break after - - - - - Break before - - - - - Break on either side (but not pair) - - - - - Zero-width space - - - - - Combining marks - - - - - Word joiner - - - - - Hangul LV - - - - - Hangul LVT - - - - - Hangul L Jamo - - - - - Hangul V Jamo - - - - - Hangul T Jamo - - - - - Regional Indicator - - - - - Emoji Base - - - - - Emoji Modifier - - - - - Zero Width Joiner - - - - - Contingent break - - - - - Ambiguous (Alphabetic or Ideograph) - - - - - Break (mandatory) - - - - - Conditional Japanese Starter - - - - - Carriage return - - - - - Line feed - - - - - Next line - - - - - South-East Asian - - - - - Surrogates - - - - - Space - - - - - Unknown - - - - - Supports a simple iteration over a linebreak collection. - Implementation of the Unicode Line Break Algorithm. UAX:14 - - Methods are pattern-matched by compiler to allow using foreach pattern. - - - - - Returns an enumerator that iterates through the collection. - - An enumerator that iterates through the collection. - - - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced to the next element; - if the enumerator has passed the end of the collection. - - - - - Direct break opportunity - - - - - Indirect break opportunity - - - - - Indirect break opportunity for combining marks - - - - - Prohibited break for combining marks - - - - - Prohibited break - - - - - Provides a mapped view of an underlying slice, selecting arbitrary indices - from the source array. - - The type of item contained in the underlying array. - - - - Initializes a new instance of the struct. - - The data slice. - The map slice. - - - - Gets the number of items in the map. - - - - - Returns a reference to specified element of the slice. - - The index of the element to return. - The . - - Thrown when index less than 0 or index greater than or equal to . - - - - - Contains extensions methods for memory types. - - - - - Returns an enumeration of from the provided span. - - The readonly span of char elements representing the text to enumerate. - - Invalid sequences will be represented in the enumeration by . - - The . - - - - Returns an enumeration of from the provided span. - - The span of char elements representing the text to enumerate. - - Invalid sequences will be represented in the enumeration by . - - The . - - - - Returns an enumeration of Grapheme instances from the provided span. - - The readonly span of char elements representing the text to enumerate. - - Invalid sequences will be represented in the enumeration by . - - The . - - - - Returns an enumeration of Grapheme instances from the provided span. - - The span of char elements representing the text to enumerate. - - Invalid sequences will be represented in the enumeration by . - - The . - - - - ReadOnlyArraySlice represents a contiguous region of arbitrary memory similar - to and though constrained - to arrays. - Unlike , it is not a byref-like type. - - The type of item contained in the slice. - - - - Initializes a new instance of the struct. - - The underlying data buffer. - - - - Initializes a new instance of the struct. - - The underlying data buffer. - The offset position in the underlying buffer this slice was created from. - The number of items in the slice. - - - - Gets an empty - - - - - Gets the offset position in the underlying buffer this slice was created from. - - - - - Gets the number of items in the slice. - - - - - Gets a representing this slice. - - - - - Returns a reference to specified element of the slice. - - The index of the element to return. - The . - - Thrown when index less than 0 or index greater than or equal to . - - - - - Defines an implicit conversion of an array to a - - - - - Copies the contents of this slice into destination span. If the source - and destinations overlap, this method behaves as if the original values in - a temporary location before the destination is overwritten. - - The slice to copy items into. - - Thrown when the destination slice is shorter than the source Span. - - - - - Forms a slice out of the given slice, beginning at 'start', of given length - - The index at which to begin this slice. - The desired length for the slice (exclusive). - - Thrown when the specified or end index is not in range (<0 or >Length). - - - - - - - - - - - - - - - - - - - - Unicode Script classes - - - - - Shortcode: Zzzz - - - - - Shortcode: Zyyy - - - - - Shortcode: Zinh, Qaai - - - - - Shortcode: Adlm - - - - - Shortcode: Aghb - - - - - Shortcode: Ahom - - - - - Shortcode: Arab - - - - - Shortcode: Armi - - - - - Shortcode: Armn - - - - - Shortcode: Avst - - - - - Shortcode: Bali - - - - - Shortcode: Bamu - - - - - Shortcode: Bass - - - - - Shortcode: Batk - - - - - Shortcode: Beng - - - - - Shortcode: Bhks - - - - - Shortcode: Bopo - - - - - Shortcode: Brah - - - - - Shortcode: Brai - - - - - Shortcode: Bugi - - - - - Shortcode: Buhd - - - - - Shortcode: Cakm - - - - - Shortcode: Cans - - - - - Shortcode: Cari - - - - - Shortcode: Cham - - - - - Shortcode: Cher - - - - - Shortcode: Chrs - - - - - Shortcode: Copt, Qaac - - - - - Shortcode: Cpmn - - - - - Shortcode: Cprt - - - - - Shortcode: Cyrl - - - - - Shortcode: Deva - - - - - Shortcode: Diak - - - - - Shortcode: Dogr - - - - - Shortcode: Dsrt - - - - - Shortcode: Dupl - - - - - Shortcode: Egyp - - - - - Shortcode: Elba - - - - - Shortcode: Elym - - - - - Shortcode: Ethi - - - - - Shortcode: Geor - - - - - Shortcode: Glag - - - - - Shortcode: Gong - - - - - Shortcode: Gonm - - - - - Shortcode: Goth - - - - - Shortcode: Gran - - - - - Shortcode: Grek - - - - - Shortcode: Gujr - - - - - Shortcode: Guru - - - - - Shortcode: Hang - - - - - Shortcode: Hani - - - - - Shortcode: Hano - - - - - Shortcode: Hatr - - - - - Shortcode: Hebr - - - - - Shortcode: Hira - - - - - Shortcode: Hluw - - - - - Shortcode: Hmng - - - - - Shortcode: Hmnp - - - - - Shortcode: Hrkt - - - - - Shortcode: Hung - - - - - Shortcode: Ital - - - - - Shortcode: Java - - - - - Shortcode: Kali - - - - - Shortcode: Kana - - - - - Shortcode: Khar - - - - - Shortcode: Khmr - - - - - Shortcode: Khoj - - - - - Shortcode: Kits - - - - - Shortcode: Knda - - - - - Shortcode: Kthi - - - - - Shortcode: Lana - - - - - Shortcode: Laoo - - - - - Shortcode: Latn - - - - - Shortcode: Lepc - - - - - Shortcode: Limb - - - - - Shortcode: Lina - - - - - Shortcode: Linb - - - - - Shortcode: Lisu - - - - - Shortcode: Lyci - - - - - Shortcode: Lydi - - - - - Shortcode: Mahj - - - - - Shortcode: Maka - - - - - Shortcode: Mand - - - - - Shortcode: Mani - - - - - Shortcode: Marc - - - - - Shortcode: Medf - - - - - Shortcode: Mend - - - - - Shortcode: Merc - - - - - Shortcode: Mero - - - - - Shortcode: Mlym - - - - - Shortcode: Modi - - - - - Shortcode: Mong - - - - - Shortcode: Mroo - - - - - Shortcode: Mtei - - - - - Shortcode: Mult - - - - - Shortcode: Mymr - - - - - Shortcode: Nand - - - - - Shortcode: Narb - - - - - Shortcode: Nbat - - - - - Shortcode: Newa - - - - - Shortcode: Nkoo - - - - - Shortcode: Nshu - - - - - Shortcode: Ogam - - - - - Shortcode: Olck - - - - - Shortcode: Orkh - - - - - Shortcode: Orya - - - - - Shortcode: Osge - - - - - Shortcode: Osma - - - - - Shortcode: Ougr - - - - - Shortcode: Palm - - - - - Shortcode: Pauc - - - - - Shortcode: Perm - - - - - Shortcode: Phag - - - - - Shortcode: Phli - - - - - Shortcode: Phlp - - - - - Shortcode: Phnx - - - - - Shortcode: Plrd - - - - - Shortcode: Prti - - - - - Shortcode: Rjng - - - - - Shortcode: Rohg - - - - - Shortcode: Runr - - - - - Shortcode: Samr - - - - - Shortcode: Sarb - - - - - Shortcode: Saur - - - - - Shortcode: Sgnw - - - - - Shortcode: Shaw - - - - - Shortcode: Shrd - - - - - Shortcode: Sidd - - - - - Shortcode: Sind - - - - - Shortcode: Sinh - - - - - Shortcode: Sogd - - - - - Shortcode: Sogo - - - - - Shortcode: Sora - - - - - Shortcode: Soyo - - - - - Shortcode: Sund - - - - - Shortcode: Sylo - - - - - Shortcode: Syrc - - - - - Shortcode: Tagb - - - - - Shortcode: Takr - - - - - Shortcode: Tale - - - - - Shortcode: Talu - - - - - Shortcode: Taml - - - - - Shortcode: Tang - - - - - Shortcode: Tavt - - - - - Shortcode: Telu - - - - - Shortcode: Tfng - - - - - Shortcode: Tglg - - - - - Shortcode: Thaa - - - - - Shortcode: Thai - - - - - Shortcode: Tibt - - - - - Shortcode: Tirh - - - - - Shortcode: Tnsa - - - - - Shortcode: Toto - - - - - Shortcode: Ugar - - - - - Shortcode: Vaii - - - - - Shortcode: Vith - - - - - Shortcode: Wara - - - - - Shortcode: Wcho - - - - - Shortcode: Xpeo - - - - - Shortcode: Xsux - - - - - Shortcode: Yezi - - - - - Shortcode: Yiii - - - - - Shortcode: Zanb - - - - - An enumerator for retrieving instances from a . - Methods are pattern-matched by compiler to allow using foreach pattern. - - - - - Initializes a new instance of the struct. - - The buffer to read from. - - - - Gets the element in the collection at the current position of the enumerator. - - - - - Returns an enumerator that iterates through the collection. - - An enumerator that iterates through the collection. - - - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced to the next element; - if the enumerator has passed the end of the collection. - - - - - An enumerator for retrieving Grapheme instances from a . -
- Implements the Unicode Grapheme Cluster Algorithm. UAX:29 - -
- Methods are pattern-matched by compiler to allow using foreach pattern. -
-
- - - Initializes a new instance of the struct. - - The buffer to read from. - - - - Gets the element in the collection at the current position of the enumerator. - - - - - Returns an enumerator that iterates through the collection. - - An enumerator that iterates through the collection. - - - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced to the next element; - if the enumerator has passed the end of the collection. - - - - - A read-only Trie, holding 32 bit data values. - A UnicodeTrie is a highly optimized data structure for mapping from Unicode - code points(values ranging from 0 to 0x10ffff) to a 32 bit value. - - - - - Initializes a new instance of the class. - - The stream containing the compressed data. - - - - Initializes a new instance of the class. - - The uncompressed trie data. - The start of the last range which ends at U+10ffff. - The value for out-of-range code points and illegal UTF-8. - - - - Get the value for a code point as stored in the trie. - - The code point. - The value. - - - - Saves the to the stream in a compressed format. - - The output stream. - - - - Builder class to manipulate and generate a trie. - This is useful for ICU data in primitive types. - Provides a compact way to store information that is indexed by Unicode - values, such as character properties, types, keyboard values, etc. - This is very useful when you have a block of Unicode data that contains significant - values while the rest of the Unicode data is unused in the application or - when you have a lot of redundance, such as where all 21,000 Han ideographs - have the same value. However, lookup is much faster than a hash table. - A trie of any primitive data type serves two purposes: -
    -
  • Fast access of the indexed values.
  • -
  • Smaller memory footprint.
  • -
-
-
- - - Initializes a new instance of the class. - - The initial value that is set for all code points. - The value for out-of-range code points and illegal UTF-8. - - - - Gets the value for a code point as stored in the trie. - - The code point. - The value. - - - - Sets a value for a given code point. - - The code point. - The value. - - - - Set a value in a range of code points [start..end]. - All code points c with start <= c <= end will get the value if - is or if the old value is the - initial value. - - The first code point to get the value. - The last code point to get the value (inclusive). - The value. - Whether old non-initial values are to be overwritten. - - - - Compacts the data and populates an optimized readonly Trie. - - The . - - - - Is this code point a lead surrogate (U+d800..U+dbff)? - - The code point. - The . - - - - Returns if is an ASCII - character ([ U+0000..U+007F ]). - - - Per http://www.unicode.org/glossary/#ASCII, ASCII is only U+0000..U+007F. - - - - - Returns if is in the - Basic Multilingual Plane (BMP). - - - - - Gets the codepoint value representing the vertical mirror for this instance. -
- -
- -
- - The representing the mirror or 0u if not found. - -
- - - Returns if is a - Chinese/Japanese/Korean (CJK) character. - - - - - - - - - - - - Returns if is a Default Ignorable Code Point. - - - - - - - - - Returns the Unicode plane (0 through 16, inclusive) which contains this code point. - - - - - Given a Unicode scalar value, gets the number of UTF-16 code units required to represent this value. - - - - - Given a Unicode scalar value, gets the number of UTF-8 code units required to represent this value. - - - - - Returns if is a valid Unicode code - point, i.e., is in [ U+0000..U+10FFFF ], inclusive. - - - - - Returns if is a UTF-16 high surrogate code point, - i.e., is in [ U+D800..U+DBFF ], inclusive. - - - - - Returns if is a UTF-16 low surrogate code point, - i.e., is in [ U+DC00..U+DFFF ], inclusive. - - - - - Returns if is a UTF-16 surrogate code point, - i.e., is in [ U+D800..U+DFFF ], inclusive. - - - - - Returns if is between - and , inclusive. - - - - - Returns a Unicode scalar value from two code points representing a UTF-16 surrogate pair. - - - - - Decomposes an astral Unicode code point into UTF-16 high and low surrogate code units. - - - - - Formats a code point as the hex string "U+XXXX". - - - The input value doesn't have to be a real code point in the Unicode codespace. It can be any integer. - - - - - Converts encoding ID to TextEncoding - - - - - Converts encoding ID to TextEncoding - - The identifier. - the encoding for this encoding ID - - - - Vertical alignment modes. - - - - - Aligns downward from the top. - - - - - Aligns text up and down from the middle. - - - - - Aligns text upwards from the bottom - - - - - Encoding IDS - - - - - Unicode 1.0 semantics - - - - - Unicode 1.1 semantics - - - - - ISO/IEC 10646 semantics - - - - - Unicode 2.0 and onwards semantics, Unicode BMP only (cmap subtable formats 0, 4, 6). - - - - - Unicode 2.0 and onwards semantics, Unicode full repertoire (cmap subtable formats 0, 4, 6, 10, 12). - - - - - Unicode Variation Sequences (cmap subtable format 14). - - - - - Unicode full repertoire (cmap subtable formats 0, 4, 6, 10, 12, 13) - - - - - Provides enumeration of common name ids - - - - - - The copyright notice - - - - - The font family name; Up to four fonts can share the Font Family name, forming a font style linking - group (regular, italic, bold, bold italic — as defined by OS/2.fsSelection bit settings). - - - - - The font subfamily name; The Font Subfamily name distinguishes the font in a group with the same Font Family name (name ID 1). - This is assumed to address style (italic, oblique) and weight (light, bold, black, etc.). A font with no particular differences - in weight or style (e.g. medium weight, not italic and fsSelection bit 6 set) should have the string "Regular" stored in this position. - - - - - The unique font identifier - - - - - The full font name; a combination of strings 1 and 2, or a similar human-readable variant. If string 2 is "Regular", it is sometimes omitted from name ID 4. - - - - - Version string. Should begin with the syntax 'Version <number>.<number>' (upper case, lower case, or mixed, with a space between "Version" and the number). - The string must contain a version number of the following form: one or more digits (0-9) of value less than 65,535, followed by a period, followed by one or more - digits of value less than 65,535. Any character other than a digit will terminate the minor number. A character such as ";" is helpful to separate different pieces of version information. - The first such match in the string can be used by installation software to compare font versions. - Note that some installers may require the string to start with "Version ", followed by a version number as above. - - - - - Postscript name for the font; Name ID 6 specifies a string which is used to invoke a PostScript language font that corresponds to this OpenType font. - When translated to ASCII, the name string must be no longer than 63 characters and restricted to the printable ASCII subset, codes 33 to 126, - except for the 10 characters '[', ']', '(', ')', '{', '}', '<', '>', '/', '%'. - In a CFF OpenType font, there is no requirement that this name be the same as the font name in the CFF’s Name INDEX. - Thus, the same CFF may be shared among multiple font components in a Font Collection. See the 'name' table section of - Recommendations for OpenType fonts "" for additional information. - - - - - Trademark; this is used to save any trademark notice/information for this font. Such information should - be based on legal advice. This is distinctly separate from the copyright. - - - - - The manufacturer - - - - - Designer; name of the designer of the typeface. - - - - - Description; description of the typeface. Can contain revision information, usage recommendations, history, features, etc. - - - - - URL Vendor; URL of font vendor (with protocol, e.g., http://, ftp://). If a unique serial number is embedded in - the URL, it can be used to register the font. - - - - - URL Designer; URL of typeface designer (with protocol, e.g., http://, ftp://). - - - - - License Description; description of how the font may be legally used, or different example scenarios for licensed use. - This field should be written in plain language, not legalese. - - - - - License Info URL; URL where additional licensing information can be found. - - - - - Typographic Family name: The typographic family grouping doesn't impose any constraints on the number of faces within it, - in contrast with the 4-style family grouping (ID 1), which is present both for historical reasons and to express style linking groups. - If name ID 16 is absent, then name ID 1 is considered to be the typographic family name. - (In earlier versions of the specification, name ID 16 was known as "Preferred Family".) - - - - - Typographic Subfamily name: This allows font designers to specify a subfamily name within the typographic family grouping. - This string must be unique within a particular typographic family. If it is absent, then name ID 2 is considered to be the - typographic subfamily name. (In earlier versions of the specification, name ID 17 was known as "Preferred Subfamily".) - - - - - Sample text; This can be the font name, or any other text that the designer thinks is the best sample to display the font in. - - - - - platforms ids - - - - - Unicode platform - - - - - Script manager code - - - - - [deprecated] ISO encoding - - - - - Window encoding - - - - - Custom platform - - - - - Defines modes to determine when line breaks should appear when words overflow - their content box. - - - - - Use the default line break rule. - - - - - To prevent overflow, word breaks should be inserted between any two - characters (excluding Chinese/Japanese/Korean text). - - - - - Word breaks should not be used for Chinese/Japanese/Korean (CJK) text. - Non-CJK text behavior is the same as for - - - - - Provides methods to protect against invalid parameters for a DEBUG build. - - - - - Ensures that the value is not null. - - The target object, which cannot be null. - The name of the parameter that is to be checked. - The type of the value. - is null. - - - - Ensures that the target value is not null, empty, or whitespace. - - The target string, which should be checked against being null or empty. - Name of the parameter. - is null. - is empty or contains only blanks. - - - - Ensures that the specified value is less than a maximum value. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - The type of the value. - - is greater than the maximum value. - - - - - Verifies that the specified value is less than or equal to a maximum value - and throws an exception if it is not. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - The type of the value. - - is greater than the maximum value. - - - - - Verifies that the specified value is greater than a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - The type of the value. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - The type of the value. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value and less than - or equal to a maximum value and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The maximum value. - The name of the parameter that is to be checked. - The type of the value. - - is less than the minimum value of greater than the maximum value. - - - - - Verifies, that the method parameter with specified target value is true - and throws an exception if it is found to be so. - - The target value, which cannot be false. - The name of the parameter that is to be checked. - The error message, if any to add to the exception. - - is false. - - - - - Verifies, that the method parameter with specified target value is false - and throws an exception if it is found to be so. - - The target value, which cannot be true. - The name of the parameter that is to be checked. - The error message, if any to add to the exception. - - is true. - - - - - Verifies, that the `source` span has the length of 'minLength', or longer. - - The element type of the spans. - The source span. - The minimum length. - The name of the parameter that is to be checked. - - has less than items. - - - - - Verifies, that the `source` span has the length of 'minLength', or longer. - - The element type of the spans. - The target span. - The minimum length. - The name of the parameter that is to be checked. - - has less than items. - - - - - Verifies that the 'destination' span is not shorter than 'source'. - - The source element type. - The destination element type. - The source span. - The destination span. - The name of the argument for 'destination'. - - - - Verifies that the 'destination' span is not shorter than 'source'. - - The source element type. - The destination element type. - The source span. - The destination span. - The name of the argument for 'destination'. - - - - Provides methods to protect against invalid parameters. - - - Provides methods to protect against invalid parameters. - - - - - Ensures that the value is not null. - - The target object, which cannot be null. - The name of the parameter that is to be checked. - The type of the value. - is null. - - - - Ensures that the target value is not null, empty, or whitespace. - - The target string, which should be checked against being null or empty. - Name of the parameter. - is null. - is empty or contains only blanks. - - - - Ensures that the specified value is less than a maximum value. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - The type of the value. - - is greater than the maximum value. - - - - - Verifies that the specified value is less than or equal to a maximum value - and throws an exception if it is not. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - The type of the value. - - is greater than the maximum value. - - - - - Verifies that the specified value is greater than a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - The type of the value. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - The type of the value. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value and less than - or equal to a maximum value and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The maximum value. - The name of the parameter that is to be checked. - The type of the value. - - is less than the minimum value of greater than the maximum value. - - - - - Verifies, that the method parameter with specified target value is true - and throws an exception if it is found to be so. - - The target value, which cannot be false. - The name of the parameter that is to be checked. - The error message, if any to add to the exception. - - is false. - - - - - Verifies, that the method parameter with specified target value is false - and throws an exception if it is found to be so. - - The target value, which cannot be true. - The name of the parameter that is to be checked. - The error message, if any to add to the exception. - - is true. - - - - - Verifies, that the `source` span has the length of 'minLength', or longer. - - The element type of the spans. - The source span. - The minimum length. - The name of the parameter that is to be checked. - - has less than items. - - - - - Verifies, that the `source` span has the length of 'minLength', or longer. - - The element type of the spans. - The target span. - The minimum length. - The name of the parameter that is to be checked. - - has less than items. - - - - - Verifies that the 'destination' span is not shorter than 'source'. - - The source element type. - The destination element type. - The source span. - The destination span. - The name of the argument for 'destination'. - - - - Verifies that the 'destination' span is not shorter than 'source'. - - The source element type. - The destination element type. - The source span. - The destination span. - The name of the argument for 'destination'. - - - - Ensures that the specified value is less than a maximum value. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - - is greater than the maximum value. - - - - - Verifies that the specified value is less than or equal to a maximum value - and throws an exception if it is not. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - - is greater than the maximum value. - - - - - Verifies that the specified value is greater than a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value and less than - or equal to a maximum value and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The maximum value. - The name of the parameter that is to be checked. - - is less than the minimum value of greater than the maximum value. - - - - - Ensures that the specified value is less than a maximum value. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - - is greater than the maximum value. - - - - - Verifies that the specified value is less than or equal to a maximum value - and throws an exception if it is not. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - - is greater than the maximum value. - - - - - Verifies that the specified value is greater than a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value and less than - or equal to a maximum value and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The maximum value. - The name of the parameter that is to be checked. - - is less than the minimum value of greater than the maximum value. - - - - - Ensures that the specified value is less than a maximum value. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - - is greater than the maximum value. - - - - - Verifies that the specified value is less than or equal to a maximum value - and throws an exception if it is not. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - - is greater than the maximum value. - - - - - Verifies that the specified value is greater than a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value and less than - or equal to a maximum value and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The maximum value. - The name of the parameter that is to be checked. - - is less than the minimum value of greater than the maximum value. - - - - - Ensures that the specified value is less than a maximum value. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - - is greater than the maximum value. - - - - - Verifies that the specified value is less than or equal to a maximum value - and throws an exception if it is not. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - - is greater than the maximum value. - - - - - Verifies that the specified value is greater than a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value and less than - or equal to a maximum value and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The maximum value. - The name of the parameter that is to be checked. - - is less than the minimum value of greater than the maximum value. - - - - - Ensures that the specified value is less than a maximum value. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - - is greater than the maximum value. - - - - - Verifies that the specified value is less than or equal to a maximum value - and throws an exception if it is not. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - - is greater than the maximum value. - - - - - Verifies that the specified value is greater than a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value and less than - or equal to a maximum value and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The maximum value. - The name of the parameter that is to be checked. - - is less than the minimum value of greater than the maximum value. - - - - - Ensures that the specified value is less than a maximum value. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - - is greater than the maximum value. - - - - - Verifies that the specified value is less than or equal to a maximum value - and throws an exception if it is not. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - - is greater than the maximum value. - - - - - Verifies that the specified value is greater than a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value and less than - or equal to a maximum value and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The maximum value. - The name of the parameter that is to be checked. - - is less than the minimum value of greater than the maximum value. - - - - - Ensures that the specified value is less than a maximum value. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - - is greater than the maximum value. - - - - - Verifies that the specified value is less than or equal to a maximum value - and throws an exception if it is not. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - - is greater than the maximum value. - - - - - Verifies that the specified value is greater than a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value and less than - or equal to a maximum value and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The maximum value. - The name of the parameter that is to be checked. - - is less than the minimum value of greater than the maximum value. - - - - - Ensures that the specified value is less than a maximum value. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - - is greater than the maximum value. - - - - - Verifies that the specified value is less than or equal to a maximum value - and throws an exception if it is not. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - - is greater than the maximum value. - - - - - Verifies that the specified value is greater than a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value and less than - or equal to a maximum value and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The maximum value. - The name of the parameter that is to be checked. - - is less than the minimum value of greater than the maximum value. - - - - - Ensures that the specified value is less than a maximum value. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - - is greater than the maximum value. - - - - - Verifies that the specified value is less than or equal to a maximum value - and throws an exception if it is not. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - - is greater than the maximum value. - - - - - Verifies that the specified value is greater than a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value and less than - or equal to a maximum value and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The maximum value. - The name of the parameter that is to be checked. - - is less than the minimum value of greater than the maximum value. - - - - - Ensures that the specified value is less than a maximum value. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - - is greater than the maximum value. - - - - - Verifies that the specified value is less than or equal to a maximum value - and throws an exception if it is not. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - - is greater than the maximum value. - - - - - Verifies that the specified value is greater than a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value and less than - or equal to a maximum value and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The maximum value. - The name of the parameter that is to be checked. - - is less than the minimum value of greater than the maximum value. - - - - - Ensures that the specified value is less than a maximum value. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - - is greater than the maximum value. - - - - - Verifies that the specified value is less than or equal to a maximum value - and throws an exception if it is not. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - - is greater than the maximum value. - - - - - Verifies that the specified value is greater than a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value and less than - or equal to a maximum value and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The maximum value. - The name of the parameter that is to be checked. - - is less than the minimum value of greater than the maximum value. - - - - - Ensures that the specified value is less than a maximum value. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - - is greater than the maximum value. - - - - - Verifies that the specified value is less than or equal to a maximum value - and throws an exception if it is not. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - - is greater than the maximum value. - - - - - Verifies that the specified value is greater than a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value and less than - or equal to a maximum value and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The maximum value. - The name of the parameter that is to be checked. - - is less than the minimum value of greater than the maximum value. - - - - - Helper methods to throw exceptions - - - - - Throws an when fails. - - - - - Throws an when fails. - - - - - Throws an when fails. - - - - - Throws an when fails. - - - - - Throws an when fails. - - - - - Throws an when fails. - - - - - Throws an when fails. - - - - - Throws an when fails. - - - - - Throws a new . - - The message to include in the exception. - The argument name. - Thrown with and . - - - - Throws a new . - - The argument name. - The message to include in the exception. - Thrown with and . - - - - Throws a new . - - The argument name. - The message to include in the exception. - Thrown with and . - - - diff --git a/pyaedt/dlls/PDFReport/SixLabors.ImageSharp.dll b/pyaedt/dlls/PDFReport/SixLabors.ImageSharp.dll deleted file mode 100644 index 109ac6d7f31e503e3fed9c93475682b69b0cd6b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1229824 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%0A;o@PK|14{+W=UD%~`dQ{JtoTIe2 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

Ijs*1-<9fPA2XYMM;dR9Hj2_~cdt6WN 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�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�&Z>jKHpfyZVnDTOfq{3 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%0DK8UdNE)Q;EOz>p8+}mlK?N|B5puE;ENoh zUjW>IV!$&nzFPpN0FGuMJpctT0`LrWVr&AO0{9rEb~9ippa}3Zgmf-oHsAvY?gl^` zARoZLqPhl92KXI>dp%$=0Mn%OCnMY30A~Vf z0I{pNBNPoqIxyMp;IH6t#p-*E;~4Ka(EWdrcge%Ctma8uKLb zf|ROd6L)417pFfFP<-O6cYew`K+EVgnt|TJI{K1QXamir z$IyQNnB4R>71H;qg$`0V-9usen6l_1wEe%Klj(L^Nq?eIbRGHyuh1#SzQr48#P-tn=quFK z^;Aob(h2k2H)vmrxTugMP}-sS`b^vFHtb8(KJ%9!B5i zpP0)UDqTreO0C#i|2#b}Iq)slPTDC&C?b7ApGev0m2IW1(i!;j=P7zhnu?y=&**2; zDq1D|nf@$|#=`RTbiMQ~`j+%6y(*oGuh1T%hop1qT5tL~^!~1)YosN#M0$x{k}9#2{eJW)*W&B0Pw7+4E)0<_qsyd) zv`~7Mo|UH4bm~pA96ik=bVNFhPLm#?N2K%UJgJ}hp)57f zg%y~fY9&=CXyF@wl;E76n1hW)zRZLLG&D#P^tv$8?*0#qgM}$MrX+*D2s)h-+!1-vWpG7-8 z9Iy;+^=)XU|BQCp30RAE`T?}l8GuD-r!PbMJPvR++UIRhy0_3K+W=v-#kSL2dXq09^?VI(4|Vz@c`RQq`8IX4H#qxsh zk7hTbX7RPXM)S+zFwR#D=O=@9u^w=GSQkhg)#r(x+i|61Z2>d@W&tVz*eFEP08;?i$jiHn`D-BF8qAyVcng|XIK*x+G3SFF2D~qt zcXW$+pDz&4CxG_=ZvkEbJP&vV@GHQhfCmA)0CxlK0PFzV0=N-y17I8AD!>(hO95K} zTL7B?8v*M9-vgWr=mD$&L;$M+LBJ}2AK(Lc0Se$d0GM_3yNH$mS^)-|2v*Zx+%r z3%_aCG7IPUOvq_D?sL$eZbctPncrLE8gn` z*O@4nFv9VpPp=}(Aj&HQ7mTsspJ(mD;0U5*19(Qk7ZRn*9CumvK!_636a|+b^!6kn zZ4*2;l$rMD#OQ#_?>?kmLJu*7-gGD84k8rRpIVZEtC&li2F!=PcL0CA0#`*Ex)GZS zof_!gDN?E+6){&2I70|Ef?j)Pe5q1c<=tdbt6D07jhsk;0K+}mL~&OSZDpAFo6RS6xaMY%`dw-bC? jZ8=stSRc6l{rCC?C2&_E`U0@wv%bMF{~Of*Hxl?i!0gxy diff --git a/pyaedt/dlls/PDFReport/SixLabors.ImageSharp.xml b/pyaedt/dlls/PDFReport/SixLabors.ImageSharp.xml deleted file mode 100644 index 41f3245b87e..00000000000 --- a/pyaedt/dlls/PDFReport/SixLabors.ImageSharp.xml +++ /dev/null @@ -1,53893 +0,0 @@ - - - - SixLabors.ImageSharp - - - -

- Extension methods over Image{TPixel} - - - - - For a given file path find the best encoder to use via its extension. - - The source image. - The target file path to save the image to. - The file path is null. - No encoder available for provided path. - The matching . - - - - Accepts a to implement a double-dispatch pattern in order to - apply pixel-specific operations on non-generic instances - - The source image. - The image visitor. - - - - Accepts a to implement a double-dispatch pattern in order to - apply pixel-specific operations on non-generic instances - - The source image. - The image visitor. - The token to monitor for cancellation requests. - A representing the asynchronous operation. - - - - Gets the configuration for the image. - - The source image. - Returns the configuration. - - - - Gets the configuration for the image frame. - - The source image. - Returns the configuration. - - - - Gets the configuration. - - The source image - Returns the bounds of the image - - - - Gets the representation of the pixels as a containing the backing pixel data of the image - stored in row major order, as a list of contiguous blocks in the source image's pixel format. - - The source image. - The type of the pixel. - The . - - Certain Image Processors may invalidate the returned and all it's buffers, - therefore it's not recommended to mutate the image while holding a reference to it's . - - - - - Gets the representation of the pixels as a containing the backing pixel data of the image - stored in row major order, as a list of contiguous blocks in the source image's pixel format. - - The source image. - The type of the pixel. - The . - - Certain Image Processors may invalidate the returned and all it's buffers, - therefore it's not recommended to mutate the image while holding a reference to it's . - - - - - Gets the representation of the pixels as a of contiguous memory - at row beginning from the the first pixel on that row. - - The type of the pixel. - The source. - The row. - The - - - - Gets the representation of the pixels as of of contiguous memory - at row beginning from the the first pixel on that row. - - The type of the pixel. - The source. - The row. - The - - - - Gets the assigned to 'source'. - - The source image. - Returns the configuration. - - - - Unlike traditional Mono/.NET, code on the iPhone is statically compiled ahead of time instead of being - compiled on demand by a JIT compiler. This means there are a few limitations with respect to generics, - these are caused because not every possible generic instantiation can be determined up front at compile time. - The Aot Compiler is designed to overcome the limitations of this compiler. - None of the methods in this class should ever be called, the code only has to exist at compile-time to be picked up by the AoT compiler. - (Very similar to the LinkerIncludes.cs technique used in Xamarin.Android projects.) - - - - - This is the method that seeds the AoT compiler. - None of these seed methods needs to actually be called to seed the compiler. - The calls just need to be present when the code is compiled, and each implementation will be built. - - - - - Seeds the compiler using the given pixel format. - - The pixel format. - - - - This method doesn't actually do anything but serves an important purpose... - If you are running ImageSharp on iOS and try to call SaveAsGif, it will throw an exception: - "Attempting to JIT compile method... OctreeFrameQuantizer.ConstructPalette... while running in aot-only mode." - The reason this happens is the SaveAsGif method makes heavy use of generics, which are too confusing for the AoT - compiler used on Xamarin.iOS. It spins up the JIT compiler to try and figure it out, but that is an illegal op on - iOS so it bombs out. - If you are getting the above error, you need to call this method, which will pre-seed the AoT compiler with the - necessary methods to complete the SaveAsGif call. That's it, otherwise you should NEVER need this method!!! - - The pixel format. - - - - This method pre-seeds the WuQuantizer in the AoT compiler for iOS. - - The pixel format. - - - - This method pre-seeds the PaletteQuantizer in the AoT compiler for iOS. - - The pixel format. - - - - This method pre-seeds the default dithering engine (FloydSteinbergDiffuser) in the AoT compiler for iOS. - - The pixel format. - - - - This method pre-seeds the decoder and encoder for a given pixel format in the AoT compiler for iOS. - - The image decoder to seed. - The image encoder to seed. - The pixel format. - - - - This method pre-seeds the PixelOperations engine for the AoT compiler on iOS. - - The pixel format. - - - - Defines the contract for objects that can provide access to configuration. - - - - - Gets the configuration which allows altering default behaviour or extending the library. - - - - - A visitor to implement a double-dispatch pattern in order to apply pixel-specific operations - on non-generic instances. - - - - - Provides a pixel-specific implementation for a given operation. - - The image. - The pixel type. - - - - A visitor to implement a double-dispatch pattern in order to apply pixel-specific operations - on non-generic instances. - - - - - Provides a pixel-specific implementation for a given operation. - - The image. - The token to monitor for cancellation requests. - The pixel type. - A representing the asynchronous operation. - - - - Encapsulates the basic properties and methods required to manipulate images. - - - - - Gets the pixel buffer. - - - - - Encapsulates the basic properties and methods required to manipulate images. - - The type of the pixel. - - - - Gets the pixel buffer. - - - - - Defines the contract for an action that operates on a row interval. - - - - - Invokes the method passing the row interval. - - The row interval. - - - - Defines the contract for an action that operates on a row interval with a temporary buffer. - - The type of buffer elements. - - - - Invokes the method passing the row interval and a buffer. - - The row interval. - The contiguous region of memory. - - - - Defines the contract for an action that operates on a row. - - - - - Invokes the method passing the row y coordinate. - - The row y coordinate. - - - - Defines the contract for an action that operates on a row with a temporary buffer. - - The type of buffer elements. - - - - Invokes the method passing the row and a buffer. - - The row y coordinate. - The contiguous region of memory. - - - - Defines execution settings for methods in . - - - - - Default value for . - - - - - Initializes a new instance of the struct. - - The value used for initializing when using TPL. - The value for . - The . - - - - Initializes a new instance of the struct. - - The value used for initializing when using TPL. - The . - - - - Gets the . - - - - - Gets the value used for initializing when using TPL. - - - - - Gets the minimum number of pixels being processed by a single task when parallelizing operations with TPL. - Launching tasks for pixel regions below this limit is not worth the overhead. - Initialized with by default, - the optimum value is operation specific. (The cheaper the operation, the larger the value is.) - - - - - Creates a new instance of - having multiplied by - - The value to multiply with. - The modified . - - - - Get the default for a - - The . - The . - - - - Utility methods for batched processing of pixel row intervals. - Parallel execution is optimized for image processing based on values defined - or . - Using this class is preferred over direct usage of utility methods. - - - Utility methods for batched processing of pixel row intervals. - Parallel execution is optimized for image processing based on values defined - or . - Using this class is preferred over direct usage of utility methods. - - - - - Iterate through the rows of a rectangle in optimized batches. - - The type of row operation to perform. - The to get the parallel settings from. - The . - The operation defining the iteration logic on a single row. - - - - Iterate through the rows of a rectangle in optimized batches. - - The type of row operation to perform. - The . - The . - The operation defining the iteration logic on a single row. - - - - Iterate through the rows of a rectangle in optimized batches. - instantiating a temporary buffer for each invocation. - - The type of row operation to perform. - The type of buffer elements. - The to get the parallel settings from. - The . - The operation defining the iteration logic on a single row. - - - - Iterate through the rows of a rectangle in optimized batches. - instantiating a temporary buffer for each invocation. - - The type of row operation to perform. - The type of buffer elements. - The . - The . - The operation defining the iteration logic on a single row. - - - - Iterate through the rows of a rectangle in optimized batches defined by -s. - - The type of row operation to perform. - The to get the parallel settings from. - The . - The operation defining the iteration logic on a single . - - - - Iterate through the rows of a rectangle in optimized batches defined by -s. - - The type of row operation to perform. - The . - The . - The operation defining the iteration logic on a single . - - - - Iterate through the rows of a rectangle in optimized batches defined by -s - instantiating a temporary buffer for each invocation. - - The type of row operation to perform. - The type of buffer elements. - The to get the parallel settings from. - The . - The operation defining the iteration logic on a single . - - - - Iterate through the rows of a rectangle in optimized batches defined by -s - instantiating a temporary buffer for each invocation. - - The type of row operation to perform. - The type of buffer elements. - The . - The . - The operation defining the iteration logic on a single . - - - - Contains constructors and implicit conversion methods. - - - Represents a color value that is convertible to any type. - - - The internal representation and layout of this structure is hidden by intention. - It's not serializable, and it should not be considered as part of a contract. - Unlike System.Drawing.Color, has to be converted to a specific pixel value - to query the color components. - - - Contains static named color values. - - - - Contains the definition of . - - - Contains the definition of . - - - - - Initializes a new instance of the struct. - - The containing the color information. - - - - Initializes a new instance of the struct. - - The containing the color information. - - - - Initializes a new instance of the struct. - - The containing the color information. - - - - Initializes a new instance of the struct. - - The containing the color information. - - - - Initializes a new instance of the struct. - - The containing the color information. - - - - Initializes a new instance of the struct. - - The containing the color information. - - - - Initializes a new instance of the struct. - - The containing the color information. - - - - Converts a to . - - The . - The . - - - - Converts an to . - - The . - The . - - - - Checks whether two structures are equal. - - The left hand operand. - The right hand operand. - - True if the parameter is equal to the parameter; - otherwise, false. - - - - - Checks whether two structures are equal. - - The left hand operand. - The right hand operand. - - True if the parameter is not equal to the parameter; - otherwise, false. - - - - - Creates a from RGBA bytes. - - The red component (0-255). - The green component (0-255). - The blue component (0-255). - The alpha component (0-255). - The . - - - - Creates a from RGB bytes. - - The red component (0-255). - The green component (0-255). - The blue component (0-255). - The . - - - - Creates a new instance of the struct - from the given hexadecimal string. - - - The hexadecimal representation of the combined color components arranged - in rgb, rgba, rrggbb, or rrggbbaa format to match web syntax. - - - The . - - - - - Attempts to creates a new instance of the struct - from the given hexadecimal string. - - - The hexadecimal representation of the combined color components arranged - in rgb, rgba, rrggbb, or rrggbbaa format to match web syntax. - - When this method returns, contains the equivalent of the hexadecimal input. - - The . - - - - - Creates a new instance of the struct - from the given input string. - - - The name of the color or the hexadecimal representation of the combined color components arranged - in rgb, rgba, rrggbb, or rrggbbaa format to match web syntax. - - - The . - - - - - Attempts to creates a new instance of the struct - from the given input string. - - - The name of the color or the hexadecimal representation of the combined color components arranged - in rgb, rgba, rrggbb, or rrggbbaa format to match web syntax. - - When this method returns, contains the equivalent of the hexadecimal input. - - The . - - - - - Alters the alpha channel of the color, returning a new instance. - - The new value of alpha [0..1]. - The color having it's alpha channel altered. - - - - Gets the hexadecimal representation of the color instance in rrggbbaa form. - - A hexadecimal string representation of the value. - - - - - - - Converts the color instance to a specified type. - - The pixel type to convert to. - The pixel value. - - - - Bulk converts a span of to a span of a specified type. - - The pixel type to convert to. - The configuration. - The source color span. - The destination pixel span. - - - - - - - - - - - - - Represents a matching the W3C definition that has an hex value of #F0F8FF. - - - - - Represents a matching the W3C definition that has an hex value of #FAEBD7. - - - - - Represents a matching the W3C definition that has an hex value of #00FFFF. - - - - - Represents a matching the W3C definition that has an hex value of #7FFFD4. - - - - - Represents a matching the W3C definition that has an hex value of #F0FFFF. - - - - - Represents a matching the W3C definition that has an hex value of #F5F5DC. - - - - - Represents a matching the W3C definition that has an hex value of #FFE4C4. - - - - - Represents a matching the W3C definition that has an hex value of #000000. - - - - - Represents a matching the W3C definition that has an hex value of #FFEBCD. - - - - - Represents a matching the W3C definition that has an hex value of #0000FF. - - - - - Represents a matching the W3C definition that has an hex value of #8A2BE2. - - - - - Represents a matching the W3C definition that has an hex value of #A52A2A. - - - - - Represents a matching the W3C definition that has an hex value of #DEB887. - - - - - Represents a matching the W3C definition that has an hex value of #5F9EA0. - - - - - Represents a matching the W3C definition that has an hex value of #7FFF00. - - - - - Represents a matching the W3C definition that has an hex value of #D2691E. - - - - - Represents a matching the W3C definition that has an hex value of #FF7F50. - - - - - Represents a matching the W3C definition that has an hex value of #6495ED. - - - - - Represents a matching the W3C definition that has an hex value of #FFF8DC. - - - - - Represents a matching the W3C definition that has an hex value of #DC143C. - - - - - Represents a matching the W3C definition that has an hex value of #00FFFF. - - - - - Represents a matching the W3C definition that has an hex value of #00008B. - - - - - Represents a matching the W3C definition that has an hex value of #008B8B. - - - - - Represents a matching the W3C definition that has an hex value of #B8860B. - - - - - Represents a matching the W3C definition that has an hex value of #A9A9A9. - - - - - Represents a matching the W3C definition that has an hex value of #006400. - - - - - Represents a matching the W3C definition that has an hex value of #A9A9A9. - - - - - Represents a matching the W3C definition that has an hex value of #BDB76B. - - - - - Represents a matching the W3C definition that has an hex value of #8B008B. - - - - - Represents a matching the W3C definition that has an hex value of #556B2F. - - - - - Represents a matching the W3C definition that has an hex value of #FF8C00. - - - - - Represents a matching the W3C definition that has an hex value of #9932CC. - - - - - Represents a matching the W3C definition that has an hex value of #8B0000. - - - - - Represents a matching the W3C definition that has an hex value of #E9967A. - - - - - Represents a matching the W3C definition that has an hex value of #8FBC8F. - - - - - Represents a matching the W3C definition that has an hex value of #483D8B. - - - - - Represents a matching the W3C definition that has an hex value of #2F4F4F. - - - - - Represents a matching the W3C definition that has an hex value of #2F4F4F. - - - - - Represents a matching the W3C definition that has an hex value of #00CED1. - - - - - Represents a matching the W3C definition that has an hex value of #9400D3. - - - - - Represents a matching the W3C definition that has an hex value of #FF1493. - - - - - Represents a matching the W3C definition that has an hex value of #00BFFF. - - - - - Represents a matching the W3C definition that has an hex value of #696969. - - - - - Represents a matching the W3C definition that has an hex value of #696969. - - - - - Represents a matching the W3C definition that has an hex value of #1E90FF. - - - - - Represents a matching the W3C definition that has an hex value of #B22222. - - - - - Represents a matching the W3C definition that has an hex value of #FFFAF0. - - - - - Represents a matching the W3C definition that has an hex value of #228B22. - - - - - Represents a matching the W3C definition that has an hex value of #FF00FF. - - - - - Represents a matching the W3C definition that has an hex value of #DCDCDC. - - - - - Represents a matching the W3C definition that has an hex value of #F8F8FF. - - - - - Represents a matching the W3C definition that has an hex value of #FFD700. - - - - - Represents a matching the W3C definition that has an hex value of #DAA520. - - - - - Represents a matching the W3C definition that has an hex value of #808080. - - - - - Represents a matching the W3C definition that has an hex value of #008000. - - - - - Represents a matching the W3C definition that has an hex value of #ADFF2F. - - - - - Represents a matching the W3C definition that has an hex value of #808080. - - - - - Represents a matching the W3C definition that has an hex value of #F0FFF0. - - - - - Represents a matching the W3C definition that has an hex value of #FF69B4. - - - - - Represents a matching the W3C definition that has an hex value of #CD5C5C. - - - - - Represents a matching the W3C definition that has an hex value of #4B0082. - - - - - Represents a matching the W3C definition that has an hex value of #FFFFF0. - - - - - Represents a matching the W3C definition that has an hex value of #F0E68C. - - - - - Represents a matching the W3C definition that has an hex value of #E6E6FA. - - - - - Represents a matching the W3C definition that has an hex value of #FFF0F5. - - - - - Represents a matching the W3C definition that has an hex value of #7CFC00. - - - - - Represents a matching the W3C definition that has an hex value of #FFFACD. - - - - - Represents a matching the W3C definition that has an hex value of #ADD8E6. - - - - - Represents a matching the W3C definition that has an hex value of #F08080. - - - - - Represents a matching the W3C definition that has an hex value of #E0FFFF. - - - - - Represents a matching the W3C definition that has an hex value of #FAFAD2. - - - - - Represents a matching the W3C definition that has an hex value of #D3D3D3. - - - - - Represents a matching the W3C definition that has an hex value of #90EE90. - - - - - Represents a matching the W3C definition that has an hex value of #D3D3D3. - - - - - Represents a matching the W3C definition that has an hex value of #FFB6C1. - - - - - Represents a matching the W3C definition that has an hex value of #FFA07A. - - - - - Represents a matching the W3C definition that has an hex value of #20B2AA. - - - - - Represents a matching the W3C definition that has an hex value of #87CEFA. - - - - - Represents a matching the W3C definition that has an hex value of #778899. - - - - - Represents a matching the W3C definition that has an hex value of #778899. - - - - - Represents a matching the W3C definition that has an hex value of #B0C4DE. - - - - - Represents a matching the W3C definition that has an hex value of #FFFFE0. - - - - - Represents a matching the W3C definition that has an hex value of #00FF00. - - - - - Represents a matching the W3C definition that has an hex value of #32CD32. - - - - - Represents a matching the W3C definition that has an hex value of #FAF0E6. - - - - - Represents a matching the W3C definition that has an hex value of #FF00FF. - - - - - Represents a matching the W3C definition that has an hex value of #800000. - - - - - Represents a matching the W3C definition that has an hex value of #66CDAA. - - - - - Represents a matching the W3C definition that has an hex value of #0000CD. - - - - - Represents a matching the W3C definition that has an hex value of #BA55D3. - - - - - Represents a matching the W3C definition that has an hex value of #9370DB. - - - - - Represents a matching the W3C definition that has an hex value of #3CB371. - - - - - Represents a matching the W3C definition that has an hex value of #7B68EE. - - - - - Represents a matching the W3C definition that has an hex value of #00FA9A. - - - - - Represents a matching the W3C definition that has an hex value of #48D1CC. - - - - - Represents a matching the W3C definition that has an hex value of #C71585. - - - - - Represents a matching the W3C definition that has an hex value of #191970. - - - - - Represents a matching the W3C definition that has an hex value of #F5FFFA. - - - - - Represents a matching the W3C definition that has an hex value of #FFE4E1. - - - - - Represents a matching the W3C definition that has an hex value of #FFE4B5. - - - - - Represents a matching the W3C definition that has an hex value of #FFDEAD. - - - - - Represents a matching the W3C definition that has an hex value of #000080. - - - - - Represents a matching the W3C definition that has an hex value of #FDF5E6. - - - - - Represents a matching the W3C definition that has an hex value of #808000. - - - - - Represents a matching the W3C definition that has an hex value of #6B8E23. - - - - - Represents a matching the W3C definition that has an hex value of #FFA500. - - - - - Represents a matching the W3C definition that has an hex value of #FF4500. - - - - - Represents a matching the W3C definition that has an hex value of #DA70D6. - - - - - Represents a matching the W3C definition that has an hex value of #EEE8AA. - - - - - Represents a matching the W3C definition that has an hex value of #98FB98. - - - - - Represents a matching the W3C definition that has an hex value of #AFEEEE. - - - - - Represents a matching the W3C definition that has an hex value of #DB7093. - - - - - Represents a matching the W3C definition that has an hex value of #FFEFD5. - - - - - Represents a matching the W3C definition that has an hex value of #FFDAB9. - - - - - Represents a matching the W3C definition that has an hex value of #CD853F. - - - - - Represents a matching the W3C definition that has an hex value of #FFC0CB. - - - - - Represents a matching the W3C definition that has an hex value of #DDA0DD. - - - - - Represents a matching the W3C definition that has an hex value of #B0E0E6. - - - - - Represents a matching the W3C definition that has an hex value of #800080. - - - - - Represents a matching the W3C definition that has an hex value of #663399. - - - - - Represents a matching the W3C definition that has an hex value of #FF0000. - - - - - Represents a matching the W3C definition that has an hex value of #BC8F8F. - - - - - Represents a matching the W3C definition that has an hex value of #4169E1. - - - - - Represents a matching the W3C definition that has an hex value of #8B4513. - - - - - Represents a matching the W3C definition that has an hex value of #FA8072. - - - - - Represents a matching the W3C definition that has an hex value of #F4A460. - - - - - Represents a matching the W3C definition that has an hex value of #2E8B57. - - - - - Represents a matching the W3C definition that has an hex value of #FFF5EE. - - - - - Represents a matching the W3C definition that has an hex value of #A0522D. - - - - - Represents a matching the W3C definition that has an hex value of #C0C0C0. - - - - - Represents a matching the W3C definition that has an hex value of #87CEEB. - - - - - Represents a matching the W3C definition that has an hex value of #6A5ACD. - - - - - Represents a matching the W3C definition that has an hex value of #708090. - - - - - Represents a matching the W3C definition that has an hex value of #708090. - - - - - Represents a matching the W3C definition that has an hex value of #FFFAFA. - - - - - Represents a matching the W3C definition that has an hex value of #00FF7F. - - - - - Represents a matching the W3C definition that has an hex value of #4682B4. - - - - - Represents a matching the W3C definition that has an hex value of #D2B48C. - - - - - Represents a matching the W3C definition that has an hex value of #008080. - - - - - Represents a matching the W3C definition that has an hex value of #D8BFD8. - - - - - Represents a matching the W3C definition that has an hex value of #FF6347. - - - - - Represents a matching the W3C definition that has an hex value of #00000000. - - - - - Represents a matching the W3C definition that has an hex value of #40E0D0. - - - - - Represents a matching the W3C definition that has an hex value of #EE82EE. - - - - - Represents a matching the W3C definition that has an hex value of #F5DEB3. - - - - - Represents a matching the W3C definition that has an hex value of #FFFFFF. - - - - - Represents a matching the W3C definition that has an hex value of #F5F5F5. - - - - - Represents a matching the W3C definition that has an hex value of #FFFF00. - - - - - Represents a matching the W3C definition that has an hex value of #9ACD32. - - - - - Gets a collection of named, web safe colors as defined in the CSS Color Module Level 4. - - - - - Gets a collection of colors as defined in the original second edition of Werner’s Nomenclature of Colours 1821. - The hex codes were collected and defined by Nicholas Rougeux . - - - - - Represents a CIE L*a*b* 1976 color. - - - - - - D50 standard illuminant. - Used when reference white is not specified explicitly. - - - - - Gets the lightness dimension. - A value usually ranging between 0 (black), 100 (diffuse white) or higher (specular white). - - - - - Gets the a color component. - A value usually ranging from -100 to 100. Negative is green, positive magenta. - - - - - Gets the b color component. - A value usually ranging from -100 to 100. Negative is blue, positive is yellow - - - - - Gets the reference white point of this color - - - - - Initializes a new instance of the struct. - - The lightness dimension. - The a (green - magenta) component. - The b (blue - yellow) component. - Uses as white point. - - - - Initializes a new instance of the struct. - - The lightness dimension. - The a (green - magenta) component. - The b (blue - yellow) component. - The reference white point. - - - - Initializes a new instance of the struct. - - The vector representing the l, a, b components. - Uses as white point. - - - - Initializes a new instance of the struct. - - The vector representing the l, a, b components. - The reference white point. - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the current left is equal to the parameter; otherwise, false. - - - - - Compares two objects for inequality - - The on the left side of the operand. - The on the right side of the operand. - - True if the current left is unequal to the parameter; otherwise, false. - - - - - - - - - - - - - - - - - Represents the CIE L*C*h°, cylindrical form of the CIE L*a*b* 1976 color. - - - - - - D50 standard illuminant. - Used when reference white is not specified explicitly. - - - - - Gets the lightness dimension. - A value ranging between 0 (black), 100 (diffuse white) or higher (specular white). - - - - - Gets the a chroma component. - A value ranging from 0 to 200. - - - - - Gets the h° hue component in degrees. - A value ranging from 0 to 360. - - - - - Gets the reference white point of this color - - - - - Initializes a new instance of the struct. - - The lightness dimension. - The chroma, relative saturation. - The hue in degrees. - Uses as white point. - - - - Initializes a new instance of the struct. - - The lightness dimension. - The chroma, relative saturation. - The hue in degrees. - The reference white point. - - - - Initializes a new instance of the struct. - - The vector representing the l, c, h components. - Uses as white point. - - - - Initializes a new instance of the struct. - - The vector representing the l, c, h components. - The reference white point. - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the current left is equal to the parameter; otherwise, false. - - - - - Compares two objects for inequality - - The on the left side of the operand. - The on the right side of the operand. - - True if the current left is unequal to the parameter; otherwise, false. - - - - - - - - - - - - - - - - - Computes the saturation of the color (chroma normalized by lightness) - - - A value ranging from 0 to 100. - - The - - - - Represents the CIE L*C*h°, cylindrical form of the CIE L*u*v* 1976 color. - - - - - - D50 standard illuminant. - Used when reference white is not specified explicitly. - - - - - Gets the lightness dimension. - A value ranging between 0 (black), 100 (diffuse white) or higher (specular white). - - - - - Gets the a chroma component. - A value ranging from 0 to 200. - - - - - Gets the h° hue component in degrees. - A value ranging from 0 to 360. - - - - - Gets the reference white point of this color - - - - - Initializes a new instance of the struct. - - The lightness dimension. - The chroma, relative saturation. - The hue in degrees. - Uses as white point. - - - - Initializes a new instance of the struct. - - The lightness dimension. - The chroma, relative saturation. - The hue in degrees. - The reference white point. - - - - Initializes a new instance of the struct. - - The vector representing the l, c, h components. - Uses as white point. - - - - Initializes a new instance of the struct. - - The vector representing the l, c, h components. - The reference white point. - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the current left is equal to the parameter; otherwise, false. - - - - - Compares two objects for inequality - - The on the left side of the operand. - The on the right side of the operand. - - True if the current left is unequal to the parameter; otherwise, false. - - - - - - - - - - - - - - - - - Computes the saturation of the color (chroma normalized by lightness) - - - A value ranging from 0 to 100. - - The - - - - The CIE 1976 (L*, u*, v*) color space, commonly known by its abbreviation CIELUV, is a color space adopted by the International - Commission on Illumination (CIE) in 1976, as a simple-to-compute transformation of the 1931 CIE XYZ color space, but which - attempted perceptual uniformity - - - - - - D65 standard illuminant. - Used when reference white is not specified explicitly. - - - - - Gets the lightness dimension - A value usually ranging between 0 and 100. - - - - - Gets the blue-yellow chromaticity coordinate of the given whitepoint. - A value usually ranging between -100 and 100. - - - - - Gets the red-green chromaticity coordinate of the given whitepoint. - A value usually ranging between -100 and 100. - - - - - Gets the reference white point of this color - - - - - Initializes a new instance of the struct. - - The lightness dimension. - The blue-yellow chromaticity coordinate of the given whitepoint. - The red-green chromaticity coordinate of the given whitepoint. - Uses as white point. - - - - Initializes a new instance of the struct. - - The lightness dimension. - The blue-yellow chromaticity coordinate of the given whitepoint. - The red-green chromaticity coordinate of the given whitepoint. - The reference white point. - - - - Initializes a new instance of the struct. - - The vector representing the l, u, v components. - Uses as white point. - - - - Initializes a new instance of the struct. - - The vector representing the l, u, v components. - The reference white point. - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the current left is equal to the parameter; otherwise, false. - - - - - Compares two objects for inequality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the current left is unequal to the parameter; otherwise, false. - - - - - - - - - - - - - - - - - Represents an CIE xyY 1931 color - - - - - - Gets the X chrominance component. - A value usually ranging between 0 and 1. - - - - - Gets the Y chrominance component. - A value usually ranging between 0 and 1. - - - - - Gets the Y luminance component. - A value usually ranging between 0 and 1. - - - - - Initializes a new instance of the struct. - - The x chroma component. - The y chroma component. - The y luminance component. - - - - Initializes a new instance of the struct. - - The vector representing the x, y, Y components. - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the current left is equal to the parameter; otherwise, false. - - - - - Compares two objects for inequality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the current left is unequal to the parameter; otherwise, false. - - - - - - - - - - - - - - - - - Represents an CIE XYZ 1931 color - - - - - - Gets the X component. A mix (a linear combination) of cone response curves chosen to be nonnegative. - A value usually ranging between 0 and 1. - - - - - Gets the Y luminance component. - A value usually ranging between 0 and 1. - - - - - Gets the Z component. Quasi-equal to blue stimulation, or the S cone response. - A value usually ranging between 0 and 1. - - - - - Initializes a new instance of the struct. - - X is a mix (a linear combination) of cone response curves chosen to be nonnegative - The y luminance component. - Z is quasi-equal to blue stimulation, or the S cone of the human eye. - - - - Initializes a new instance of the struct. - - The vector representing the x, y, z components. - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the current left is equal to the parameter; otherwise, false. - - - - - Compares two objects for inequality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the current left is unequal to the parameter; otherwise, false. - - - - - Returns a new representing this instance. - - The . - - - - - - - - - - - - - - - - Represents an CMYK (cyan, magenta, yellow, keyline) color. - - - - - Gets the cyan color component. - A value ranging between 0 and 1. - - - - - Gets the magenta color component. - A value ranging between 0 and 1. - - - - - Gets the yellow color component. - A value ranging between 0 and 1. - - - - - Gets the keyline black color component. - A value ranging between 0 and 1. - - - - - Initializes a new instance of the struct. - - The cyan component. - The magenta component. - The yellow component. - The keyline black component. - - - - Initializes a new instance of the struct. - - The vector representing the c, m, y, k components. - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the current left is equal to the parameter; otherwise, false. - - - - - Compares two objects for inequality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the current left is unequal to the parameter; otherwise, false. - - - - - - - - - - - - - - - - - Implements gamma companding. - - - - - - - - - Expands a companded channel to its linear equivalent with respect to the energy. - - The channel value. - The gamma value. - The representing the linear channel value. - - - - Compresses an uncompanded channel (linear) to its nonlinear equivalent. - - The channel value. - The gamma value. - The representing the nonlinear channel value. - - - - Implements L* companding. - - - For more info see: - - - - - - - Expands a companded channel to its linear equivalent with respect to the energy. - - The channel value. - The representing the linear channel value. - - - - Compresses an uncompanded channel (linear) to its nonlinear equivalent. - - The channel value - The representing the nonlinear channel value. - - - - Implements Rec. 2020 companding function. - - - - - - - - Expands a companded channel to its linear equivalent with respect to the energy. - - The channel value. - The representing the linear channel value. - - - - Compresses an uncompanded channel (linear) to its nonlinear equivalent. - - The channel value. - The representing the nonlinear channel value. - - - - Implements the Rec. 709 companding function. - - - http://en.wikipedia.org/wiki/Rec._709 - - - - - Expands a companded channel to its linear equivalent with respect to the energy. - - The channel value. - The representing the linear channel value. - - - - Compresses an uncompanded channel (linear) to its nonlinear equivalent. - - The channel value. - The representing the nonlinear channel value. - - - - Implements sRGB companding. - - - For more info see: - - - - - - - Expands the companded vectors to their linear equivalents with respect to the energy. - - The span of vectors. - - - - Compresses the uncompanded vectors to their nonlinear equivalents with respect to the energy. - - The span of vectors. - - - - Expands a companded vector to its linear equivalent with respect to the energy. - - The vector. - - - - Compresses an uncompanded vector (linear) to its nonlinear equivalent. - - The vector. - - - - Expands a companded channel to its linear equivalent with respect to the energy. - - The channel value. - The representing the linear channel value. - - - - Compresses an uncompanded channel (linear) to its nonlinear equivalent. - - The channel value. - The representing the nonlinear channel value. - - - - Constants use for Cie conversion calculations - - - - - - 216F / 24389F - - - - - 24389F / 27F - - - - - Performs chromatic adaptation on the various color spaces. - - - Allows conversion to . - - - Allows conversion to . - - - Allows conversion to . - - - Allows conversion to . - - - Allows conversion to . - - - Allows conversion to . - - - Allows conversion to . - - - Provides methods to allow the conversion of color values between different color spaces. - - - Allows conversion to . - - - Allows conversion to . - - - Allows conversion to . - - - Allows conversion to . - - - Allows conversion to . - - - Allows conversion to . - - - Allows conversion to . - - - - - Performs chromatic adaptation of given color. - Target white point is . - - The color to adapt - The source white point. - The adapted color - - - - Performs chromatic adaptation of given color. - Target white point is . - - The color to adapt - The source white point. - The target white point. - The adapted color - - - - Adapts color from the source white point to white point set in . - - The color to adapt - The adapted color - - - - Adapts color from the source white point to white point set in . - - The color to adapt - The adapted color - - - - Adapts color from the source white point to white point set in . - - The color to adapt - The adapted color - - - - Adapts color from the source white point to white point set in . - - The color to adapt - The adapted color - - - - Adapts color from the source white point to white point set in . - - The color to adapt - The adapted color - - - - Adapts a color from the source working space to working space set in . - - The color to adapt - The adapted color - - - - Adapts an color from the source working space to working space set in . - - The color to adapt - The adapted color - - - - The converter for converting between CieLch to CieLab. - - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a - - The color to convert. - The - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Converts a into a - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - The converter for converting between CieLab to CieLch. - - - - - Converts a into a - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - The converter for converting between CieLab to CieLchuv. - - - - - Converts a into a - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors. - The span to the destination colors. - - - - Converts a into a - - The color to convert. - The - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Converts a into a - - The color to convert. - The - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Converts a into a - - The color to convert. - The - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Converts a into a - - The color to convert. - The - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Converts a into a - - The color to convert. - The - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Converts a into a - - The color to convert. - The - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Converts a into a - - The color to convert. - The - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Converts a into a - - The color to convert. - The - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Converts a into a - - The color to convert. - The - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Converts a into a - - The color to convert. - The - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Converts a into a - - The color to convert. - The - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Converts a into a - - The color to convert. - The - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Converts a into a - - The color to convert. - The - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors. - The span to the destination colors. - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors. - The span to the destination colors. - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a - - The color to convert. - The - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Converts a into a - - The color to convert. - The - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Gets the correct converter for the given rgb working space. - - The source working space - The - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a - - The color to convert. - The - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Converts a into a - - The color to convert. - The - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors, - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - The configuration options. - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Converts a into a - - The color to convert. - The - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Converts a into a - - The color to convert. - The - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Converts a into a - - The color to convert. - The - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a - - The color to convert. - The - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Converts a into a - - The color to convert. - The - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Converts a into a - - The color to convert. - The - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Converts a into a - - The color to convert. - The - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Converts a into a - - The color to convert. - The - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Converts a into a - - The color to convert. - The - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Converts a into a - - The color to convert. - The - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Converts a into a - - The color to convert. - The - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors. - - - - Converts a into a - - The color to convert. - The - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Converts a into a - - The color to convert. - The - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Converts a into a - - The color to convert. - The - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Converts a into a - - The color to convert. - The - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Converts a into a - - The color to convert. - The - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Performs the bulk conversion from into . - - The span to the source colors. - The span to the destination colors. - - - - Performs the bulk conversion from into . - - The span to the source colors. - The span to the destination colors. - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Performs the bulk conversion from into . - - The span to the source colors. - The span to the destination colors. - - - - Performs the bulk conversion from into . - - The span to the source colors. - The span to the destination colors. - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors. - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Converts a into a . - - The color to convert. - The - - - - Converts a into a . - - The color to convert. - The - - - - Converts a into a . - - The color to convert. - The - - - - Converts a into a . - - The color to convert. - The - - - - Converts a into a . - - The color to convert. - The - - - - Converts a into a . - - The color to convert. - The - - - - Converts a into a . - - The color to convert. - The - - - - Converts a into a . - - The color to convert. - The - - - - Converts a into a . - - The color to convert. - The - - - - Converts a into a . - - The color to convert. - The - - - - Converts a into a - - The color to convert. - The - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors. - The span to the destination colors. - - - - Performs the bulk conversion from into . - - The span to the source colors. - The span to the destination colors. - - - - Performs the bulk conversion from into . - - The span to the source colors. - The span to the destination colors. - - - - Performs the bulk conversion from into . - - The span to the source colors. - The span to the destination colors. - - - - Performs the bulk conversion from into . - - The span to the source colors. - The span to the destination colors. - - - - Performs the bulk conversion from into . - - The span to the source colors. - The span to the destination colors. - - - - Performs the bulk conversion from into . - - The span to the source colors. - The span to the destination colors. - - - - Performs the bulk conversion from into . - - The span to the source colors. - The span to the destination colors. - - - - Performs the bulk conversion from into . - - The span to the source colors. - The span to the destination colors. - - - - Performs the bulk conversion from into . - - The span to the source colors. - The span to the destination colors. - - - - Performs the bulk conversion from into . - - The span to the source colors. - The span to the destination colors. - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Converts a into a . - - The color to convert. - The - - - - Converts a into a . - - The color to convert. - The - - - - Converts a into a . - - The color to convert. - The - - - - Converts a into a - - The color to convert. - The - - - - Converts a into a . - - The color to convert. - The - - - - Converts a into a . - - The color to convert. - The - - - - Converts a into a . - - The color to convert. - The - - - - Converts a into a . - - The color to convert. - The - - - - Converts a into a . - - The color to convert. - The - - - - Converts a into a . - - The color to convert. - The - - - - Converts a into a - - The color to convert. - The - - - - Converts a into a . - - The color to convert. - The - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Converts a into a - - The color to convert. - The - - - - Converts a into a - - The color to convert. - The - - - - Converts a into a - - The color to convert. - The - - - - Converts a into a - - The color to convert. - The - - - - Converts a into a - - The color to convert. - The - - - - Converts a into a - - The color to convert. - The - - - - Converts a into a - - The color to convert. - The - - - - Converts a into a - - The color to convert. - The - - - - Converts a into a - - The color to convert. - The - - - - Converts a into a - - The color to convert. - The - - - - Converts a into a - - The color to convert. - The - - - - Converts a into a - - The color to convert. - The - - - - Converts a into a - - The color to convert. - The - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Converts a into a - - The color to convert. - The - - - - Converts a into a - - The color to convert. - The - - - - Converts a into a - - The color to convert. - The - - - - Converts a into a - - The color to convert. - The - - - - Converts a into a - - The color to convert. - The - - - - Converts a into a - - The color to convert. - The - - - - Converts a into a - - The color to convert. - The - - - - Converts a into a - - The color to convert. - The - - - - Converts a into a - - The color to convert. - The - - - - Converts a into a - - The color to convert. - The - - - - Converts a into a - - The color to convert. - The - - - - Converts a into a - - The color to convert. - The - - - - Converts a into a - - The color to convert. - The - - - - Performs the bulk conversion from into . - - The span to the source colors. - The span to the destination colors. - - - - Performs the bulk conversion from into . - - The span to the source colors. - The span to the destination colors. - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Performs the bulk conversion from into - - The span to the source colors - The span to the destination colors - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Performs the bulk conversion from into . - - The span to the source colors - The span to the destination colors - - - - Converts a into a . - - The color to convert. - The - - - - Converts a into a . - - The color to convert. - The - - - - Converts a into a . - - The color to convert. - The - - - - Converts a into a . - - The color to convert. - The - - - - Converts a into a . - - The color to convert. - The - - - - Converts a into a . - - The color to convert. - The - - - - Converts a into a . - - The color to convert. - The - - - - Converts a into a . - - The color to convert. - The - - - - Converts a into a . - - The color to convert. - The - - - - Converts a into a . - - The color to convert. - The - - - - Converts a into a . - - The color to convert. - The - - - - Converts a into a . - - The color to convert. - The - - - - Configuration options for the class. - - - - - Gets or sets the white point used for chromatic adaptation in conversions from/to XYZ color space. - When default, no adaptation will be performed. - Defaults to: . - - - - - Gets or sets the white point used *when creating* Luv/LChuv colors. (Luv/LChuv colors on the input already contain the white point information) - Defaults to: . - - - - - Gets or sets the white point used *when creating* Lab/LChab colors. (Lab/LChab colors on the input already contain the white point information) - Defaults to: . - - - - - Gets or sets the white point used *when creating* HunterLab colors. (HunterLab colors on the input already contain the white point information) - Defaults to: . - - - - - Gets or sets the target working space used *when creating* RGB colors. (RGB colors on the input already contain the working space information) - Defaults to: . - - - - - Gets or sets the chromatic adaptation method used. When null, no adaptation will be performed. - - - - - Gets or sets transformation matrix used in conversion to and from . - - - - - Represents the coordinates of CIEXY chromaticity space. - - - - - Gets the chromaticity X-coordinate. - - - Ranges usually from 0 to 1. - - - - - Gets the chromaticity Y-coordinate - - - Ranges usually from 0 to 1. - - - - - Initializes a new instance of the struct. - - Chromaticity coordinate x (usually from 0 to 1) - Chromaticity coordinate y (usually from 0 to 1) - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the current left is equal to the parameter; otherwise, false. - - - - - Compares two objects for inequality - - The on the left side of the operand. - The on the right side of the operand. - - True if the current left is unequal to the parameter; otherwise, false. - - - - - - - - - - - - - - - - - Converts from to . - - - - - Performs the conversion from the input to an instance of type. - - The input color instance. - The converted result - - - - Converts from to . - - - - - Performs the conversion from the input to an instance of type. - - The input color instance. - The converted result - - - - Converts from to . - - - - - Performs the conversion from the input to an instance of type. - - The input color instance. - The converted result - - - - Converts from to . - - - - - Performs the conversion from the input to an instance of type. - - The input color instance. - The converted result - - - - Converts from to . - - - - - Performs the conversion from the input to an instance of type. - - The input color instance. - The converted result - - - - Converts from to . - - - - - Performs the conversion from the input to an instance of type. - - The input color instance. - The converted result - - - - Calculates the blue-yellow chromacity based on the given whitepoint. - - The whitepoint - The - - - - Calculates the red-green chromacity based on the given whitepoint. - - The whitepoint - The - - - - Color converter between CIE XYZ and CIE xyY. - for formulas. - - - - - Performs the conversion from the input to an instance of type. - - The input color instance. - The converted result - - - - Performs the conversion from the input to an instance of type. - - The input color instance. - The converted result - - - - The base class for converting between and color spaces. - - - - - Returns the Ka coefficient that depends upon the whitepoint illuminant. - - The whitepoint - The - - - - Returns the Kb coefficient that depends upon the whitepoint illuminant. - - The whitepoint - The - - - - Color converter between and - - - - - Default transformation matrix used, when no other is set. (Bradford) - - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - - Definition of the cone response domain (see ), - if not set will be used. - - - - - Performs the conversion from the input to an instance of type. - - The input color instance. - The converted result - - - - Performs the conversion from the input to an instance of type. - - The input color instance. - The converted result - - - - Converts from to . - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - The target reference lab white point - - - - Gets the target reference whitepoint. When not set, is used. - - - - - Performs the conversion from the input to an instance of type. - - The input color instance. - The converted result - - - - Converts from to . - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - The target reference luv white point - - - - Gets the target reference whitepoint. When not set, is used. - - - - - Performs the conversion from the input to an instance of type. - - The input color instance. - The converted result - - - - Calculates the blue-yellow chromacity based on the given whitepoint. - - The whitepoint - The - - - - Calculates the red-green chromacity based on the given whitepoint. - - The whitepoint - The - - - - Color converter between and - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - The hunter Lab white point. - - - - Gets the target reference white. When not set, is used. - - - - - Performs the conversion from the input to an instance of type. - - The input color instance. - The converted result - - - - Color converter between and - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - The target working space. - - - - Gets the target working space. - - - - - Performs the conversion from the input to an instance of type. - - The input color instance. - The converted result. - - - - Color converter between and . - - - - - Performs the conversion from the input to an instance of type. - - The input color instance. - The converted result - - - - Performs the conversion from the input to an instance of type. - - The input color instance. - The converted result. - - - - Color converter between HSL and Rgb - See for formulas. - - - - - Performs the conversion from the input to an instance of type. - - The input color instance. - The converted result - - - - Performs the conversion from the input to an instance of type. - - The input color instance. - The converted result - - - - Gets the color component from the given values. - - The first value. - The second value. - The third value. - - The . - - - - - Moves the specific value within the acceptable range for - conversion. - Used for converting colors to this type. - - The value to shift. - - The . - - - - - Color converter between HSV and Rgb - See for formulas. - - - - - Performs the conversion from the input to an instance of type. - - The input color instance. - The converted result - - - - Performs the conversion from the input to an instance of type. - - The input color instance. - The converted result - - - - Color converter between and - - - - - Performs the conversion from the input to an instance of type. - - The input color instance. - The converted result - - - - Provides base methods for converting between and color spaces. - - - - - Returns the correct matrix to convert between the Rgb and CieXyz color space. - - The Rgb working space. - The based on the chromaticity and working space. - - - - Color converter between and - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - The target working space. - - - - Gets the source working space - - - - - Performs the conversion from the input to an instance of type. - - The input color instance. - The converted result - - - - Color converter between and . - - - - - Performs the conversion from the input to an instance of type. - - The input color instance. - The converted result. - - - - Color converter between Rgb and LinearRgb. - - - - - Performs the conversion from the input to an instance of type. - - The input color instance. - The converted result. - - - - Color converter between and - See for formulas. - - - - - Performs the conversion from the input to an instance of type. - - The input color instance. - The converted result. - - - - Performs the conversion from the input to an instance of type. - - The input color instance. - The converted result. - - - - Chromatic adaptation. - A linear transformation of a source color (XS, YS, ZS) into a destination color (XD, YD, ZD) by a linear transformation [M] - which is dependent on the source reference white (XWS, YWS, ZWS) and the destination reference white (XWD, YWD, ZWD). - - - - - Performs a linear transformation of a source color in to the destination color. - - Doesn't crop the resulting color space coordinates (e. g. allows negative values for XYZ coordinates). - The source color. - The source white point. - The destination white point. - The - - - - Performs a bulk linear transformation of a source color in to the destination color. - - Doesn't crop the resulting color space coordinates (e. g. allows negative values for XYZ coordinates). - The span to the source colors. - The span to the destination colors. - The source white point. - The destination white point. - - - - Matrices used for transformation from to , defining the cone response domain. - Used in - - - Matrix data obtained from: - Two New von Kries Based Chromatic Adaptation Transforms Found by Numerical Optimization - S. Bianco, R. Schettini - DISCo, Department of Informatics, Systems and Communication, University of Milan-Bicocca, viale Sarca 336, 20126 Milan, Italy - https://web.stanford.edu/~sujason/ColorBalancing/Papers/Two%20New%20von%20Kries%20Based%20Chromatic%20Adaptation.pdf - - - - - Von Kries chromatic adaptation transform matrix (Hunt-Pointer-Estevez adjusted for D65) - - - - - Von Kries chromatic adaptation transform matrix (Hunt-Pointer-Estevez for equal energy) - - - - - XYZ scaling chromatic adaptation transform matrix - - - - - Bradford chromatic adaptation transform matrix (used in CMCCAT97) - - - - - Spectral sharpening and the Bradford transform - - - - - CMCCAT2000 (fitted from all available color data sets) - - - - - CAT02 (optimized for minimizing CIELAB differences) - - - - - Represents the chromaticity coordinates of RGB primaries. - One of the specifiers of . - - - - - Initializes a new instance of the struct. - - The chromaticity coordinates of the red channel. - The chromaticity coordinates of the green channel. - The chromaticity coordinates of the blue channel. - - - - Gets the chromaticity coordinates of the red channel. - - - - - Gets the chromaticity coordinates of the green channel. - - - - - Gets the chromaticity coordinates of the blue channel. - - - - - Compares two objects for equality. - - - The on the left side of the operand. - - - The on the right side of the operand. - - - True if the current left is equal to the parameter; otherwise, false. - - - - - Compares two objects for inequality - - - The on the left side of the operand. - - - The on the right side of the operand. - - - True if the current left is unequal to the parameter; otherwise, false. - - - - - - - - - - - - - - Implementation of the von Kries chromatic adaptation model. - - - Transformation described here: - http://www.brucelindbloom.com/index.html?Eqn_ChromAdapt.html - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - - The transformation matrix used for the conversion (definition of the cone response domain). - - - - - - Initializes a new instance of the class. - - The color converter - - - - - - - - - - The gamma working space. - - - - - Initializes a new instance of the class. - - The gamma value. - The reference white point. - The chromaticity of the rgb primaries. - - - - Gets the gamma value. - - - - - - - - - - - - - - - - - L* working space. - - - - - Initializes a new instance of the class. - - The reference white point. - The chromaticity of the rgb primaries. - - - - - - - - - - Rec. 2020 (ITU-R Recommendation BT.2020F) working space. - - - - - Initializes a new instance of the class. - - The reference white point. - The chromaticity of the rgb primaries. - - - - - - - - - - Rec. 709 (ITU-R Recommendation BT.709) working space. - - - - - Initializes a new instance of the class. - - The reference white point. - The chromaticity of the rgb primaries. - - - - - - - - - - Base class for all implementations of . - - - - - Initializes a new instance of the class. - - The reference white point. - The chromaticity of the rgb primaries. - - - - Gets the reference white point - - - - - Gets the chromaticity of the rgb primaries. - - - - - Expands a companded channel to its linear equivalent with respect to the energy. - - - For more info see: - - - The channel value. - The representing the linear channel value. - - - - Compresses an uncompanded channel (linear) to its nonlinear equivalent (depends on the RGB color system). - - - For more info see: - - - The channel value. - The representing the nonlinear channel value. - - - - - - - - - - The sRgb working space. - - - - - Initializes a new instance of the class. - - The reference white point. - The chromaticity of the rgb primaries. - - - - - - - - - - Represents a Hsl (hue, saturation, lightness) color. - - - - - Gets the hue component. - A value ranging between 0 and 360. - - - - - Gets the saturation component. - A value ranging between 0 and 1. - - - - - Gets the lightness component. - A value ranging between 0 and 1. - - - - - Initializes a new instance of the struct. - - The h hue component. - The s saturation component. - The l value (lightness) component. - - - - Initializes a new instance of the struct. - - The vector representing the h, s, l components. - - - - Compares two objects for equality. - - - The on the left side of the operand. - - The on the right side of the operand. - - True if the current left is equal to the parameter; otherwise, false. - - - - - Compares two objects for inequality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the current left is unequal to the parameter; otherwise, false. - - - - - - - - - - - - - - - - - Represents a HSV (hue, saturation, value) color. Also known as HSB (hue, saturation, brightness). - - - - - Gets the hue component. - A value ranging between 0 and 360. - - - - - Gets the saturation component. - A value ranging between 0 and 1. - - - - - Gets the value (brightness) component. - A value ranging between 0 and 1. - - - - - Initializes a new instance of the struct. - - The h hue component. - The s saturation component. - The v value (brightness) component. - - - - Initializes a new instance of the struct. - - The vector representing the h, s, v components. - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the current left is equal to the parameter; otherwise, false. - - - - - Compares two objects for inequality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the current left is unequal to the parameter; otherwise, false. - - - - - - - - - - - - - - - - - Represents an Hunter LAB color. - . - - - - - D50 standard illuminant. - Used when reference white is not specified explicitly. - - - - - Gets the lightness dimension. - A value usually ranging between 0 (black), 100 (diffuse white) or higher (specular white). - - - - - Gets the a color component. - A value usually ranging from -100 to 100. Negative is green, positive magenta. - - - - - Gets the b color component. - A value usually ranging from -100 to 100. Negative is blue, positive is yellow - - - - - Gets the reference white point of this color. - - - - - Initializes a new instance of the struct. - - The lightness dimension. - The a (green - magenta) component. - The b (blue - yellow) component. - Uses as white point. - - - - Initializes a new instance of the struct. - - The lightness dimension. - The a (green - magenta) component. - The b (blue - yellow) component. - The reference white point. - - - - Initializes a new instance of the struct. - - The vector representing the l, a, b components. - Uses as white point. - - - - Initializes a new instance of the struct. - - The vector representing the l a b components. - The reference white point. - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the current left is equal to the parameter; otherwise, false. - - - - - Compares two objects for inequality - - The on the left side of the operand. - The on the right side of the operand. - - True if the current left is unequal to the parameter; otherwise, false. - - - - - - - - - - - - - - - - - The well known standard illuminants. - Standard illuminants provide a basis for comparing images or colors recorded under different lighting - - - Coefficients taken from: http://www.brucelindbloom.com/index.html?Eqn_ChromAdapt.html -
- Descriptions taken from: http://en.wikipedia.org/wiki/Standard_illuminant -
-
- - - Incandescent / Tungsten - - - - - Direct sunlight at noon (obsoleteF) - - - - - Average / North sky Daylight (obsoleteF) - - - - - Horizon Light. ICC profile PCS - - - - - Mid-morning / Mid-afternoon Daylight - - - - - Noon Daylight: TelevisionF, sRGB color space - - - - - North sky Daylight - - - - - Equal energy - - - - - Cool White Fluorescent - - - - - D65 simulatorF, Daylight simulator - - - - - Philips TL84F, Ultralume 40 - - - - - Represents an linear Rgb color with specified working space - - - - - The default LinearRgb working space. - - - - - Gets the red component. - A value usually ranging between 0 and 1. - - - - - Gets the green component. - A value usually ranging between 0 and 1. - - - - - Gets the blue component. - A value usually ranging between 0 and 1. - - - - - Gets the LinearRgb color space - - - - - Initializes a new instance of the struct. - - The red component ranging between 0 and 1. - The green component ranging between 0 and 1. - The blue component ranging between 0 and 1. - - - - Initializes a new instance of the struct. - - The red component ranging between 0 and 1. - The green component ranging between 0 and 1. - The blue component ranging between 0 and 1. - The rgb working space. - - - - Initializes a new instance of the struct. - - The vector representing the r, g, b components. - - - - Initializes a new instance of the struct. - - The vector representing the r, g, b components. - The LinearRgb working space. - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the current left is equal to the parameter; otherwise, false. - - - - - Compares two objects for inequality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the current left is unequal to the parameter; otherwise, false. - - - - - Returns a new representing this instance. - - The . - - - - - - - - - - - - - - - - LMS is a color space represented by the response of the three types of cones of the human eye, - named after their responsivity (sensitivity) at long, medium and short wavelengths. - - - - - - Gets the L long component. - A value usually ranging between -1 and 1. - - - - - Gets the M medium component. - A value usually ranging between -1 and 1. - - - - - Gets the S short component. - A value usually ranging between -1 and 1. - - - - - Initializes a new instance of the struct. - - L represents the responsivity at long wavelengths. - M represents the responsivity at medium wavelengths. - S represents the responsivity at short wavelengths. - - - - Initializes a new instance of the struct. - - The vector representing the l, m, s components. - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the current left is equal to the parameter; otherwise, false. - - - - - Compares two objects for inequality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the current left is unequal to the parameter; otherwise, false. - - - - - Returns a new representing this instance. - - The . - - - - - - - - - - - - - - - - Represents an RGB color with specified working space. - - - - - The default rgb working space. - - - - - Gets the red component. - A value usually ranging between 0 and 1. - - - - - Gets the green component. - A value usually ranging between 0 and 1. - - - - - Gets the blue component. - A value usually ranging between 0 and 1. - - - - - Gets the Rgb color space - - - - - Initializes a new instance of the struct. - - The red component ranging between 0 and 1. - The green component ranging between 0 and 1. - The blue component ranging between 0 and 1. - - - - Initializes a new instance of the struct. - - The red component ranging between 0 and 1. - The green component ranging between 0 and 1. - The blue component ranging between 0 and 1. - The rgb working space. - - - - Initializes a new instance of the struct. - - The vector representing the r, g, b components. - - - - Initializes a new instance of the struct. - - The vector representing the r, g, b components. - The rgb working space. - - - - Allows the implicit conversion of an instance of to a - . - - The instance of to convert. - An instance of . - - - - Allows the implicit conversion of an instance of to a - . - - The instance of to convert. - An instance of . - - - - Compares two objects for equality. - - - The on the left side of the operand. - - - The on the right side of the operand. - - - True if the current left is equal to the parameter; otherwise, false. - - - - - Compares two objects for inequality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the current left is unequal to the parameter; otherwise, false. - - - - - Returns a new representing this instance. - - The . - - - - - - - - - - - - - - - - Chromaticity coordinates based on: - - - - - sRgb working space. - - - Uses proper companding function, according to: - - - - - - Simplified sRgb working space (uses gamma companding instead of ). - See also . - - - - - Rec. 709 (ITU-R Recommendation BT.709) working space. - - - - - Rec. 2020 (ITU-R Recommendation BT.2020F) working space. - - - - - ECI Rgb v2 working space. - - - - - Adobe Rgb (1998) working space. - - - - - Apple sRgb working space. - - - - - Best Rgb working space. - - - - - Beta Rgb working space. - - - - - Bruce Rgb working space. - - - - - CIE Rgb working space. - - - - - ColorMatch Rgb working space. - - - - - Don Rgb 4 working space. - - - - - Ekta Space PS5 working space. - - - - - NTSC Rgb working space. - - - - - PAL/SECAM Rgb working space. - - - - - ProPhoto Rgb working space. - - - - - SMPTE-C Rgb working space. - - - - - Wide Gamut Rgb working space. - - - - - Represents an YCbCr (luminance, blue chroma, red chroma) color as defined in the ITU-T T.871 specification for the JFIF use with Jpeg. - - - - - - - Gets the Y luminance component. - A value ranging between 0 and 255. - - - - - Gets the Cb chroma component. - A value ranging between 0 and 255. - - - - - Gets the Cr chroma component. - A value ranging between 0 and 255. - - - - - Initializes a new instance of the struct. - - The y luminance component. - The cb chroma component. - The cr chroma component. - - - - Initializes a new instance of the struct. - - The vector representing the y, cb, cr components. - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the current left is equal to the parameter; otherwise, false. - - - - - Compares two objects for inequality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the current left is unequal to the parameter; otherwise, false. - - - - - - - - - - - - - - - - - Common constants used throughout the project - - - - - The epsilon value for comparing floating point numbers. - - - - - The epsilon squared value for comparing floating point numbers. - - - - - The exception that is thrown when the library tries to load - an image, which has format or content that is invalid or unsupported by ImageSharp. - - - - - Initializes a new instance of the class with the name of the - parameter that causes this exception. - - The error message that explains the reason for this exception. - - - - Initializes a new instance of the class with a specified - error message and the exception that is the cause of this exception. - - The error message that explains the reason for this exception. - The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) - if no inner exception is specified. - - - - The exception that is thrown when an error occurs when applying a process to an image. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class with the name of the - parameter that causes this exception. - - The error message that explains the reason for this exception. - - - - Initializes a new instance of the class with a specified - error message and the exception that is the cause of this exception. - - The error message that explains the reason for this exception. - The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) - if no inner exception is specified. - - - - The exception that is thrown when the library tries to load - an image which contains invalid content. - - - - - Initializes a new instance of the class with the name of the - parameter that causes this exception. - - The error message that explains the reason for this exception. - - - - Initializes a new instance of the class with the name of the - parameter that causes this exception. - - The error message that explains the reason for this exception. - The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) - if no inner exception is specified. - - - - The exception that is thrown when the library tries to load - an image which has an unknown format. - - - - - Initializes a new instance of the class with the name of the - parameter that causes this exception. - - The error message that explains the reason for this exception. - - - - Contains extension methods for - - - - - Creates a object based on , - having set to - - - - - Encapsulates a series of time saving extension methods to the interface. - - - - - Generates a sequence of integral numbers within a specified range. - - - The start index, inclusive. - - - A method that has one parameter and returns a calculating the end index. - - - The incremental step. - - - The that contains a range of sequential integral numbers. - - - - - Generates a sequence of integral numbers within a specified range. - - The start index, inclusive. - - A method that has one parameter and returns a calculating the end index. - - The incremental step. - - The that contains a range of sequential integral numbers. - - - - - Extension methods for the type. - - - - - Writes data from a stream into the provided buffer. - - The stream. - The buffer. - The offset within the buffer to begin writing. - The number of bytes to write to the stream. - - - - Reads data from a stream into the provided buffer. - - The stream. - The buffer. - The offset within the buffer where the bytes are read into. - The number of bytes, if available, to read. - The actual number of bytes read. - - - - Skips the number of bytes in the given stream. - - The stream. - A byte offset relative to the origin parameter. - - - - Provides optimized static methods for common mathematical functions specific - to color processing. - - - - - Vector for converting pixel to gray value as specified by - ITU-R Recommendation BT.709. - - - - - Convert a pixel value to grayscale using ITU-R Recommendation BT.709. - - The vector to get the luminance from. - - The number of luminance levels (256 for 8 bit, 65536 for 16 bit grayscale images). - - - - - Gets the luminance from the rgb components using the formula - as specified by ITU-R Recommendation BT.709. - - The red component. - The green component. - The blue component. - The . - - - - Gets the luminance from the rgb components using the formula as - specified by ITU-R Recommendation BT.709. - - The red component. - The green component. - The blue component. - The . - - - - Gets the luminance from the rgb components using the formula as specified - by ITU-R Recommendation BT.709. - - The red component. - The green component. - The blue component. - The . - - - - Scales a value from a 16 bit to an - 8 bit equivalent. - - The 8 bit component value. - The - - - - Scales a value from an 8 bit to - an 16 bit equivalent. - - The 8 bit component value. - The - - - - Returns how many bits are required to store the specified number of colors. - Performs a Log2() on the value. - - The number of colors. - - The - - - - - Returns how many colors will be created by the specified number of bits. - - The bit depth. - The - - - - Transforms a vector by the given color matrix. - - The source vector. - The transformation color matrix. - - - - Bulk variant of . - - The span of vectors - The transformation color matrix. - - - - Common utility methods for working with enums. - - - - - Converts the numeric representation of the enumerated constants to an equivalent enumerated object. - - The type of enum - The value to parse - The default value to return. - The . - - - - Returns a value indicating whether the given enum has a flag of the given value. - - The type of enum. - The value. - The flag. - The . - - - - Global inlining options. Helps temporarily disable inlining for better profiler output. - - - - - Provides optimized static methods for trigonometric, logarithmic, - and other common mathematical functions. - - - - - Determine the Greatest CommonDivisor (GCD) of two numbers. - - - - - Determine the Least Common Multiple (LCM) of two numbers. - See https://en.wikipedia.org/wiki/Least_common_multiple#Reduction_by_the_greatest_common_divisor. - - - - - Calculates % 2 - - - - - Calculates % 4 - - - - - Calculates % 8 - - - - - Fast (x mod m) calculator, with the restriction that - should be power of 2. - - - - - Returns the absolute value of a 32-bit signed integer. - Uses bit shifting to speed up the operation compared to . - - - A number that is greater than , but less than - or equal to - - The - - - - Returns a specified number raised to the power of 2 - - A single-precision floating-point number - The number raised to the power of 2. - - - - Returns a specified number raised to the power of 3 - - A single-precision floating-point number - The number raised to the power of 3. - - - - Implementation of 1D Gaussian G(x) function - - The x provided to G(x). - The spread of the blur. - The Gaussian G(x) - - - - Returns the result of a normalized sine cardinal function for the given value. - SinC(x) = sin(pi*x)/(pi*x). - - A single-precision floating-point number to calculate the result for. - - The sine cardinal of . - - - - - Returns the value clamped to the inclusive range of min and max. - - The value to clamp. - The minimum inclusive value. - The maximum inclusive value. - The clamped . - - - - Returns the value clamped to the inclusive range of min and max. - - The value to clamp. - The minimum inclusive value. - The maximum inclusive value. - The clamped . - - - - Returns the value clamped to the inclusive range of min and max. - - The value to clamp. - The minimum inclusive value. - The maximum inclusive value. - The clamped . - - - - Returns the value clamped to the inclusive range of min and max. - - The value to clamp. - The minimum inclusive value. - The maximum inclusive value. - The clamped . - - - - Returns the value clamped to the inclusive range of min and max. - - The value to clamp. - The minimum inclusive value. - The maximum inclusive value. - The clamped . - - - - Returns the value clamped to the inclusive range of min and max. - 5x Faster than - on platforms < NET 5. - - The value to clamp. - The minimum inclusive value. - The maximum inclusive value. - The clamped . - - - - Clamps the span values to the inclusive range of min and max. - - The span containing the values to clamp. - The minimum inclusive value. - The maximum inclusive value. - - - - Clamps the span values to the inclusive range of min and max. - - The span containing the values to clamp. - The minimum inclusive value. - The maximum inclusive value. - - - - Clamps the span values to the inclusive range of min and max. - - The span containing the values to clamp. - The minimum inclusive value. - The maximum inclusive value. - - - - Clamps the span values to the inclusive range of min and max. - - The span containing the values to clamp. - The minimum inclusive value. - The maximum inclusive value. - - - - Clamps the span values to the inclusive range of min and max. - - The span containing the values to clamp. - The minimum inclusive value. - The maximum inclusive value. - - - - Pre-multiplies the "x", "y", "z" components of a vector by its "w" component leaving the "w" component intact. - - The to premultiply - - - - Reverses the result of premultiplying a vector via . - - The to premultiply - - - - Bulk variant of - - The span of vectors - - - - Bulk variant of - - The span of vectors - - - - Calculates the cube pow of all the XYZ channels of the input vectors. - - The span of vectors - - - - Calculates the cube root of all the XYZ channels of the input vectors. - - The span of vectors - - - - Performs a linear interpolation between two values based on the given weighting. - - The first value. - The second value. - Values between 0 and 1 that indicates the weight of . - The . - - - - Performs a linear interpolation between two values based on the given weighting. - - The first value. - The second value. - A value between 0 and 1 that indicates the weight of . - The . - - - - Defines the contract for methods that allow the shuffling of pixel components. - Used for shuffling on platforms that do not support Hardware Intrinsics. - - - - - Gets the shuffle control. - - - - - Shuffle 8-bit integers within 128-bit lanes in - using the control and store the results in . - - The source span of bytes. - The destination span of bytes. - - - - - - - - - - - - - - - - Various extension and utility methods for and utilizing SIMD capabilities - - - - - Implementation with 256bit / AVX2 intrinsics NOT depending on newer API-s (Vector.Widen etc.) - - - - - SIMD optimized implementation for . - Works only with span Length divisible by 8. - Implementation adapted from: - http://lolengine.net/blog/2011/3/20/understanding-fast-float-integer-conversions - http://stackoverflow.com/a/536278 - - - - - Implementation of which is faster on older runtimes. - - - - - Convert all values normalized into [0..1] from 'source' - into 'dest' buffer of . The values are scaled up into [0-255] and rounded. - This implementation is SIMD optimized and works only when span Length is divisible by 8. - Based on: - - http://lolengine.net/blog/2011/3/20/understanding-fast-float-integer-conversions - - - - - - Gets a value indicating whether code is being JIT-ed to AVX2 instructions - where both float and integer registers are of size 256 byte. - - - - - Gets a value indicating whether code is being JIT-ed to SSE instructions - where float and integer registers are of size 128 byte. - - - - - Transform all scalars in 'v' in a way that converting them to would have rounding semantics. - - The vector - - - - Rounds all values in 'v' to the nearest integer following semantics. - Source: - - https://github.com/g-truc/glm/blob/master/glm/simd/common.h#L110 - - - The vector - - - - Converts all input -s to -s normalized into [0..1]. - should be the of the same size as , - but there are no restrictions on the span's length. - - The source span of bytes - The destination span of floats - - - - Convert all values normalized into [0..1] from 'source' into 'dest' buffer of . - The values are scaled up into [0-255] and rounded, overflows are clamped. - should be the of the same size as , - but there are no restrictions on the span's length. - - The source span of floats - The destination span of bytes - - - - Implementation methods based on newer API-s (Vector.Widen, Vector.Narrow, Vector.ConvertTo*). - Only accelerated only on RyuJIT having dotnet/coreclr#10662 merged (.NET Core 2.1+ .NET 4.7.2+) - See: - https://github.com/dotnet/coreclr/pull/10662 - API Proposal: - https://github.com/dotnet/corefx/issues/15957 - - - - - Widen and convert a vector of values into 2 vectors of -s. - - - - - as many elements as possible, slicing them down (keeping the remainder). - - - - - as many elements as possible, slicing them down (keeping the remainder). - - - - - Implementation , which is faster on new RyuJIT runtime. - - - - - Implementation of , which is faster on new .NET runtime. - - - - - Fallback implementation based on (128bit). - For , efficient software fallback implementations are present, - and we hope that even mono's JIT is able to emit SIMD instructions for that type :P - - - - - as many elements as possible, slicing them down (keeping the remainder). - - - - - as many elements as possible, slicing them down (keeping the remainder). - - - - - Implementation of using . - - - - - Implementation of using . - - - - - Shuffle single-precision (32-bit) floating-point elements in - using the control and store the results in . - - The source span of floats. - The destination span of floats. - The byte control. - - - - Shuffle 8-bit integers within 128-bit lanes in - using the control and store the results in . - - The source span of bytes. - The destination span of bytes. - The byte control. - - - - Shuffles 8-bit integer triplets within 128-bit lanes in - using the control and store the results in . - - The source span of bytes. - The destination span of bytes. - The byte control. - - - - Pads then shuffles 8-bit integers within 128-bit lanes in - using the control and store the results in . - - The source span of bytes. - The destination span of bytes. - The byte control. - - - - Shuffles then slices 8-bit integers within 128-bit lanes in - using the control and store the results in . - - The source span of bytes. - The destination span of bytes. - The byte control. - - - - Performs a multiplication and an addition of the . - - The vector to add to the intermediate result. - The first vector to multiply. - The second vector to multiply. - The . - - - - as many elements as possible, slicing them down (keeping the remainder). - - - - - Implementation , which is faster on new RyuJIT runtime. - - - Implementation is based on MagicScaler code: - https://github.com/saucecontrol/PhotoSauce/blob/b5811908041200488aa18fdfd17df5fc457415dc/src/MagicScaler/Magic/Processors/ConvertersFloat.cs#L80-L182 - - - - - as many elements as possible, slicing them down (keeping the remainder). - - - - - Implementation of , which is faster on new .NET runtime. - - - Implementation is based on MagicScaler code: - https://github.com/saucecontrol/PhotoSauce/blob/b5811908041200488aa18fdfd17df5fc457415dc/src/MagicScaler/Magic/Processors/ConvertersFloat.cs#L541-L622 - - - - - Shuffle single-precision (32-bit) floating-point elements in - using the control and store the results in . - - The source span of floats. - The destination span of floats. - The byte control. - - - - Shuffle 8-bit integers within 128-bit lanes in - using the control and store the results in . - - The source span of bytes. - The destination span of bytes. - The type of shuffle to perform. - - - - Shuffle 8-bit integer triplets within 128-bit lanes in - using the control and store the results in . - - The source span of bytes. - The destination span of bytes. - The type of shuffle to perform. - - - - Pads then shuffles 8-bit integers within 128-bit lanes in - using the control and store the results in . - - The source span of bytes. - The destination span of bytes. - The type of shuffle to perform. - - - - Shuffles then slices 8-bit integers within 128-bit lanes in - using the control and store the results in . - - The source span of bytes. - The destination span of bytes. - The type of shuffle to perform. - - - - Internal utilities intended to be only used in tests. - - - - - This constant is useful to verify the target framework ImageSharp has been built against. - Only intended to be used in tests! - - - - - Contains methods for converting values between unit scales. - - - - - The number of centimeters in a meter. - 1 cm is equal to exactly 0.01 meters. - - - - - The number of centimeters in an inch. - 1 inch is equal to exactly 2.54 centimeters. - - - - - The number of inches in a meter. - 1 inch is equal to exactly 0.0254 meters. - - - - - Scales the value from centimeters to meters. - - The value to scale. - The . - - - - Scales the value from meters to centimeters. - - The value to scale. - The . - - - - Scales the value from meters to inches. - - The value to scale. - The . - - - - Scales the value from inches to meters. - - The value to scale. - The . - - - - Scales the value from centimeters to inches. - - The value to scale. - The . - - - - Scales the value from inches to centimeters. - - The value to scale. - The . - - - - Converts an to a . - - The EXIF profile containing the value. - The - - - - Implements basic math operations using tolerant comparison - whenever an equality check is needed. - - - - - A read-only default instance for using 1e-8 as epsilon. - It is a field so it can be passed as an 'in' parameter. - Does not necessarily fit all use cases! - - - - - == 0 - - - - - > 0 - - - - - < 0 - - - - - == - - - - - > - - - - - < - - - - - >= - - - - - <= - - - - - Contains 8 element value tuples of various types. - - - - - - - - Extension methods for the type. - - - - - Loads the fields in a target of from one of type. - - The target of instance. - The source of instance. - - - - Loads the fields in a target of from one of type. - - The target of instance. - The source of instance. - - - - Its faster to process multiple Vector4-s together, so let's pair them! - On AVX2 this pair should be convertible to of ! - TODO: Investigate defining this as union with an Octet.OfSingle type. - - - - . - Downscale method, specific to Jpeg color conversion. Works only if Vector{float}.Count == 4! /// TODO: Move it somewhere else. - - - - - AVX2-only Downscale method, specific to Jpeg color conversion. - TODO: Move it somewhere else. - - - - - Provides configuration which allows altering default behaviour or extending the library. - - - - - A lazily initialized configuration default instance. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - A collection of configuration modules to register - - - - Gets the default instance. - - - - - Gets or sets the maximum number of concurrent tasks enabled in ImageSharp algorithms - configured with this instance. - Initialized with by default. - - - - - Gets or sets the size of the buffer to use when working with streams. - Intitialized with by default. - - - - - Gets a set of properties for the Congiguration. - - This can be used for storing global settings and defaults to be accessable to processors. - - - - Gets the currently registered s. - - - - - Gets or sets the position in a stream to use for reading when using a seekable stream as an image data source. - - - - - Gets or sets the that is currently in use. - - - - - Gets or sets the that is currently in use. - - - - - Gets the maximum header size of all the formats. - - - - - Gets or sets the filesystem helper for accessing the local file system. - - - - - Gets or sets the working buffer size hint for image processors. - The default value is 1MB. - - - Currently only used by Resize. If the working buffer is expected to be discontiguous, - min(WorkingBufferSizeHintInBytes, BufferCapacityInBytes) should be used. - - - - - Gets or sets the image operations provider factory. - - - - - Registers a new format provider. - - The configuration provider to call configure on. - - - - Creates a shallow copy of the . - - A new configuration instance. - - - - Creates the default instance with the following s preregistered: - - - - . - . - - The default configuration of . - - - - Gets the Bitmap identifier. - The field used to identify the bitmap file: 0x42 0x41 (Hex code points for B and A). - - - - - Gets the size of this header. - - - - - Gets the offset to next OS2BMPARRAYFILEHEADER. - This offset is calculated from the starting byte of the file. A value of zero indicates that this header is for the last image in the array list. - - - - - Gets the width of the image display in pixels. - - - - - Gets the height of the image display in pixels. - - - - - Enumerates the available bits per pixel the bitmap encoder supports. - - - - - 8 bits per pixel. Each pixel consists of 1 byte. - - - - - 16 bits per pixel. Each pixel consists of 2 bytes. - - - - - 24 bits per pixel. Each pixel consists of 3 bytes. - - - - - 32 bits per pixel. Each pixel consists of 4 bytes. - - - - - Defines the compression type of the image data - in the bitmap file. - - - - - Each image row has a multiple of four elements. If the - row has less elements, zeros will be added at the right side. - The format depends on the number of bits, stored in the info header. - If the number of bits are one, four or eight each pixel data is - a index to the palette. If the number of bits are sixteen, - twenty-four or thirty-two each pixel contains a color. - - - - - Two bytes are one data record. If the first byte is not zero, the - next byte will be repeated as much as the value of the first byte. - If the first byte is zero, the record has different meanings, depending - on the second byte. If the second byte is zero, it is the end of the row, - if it is one, it is the end of the image. - - - - - Two bytes are one data record. If the first byte is not zero, the - next two half bytes will be repeated as much as the value of the first byte. - If the first byte is zero, the record has different meanings, depending - on the second byte. If the second byte is zero, it is the end of the row, - if it is one, it is the end of the image. - - - - - Each image row has a multiple of four elements. If the - row has less elements, zeros will be added at the right side. - - - - - The bitmap contains a JPG image. - Not supported at the moment. - - - - - The bitmap contains a PNG image. - Not supported at the moment. - - - - - Introduced with Windows CE. - Specifies that the bitmap is not compressed and that the color table consists of four DWORD color - masks that specify the red, green, blue, and alpha components of each pixel. - - - - - OS/2 specific compression type. - Similar to run length encoding of 4 and 8 bit. - The only difference is that run values encoded are three bytes in size (one byte per RGB color component), - rather than four or eight bits in size. - - Note: Because compression value of 4 is ambiguous for BI_RGB for windows and RLE24 for OS/2, the enum value is remapped - to a different value, to be clearly separate from valid windows values. - - - - - Registers the image encoders, decoders and mime type detectors for the bmp format. - - - - - - - - Defines constants relating to BMPs - - - - - The list of mimetypes that equate to a bmp. - - - - - The list of file extensions that equate to a bmp. - - - - - Valid magic bytes markers identifying a Bitmap file. - - - - - Single-image BMP file that may have been created under Windows or OS/2. - - - - - OS/2 Bitmap Array. - - - - - OS/2 Color Icon. - - - - - OS/2 Color Pointer. - - - - - OS/2 Icon. - - - - - OS/2 Pointer. - - - - - Image decoder for generating an image out of a Windows bitmap stream. - - - Does not support the following formats at the moment: - - JPG - PNG - Some OS/2 specific subtypes like: Bitmap Array, Color Icon, Color Pointer, Icon, Pointer. - - Formats will be supported in a later releases. We advise always - to use only 24 Bit Windows bitmaps. - - - - - Gets or sets a value indicating how to deal with skipped pixels, which can occur during decoding run length encoded bitmaps. - - - - - - - - - - - - - - - - - - - - - - - Performs the bitmap decoding operation. - - - A useful decoding source example can be found at - - - - - The default mask for the red part of the color for 16 bit rgb bitmaps. - - - - - The default mask for the green part of the color for 16 bit rgb bitmaps. - - - - - The default mask for the blue part of the color for 16 bit rgb bitmaps. - - - - - RLE flag value that indicates following byte has special meaning. - - - - - RLE flag value marking end of a scan line. - - - - - RLE flag value marking end of bitmap data. - - - - - RLE flag value marking the start of [x,y] offset instruction. - - - - - The stream to decode from. - - - - - The metadata. - - - - - The bitmap specific metadata. - - - - - The file header containing general information. - - - - - Indicates which bitmap file marker was read. - - - - - The info header containing detailed information about the bitmap. - - - - - Used for allocating memory during processing operations. - - - - - The bitmap decoder options. - - - - - Initializes a new instance of the class. - - The configuration. - The options. - - - - - - - Gets the dimensions of the image. - - - - - - - - - - - Returns the y- value based on the given height. - - The y- value representing the current row. - The height of the bitmap. - Whether the bitmap is inverted. - The representing the inverted value. - - - - Calculates the amount of bytes to pad a row. - - The image width. - The pixel component count. - - The padding. - - - - - Decodes a bitmap containing the BITFIELDS Compression type. For each color channel, there will be a bitmask - which will be used to determine which bits belong to that channel. - - The pixel format. - The output pixel buffer containing the decoded image. - Whether the bitmap is inverted. - - - - Looks up color values and builds the image from de-compressed RLE8 or RLE4 data. - Compressed RLE8 stream is uncompressed by - Compressed RLE4 stream is uncompressed by - - The pixel format. - The compression type. Either RLE4 or RLE8. - The to assign the palette to. - The containing the colors. - The width of the bitmap. - The height of the bitmap. - Whether the bitmap is inverted. - - - - Looks up color values and builds the image from de-compressed RLE24. - - The pixel format. - The to assign the palette to. - The width of the bitmap. - The height of the bitmap. - Whether the bitmap is inverted. - - - - Produce uncompressed bitmap data from a RLE4 stream. - - - RLE4 is a 2-byte run-length encoding. -
If first byte is 0, the second byte may have special meaning. -
Otherwise, the first byte is the length of the run and second byte contains two color indexes. -
- The width of the bitmap. - Buffer for uncompressed data. - Keeps track over skipped and therefore undefined pixels. - Keeps track of rows, which have undefined pixels. -
- - - Produce uncompressed bitmap data from a RLE8 stream. - - - RLE8 is a 2-byte run-length encoding. -
If first byte is 0, the second byte may have special meaning. -
Otherwise, the first byte is the length of the run and second byte is the color for the run. -
- The width of the bitmap. - Buffer for uncompressed data. - Keeps track of skipped and therefore undefined pixels. - Keeps track of rows, which have undefined pixels. -
- - - Produce uncompressed bitmap data from a RLE24 stream. - - -
If first byte is 0, the second byte may have special meaning. -
Otherwise, the first byte is the length of the run and following three bytes are the color for the run. -
- The width of the bitmap. - Buffer for uncompressed data. - Keeps track of skipped and therefore undefined pixels. - Keeps track of rows, which have undefined pixels. -
- - - Keeps track of skipped / undefined pixels, when the EndOfBitmap command occurs. - - The already processed pixel count. - The width of the image. - The skipped pixel count. - The undefined pixels. - Rows with undefined pixels. - - - - Keeps track of undefined / skipped pixels, when the EndOfLine command occurs. - - The already uncompressed pixel count. - The width of image. - The undefined pixels. - The rows with undefined pixels. - The number of skipped pixels. - - - - Keeps track of undefined / skipped pixels, when the delta command occurs. - - The count. - The width of the image. - Delta skip in x direction. - Delta skip in y direction. - The undefined pixels. - The rows with undefined pixels. - The number of skipped pixels. - - - - Reads the color palette from the stream. - - The pixel format. - The to assign the palette to. - The containing the colors. - The width of the bitmap. - The height of the bitmap. - The number of bits per pixel. - Usually 4 bytes, but in case of Windows 2.x bitmaps or OS/2 1.x bitmaps - the bytes per color palette entry's can be 3 bytes instead of 4. - Whether the bitmap is inverted. - - - - Reads the 16 bit color palette from the stream. - - The pixel format. - The to assign the palette to. - The width of the bitmap. - The height of the bitmap. - Whether the bitmap is inverted. - The bitmask for the red channel. - The bitmask for the green channel. - The bitmask for the blue channel. - - - - Performs final shifting from a 5bit value to an 8bit one. - - The masked and shifted value. - The - - - - Performs final shifting from a 6bit value to an 8bit one. - - The masked and shifted value. - The - - - - Reads the 24 bit color palette from the stream. - - The pixel format. - The to assign the palette to. - The width of the bitmap. - The height of the bitmap. - Whether the bitmap is inverted. - - - - Reads the 32 bit color palette from the stream. - - The pixel format. - The to assign the palette to. - The width of the bitmap. - The height of the bitmap. - Whether the bitmap is inverted. - - - - Reads the 32 bit color palette from the stream, checking the alpha component of each pixel. - This is a special case only used for 32bpp WinBMPv3 files, which could be in either BGR0 or BGRA format. - - The pixel format. - The to assign the palette to. - The width of the bitmap. - The height of the bitmap. - Whether the bitmap is inverted. - - - - Decode an 32 Bit Bitmap containing a bitmask for each color channel. - - The pixel format. - The output pixel buffer containing the decoded image. - The width of the image. - The height of the image. - Whether the bitmap is inverted. - The bitmask for the red channel. - The bitmask for the green channel. - The bitmask for the blue channel. - The bitmask for the alpha channel. - - - - Calculates the necessary right shifts for a given color bitmask (the 0 bits to the right). - - The color bit mask. - Number of bits to shift right. - - - - Counts none zero bits. - - A color mask. - The none zero bits. - - - - Reads the from the stream. - - - - - Reads the from the stream. - - - - - Reads the and from the stream and sets the corresponding fields. - - Bytes per color palette entry. Usually 4 bytes, but in case of Windows 2.x bitmaps or OS/2 1.x bitmaps - the bytes per color palette entry's can be 3 bytes instead of 4. - - - - Image encoder for writing an image to a stream as a Windows bitmap. - - - - - Gets or sets the number of bits per pixel. - - - - - Gets or sets a value indicating whether the encoder should support transparency. - Note: Transparency support only works together with 32 bits per pixel. This option will - change the default behavior of the encoder of writing a bitmap version 3 info header with no compression. - Instead a bitmap version 4 info header will be written with the BITFIELDS compression. - - - - - Gets or sets the quantizer for reducing the color count for 8-Bit images. - Defaults to OctreeQuantizer. - - - - - - - - - - - Image encoder for writing an image to a stream as a Windows bitmap. - - - - - The amount to pad each row by. - - - - - The mask for the alpha channel of the color for 32 bit rgba bitmaps. - - - - - The mask for the red part of the color for 32 bit rgba bitmaps. - - - - - The mask for the green part of the color for 32 bit rgba bitmaps. - - - - - The mask for the blue part of the color for 32 bit rgba bitmaps. - - - - - The color palette for an 8 bit image will have 256 entry's with 4 bytes for each entry. - - - - - Used for allocating memory during processing operations. - - - - - The global configuration. - - - - - The color depth, in number of bits per pixel. - - - - - A bitmap v4 header will only be written, if the user explicitly wants support for transparency. - In this case the compression type BITFIELDS will be used. - Otherwise a bitmap v3 header will be written, which is supported by almost all decoders. - - - - - The quantizer for reducing the color count for 8-Bit images. - - - - - Initializes a new instance of the class. - - The encoder options. - The memory manager. - - - - Encodes the image to the specified stream from the . - - The pixel format. - The to encode from. - The to encode the image data to. - The token to request cancellation. - - - - Writes the pixel data to the binary stream. - - The pixel format. - The to write to. - - The containing pixel data. - - - - - Writes the 32bit color palette to the stream. - - The pixel format. - The to write to. - The containing pixel data. - - - - Writes the 24bit color palette to the stream. - - The pixel format. - The to write to. - The containing pixel data. - - - - Writes the 16bit color palette to the stream. - - The type of the pixel. - The to write to. - The containing pixel data. - - - - Writes an 8 Bit image with a color palette. The color palette has 256 entry's with 4 bytes for each entry. - - The type of the pixel. - The to write to. - The containing pixel data. - - - - Writes an 8 Bit color image with a color palette. The color palette has 256 entry's with 4 bytes for each entry. - - The type of the pixel. - The to write to. - The containing pixel data. - A byte span of size 1024 for the color palette. - - - - Writes an 8 Bit gray image with a color palette. The color palette has 256 entry's with 4 bytes for each entry. - - The type of the pixel. - The to write to. - The containing pixel data. - A byte span of size 1024 for the color palette. - - - - Stores general information about the Bitmap file. - - - - The first two bytes of the Bitmap file format - (thus the Bitmap header) are stored in big-endian order. - All of the other integer values are stored in little-endian format - (i.e. least-significant byte first). - - - - - Defines the size of the data structure in the bitmap file. - - - - - Gets the Bitmap identifier. - The field used to identify the bitmap file: 0x42 0x4D - (Hex code points for B and M) - - - - - Gets the size of the bitmap file in bytes. - - - - - Gets any reserved data; actual value depends on the application - that creates the image. - - - - - Gets the offset, i.e. starting address, of the byte where - the bitmap data can be found. - - - - - Indicates which bitmap file marker was read. - - - - - Single-image BMP file that may have been created under Windows or OS/2. - - - - - OS/2 Bitmap Array. - - - - - OS/2 Color Icon. - - - - - OS/2 Color Pointer. - - - - - OS/2 Icon. - - - - - OS/2 Pointer. - - - - - Registers the image encoders, decoders and mime type detectors for the bmp format. - - - - - Gets the current instance. - - - - - - - - - - - - - - - - - - - - Detects bmp file headers. - - - - - - - - - - - This block of bytes tells the application detailed information - about the image, which will be used to display the image on - the screen. - - - - - - Defines the size of the BITMAPCOREHEADER data structure in the bitmap file. - - - - - Defines the size of the short variant of the OS22XBITMAPHEADER data structure in the bitmap file. - - - - - Defines the size of the BITMAPINFOHEADER (BMP Version 3) data structure in the bitmap file. - - - - - Special case of the BITMAPINFOHEADER V3 used by adobe where the color bitmasks are part of the info header instead of following it. - - - - - Special case of the BITMAPINFOHEADER V3 used by adobe where the color bitmasks (including the alpha channel) are part of the info header instead of following it. - - - - - Size of a IBM OS/2 2.x bitmap header. - - - - - Defines the size of the BITMAPINFOHEADER (BMP Version 4) data structure in the bitmap file. - - - - - Defines the size of the BITMAPINFOHEADER (BMP Version 5) data structure in the bitmap file. - - - - - Defines the size of the biggest supported header data structure in the bitmap file. - - - - - Defines the size of the field. - - - - - Gets or sets the size of this header. - - - - - Gets or sets the bitmap width in pixels (signed integer). - - - - - Gets or sets the bitmap height in pixels (signed integer). - - - - - Gets or sets the number of color planes being used. Must be set to 1. - - - - - Gets or sets the number of bits per pixel, which is the color depth of the image. - Typical values are 1, 4, 8, 16, 24 and 32. - - - - - Gets or sets the compression method being used. - See the next table for a list of possible values. - - - - - Gets or sets the image size. This is the size of the raw bitmap data (see below), - and should not be confused with the file size. - - - - - Gets or sets the horizontal resolution of the image. - (pixel per meter, signed integer) - - - - - Gets or sets the vertical resolution of the image. - (pixel per meter, signed integer) - - - - - Gets or sets the number of colors in the color palette, - or 0 to default to 2^n. - - - - - Gets or sets the number of important colors used, - or 0 when every color is important{ get; set; } generally ignored. - - - - - Gets or sets red color mask. This is used with the BITFIELDS decoding. - - - - - Gets or sets green color mask. This is used with the BITFIELDS decoding. - - - - - Gets or sets blue color mask. This is used with the BITFIELDS decoding. - - - - - Gets or sets alpha color mask. This is not used yet. - - - - - Gets or sets the Color space type. Not used yet. - - - - - Gets or sets the X coordinate of red endpoint. Not used yet. - - - - - Gets or sets the Y coordinate of red endpoint. Not used yet. - - - - - Gets or sets the Z coordinate of red endpoint. Not used yet. - - - - - Gets or sets the X coordinate of green endpoint. Not used yet. - - - - - Gets or sets the Y coordinate of green endpoint. Not used yet. - - - - - Gets or sets the Z coordinate of green endpoint. Not used yet. - - - - - Gets or sets the X coordinate of blue endpoint. Not used yet. - - - - - Gets or sets the Y coordinate of blue endpoint. Not used yet. - - - - - Gets or sets the Z coordinate of blue endpoint. Not used yet. - - - - - Gets or sets the Gamma red coordinate scale value. Not used yet. - - - - - Gets or sets the Gamma green coordinate scale value. Not used yet. - - - - - Gets or sets the Gamma blue coordinate scale value. Not used yet. - - - - - Parses the BITMAPCOREHEADER (BMP Version 2) consisting of the headerSize, width, height, planes, and bitsPerPixel fields (12 bytes). - - The data to parse. - The parsed header. - - - - - Parses a short variant of the OS22XBITMAPHEADER. It is identical to the BITMAPCOREHEADER, except that the width and height - are 4 bytes instead of 2, resulting in 16 bytes total. - - The data to parse. - The parsed header. - - - - - Parses the full BMP Version 3 BITMAPINFOHEADER header (40 bytes). - - The data to parse. - The parsed header. - - - - - Special case of the BITMAPINFOHEADER V3 used by adobe where the color bitmasks are part of the info header instead of following it. - 52 bytes without the alpha mask, 56 bytes with the alpha mask. - - The data to parse. - Indicates, if the alpha bitmask is present. - The parsed header. - - - - - Parses a OS/2 version 2 bitmap header (64 bytes). Only the first 40 bytes are parsed which are - very similar to the Bitmap v3 header. The other 24 bytes are ignored, but they do not hold any - useful information for decoding the image. - - The data to parse. - The parsed header. - - - - - Parses the full BMP Version 4 BITMAPINFOHEADER header (108 bytes). - - The data to parse. - The parsed header. - - - - - Writes a bitmap version 3 (Microsoft Windows NT) header to a buffer (40 bytes). - - The buffer to write to. - - - - Writes a complete Bitmap V4 header to a buffer. - - The buffer to write to. - - - - Enum value for the different bitmap info header types. The enum value is the number of bytes for the specific bitmap header. - - - - - Bitmap Core or BMP Version 2 header (Microsoft Windows 2.x). - - - - - Short variant of the OS/2 Version 2 bitmap header. - - - - - BMP Version 3 header (Microsoft Windows 3.x or Microsoft Windows NT). - - - - - Adobe variant of the BMP Version 3 header. - - - - - Adobe variant of the BMP Version 3 header with an alpha mask. - - - - - BMP Version 2.x header (IBM OS/2 2.x). - - - - - BMP Version 4 header (Microsoft Windows 95). - - - - - BMP Version 5 header (Windows NT 5.0, 98 or later). - - - - - Provides Bmp specific metadata information for the image. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - The metadata to create an instance from. - - - - Gets or sets the bitmap info header type. - - - - - Gets or sets the number of bits per pixel. - - - - - - - - Cold path optimization for throwing 's - - The error message for the exception. - - - - Cold path optimization for throwing 's - - The error message for the exception. - - - - Image decoder options for decoding Windows bitmap streams. - - - - - Gets the value indicating how to deal with skipped pixels, which can occur during decoding run length encoded bitmaps. - - - - - Configuration options for use during bmp encoding. - - - - - Gets the number of bits per pixel. - - - - - Gets a value indicating whether the encoder should support transparency. - Note: Transparency support only works together with 32 bits per pixel. This option will - change the default behavior of the encoder of writing a bitmap version 3 info header with no compression. - Instead a bitmap version 4 info header will be written with the BITFIELDS compression. - - - - - Gets the quantizer for reducing the color count for 8-Bit images. - - - - - Defines possible options, how skipped pixels during decoding of run length encoded bitmaps should be treated. - - - - - Undefined pixels should be black. This is the default behavior and equal to how System.Drawing handles undefined pixels. - - - - - Undefined pixels should be transparent. - - - - - Undefined pixels should have the first color of the palette. - - - - - Provides enumeration for the available color table modes. - - - - - A single color table is calculated from the first frame and reused for subsequent frames. - - - - - A unique color table is calculated for each frame. - - - - - Registers the image encoders, decoders and mime type detectors for the gif format. - - - - - - - - Constants that define specific points within a Gif. - - - - - The file type. - - - - - The file version. - - - - - The extension block introducer !. - - - - - The graphic control label. - - - - - The application extension label. - - - - - The application block size. - - - - - The application identification. - - - - - The Netscape looping application sub block size. - - - - - The comment label. - - - - - The maximum length of a comment data sub-block is 255. - - - - - The image descriptor label ,. - - - - - The plain text label. - - - - - The image label introducer ,. - - - - - The terminator. - - - - - The end introducer trailer ;. - - - - - The character encoding to use when reading and writing comments - (ASCII 7bit). - - - - - The collection of mimetypes that equate to a Gif. - - - - - The collection of file extensions that equate to a Gif. - - - - - Gets the ASCII encoded bytes used to identify the GIF file (combining and ). - - - - - Gets the ASCII encoded application identification bytes (representing ). - - - - - Decoder for generating an image out of a gif encoded stream. - - - - - Gets or sets a value indicating whether the metadata should be ignored when the image is being decoded. - - - - - Gets or sets the decoding mode for multi-frame images - - - - - - - - - - - - - - - - - - - - - - - Performs the gif decoding operation. - - - - - The temp buffer used to reduce allocations. - - - - - The currently loaded stream. - - - - - The global color table. - - - - - The area to restore. - - - - - The logical screen descriptor. - - - - - The graphics control extension. - - - - - The image descriptor. - - - - - The abstract metadata. - - - - - The gif specific metadata. - - - - - Initializes a new instance of the class. - - The configuration. - The decoder options. - - - - - - - Gets or sets a value indicating whether the metadata should be ignored when the image is being decoded. - - - - - Gets the decoding mode for multi-frame images. - - - - - Gets the dimensions of the image. - - - - - - - - - - - Reads the graphic control extension. - - - - - Reads the image descriptor. - - - - - Reads the logical screen descriptor. - - - - - Reads the application extension block parsing any animation information - if present. - - - - - Skips over a block or reads its terminator. - The length of the block to skip. - - - - - Reads the gif comments. - - - - - Reads an individual gif frame. - - The pixel format. - The image to decode the information to. - The previous frame. - - - - Reads the frame indices marking the color to use for each pixel. - - The 2D pixel buffer to write to. - - - - Reads the frames colors, mapping indices to colors. - - The pixel format. - The image to decode the information to. - The previous frame. - The indexed pixels. - The color table containing the available colors. - The - - - - Restores the current frame area to the background. - - The pixel format. - The frame. - - - - Sets the frames metadata. - - The metadata. - - - - Reads the logical screen descriptor and global color table blocks - - The stream containing image data. - - - - Provides enumeration for instructing the decoder what to do with the last image - in an animation sequence. - section 23 - - - - - No disposal specified. - The decoder is not required to take any action. - - - - - Do not dispose. - The graphic is to be left in place. - - - - - Restore to background color. - The area used by the graphic must be restored to the background color. - - - - - Restore to previous. - The decoder is required to restore the area overwritten by the - graphic with what was there prior to rendering the graphic. - - - - - Image encoder for writing image data to a stream in gif format. - - - - - Gets or sets the quantizer for reducing the color count. - Defaults to the - - - - - Gets or sets the color table mode: Global or local. - - - - - Gets or sets the used for quantization - when building a global color table in case of . - - - - - - - - - - - Implements the GIF encoding protocol. - - - - - Used for allocating memory during processing operations. - - - - - Configuration bound to the encoding operation. - - - - - A reusable buffer used to reduce allocations. - - - - - The quantizer used to generate the color palette. - - - - - The color table mode: Global or local. - - - - - The number of bits requires to store the color palette. - - - - - The pixel sampling strategy for global quantization. - - - - - Initializes a new instance of the class. - - The configuration which allows altering default behaviour or extending the library. - The options for the encoder. - - - - Encodes the image to the specified stream from the . - - The pixel format. - The to encode from. - The to encode the image data to. - The token to request cancellation. - - - - Returns the index of the most transparent color in the palette. - - The quantized frame. - The pixel format. - - The . - - - - - Writes the file header signature and version to the stream. - - The stream to write to. - - - - Writes the logical screen descriptor to the stream. - - The image metadata. - The image width. - The image height. - The transparency index to set the default background index to. - Whether to use a global or local color table. - The stream to write to. - - - - Writes the application extension to the stream. - - The stream to write to. - The animated image repeat count. - - - - Writes the image comments to the stream. - - The metadata to be extract the comment data. - The stream to write to. - - - - Writes a comment sub-block to the stream. - - The stream to write to. - Comment as a Span. - Current start index. - The length of the string to write. Should not exceed 255 bytes. - - - - Writes the graphics control extension to the stream. - - The metadata of the image or frame. - The index of the color in the color palette to make transparent. - The stream to write to. - - - - Writes the provided extension to the stream. - - The extension to write to the stream. - The stream to write to. - - - - Writes the image descriptor to the stream. - - The pixel format. - The to be encoded. - Whether to use the global color table. - The stream to write to. - - - - Writes the color table to the stream. - - The pixel format. - The to encode. - The stream to write to. - - - - Writes the image pixel data to the stream. - - The pixel format. - The containing indexed pixels. - The stream to write to. - - - - Registers the image encoders, decoders and mime type detectors for the gif format. - - - - - Gets the current instance. - - - - - - - - - - - - - - - - - - - - - - - Provides Gif specific metadata information for the image frame. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - The metadata to create an instance from. - - - - Gets or sets the length of the color table for paletted images. - If not 0, then this field indicates the maximum number of colors to use when quantizing the - image frame. - - - - - Gets or sets the frame delay for animated images. - If not 0, when utilized in Gif animation, this field specifies the number of hundredths (1/100) of a second to - wait before continuing with the processing of the Data Stream. - The clock starts ticking immediately after the graphic is rendered. - - - - - Gets or sets the disposal method for animated images. - Primarily used in Gif animation, this field indicates the way in which the graphic is to - be treated after being displayed. - - - - - - - - Detects gif file headers - - - - - - - - - - - Provides Gif specific metadata information for the image. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - The metadata to create an instance from. - - - - Gets or sets the number of times any animation is repeated. - - 0 means to repeat indefinitely, count is set as repeat n-1 times. Defaults to 1. - - - - - - Gets or sets the color table mode. - - - - - Gets or sets the length of the global color table if present. - - - - - Gets or sets the the collection of comments about the graphics, credits, descriptions or any - other type of non-control and non-graphic data. - - - - - - - - Cold path optimization for throwing 's - - The error message for the exception. - - - - Cold path optimization for throwing 's. - - The error message for the exception. - The exception that is the cause of the current exception, or a null reference - if no inner exception is specified. - - - - Decoder for generating an image out of a gif encoded stream. - - - - - Gets a value indicating whether the metadata should be ignored when the image is being decoded. - - - - - Gets the decoding mode for multi-frame images. - - - - - The configuration options used for encoding gifs. - - - - - Gets the quantizer used to generate the color palette. - - - - - Gets the color table mode: Global or local. - - - - - Gets the used for quantization when building a global color table. - - - - - Decompresses and decodes data using the dynamic LZW algorithms. - - - - - The max decoder pixel stack size. - - - - - The null code. - - - - - The stream to decode. - - - - - The prefix buffer. - - - - - The suffix buffer. - - - - - The pixel stack buffer. - - - - - Initializes a new instance of the class - and sets the stream, where the compressed data should be read from. - - The to use for buffer allocations. - The stream to read from. - is null. - - - - Decodes and decompresses all pixel indices from the stream. - - Size of the data. - The pixel array to decode to. - - - - Reads the next data block from the stream. A data block begins with a byte, - which defines the size of the block, followed by the block itself. - - The buffer to store the block in. - - The . - - - - - - - - Encodes and compresses the image data using dynamic Lempel-Ziv compression. - - - Adapted from Jef Poskanzer's Java port by way of J. M. G. Elliott. K Weiner 12/00 - - GIFCOMPR.C - GIF Image compression routines - - - Lempel-Ziv compression based on 'compress'. GIF modifications by - David Rowley (mgardi@watdcsu.waterloo.edu) - - GIF Image compression - modified 'compress' - - Based on: compress.c - File compression ala IEEE Computer, June 1984. - By Authors: Spencer W. Thomas (decvax!harpo!utah-cs!utah-gr!thomas) - Jim McKie (decvax!mcvax!jim) - Steve Davies (decvax!vax135!petsd!peora!srd) - Ken Turkowski (decvax!decwrl!turtlevax!ken) - James A. Woods (decvax!ihnp4!ames!jaw) - Joe Orost (decvax!vax135!petsd!joe) - - - - - - 80% occupancy - - - - - The amount to shift each code. - - - - - Mask used when shifting pixel values - - - - - The maximum number of bits/code. - - - - - Should NEVER generate this code. - - - - - The initial code size. - - - - - The hash table. - - - - - The code table. - - - - - Define the storage for the packet accumulator. - - - - - Number of bits/code - - - - - maximum code, given bitCount - - - - - First unused entry - - - - - Block compression parameters -- after all codes are used up, - and compression rate changes, start over. - - - - - Algorithm: use open addressing double hashing (no chaining) on the - prefix code / next character combination. We do a variant of Knuth's - algorithm D (vol. 3, sec. 6.4) along with G. Knott's relatively-prime - secondary probe. Here, the modular division first probe is gives way - to a faster exclusive-or manipulation. Also do block compression with - an adaptive reset, whereby the code table is cleared when the compression - ratio decreases, but after the table fills. The variable-length output - codes are re-sized at this point, and a special CLEAR code is generated - for the decompressor. Late addition: construct the table according to - file size for noticeable speed improvement on small files. Please direct - questions about this implementation to ames!jaw. - - - - - The clear code. - - - - - The end-of-file code. - - - - - Output the given code. - Inputs: - code: A bitCount-bit integer. If == -1, then EOF. This assumes - that bitCount =< wordsize - 1. - Outputs: - Outputs code to the file. - Assumptions: - Chars are 8 bits long. - Algorithm: - Maintain a BITS character long buffer (so that 8 codes will - fit in it exactly). Use the VAX insv instruction to insert each - code in turn. When the buffer fills up empty it and start over. - - - - - The current bits. - - - - - Number of characters so far in this 'packet' - - - - - Initializes a new instance of the class. - - The to use for buffer allocations. - The color depth in bits. - - - - Encodes and compresses the indexed pixels to the stream. - - The 2D buffer of indexed pixels. - The stream to write to. - - - - Gets the maximum code value. - - The number of bits - See - - - - Add a character to the end of the current packet, and if it is 254 characters, - flush the packet to disk. - - The character to add. - The reference to the storage for packet accumulators - The stream to write to. - - - - Table clear for block compress. - - The output stream. - - - - Reset the code table. - - - - - Compress the packets to the stream. - - The 2D buffer of indexed pixels. - The initial bits. - The stream to write to. - - - - Flush the packet to disk and reset the accumulator. - - The output stream. - - - - Output the current code to the stream. - - The code. - The stream to write to. - - - - - - - The Graphic Control Extension contains parameters used when - processing a graphic rendering block. - - - - - Gets the size of the block. - - - - - Gets the packed disposalMethod and transparencyFlag value. - - - - - Gets the delay time in of hundredths (1/100) of a second - to wait before continuing with the processing of the Data Stream. - The clock starts ticking immediately after the graphic is rendered. - - - - - Gets the transparency index. - The Transparency Index is such that when encountered, the corresponding pixel - of the display device is not modified and processing goes on to the next pixel. - - - - - Gets the disposal method which indicates the way in which the - graphic is to be treated after being displayed. - - - - - Gets a value indicating whether transparency flag is to be set. - This indicates whether a transparency index is given in the Transparent Index field. - - - - - Each image in the Data Stream is composed of an Image Descriptor, - an optional Local Color Table, and the image data. - Each image must fit within the boundaries of the - Logical Screen, as defined in the Logical Screen Descriptor. - - - - - Gets the column number, in pixels, of the left edge of the image, - with respect to the left edge of the Logical Screen. - Leftmost column of the Logical Screen is 0. - - - - - Gets the row number, in pixels, of the top edge of the image with - respect to the top edge of the Logical Screen. - Top row of the Logical Screen is 0. - - - - - Gets the width of the image in pixels. - - - - - Gets the height of the image in pixels. - - - - - Gets the packed value of localColorTableFlag, interlaceFlag, sortFlag, and localColorTableSize. - - - - - The Logical Screen Descriptor contains the parameters - necessary to define the area of the display device - within which the images will be rendered - - - - - Gets the width, in pixels, of the Logical Screen where the images will - be rendered in the displaying device. - - - - - Gets the height, in pixels, of the Logical Screen where the images will be - rendered in the displaying device. - - - - - Gets the packed value consisting of: - globalColorTableFlag, colorResolution, sortFlag, and sizeOfGlobalColorTable. - - - - - Gets the index at the Global Color Table for the Background Color. - The Background Color is the color used for those - pixels on the screen that are not covered by an image. - - - - - Gets the pixel aspect ratio. - - - - - Gets a value indicating whether a flag denoting the presence of a Global Color Table - should be set. - If the flag is set, the Global Color Table will included after - the Logical Screen Descriptor. - - - - - Gets the global color table size. - If the Global Color Table Flag is set, - the value in this field is used to calculate the number of - bytes contained in the Global Color Table. - - - - - Gets the color depth, in number of bits per pixel. - The lowest 3 packed bits represent the bit depth minus 1. - - - - - Gets the repeat count. - 0 means loop indefinitely. Count is set as play n + 1 times. - - - - - A base interface for GIF extensions. - - - - - Gets the label identifying the extensions. - - - - - Writes the extension data to the buffer. - - The buffer to write the extension to. - The number of bytes written to the buffer. - - - - Encapsulates properties and methods required for decoding an image from a stream. - - - - - Decodes the image from the specified stream to an of a specific pixel type. - - The pixel format. - The configuration for the image. - The containing image data. - The . - - - - Decodes the image from the specified stream to an . - - The configuration for the image. - The containing image data. - The . - - - - Decodes the image from the specified stream to an of a specific pixel type. - - The pixel format. - The configuration for the image. - The containing image data. - The token to monitor for cancellation requests. - The . - - - - Decodes the image from the specified stream to an . - - The configuration for the image. - The containing image data. - The token to monitor for cancellation requests. - The . - - - - Abstraction for shared internals for ***DecoderCore implementations to be used with . - - - - - Gets the associated configuration. - - - - - Gets the dimensions of the image being decoded. - - - - - Decodes the image from the specified stream. - - The pixel format. - The stream, where the image should be decoded from. Cannot be null. - The token to monitor for cancellation requests. - is null. - The decoded image. - - Cancellable synchronous method. In case of cancellation, - an shall be thrown which will be handled on the call site. - - - - - Reads the raw image information from the specified stream. - - The containing image data. - The token to monitor for cancellation requests. - The . - - Cancellable synchronous method. In case of cancellation, - an shall be thrown which will be handled on the call site. - - - - - Encapsulates properties and methods required for encoding an image to a stream. - - - - - Encodes the image to the specified stream from the . - - The pixel format. - The to encode from. - The to encode the image data to. - - - - Encodes the image to the specified stream from the . - - The pixel format. - The to encode from. - The to encode the image data to. - The token to monitor for cancellation requests. - A representing the asynchronous operation. - - - - Abstraction for shared internals for ***DecoderCore implementations to be used with . - - - - - Encodes the image. - - The image. - The stream. - The token to monitor for cancellation requests. - The pixel type. - - - - Defines the contract for an image format. - - - - - Gets the name that describes this image format. - - - - - Gets the default mimetype that the image format uses - - - - - Gets all the mimetypes that have been used by this image format. - - - - - Gets the file extensions this image format commonly uses. - - - - - Defines the contract for an image format containing metadata. - - The type of format metadata. - - - - Creates a default instance of the format metadata. - - The . - - - - Defines the contract for an image format containing metadata with multiple frames. - - The type of format metadata. - The type of format frame metadata. - - - - Creates a default instance of the format frame metadata. - - The . - - - - Used for detecting mime types from a file header - - - - - Gets the size of the header for this image type. - - The size of the header. - - - - Detect mimetype - - The containing the file header. - returns the mime type of detected otherwise returns null - - - - Encapsulates methods used for detecting the raw image information without fully decoding it. - - - - - Reads the raw image information from the specified stream. - - The configuration for the image. - The containing image data. - The object - - - - Reads the raw image information from the specified stream. - - The configuration for the image. - The containing image data. - The token to monitor for cancellation requests. - The object - - - - Reads the raw image information from the specified stream. - - The decoder. - /// The configuration for the image. - The containing image data. - The token to monitor for cancellation requests. - is null. - A representing the asynchronous operation. - - - - Reads the raw image information from the specified stream. - - The decoder. - The configuration for the image. - The containing image data. - Factory method to handle as . - The token to monitor for cancellation requests. - is null. - A representing the asynchronous operation. - - - - Decodes the image from the specified stream. - - The pixel format. - The decoder. - The configuration for the image. - The containing image data. - The token to monitor for cancellation requests. - A representing the asynchronous operation. - - - - Decodes the image from the specified stream. - - The pixel format. - The decoder. - The configuration for the image. - The containing image data. - Factory method to handle as . - The token to monitor for cancellation requests. - A representing the asynchronous operation. - - - - Collection of Image Formats to be used in class. - - - - - Used for locking against as there is no ConcurrentSet type. - - - - - - The list of supported keyed to mime types. - - - - - The list of supported keyed to mime types. - - - - - The list of supported s. - - - - - The list of supported s. - - - - - Initializes a new instance of the class. - - - - - Gets the maximum header size of all the formats. - - - - - Gets the currently registered s. - - - - - Gets the currently registered s. - - - - - Gets the currently registered s. - - - - - Gets the currently registered s. - - - - - Registers a new format provider. - - The format to register as a known format. - - - - For the specified file extensions type find the e . - - The extension to discover - The if found otherwise null - - - - For the specified mime type find the . - - The mime-type to discover - The if found; otherwise null - - - - Sets a specific image encoder as the encoder for a specific image format. - - The image format to register the encoder for. - The encoder to use, - - - - Sets a specific image decoder as the decoder for a specific image format. - - The image format to register the encoder for. - The decoder to use, - - - - Removes all the registered image format detectors. - - - - - Adds a new detector for detecting mime types. - - The detector to add - - - - For the specified mime type find the decoder. - - The format to discover - The if found otherwise null - - - - For the specified mime type find the encoder. - - The format to discover - The if found otherwise null - - - - Sets the max header size. - - - - - Represents a Jpeg block with coefficients. - - - - - A number of scalar coefficients in a - - - - - A fixed size buffer holding the values. - See: - https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/unsafe-code-pointers/fixed-size-buffers - - - - - - Initializes a new instance of the struct. - - A of coefficients - - - - Gets or sets a value at the given index - - The index - The value - - - - Gets or sets a value in a row+column of the 8x8 block - - The x position index in the row - The column index - The value - - - - Multiply all elements by a given - - - - - Divide all elements by a given - - - - - Add an to all elements - - - - - Subtract an from all elements - - - - - Pointer-based "Indexer" (getter part) - - Block pointer - Index - The scaleVec value at the specified index - - - - Pointer-based "Indexer" (setter part) - - Block pointer - Index - Value - - - - Convert to - - - - - Copy all elements to an array of . - - - - - Copy elements into 'destination' Span of values - - - - - Copy elements into 'destination' Span of values - - - - - Cast and copy -s from the beginning of 'source' span. - - - - - - - - - - - - - - - - - Calculate the total sum of absolute differences of elements in 'a' and 'b'. - - - - - Represents a Jpeg block with coefficients. - - - - - A number of scalar coefficients in a - - - - - Get/Set scalar elements at a given index - - The index - The float value at the specified index - - - - Fill the block with defaults (zeroes). - - - - - Load raw 32bit floating point data from source. - - Source - - - - Load raw 32bit floating point data from source. - - Block pointer - Source - - - - Load raw 32bit floating point data from source - - Source - - - - Copy raw 32bit floating point data to dest, - - Destination - - - - Convert scalars to byte-s and copy to dest, - - Pointer to block - Destination - - - - Copy raw 32bit floating point data to dest. - - The block pointer. - The destination. - - - - Copy raw 32bit floating point data to dest - - Destination - - - - Copy raw 32bit floating point data to dest - - Destination - - - - Multiply all elements of the block. - - The value to multiply by. - - - - Multiply all elements of the block by the corresponding elements of 'other'. - - - - - Adds a vector to all elements of the block. - - The added vector. - - - - Quantize the block. - - The block pointer. - The qt pointer. - Unzig pointer - - - - Quantize 'block' into 'dest' using the 'qt' quantization table: - Unzig the elements of block into dest, while dividing them by elements of qt and "pre-rounding" the values. - To finish the rounding it's enough to (int)-cast these values. - - Source block - Destination block - The quantization table - The 8x8 Unzig block. - - - - Scales the 16x16 region represented by the 4 source blocks to the 8x8 DST block. - - The destination block. - The source block. - - - - Level shift by +maximum/2, clip to [0..maximum], and round all the values in the block. - - - - - Rounds all values in the block. - - - - - Loads values from using extended AVX2 intrinsics. - - The source - - - - - - - - - - Transpose the block into the destination block. - - The destination block - - - - Level shift by +maximum/2, clip to [0, maximum] - - - - - AVX2-only variant for executing and in one step. - - - - - Fill the block from 'source' doing short -> float conversion. - - - - - Copy block data into the destination color buffer pixel area with the provided horizontal and vertical scale factors. - - - - - Provides information about the Adobe marker segment. - - See the included 5116.DCT.pdf file in the source for more information. - - - - Gets the length of an adobe marker segment. - - - - - Initializes a new instance of the struct. - - The DCT encode version - The horizontal downsampling hint used for DCT encoding - The vertical downsampling hint used for DCT encoding - The color transform model used - - - - Gets the DCT Encode Version - - - - - Gets the horizontal downsampling hint used for DCT encoding - 0x0 : (none - Chop) - Bit 15 : Encoded with Blend=1 downsampling. - - - - - Gets the vertical downsampling hint used for DCT encoding - 0x0 : (none - Chop) - Bit 15 : Encoded with Blend=1 downsampling - - - - - Gets the colorspace transform model used - 00 : Unknown (RGB or CMYK) - 01 : YCbCr - 02 : YCCK - - - - - Converts the specified byte array representation of an Adobe marker to its equivalent and - returns a value that indicates whether the conversion succeeded. - - The byte array containing metadata to parse. - The marker to return. - - - - - - - - - - - - - Encapsulates the conversion of Jpeg channels to RGBA values packed in buffer. - - - - - The available converters - - - - - Initializes a new instance of the class. - - - - - Gets a value indicating whether this is available - on the current runtime and CPU architecture. - - - - - Gets the of this converter. - - - - - Gets the Precision of this converter in bits. - - - - - Gets the maximum value of a sample - - - - - Gets the half of the maximum value of a sample - - - - - Returns the corresponding to the given - - - - - He implementation of the conversion. - - The input as a stack-only struct - The destination buffer of values - - - - Returns the s for all supported colorspaces and precisions. - - - - - Returns the s for the YCbCr colorspace. - - - - - Returns the s for the YccK colorspace. - - - - - Returns the s for the CMYK colorspace. - - - - - Returns the s for the gray scale colorspace. - - - - - Returns the s for the RGB colorspace. - - - - - A stack-only struct to reference the input buffers using -s. - - - - - The component count - - - - - The component 0 (eg. Y) - - - - - The component 1 (eg. Cb) - - - - - The component 2 (eg. Cr) - - - - - The component 4 - - - - - Initializes a new instance of the struct. - - The 1-4 sized list of component buffers. - The row to convert - - - - Pack (r0,r1...r7) (g0,g1...g7) (b0,b1...b7) vector values as (r0,g0,b0,1), (r1,g1,b1,1) ... - - - - - Pack (g0,g1...g7) vector values as (g0,g0,g0,1), (g1,g1,g1,1) ... - - - - - Used to buffer and track the bits read from the Huffman entropy encoded data. - - - - - Gets the current, if any, marker in the input stream. - - - - - Gets the opening position of an identified marker. - - - - - Gets a value indicating whether to continue reading the input stream. - - - - - Whether a RST marker has been detected, I.E. One that is between RST0 and RST7 - - - - - Whether a bad marker has been detected, I.E. One that is not between RST0 and RST7 - - - - - Decodes the Huffman encoded spectral scan. - Originally ported from - with additional fixes for both performance and common encoding errors. - - - - - Initializes a new instance of the class. - - The input stream. - The image frame. - The DC Huffman tables. - The AC Huffman tables. - The length of the components. Different to the array length. - The reset interval. - The spectral selection start. - The spectral selection end. - The successive approximation bit high end. - The successive approximation bit low end. - The token to monitor cancellation. - - - - Decodes the entropy coded data. - - - - - Represents a Huffman coding table containing basic coding data plus tables for accelerated computation. - - - - - Derived from the DHT marker. Sizes[k] = # of symbols with codes of length k bits; Sizes[0] is unused. - - - - - Derived from the DHT marker. Contains the symbols, in order of incremental code length. - - - - - Contains the largest code of length k (0 if none). MaxCode[17] is a sentinel to - ensure terminates. - - - - - Values[] offset for codes of length k ValOffset[k] = Values[] index of 1st symbol of code length - k, less the smallest code of length k; so given a code of length k, the corresponding symbol is - Values[code + ValOffset[k]]. - - - - - Contains the length of bits for the given k value. - - - - - Lookahead table: indexed by the next bits of - the input data stream. If the next Huffman code is no more - than bits long, we can obtain its length and - the corresponding symbol directly from this tables. - - The lower 8 bits of each table entry contain the number of - bits in the corresponding Huffman code, or + 1 - if too long. The next 8 bits of each entry contain the symbol. - - - - - Initializes a new instance of the struct. - - The code lengths - The huffman values - - - - Expands the HuffmanTable into its readable form. - - - - - Common interface to represent raw Jpeg components. - - - - - Gets the component's position in the components array. - - - - - Gets the number of blocks in this component as - - - - - Gets the horizontal and the vertical sampling factor as - - - - - Gets the divisors needed to apply when calculating colors. - - https://en.wikipedia.org/wiki/Chroma_subsampling - - In case of 4:2:0 subsampling the values are: Luma.SubSamplingDivisors = (1,1) Chroma.SubSamplingDivisors = (2,2) - - - - - Gets the index of the quantization table for this block. - - - - - Gets the storing the "raw" frequency-domain decoded + unzigged blocks. - We need to apply IDCT and dequantization to transform them into color-space blocks. - - - - - - Represents decompressed, unprocessed jpeg data with spectral space -s. - - - - - Gets the image size in pixels. - - - - - Gets the number of components. - - - - - Gets the color space - - - - - Gets the number of bits used for precision. - - - - - Gets the components. - - - - - Gets the quantization tables, in zigzag order. - - - - - Provides information about the JFIF marker segment. - TODO: Thumbnail? - - - - - Gets the length of an JFIF marker segment. - - - - - Initializes a new instance of the struct. - - The major version. - The minor version. - The units for the density values. - The horizontal pixel density. - The vertical pixel density. - - - - Gets the major version. - - - - - Gets the minor version. - - - - - Gets the units for the following pixel density fields - 00 : No units; width:height pixel aspect ratio = Ydensity:Xdensity - 01 : Pixels per inch (2.54 cm) - 02 : Pixels per centimeter - - - - - Gets the horizontal pixel density. Must not be zero. - - - - - Gets the vertical pixel density. Must not be zero. - - - - - Converts the specified byte array representation of an JFIF marker to its equivalent and - returns a value that indicates whether the conversion succeeded. - - The byte array containing metadata to parse. - The marker to return. - - - - - - - - - - - - - Encapsulates the implementation of processing "raw" jpeg buffers into Jpeg image channels. - - - - - Source block - - - - - Temporal block 1 to store intermediate and/or final computation results. - - - - - Temporal block 2 to store intermediate and/or final computation results. - - - - - The quantization table as . - - - - - Defines the horizontal and vertical scale we need to apply to the 8x8 sized block. - - - - - Defines the maximum value derived from the bitdepth. - - - - - Initializes a new instance of the struct. - - The raw jpeg data. - The raw component. - - - - Processes 'sourceBlock' producing Jpeg color channel values from spectral values: - - Dequantize - - Applying IDCT - - Level shift by +maximumValue/2, clip to [0, maximumValue] - - Copy the resulting color values into 'destArea' scaling up the block by amount defined in . - - The source block. - Reference to the origin of the destination pixel area. - The width of the destination pixel buffer. - The maximum value derived from the bitdepth. - - - - Identifies the colorspace of a Jpeg image. - - - - - Represents a single frame component. - - - - - Gets the component id. - - - - - Gets or sets DC coefficient predictor. - - - - - Gets the horizontal sampling factor. - - - - - Gets the vertical sampling factor. - - - - - - - - - - - - - - - - - - - - - - - Gets the number of blocks per line. - - - - - Gets the number of blocks per column. - - - - - Gets or sets the index for the DC Huffman table. - - - - - Gets or sets the index for the AC Huffman table. - - - - - - - - Encapsulates postprocessing data for one component for . - - - - - Points to the current row in . - - - - - The size of the area in corresponding to one 8x8 Jpeg block - - - - - Initializes a new instance of the class. - - - - - Gets the - - - - - Gets the - - - - - Gets the temporary working buffer of color values. - - - - - Gets - - - - - Gets the maximal number of block rows being processed in one step. - - - - - - - - Invoke for block rows, copy the result into . - - - - - Represents a jpeg file marker. - - - - - Initializes a new instance of the struct. - - The marker - The position within the stream - - - - Initializes a new instance of the struct. - - The marker - The position within the stream - Whether the current marker is invalid - - - - Gets a value indicating whether the current marker is invalid - - - - - Gets the position of the marker within a stream - - - - - Gets the position of the marker within a stream - - - - - - - - Represent a single jpeg frame - - - - - Gets or sets a value indicating whether the frame uses the extended specification. - - - - - Gets or sets a value indicating whether the frame uses the progressive specification. - - - - - Gets or sets the precision. - - - - - Gets or sets the number of scanlines within the frame. - - - - - Gets or sets the number of samples per scanline. - - - - - Gets or sets the number of components within a frame. In progressive frames this value can range from only 1 to 4. - - - - - Gets or sets the component id collection. - - - - - Gets or sets the order in which to process the components. - in interleaved mode. - - - - - Gets or sets the frame component collection. - - - - - Gets or sets the maximum horizontal sampling factor. - - - - - Gets or sets the maximum vertical sampling factor. - - - - - Gets or sets the number of MCU's per line. - - - - - Gets or sets the number of MCU's per column. - - - - - - - - Allocates the frame component blocks. - - - - - Encapsulates the execution od post-processing algorithms to be applied on a to produce a valid :
- (1) Dequantization
- (2) IDCT
- (3) Color conversion form one of the -s into a buffer of RGBA values
- (4) Packing pixels from the buffer.
- These operations are executed in steps. - image rows are converted in one step, - which means that size of the allocated memory is limited (does not depend on ). -
-
- - - The number of block rows to be processed in one Step. - - - - - The number of image pixel rows to be processed in one step. - - - - - Temporal buffer to store a row of colors. - - - - - The corresponding to the current determined by . - - - - - Initializes a new instance of the class. - - The to configure internal operations. - The representing the uncompressed spectral Jpeg data - - - - Gets the instances. - - - - - Gets the to be processed. - - - - - Gets the total number of post processor steps deduced from the height of the image and . - - - - - Gets the size of the temporary buffers we need to allocate into . - - - - - Gets the value of the counter that grows by each step by . - - - - - - - - Process all pixels into 'destination'. The image dimensions should match . - - The pixel type - The destination image - The token to request cancellation. - - - - Execute one step processing pixel rows into 'destination'. - - The pixel type - The destination image. - - - - Convert and copy row of colors into 'destination' starting at row . - - The pixel type - The destination image - - - - Provides methods for identifying metadata and color profiles within jpeg images. - - - - - Gets the JFIF specific markers. - - - - - Gets the ICC specific markers. - - - - - Gets the adobe photoshop APP13 marker which can contain IPTC meta data. - - - - - Gets the 8BIM marker, which signals the start of a adobe specific image resource block. - - - - - Gets a IPTC Image resource ID. - - - - - Gets the EXIF specific markers. - - - - - Gets the Adobe specific markers . - - - - - Returns a value indicating whether the passed bytes are a match to the profile identifier. - - The bytes to check. - The profile identifier. - The . - - - - Provides methods to evaluate the quality of an image. - Ported from - - - - - Returns an estimated quality of the image based on the quantization tables. - - The quantization tables. - The . - - - - Enumerates the Huffman tables - - - - - The DC luminance huffman table index - - - - - The AC luminance huffman table index - - - - - The DC chrominance huffman table index - - - - - The AC chrominance huffman table index - - - - - A compiled look-up table representation of a huffmanSpec. - Each value maps to a uint32 of which the 8 most significant bits hold the - codeword size in bits and the 24 least significant bits hold the codeword. - The maximum codeword size is 16 bits. - - - - - The compiled representations of theHuffmanSpec. - - - - - Initializes static members of the struct. - - - - - Initializes a new instance of the struct. - - dasd - - - - Gets the collection of huffman values. - - - - - The Huffman encoding specifications. - - - - - The Huffman encoding specifications. - This encoder uses the same Huffman encoding for all images. - - - - - Gets count[i] - The number of codes of length i bits. - - - - - Gets value[i] - The decoded value of the codeword at the given index. - - - - - Initializes a new instance of the struct. - - - The number of codes. - - - The decoded values. - - - - - Enumerates the quantization tables - - - - - The luminance quantization table index - - - - - The chrominance quantization table index - - - - - Provides 8-bit lookup tables for converting from Rgb to YCbCr colorspace. - Methods to build the tables are based on libjpeg implementation. - - - - - The red luminance table - - - - - The green luminance table - - - - - The blue luminance table - - - - - The red blue-chrominance table - - - - - The green blue-chrominance table - - - - - The blue blue-chrominance table - B=>Cb and R=>Cr are the same - - - - - The green red-chrominance table - - - - - The blue red-chrominance table - - - - - Initializes the YCbCr tables - - The initialized - - - - Optimized method to allocates the correct y, cb, and cr values to the DCT blocks from the given r, g, b values. - - - - - On-stack worker struct to efficiently encapsulate the TPixel -> Rgb24 -> YCbCr conversion chain of 8x8 pixel blocks. - - The pixel type to work on - - - - The Y component - - - - - The Cb component - - - - - The Cr component - - - - - The color conversion tables - - - - - Temporal 8x8 block to hold TPixel data - - - - - Temporal RGB block - - - - - Converts a 8x8 image area inside 'pixels' at position (x,y) placing the result members of the structure (, , ) - - - - - Contains inaccurate, but fast forward and inverse DCT implementations. - - - - - Apply floating point IDCT transformation into dest, using a temporary block 'temp' provided by the caller (optimization). - Ported from https://github.com/norishigefukushima/dct_simd/blob/master/dct/dct8x8_simd.cpp#L239 - - Source - Destination - Temporary block provided by the caller - - - - Do IDCT internal operations on the left part of the block. Original src: - https://github.com/norishigefukushima/dct_simd/blob/master/dct/dct8x8_simd.cpp#L261 - - The source block - Destination block - - - - Do IDCT internal operations on the right part of the block. - Original src: - https://github.com/norishigefukushima/dct_simd/blob/master/dct/dct8x8_simd.cpp#L261 - - The source block - The destination block - - - - Original: - - https://github.com/norishigefukushima/dct_simd/blob/master/dct/dct8x8_simd.cpp#L15 - - - Source - Destination - - - - Original: - - https://github.com/norishigefukushima/dct_simd/blob/master/dct/dct8x8_simd.cpp#L15 - - - Source - Destination - - - - Apply floating point IDCT transformation into dest, using a temporary block 'temp' provided by the caller (optimization) - - Source - Destination - Temporary block provided by the caller - If true, a constant -128.0 offset is applied for all values before FDCT - - - - A generic 8x8 block implementation, useful for manipulating custom 8x8 pixel data. - - - - - FOR TESTING ONLY! - Gets or sets a value at the given index - - The index - The value - - - - FOR TESTING ONLY! - Gets or sets a value in a row+column of the 8x8 block - - The x position index in the row - The column index - The value - - - - Load a 8x8 region of an image into the block. - The "outlying" area of the block will be stretched out with pixels on the right and bottom edge of the image. - - - - - Only for on-stack instances! - - - - - Cache 8 pixel rows on the stack, which may originate from different buffers of a . - - - - - Extension methods for - - - - - Multiplies 'a.Width' with 'b.Width' and 'a.Height' with 'b.Height'. - TODO: Shouldn't we expose this as operator in SixLabors.Core? - - - - - Divides 'a.Width' with 'b.Width' and 'a.Height' with 'b.Height'. - TODO: Shouldn't we expose this as operator in SixLabors.Core? - - - - - Divide Width and Height as real numbers and return the Ceiling. - - - - - Divide Width and Height as real numbers and return the Ceiling. - - - - - Divide Width and Height as real numbers and return the Ceiling. - - - - - Holds the Jpeg UnZig array in a value/stack type. - Unzig maps from the zigzag ordering to the natural ordering. For example, - unzig[3] is the column and row of the fourth element in zigzag order. The - value is 16, which means first column (16%8 == 0) and third row (16/8 == 2). - - - - - When reading corrupted data, the Huffman decoders could attempt - to reference an entry beyond the end of this array (if the decoded - zero run length reaches past the end of the block). To prevent - wild stores without adding an inner-loop test, we put some extra - "63"s after the real entries. This will cause the extra coefficient - to be stored in location 63 of the block, not somewhere random. - The worst case would be a run-length of 15, which means we need 16 - fake entries. - - - - - Copy of in a value type - - - - - Gets the unzigs map, which maps from the zigzag ordering to the natural ordering. - For example, unzig[3] is the column and row of the fourth element in zigzag order. - The value is 16, which means first column (16%8 == 0) and third row (16/8 == 2). - - - - - Returns the value at the given index - - The index - The - - - - Creates and fills an instance of with Jpeg unzig indices - - The new instance - - - - Apply Zigging to the given quantization table, so it will be sufficient to multiply blocks for dequantizing them. - - - - - Image decoder for generating an image out of a jpg stream. - - - - - Gets a value indicating whether the metadata should be ignored when the image is being decoded. - - - - - Encoder for writing the data image to a stream in jpeg format. - - - - - Gets the quality, that will be used to encode the image. Quality - index must be between 0 and 100 (compression from max to min). - - The quality of the jpg image from 0 to 100. - - - - Gets the subsample ration, that will be used to encode the image. - - The subsample ratio of the jpg image. - - - - Registers the image encoders, decoders and mime type detectors for the jpeg format. - - - - - - - - Contains jpeg constant values defined in the specification. - - - - - The maximum allowable length in each dimension of a jpeg image. - - - - - The list of mimetypes that equate to a jpeg. - - - - - The list of file extensions that equate to a jpeg. - - - - - Contains marker specific constants. - - - - - The prefix used for all markers. - - - - - Same as but of type - - - - - The Start of Image marker - - - - - The End of Image marker - - - - - Application specific marker for marking the jpeg format. - - - - - - Application specific marker for marking where to store metadata. - - - - - Application specific marker for marking where to store ICC profile information. - - - - - Application specific marker. - - - - - Application specific marker. - - - - - Application specific marker. - - - - - Application specific marker. - - - - - Application specific marker. - - - - - Application specific marker. - - - - - Application specific marker. - - - - - Application specific marker. - - - - - Application specific marker. - - - - - Application specific marker. - - - - - Application specific marker. - - - - - Application specific marker used by Adobe for storing encoding information for DCT filters. - - - - - Application specific marker used by GraphicConverter to store JPEG quality. - - - - - The text comment marker - - - - - Define Quantization Table(s) marker - - Specifies one or more quantization tables. - - - - - - Start of Frame (baseline DCT) - - Indicates that this is a baseline DCT-based JPEG, and specifies the width, height, number of components, - and component subsampling (e.g., 4:2:0). - - - - - - Start Of Frame (Extended Sequential DCT) - - Indicates that this is a progressive DCT-based JPEG, and specifies the width, height, number of components, - and component subsampling (e.g., 4:2:0). - - - - - - Start Of Frame (progressive DCT) - - Indicates that this is a progressive DCT-based JPEG, and specifies the width, height, number of components, - and component subsampling (e.g., 4:2:0). - - - - - - Define Huffman Table(s) - - Specifies one or more Huffman tables. - - - - - - Define Restart Interval - - Specifies the interval between RSTn markers, in macroblocks.This marker is followed by two bytes indicating the fixed size so - it can be treated like any other variable size segment. - - - - - - Start of Scan - - Begins a top-to-bottom scan of the image. In baseline DCT JPEG images, there is generally a single scan. - Progressive DCT JPEG images usually contain multiple scans. This marker specifies which slice of data it - will contain, and is immediately followed by entropy-coded data. - - - - - - Define First Restart - - Inserted every r macroblocks, where r is the restart interval set by a DRI marker. - Not used if there was no DRI marker. The low three bits of the marker code cycle in value from 0 to 7. - - - - - - Define Eigth Restart - - Inserted every r macroblocks, where r is the restart interval set by a DRI marker. - Not used if there was no DRI marker. The low three bits of the marker code cycle in value from 0 to 7. - - - - - - Contains Adobe specific constants. - - - - - The color transform is unknown.(RGB or CMYK) - - - - - The color transform is YCbCr (luminance, red chroma, blue chroma) - - - - - The color transform is YCCK (luminance, red chroma, blue chroma, keyline) - - - - - Contains Huffman specific constants. - - - - - The size of the huffman decoder register. - - - - - The number of bits to fetch when filling the buffer. - - - - - The number of times to read the input stream when filling the buffer. - - - - - The minimum number of bits allowed before by the before fetching. - - - - - If the next Huffman code is no more than this number of bits, we can obtain its length - and the corresponding symbol directly from this tables. - - - - - If a Huffman code is this number of bits we cannot use the lookup table to determine its value. - - - - - The size of the lookup table. - - - - - Image decoder for generating an image out of a jpg stream. - - - - - - - - - - - - - - - - - - - - - - - - - - Performs the jpeg decoding operation. - Originally ported from - with additional fixes for both performance and common encoding errors. - - - - - The only supported precision - - - - - The buffer used to temporarily store bytes read from the stream. - - - - - The buffer used to read markers from the stream. - - - - - The DC Huffman tables. - - - - - The AC Huffman tables - - - - - The reset interval determined by RST markers. - - - - - Whether the image has an EXIF marker. - - - - - Contains exif data. - - - - - Whether the image has an ICC marker. - - - - - Contains ICC data. - - - - - Whether the image has a IPTC data. - - - - - Contains IPTC data. - - - - - Contains information about the JFIF marker. - - - - - Contains information about the Adobe marker. - - - - - Initializes a new instance of the class. - - The configuration. - The options. - - - - - - - Gets the frame - - - - - - - - - - - Gets the number of MCU blocks in the image as . - - - - - Gets the image width - - - - - Gets the image height - - - - - Gets the color depth, in number of bits per pixel. - - - - - Gets a value indicating whether the metadata should be ignored when the image is being decoded. - - - - - Gets the decoded by this decoder instance. - - - - - - - - - - - - - - Gets the components. - - - - - - - - - - - Finds the next file marker within the byte stream. - - The buffer to read file markers to - The input stream - The - - - - - - - - - - Parses the input stream for file markers - - The input stream - Whether to decode metadata only. - The token to monitor cancellation. - - - - - - - Returns the correct colorspace based on the image component count - - The - - - - Initializes the EXIF profile. - - - - - Initializes the ICC profile. - - - - - Initializes the IPTC profile. - - - - - Assigns derived metadata properties to , eg. horizontal and vertical resolution if it has a JFIF header. - - - - - Extends the profile with additional data. - - The profile data array. - The array containing addition profile data. - - - - Processes the application header containing the JFIF identifier plus extra data. - - The input stream. - The remaining bytes in the segment block. - - - - Processes the App1 marker retrieving any stored metadata - - The input stream. - The remaining bytes in the segment block. - - - - Processes the App2 marker retrieving any stored ICC profile information - - The input stream. - The remaining bytes in the segment block. - - - - Processes a App13 marker, which contains IPTC data stored with Adobe Photoshop. - The content of an APP13 segment is formed by an identifier string followed by a sequence of resource data blocks. - - The input stream. - The remaining bytes in the segment block. - - - - Reads the adobe image resource block name: a Pascal string (padded to make size even). - - The span holding the block resource data. - The length of the name. - - - - Reads the length of a adobe image resource data block. - - The span holding the block resource data. - The length of the block name. - The block length. - - - - Processes the application header containing the Adobe identifier - which stores image encoding information for DCT filters. - - The input stream. - The remaining bytes in the segment block. - - - - Processes the Define Quantization Marker and tables. Specified in section B.2.4.1. - - The input stream. - The remaining bytes in the segment block. - - Thrown if the tables do not match the header - - - - - Processes the Start of Frame marker. Specified in section B.2.2. - - The input stream. - The remaining bytes in the segment block. - The current frame marker. - Whether to parse metadata only - - - - Processes a Define Huffman Table marker, and initializes a huffman - struct from its contents. Specified in section B.2.4.2. - - The input stream. - The remaining bytes in the segment block. - - - - Processes the DRI (Define Restart Interval Marker) Which specifies the interval between RSTn markers, in - macroblocks - - The input stream. - The remaining bytes in the segment block. - - - - Processes the SOS (Start of scan marker). - - - - - Builds the huffman tables - - The tables - The table index - The codelengths - The values - - - - Reads a from the stream advancing it by two bytes - - The input stream. - The - - - - Post processes the pixels into the destination image. - - The pixel format. - The . - - - - Encoder for writing the data image to a stream in jpeg format. - - - - - Gets or sets the quality, that will be used to encode the image. Quality - index must be between 0 and 100 (compression from max to min). - Defaults to 75. - - - - - Gets or sets the subsample ration, that will be used to encode the image. - - - - - Encodes the image to the specified stream from the . - - The pixel format. - The to encode from. - The to encode the image data to. - - - - Encodes the image to the specified stream from the . - - The pixel format. - The to encode from. - The to encode the image data to. - The token to monitor for cancellation requests. - A representing the asynchronous operation. - - - - Image encoder for writing an image to a stream as a jpeg. - - - - - The number of quantization tables. - - - - - A scratch buffer to reduce allocations. - - - - - A buffer for reducing the number of stream writes when emitting Huffman tables. 64 seems to be enough. - - - - - A buffer for reducing the number of stream writes when emitting Huffman tables. Max combined table lengths + - identifier. - - - - - Gets or sets the subsampling method to use. - - - - - The quality, that will be used to encode the image. - - - - - The accumulated bits to write to the stream. - - - - - The accumulated bit count. - - - - - The scaled chrominance table, in zig-zag order. - - - - - The scaled luminance table, in zig-zag order. - - - - - The output stream. All attempted writes after the first error become no-ops. - - - - - Initializes a new instance of the class. - - The options - - - - Gets the counts the number of bits needed to hold an integer. - - - - - Gets the SOS (Start Of Scan) marker "\xff\xda" followed by 12 bytes: - - the marker length "\x00\x0c", - - the number of components "\x03", - - component 1 uses DC table 0 and AC table 0 "\x01\x00", - - component 2 uses DC table 1 and AC table 1 "\x02\x11", - - component 3 uses DC table 1 and AC table 1 "\x03\x11", - - the bytes "\x00\x3f\x00". Section B.2.3 of the spec says that for - sequential DCTs, those bytes (8-bit Ss, 8-bit Se, 4-bit Ah, 4-bit Al) - should be 0x00, 0x3f, 0x00<<4 | 0x00. - - - - - Gets the unscaled quantization tables in zig-zag order. Each - encoder copies and scales the tables according to its quality parameter. - The values are derived from section K.1 after converting from natural to - zig-zag order. - - - - - Gets the unscaled quantization tables in zig-zag order. Each - encoder copies and scales the tables according to its quality parameter. - The values are derived from section K.1 after converting from natural to - zig-zag order. - - - - - Encode writes the image to the jpeg baseline format with the given options. - - The pixel format. - The image to write from. - The stream to write to. - The token to request cancellation. - - - - Writes data to "Define Quantization Tables" block for QuantIndex - - The "Define Quantization Tables" block - Offset in "Define Quantization Tables" block - The quantization index - The quantization table to copy data from - - - - Initializes quantization table. - - The quantization index. - The scaling factor. - The quantization table. - - - - Emits the least significant count of bits of bits to the bit-stream. - The precondition is bits - - < 1<<nBits && nBits <= 16 - - . - - The packed bits. - The number of bits - The reference to the emitBuffer. - - - - Emits the given value with the given Huffman encoder. - - The index of the Huffman encoder - The value to encode. - The reference to the emit buffer. - - - - Emits a run of runLength copies of value encoded with the given Huffman encoder. - - The index of the Huffman encoder - The number of copies to encode. - The value to encode. - The reference to the emit buffer. - - - - Encodes the image with no subsampling. - - The pixel format. - The pixel accessor providing access to the image pixels. - The token to monitor for cancellation. - The reference to the emit buffer. - - - - Writes the application header containing the JFIF identifier plus extra data. - - The image metadata. - - - - Writes a block of pixel data using the given quantization table, - returning the post-quantized DC value of the DCT-transformed block. - The block is in natural (not zig-zag) order. - - The quantization table index. - The previous DC value. - Source block - Temporal block to be used as FDCT Destination - Temporal block 2 - Quantization table - The 8x8 Unzig block. - The reference to the emit buffer. - The . - - - - Writes the Define Huffman Table marker and tables. - - The number of components to write. - - - - Writes the Define Quantization Marker and tables. - - - - - Writes the EXIF profile. - - The exif profile. - - - - Writes the IPTC metadata. - - The iptc metadata to write. - - Thrown if the IPTC profile size exceeds the limit of 65533 bytes. - - - - - Writes the App1 header. - - The length of the data the app1 marker contains. - - - - Writes a AppX header. - - The length of the data the app marker contains. - The app marker to write. - - - - Writes the ICC profile. - - The ICC profile to write. - - Thrown if any of the ICC profiles size exceeds the limit - - - - - Writes the metadata profiles to the image. - - The image metadata. - - - - Writes the Start Of Frame (Baseline) marker - - The width of the image - The height of the image - The number of components in a pixel - - - - Writes the StartOfScan marker. - - The pixel format. - The pixel accessor providing access to the image pixels. - The token to monitor for cancellation. - - - - Encodes the image with subsampling. The Cb and Cr components are each subsampled - at a factor of 2 both horizontally and vertically. - - The pixel format. - The pixel accessor providing access to the image pixels. - The token to monitor for cancellation. - The reference to the emit buffer. - - - - Writes the header for a marker with the given length. - - The marker to write. - The marker length. - - - - Registers the image encoders, decoders and mime type detectors for the jpeg format. - - - - - Gets the current instance. - - - - - - - - - - - - - - - - - - - - Detects Jpeg file headers - - - - - - - - - - - Returns a value indicating whether the given bytes identify Jfif data. - - The bytes representing the file header. - The - - - - Returns a value indicating whether the given bytes identify EXIF data. - - The bytes representing the file header. - The - - - - Returns a value indicating whether the given bytes identify Jpeg data. - This is a last chance resort for jpegs that contain ICC information. - - The bytes representing the file header. - The - - - - Provides Jpeg specific metadata information for the image. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - The metadata to create an instance from. - - - - Gets or sets the encoded quality. - - - - - - - - Enumerates the chroma subsampling method applied to the image. - - - - - High Quality - Each of the three Y'CbCr components have the same sample rate, - thus there is no chroma subsampling. - - - - - Medium Quality - The horizontal sampling is halved and the Cb and Cr channels are only - sampled on each alternate line. - - - - - Cold path optimization for throwing 's. - - The error message for the exception. - - - - Cold path optimization for throwing 's. - - The error message for the exception. - The exception that is the cause of the current exception, or a null reference - if no inner exception is specified. - - - - Cold path optimization for throwing 's - - The error message for the exception. - - - - Contains information about the pixels that make up an images visual data. - - - - - Initializes a new instance of the class. - - Color depth, in number of bits per pixel. - Tthe pixel alpha transparency behavior. - - - - Gets color depth, in number of bits per pixel. - - - - - Gets the pixel alpha transparency behavior. - means unknown, unspecified. - - - - - Constants and helper methods for the Adam7 interlacing algorithm. - - - - - The amount to increment when processing each column per scanline for each interlaced pass. - - - - - The index to start at when processing each column per scanline for each interlaced pass. - - - - - The index to start at when processing each row per scanline for each interlaced pass. - - - - - The amount to increment when processing each row per scanline for each interlaced pass. - - - - - Gets the width of the block. - - The width. - The pass. - - The - - - - - Gets the height of the block. - - The height. - The pass. - - The - - - - - Returns the correct number of columns for each interlaced pass. - - The line width. - The current pass index. - The - - - - The pHYs chunk specifies the intended pixel size or aspect ratio for display of the image. - - - - - Gets the number of pixels per unit on the X axis. - - - - - Gets the number of pixels per unit on the Y axis. - - - - - Gets the unit specifier. - 0: unit is unknown - 1: unit is the meter - When the unit specifier is 0, the pHYs chunk defines pixel aspect ratio only; the actual size of the pixels remains unspecified. - - - - - Parses the PhysicalChunkData from the given buffer. - - The data buffer. - The parsed PhysicalChunkData. - - - - Constructs the PngPhysicalChunkData from the provided metadata. - If the resolution units are not in meters, they are automatically converted. - - The metadata. - The constructed PngPhysicalChunkData instance. - - - - Writes the data to the given buffer. - - The buffer. - - - - The Average filter uses the average of the two neighboring pixels (left and above) to predict - the value of a pixel. - - - - - - Decodes the scanline - - The scanline to decode - The previous scanline. - The bytes per pixel. - - - - Encodes the scanline - - The scanline to encode - The previous scanline. - The filtered scanline result. - The bytes per pixel. - The sum of the total variance of the filtered row - - - - Calculates the average value of two bytes - - The left byte - The above byte - The - - - - Provides enumeration of the various PNG filter types. - - - - - - With the None filter, the scanline is transmitted unmodified; it is only necessary to - insert a filter type byte before the data. - - - - - The Sub filter transmits the difference between each byte and the value of the corresponding - byte of the prior pixel. - - - - - The Up filter is just like the Sub filter except that the pixel immediately above the current - pixel, rather than just to its left, is used as the predictor. - - - - - The Average filter uses the average of the two neighboring pixels (left and above) to - predict the value of a pixel. - - - - - The Paeth filter computes a simple linear function of the three neighboring pixels (left, above, upper left), - then chooses as predictor the neighboring pixel closest to the computed value. - This technique is due to Alan W. Paeth - - - - - The None filter, the scanline is transmitted unmodified; it is only necessary to - insert a filter type byte before the data. - - - - - - Encodes the scanline - - The scanline to encode - The filtered scanline result. - - - - The Paeth filter computes a simple linear function of the three neighboring pixels (left, above, upper left), - then chooses as predictor the neighboring pixel closest to the computed value. - This technique is due to Alan W. Paeth. - - - - - - Decodes the scanline - - The scanline to decode - The previous scanline. - The bytes per pixel. - - - - Encodes the scanline - - The scanline to encode - The previous scanline. - The filtered scanline result. - The bytes per pixel. - The sum of the total variance of the filtered row - - - - Computes a simple linear function of the three neighboring pixels (left, above, upper left), then chooses - as predictor the neighboring pixel closest to the computed value. - - The left neighbor pixel. - The above neighbor pixel. - The upper left neighbor pixel. - - The . - - - - - The Sub filter transmits the difference between each byte and the value of the corresponding byte - of the prior pixel. - - - - - - Decodes the scanline - - The scanline to decode - The bytes per pixel. - - - - Encodes the scanline - - The scanline to encode - The filtered scanline result. - The bytes per pixel. - The sum of the total variance of the filtered row - - - - The Up filter is just like the Sub filter except that the pixel immediately above the current pixel, - rather than just to its left, is used as the predictor. - - - - - - Decodes the scanline - - The scanline to decode - The previous scanline. - - - - Encodes the scanline - - The scanline to encode - The previous scanline. - The filtered scanline result. - The sum of the total variance of the filtered row - - - - The options for decoding png images - - - - - Gets a value indicating whether the metadata should be ignored when the image is being decoded. - - - - - The options available for manipulating the encoder pipeline. - - - - - Gets the number of bits per sample or per palette index (not per pixel). - Not all values are allowed for all values. - - - - - Gets the color type. - - - - - Gets the filter method. - - - - - Gets the compression level 1-9. - Defaults to . - - - - - Gets the threshold of characters in text metadata, when compression should be used. - - - - - Gets the gamma value, that will be written the image. - - The gamma value of the image. - - - - Gets the quantizer for reducing the color count. - - - - - Gets the transparency threshold. - - - - - Gets a value indicating whether this instance should write an Adam7 interlaced image. - - - - - Gets a value indicating whether the metadata should be ignored when the image is being encoded. - When set to true, all ancillary chunks will be skipped. - - - - - Gets the chunk filter method. This allows to filter ancillary chunks. - - - - - Gets a value indicating whether fully transparent pixels that may contain R, G, B values which are not 0, - should be converted to transparent black, which can yield in better compression in some cases. - - - - - Provides enumeration for the available PNG bit depths. - - - - - 1 bit per sample or per palette index (not per pixel). - - - - - 2 bits per sample or per palette index (not per pixel). - - - - - 4 bits per sample or per palette index (not per pixel). - - - - - 8 bits per sample or per palette index (not per pixel). - - - - - 16 bits per sample or per palette index (not per pixel). - - - - - Stores header information about a chunk. - - - - - Gets the length. - An unsigned integer giving the number of bytes in the chunk's - data field. The length counts only the data field, not itself, - the chunk type code, or the CRC. Zero is a valid length - - - - - Gets the chunk type. - The value is the equal to the UInt32BigEndian encoding of its 4 ASCII characters. - - - - - Gets the data bytes appropriate to the chunk type, if any. - This field can be of zero length or null. - - - - - Gets a value indicating whether the given chunk is critical to decoding - - - - - Provides enumeration of available PNG optimization methods. - - - - - With the None filter, all chunks will be written. - - - - - Excludes the physical dimension information chunk from encoding. - - - - - Excludes the gamma information chunk from encoding. - - - - - Excludes the eXIf chunk from encoding. - - - - - Excludes the tTXt, iTXt or zTXt chunk from encoding. - - - - - All ancillary chunks will be excluded. - - - - - Contains a list of chunk types. - - - - - The IDAT chunk contains the actual image data. The image can contains more - than one chunk of this type. All chunks together are the whole image. - - - - - This chunk must appear last. It marks the end of the PNG data stream. - The chunk's data field is empty. - - - - - The first chunk in a png file. Can only exists once. Contains - common information like the width and the height of the image or - the used compression method. - - - - - The PLTE chunk contains from 1 to 256 palette entries, each a three byte - series in the RGB format. - - - - - The eXIf data chunk which contains the Exif profile. - - - - - This chunk specifies the relationship between the image samples and the desired - display output intensity. - - - - - The pHYs chunk specifies the intended pixel size or aspect ratio for display of the image. - - - - - Textual information that the encoder wishes to record with the image can be stored in - tEXt chunks. Each tEXt chunk contains a keyword and a text string. - - - - - Textual information that the encoder wishes to record with the image. The zTXt and tEXt chunks are semantically equivalent, - but the zTXt chunk is recommended for storing large blocks of text. Each zTXt chunk contains a (uncompressed) keyword and - a compressed text string. - - - - - The iTXt chunk contains International textual data. It contains a keyword, an optional language tag, an optional translated keyword - and the actual text string, which can be compressed or uncompressed. - - - - - The tRNS chunk specifies that the image uses simple transparency: - either alpha values associated with palette entries (for indexed-color images) - or a single transparent color (for grayscale and true color images). - - - - - The tIME chunk gives the time of the last image modification (not the time of initial image creation). - - - - - The bKGD chunk specifies a default background colour to present the image against. - If there is any other preferred background, either user-specified or part of a larger page (as in a browser), - the bKGD chunk should be ignored. - - - - - The iCCP chunk contains a embedded color profile. If the iCCP chunk is present, - the image samples conform to the colour space represented by the embedded ICC profile as defined by the International Color Consortium. - - - - - The sBIT chunk defines the original number of significant bits (which can be less than or equal to the sample depth). - This allows PNG decoders to recover the original data losslessly even if the data had a sample depth not directly supported by PNG. - - - - - If the sRGB chunk is present, the image samples conform to the sRGB colour space [IEC 61966-2-1] and should be displayed - using the specified rendering intent defined by the International Color Consortium. - - - - - The hIST chunk gives the approximate usage frequency of each colour in the palette. - - - - - The sPLT chunk contains the suggested palette. - - - - - The cHRM chunk may be used to specify the 1931 CIE x,y chromaticities of the red, - green, and blue display primaries used in the image, and the referenced white point. - - - - - Malformed chunk named CgBI produced by apple, which is not conform to the specification. - Related issue is here https://github.com/SixLabors/ImageSharp/issues/410 - - - - - Provides enumeration of available PNG color types. - - - - - Each pixel is a grayscale sample. - - - - - Each pixel is an R,G,B triple. - - - - - Each pixel is a palette index; a PLTE chunk must appear. - - - - - Each pixel is a grayscale sample, followed by an alpha sample. - - - - - Each pixel is an R,G,B triple, followed by an alpha sample. - - - - - Provides enumeration of available PNG compression levels. - - - - - Level 0. Equivalent to . - - - - - No compression. Equivalent to . - - - - - Level 1. Equivalent to . - - - - - Best speed compression level. - - - - - Level 2. - - - - - Level 3. - - - - - Level 4. - - - - - Level 5. - - - - - Level 6. Equivalent to . - - - - - The default compression level. Equivalent to . - - - - - Level 7. - - - - - Level 8. - - - - - Level 9. Equivalent to . - - - - - Best compression level. Equivalent to . - - - - - Registers the image encoders, decoders and mime type detectors for the png format. - - - - - - - - Defines Png constants defined in the specification. - - - - - The character encoding to use when reading and writing textual data keywords and text - (Latin-1 ISO-8859-1). - - - - - The character encoding to use when reading and writing language tags within iTXt chunks - (ASCII 7bit). - - - - - The character encoding to use when reading and writing translated textual data keywords and text - (UTF8). - - - - - The list of mimetypes that equate to a Png. - - - - - The list of file extensions that equate to a Png. - - - - - The header bytes as a big-endian coded ulong. - - - - - The dictionary of available color types. - - - - - The maximum length of keyword in a text chunk is 79 bytes. - - - - - The minimum length of a keyword in a text chunk is 1 byte. - - - - - Gets the header bytes identifying a Png. - - - - - Decoder for generating an image out of a png encoded stream. - - - - - - - - - - - - - - - - - - - - - - - - - - Performs the png decoding operation. - - - - - Reusable buffer. - - - - - Gets or sets a value indicating whether the metadata should be ignored when the image is being decoded. - - - - - Used the manage memory allocations. - - - - - The stream to decode from. - - - - - The png header. - - - - - The number of bytes per pixel. - - - - - The number of bytes per sample. - - - - - The number of bytes per scanline. - - - - - The palette containing color information for indexed png's. - - - - - The palette containing alpha channel color information for indexed png's. - - - - - A value indicating whether the end chunk has been reached. - - - - - Previous scanline processed. - - - - - The current scanline that is being processed. - - - - - The index of the current scanline being processed. - - - - - The current number of bytes read in the current scanline. - - - - - Gets or sets the png color type. - - - - - The next chunk of data to return. - - - - - Initializes a new instance of the class. - - The configuration. - The decoder options. - - - - - - - Gets the dimensions of the image. - - - - - - - - - - - Reads the least significant bits from the byte pair with the others set to 0. - - The source buffer - THe offset - The - - - - Attempts to convert a byte array to a new array where each value in the original array is represented by the - specified number of bits. - - The bytes to convert from. Cannot be empty. - The number of bytes per scanline - The number of bits per value. - The new array. - The resulting array. - - - - Reads the data chunk containing physical dimension data. - - The metadata to read to. - The data containing physical data. - - - - Reads the data chunk containing gamma data. - - The metadata to read to. - The data containing physical data. - - - - Initializes the image and various buffers needed for processing - - The type the pixels will be - The metadata information for the image - The image that we will populate - - - - Calculates the correct number of bits per pixel for the given color type. - - The - - - - Calculates the correct number of bytes per pixel for the given color type. - - The - - - - Calculates the scanline length. - - The width of the row. - - The representing the length. - - - - - Reads the scanlines within the image. - - The pixel format. - The png chunk containing the compressed scanline data. - The pixel data. - The png metadata - - - - Decodes the raw pixel data row by row - - The pixel format. - The compressed pixel data stream. - The image to decode to. - The png metadata - - - - Decodes the raw interlaced pixel data row by row - - - The pixel format. - The compressed pixel data stream. - The current image. - The png metadata. - - - - Processes the de-filtered scanline filling the image pixel data - - The pixel format. - The de-filtered scanline - The image - The png metadata. - - - - Processes the interlaced de-filtered scanline filling the image pixel data - - The pixel format. - The de-filtered scanline - The current image row. - The png metadata. - The column start index. Always 0 for none interlaced images. - The column increment. Always 1 for none interlaced images. - - - - Decodes and assigns marker colors that identify transparent pixels in non indexed images. - - The alpha tRNS array. - The png metadata. - - - - Reads a header chunk from the data. - - The png metadata. - The containing data. - - - - Reads a text chunk containing image properties from the data. - - The metadata to decode to. - The containing the data. - - - - Reads the compressed text chunk. Contains a uncompressed keyword and a compressed text string. - - The metadata to decode to. - The containing the data. - - - - Reads a iTXt chunk, which contains international text data. It contains: - - A uncompressed keyword. - - Compression flag, indicating if a compression is used. - - Compression method. - - Language tag (optional). - - A translated keyword (optional). - - Text data, which is either compressed or uncompressed. - - The metadata to decode to. - The containing the data. - - - - Decompresses a byte array with zlib compressed text data. - - Compressed text data bytes. - The string encoding to use. - The uncompressed value. - The . - - - - Reads the next data chunk. - - Count of bytes in the next data chunk, or 0 if there are no more data chunks left. - - - - Reads a chunk from the stream. - - The image format chunk. - - The . - - - - - Validates the png chunk. - - The . - - - - Reads the cycle redundancy chunk from the data. - - - - - Skips the chunk data and the cycle redundancy chunk read from the data. - - The image format chunk. - - - - Reads the chunk data from the stream. - - The length of the chunk data to read. - - - - Identifies the chunk type from the chunk. - - - Thrown if the input stream is not valid. - - - - - Attempts to read the length of the next chunk. - - - Whether the length was read. - - - - - Tries to reads a text chunk keyword, which have some restrictions to be valid: - Keywords shall contain only printable Latin-1 characters and should not have leading or trailing whitespace. - See: https://www.w3.org/TR/PNG/#11zTXt - - The keyword bytes. - The name. - True, if the keyword could be read and is valid. - - - - Image encoder for writing image data to a stream in png format. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Encodes the image to the specified stream from the . - - The pixel format. - The to encode from. - The to encode the image data to. - - - - Encodes the image to the specified stream from the . - - The pixel format. - The to encode from. - The to encode the image data to. - The token to monitor for cancellation requests. - A representing the asynchronous operation. - - - - Performs the png encoding operation. - - - - - The maximum block size, defaults at 64k for uncompressed blocks. - - - - - Used the manage memory allocations. - - - - - The configuration instance for the decoding operation. - - - - - Reusable buffer for writing general data. - - - - - Reusable buffer for writing chunk data. - - - - - The encoder options - - - - - The bit depth. - - - - - Gets or sets a value indicating whether to use 16 bit encoding for supported color types. - - - - - The number of bytes per pixel. - - - - - The image width. - - - - - The image height. - - - - - The raw data of previous scanline. - - - - - The raw data of current scanline. - - - - - The common buffer for the filters. - - - - - The ext buffer for the sub filter, . - - - - - The ext buffer for the average filter, . - - - - - The ext buffer for the Paeth filter, . - - - - - Initializes a new instance of the class. - - The to use for buffer allocations. - The configuration. - The options for influencing the encoder - - - - Encodes the image to the specified stream from the . - - The pixel format. - The to encode from. - The to encode the image data to. - The token to request cancellation. - - - - - - - Convert transparent pixels, to transparent black pixels, which can yield to better compression in some cases. - - The type of the pixel. - The cloned image where the transparent pixels will be changed. - - - - Creates the quantized image and sets calculates and sets the bit depth. - - The type of the pixel. - The image to quantize. - Cloned image with transparent pixels are changed to black. - The quantized image. - - - Collects a row of grayscale pixels. - The pixel format. - The image row span. - - - - Collects a row of true color pixel data. - - The pixel format. - The row span. - - - - Encodes the pixel data line by line. - Each scanline is encoded in the most optimal manner to improve compression. - - The pixel format. - The row span. - The quantized pixels. Can be null. - The row. - - - - Apply filter for the raw scanline. - - - - - Encodes the pixel data line by line. - Each scanline is encoded in the most optimal manner to improve compression. - - The pixel format. - The row span. - The quantized pixels. Can be null. - The row. - The - - - - Encodes the indexed pixel data (with palette) for Adam7 interlaced mode. - - The row span. - - - - Applies all PNG filters to the given scanline and returns the filtered scanline that is deemed - to be most compressible, using lowest total variation as proxy for compressibility. - - The - - - - Writes the header chunk to the stream. - - The containing image data. - - - - Writes the palette chunk to the stream. - Should be written before the first IDAT chunk. - - The pixel format. - The containing image data. - The quantized frame. - - - - Writes the physical dimension information to the stream. - Should be written before IDAT chunk. - - The containing image data. - The image metadata. - - - - Writes the eXIf chunk to the stream, if any EXIF Profile values are present in the metadata. - - The containing image data. - The image metadata. - - - - Writes a text chunk to the stream. Can be either a tTXt, iTXt or zTXt chunk, - depending whether the text contains any latin characters or should be compressed. - - The containing image data. - The image metadata. - - - - Compresses a given text using Zlib compression. - - The text bytes to compress. - The compressed text byte array. - - - - Writes the gamma information to the stream. - Should be written before PLTE and IDAT chunk. - - The containing image data. - - - - Writes the transparency chunk to the stream. - Should be written after PLTE and before IDAT. - - The containing image data. - The image metadata. - - - - Writes the pixel information to the stream. - - The pixel format. - The image. - The quantized pixel data. Can be null. - The stream. - - - - Allocates the buffers for each scanline. - - The bytes per scanline. - Length of the result. - - - - Allocates the ext buffers for adaptive filter. - - - - - Encodes the pixels. - - The type of the pixel. - The pixels. - The quantized pixels span. - The deflate stream. - - - - Interlaced encoding the pixels. - - The type of the pixel. - The pixels. - The deflate stream. - - - - Interlaced encoding the quantized (indexed, with palette) pixels. - - The type of the pixel. - The quantized. - The deflate stream. - - - - Writes the chunk end to the stream. - - The containing image data. - - - - Writes a chunk to the stream. - - The to write to. - The type of chunk to write. - The containing data. - - - - Writes a chunk of a specified length to the stream at the given offset. - - The to write to. - The type of chunk to write. - The containing data. - The position to offset the data at. - The of the data to write. - - - - Calculates the scanline length. - - The width of the row. - - The representing the length. - - - - - The helper methods for class. - - - - - Packs the given 8 bit array into and array of depths. - - The source span in 8 bits. - The resultant span in . - The bit depth. - The scaling factor. - - - - The options structure for the . - - - - - Initializes a new instance of the class. - - The source. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - The helper methods for the PNG encoder options. - - - - - Adjusts the options based upon the given metadata. - - The options. - The PNG metadata. - if set to true [use16 bit]. - The bytes per pixel. - - - - Creates the quantized frame. - - The type of the pixel. - The options. - The image. - - - - Calculates the bit depth value. - - The type of the pixel. - The options. - The quantized frame. - - - - Calculates the correct number of bytes per pixel for the given color type. - - Bytes per pixel. - - - - Returns a suggested for the given - This is not exhaustive but covers many common pixel formats. - - - - - Returns a suggested for the given - This is not exhaustive but covers many common pixel formats. - - - - - Provides enumeration of available PNG filter methods. - - - - - With the None filter, the scanline is transmitted unmodified. - - - - - The Sub filter transmits the difference between each byte and the value of the corresponding - byte of the prior pixel. - - - - - The Up filter is just like the filter except that the pixel immediately above the current pixel, - rather than just to its left, is used as the predictor. - - - - - The Average filter uses the average of the two neighboring pixels (left and above) to predict the value of a pixel. - - - - - The Paeth filter computes a simple linear function of the three neighboring pixels (left, above, upper left), - then chooses as predictor the neighboring pixel closest to the computed value. - - - - - Computes the output scanline using all five filters, and selects the filter that gives the smallest sum of - absolute values of outputs. - This method usually outperforms any single fixed filter choice. - - - - - Registers the image encoders, decoders and mime type detectors for the png format. - - - - - Gets the current instance. - - - - - - - - - - - - - - - - - - - - Represents the png header chunk. - - - - - Gets the dimension in x-direction of the image in pixels. - - - - - Gets the dimension in y-direction of the image in pixels. - - - - - Gets the bit depth. - Bit depth is a single-byte integer giving the number of bits per sample - or per palette index (not per pixel). Valid values are 1, 2, 4, 8, and 16, - although not all values are allowed for all color types. - - - - - Gets the color type. - Color type is a integer that describes the interpretation of the - image data. Color type codes represent sums of the following values: - 1 (palette used), 2 (color used), and 4 (alpha channel used). - - - - - Gets the compression method. - Indicates the method used to compress the image data. At present, - only compression method 0 (deflate/inflate compression with a sliding - window of at most 32768 bytes) is defined. - - - - - Gets the preprocessing method. - Indicates the preprocessing method applied to the image - data before compression. At present, only filter method 0 - (adaptive filtering with five basic filter types) is defined. - - - - - Gets the transmission order. - Indicates the transmission order of the image data. - Two values are currently defined: 0 (no interlace) or 1 (Adam7 interlace). - - - - - Validates the png header. - - - Thrown if the image does pass validation. - - - - - Writes the header to the given buffer. - - The buffer to write to. - - - - Parses the PngHeader from the given data buffer. - - The data to parse. - The parsed PngHeader. - - - - Detects png file headers - - - - - - - - - - - Provides enumeration of available PNG interlace modes. - - - - - Non interlaced - - - - - Adam 7 interlacing. - - - - - Provides Png specific metadata information for the image. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - The metadata to create an instance from. - - - - Gets or sets the number of bits per sample or per palette index (not per pixel). - Not all values are allowed for all values. - - - - - Gets or sets the color type. - - - - - Gets or sets a value indicating whether this instance should write an Adam7 interlaced image. - - - - - Gets or sets the gamma value for the image. - - - - - Gets or sets the Rgb24 transparent color. - This represents any color in an 8 bit Rgb24 encoded png that should be transparent. - - - - - Gets or sets the Rgb48 transparent color. - This represents any color in a 16 bit Rgb24 encoded png that should be transparent. - - - - - Gets or sets the 8 bit grayscale transparent color. - This represents any color in an 8 bit grayscale encoded png that should be transparent. - - - - - Gets or sets the 16 bit grayscale transparent color. - This represents any color in a 16 bit grayscale encoded png that should be transparent. - - - - - Gets or sets a value indicating whether the image contains a transparency chunk and markers were decoded. - - - - - Gets or sets the collection of text data stored within the iTXt, tEXt, and zTXt chunks. - Used for conveying textual information associated with the image. - - - - - - - - Provides methods to allow the decoding of raw scanlines to image rows of different pixel formats. - TODO: We should make this a stateful class or struct to reduce the number of arguments on methods (most are invariant). - - - - - Stores text data contained in the iTXt, tEXt, and zTXt chunks. - Used for conveying textual information associated with the image, like the name of the author, - the copyright information, the date, where the image was created, or some other information. - - - - - Initializes a new instance of the struct. - - The keyword of the property. - The value of the property. - An optional language tag. - A optional translated keyword. - - - - Gets the keyword of this which indicates - the type of information represented by the text string as described in https://www.w3.org/TR/PNG/#11keywords. - - - Typical properties are the author, copyright information or other meta information. - - - - - Gets the value of this . - - - - - Gets an optional language tag defined in https://www.w3.org/TR/PNG/#2-RFC-3066 indicates the human language used by the translated keyword and the text. - If the first word is two or three letters long, it is an ISO language code https://www.w3.org/TR/PNG/#2-ISO-639. - - - Examples: cn, en-uk, no-bok, x-klingon, x-KlInGoN. - - - - - Gets an optional translated keyword, should contain a translation of the keyword into the language indicated by the language tag. - - - - - Compares two objects. The result specifies whether the values - of the properties of the two objects are equal. - - - The on the left side of the operand. - - - The on the right side of the operand. - - - True if the current left is equal to the parameter; otherwise, false. - - - - - Compares two objects. The result specifies whether the values - of the properties of the two objects are unequal. - - - The on the left side of the operand. - - - The on the right side of the operand. - - - True if the current left is unequal to the parameter; otherwise, false. - - - - - Indicates whether this instance and a specified object are equal. - - - The object to compare with the current instance. - - - true if and this instance are the same type and represent the - same value; otherwise, false. - - - - - Returns the hash code for this instance. - - - A 32-bit signed integer that is the hash code for this instance. - - - - - Returns the fully qualified type name of this instance. - - - A containing a fully qualified type name. - - - - - Indicates whether the current object is equal to another object of the same type. - - - True if the current object is equal to the parameter; otherwise, false. - - An object to compare with this object. - - - - Cold path optimizations for throwing png format based exceptions. - - - - - Enum indicating how the transparency should be handled on encoding. - - - - - The transparency will be kept as is. - - - - - Converts fully transparent pixels that may contain R, G, B values which are not 0, - to transparent black, which can yield in better compression in some cases. - - - - - Calculates the 32 bit Adler checksum of a given buffer according to - RFC 1950. ZLIB Compressed Data Format Specification version 3.3) - - - - - The default initial seed value of a Adler32 checksum calculation. - - - - - Calculates the Adler32 checksum with the bytes taken from the span. - - The readonly span of bytes. - The . - - - - Calculates the Adler32 checksum with the bytes taken from the span and seed. - - The input Adler32 value. - The readonly span of bytes. - The . - - - - Calculates the 32 bit Cyclic Redundancy Check (CRC) checksum of a given buffer - according to the IEEE 802.3 specification. - - - Contains precalulated tables for scalar calculations. - - - - - The default initial seed value of a Crc32 checksum calculation. - - - - - Calculates the CRC checksum with the bytes taken from the span. - - The readonly span of bytes. - The . - - - - Calculates the CRC checksum with the bytes taken from the span and seed. - - The input CRC value. - The readonly span of bytes. - The . - - - - The table of all possible eight bit values for fast scalar lookup. - - - - - This class compresses input with the deflate algorithm described in RFC 1951. - It has several compression levels and three different strategies described below. - - - - - The best and slowest compression level. This tries to find very - long and distant string repetitions. - - - - - The worst but fastest compression level. - - - - - The default compression level. - - - - - This level won't compress at all but output uncompressed blocks. - - - - - The compression method. This is the only method supported so far. - There is no need to use this constant at all. - - - - - Compression level. - - - - - The current state. - - - - - Initializes a new instance of the class. - - The memory allocator to use for buffer allocations. - The compression level, a value between NoCompression and BestCompression. - - if level is out of range. - - - - Compression Level as an enum for safer use - - - - - The best and slowest compression level. This tries to find very - long and distant string repetitions. - - - - - The worst but fastest compression level. - - - - - The default compression level. - - - - - This level won't compress at all but output uncompressed blocks. - - - - - The compression method. This is the only method supported so far. - There is no need to use this constant at all. - - - - - Gets a value indicating whetherthe stream was finished and no more output bytes - are available. - - - - - Gets a value indicating whether the input buffer is empty. - You should then call setInput(). - NOTE: This method can also return true when the stream - was finished. - - - - - Resets the deflater. The deflater acts afterwards as if it was - just created with the same compression level and strategy as it - had before. - - - - - Flushes the current input block. Further calls to Deflate() will - produce enough output to inflate everything in the current input - block. It is used by DeflaterOutputStream to implement Flush(). - - - - - Finishes the deflater with the current input block. It is an error - to give more input after this method was called. This method must - be called to force all bytes to be flushed. - - - - - Sets the data which should be compressed next. This should be - only called when needsInput indicates that more input is needed. - The given byte array should not be changed, before needsInput() returns - true again. - - The buffer containing the input data. - The start of the data. - The number of data bytes of input. - - if the buffer was finished or if previous input is still pending. - - - - - Sets the compression level. There is no guarantee of the exact - position of the change, but if you call this when needsInput is - true the change of compression level will occur somewhere near - before the end of the so far given input. - - - the new compression level. - - - - - Deflates the current input block to the given array. - - Buffer to store the compressed data. - Offset into the output array. - The maximum number of bytes that may be stored. - - The number of compressed bytes added to the output, or 0 if either - or returns true or length is zero. - - - - - - - - This class contains constants used for deflation. - - - - - Set to true to enable debugging - - - - - Written to Zip file to identify a stored block - - - - - Identifies static tree in Zip file - - - - - Identifies dynamic tree in Zip file - - - - - Header flag indicating a preset dictionary for deflation - - - - - Sets internal buffer sizes for Huffman encoding - - - - - Internal compression engine constant - - - - - Internal compression engine constant - - - - - Internal compression engine constant - - - - - Internal compression engine constant - - - - - Internal compression engine constant - - - - - Internal compression engine constant - - - - - Internal compression engine constant - - - - - Internal compression engine constant - - - - - Internal compression engine constant - - - - - Internal compression engine constant - - - - - Internal compression engine constant - - - - - Internal compression engine constant - - - - - Internal compression engine constant - - - - - Internal compression engine constant - - - - - Internal compression engine constant - - - - - Internal compression engine constant - - - - - Internal compression engine constant - - - - - Internal compression engine constant - - - - - Internal compression engine constant - - - - - Internal compression engine constant - - - - - Internal compression engine constant - - - - - Strategies for deflater - - - - - The default strategy - - - - - This strategy will only allow longer string repetitions. It is - useful for random data with a small character set. - - - - - This strategy will not look for string repetitions at all. It - only encodes with Huffman trees (which means, that more common - characters get a smaller encoding. - - - - - Low level compression engine for deflate algorithm which uses a 32K sliding window - with secondary compression from Huffman/Shannon-Fano codes. - - - - - Points to the current character in the window. - - - - - lookahead is the number of characters starting at strstart in - window that are valid. - So window[strstart] until window[strstart+lookahead-1] are valid - characters. - - - - - The current compression function. - - - - - The input data for compression. - - - - - The offset into inputBuf, where input data starts. - - - - - The end offset of the input data. - - - - - Hashtable, hashing three characters to an index for window, so - that window[index]..window[index+2] have this hash code. - Note that the array should really be unsigned short, so you need - to and the values with 0xFFFF. - - - - - prev[index & WMASK] points to the previous index that has the - same hash code as the string starting at index. This way - entries with the same hash code are in a linked list. - Note that the array should really be unsigned short, so you need - to and the values with 0xFFFF. - - - - - This array contains the part of the uncompressed stream that - is of relevance. The current character is indexed by strstart. - - - - - Initializes a new instance of the class. - - The memory allocator to use for buffer allocations. - The deflate strategy to use. - - - - Gets the pending buffer to use. - - - - - Deflate drives actual compression of data - - True to flush input buffers - Finish deflation with the current input. - Returns true if progress has been made. - - - - Sets input data to be deflated. Should only be called when - returns true - - The buffer containing input data. - The offset of the first byte of data. - The number of bytes of data to use as input. - - - - Determines if more input is needed. - - Return true if input is needed via SetInput - - - - Reset internal state - - - - - Set the deflate level (0-9) - - The value to set the level to. - - - - Fill the window - - - - - - - - Inserts the current string in the head hash and returns the previous - value for this hash. - - The previous hash value - - - - - Find the best (longest) string in the window matching the - string starting at strstart. - - - Preconditions: - - strstart + DeflaterConstants.MAX_MATCH <= window.length. - - - The current match. - True if a match greater than the minimum length is found - - - - Performs Deflate Huffman encoding. - - - - - Initializes a new instance of the class. - - The memory allocator to use for buffer allocations. - - - - Gets the lengths of the bit length codes are sent in order of decreasing probability, to avoid transmitting the lengths for unused bit length codes. - - - - - Gets the pending buffer to use. - - - - - Reset internal state - - - - - Write all trees to pending buffer - - The number/rank of treecodes to send. - - - - Compress current buffer writing data to pending buffer - - - - - Flush block to output with no compression - - Data to write - Index of first byte to write - Count of bytes to write - True if this is the last block - - - - Flush block to output with compression - - Data to flush - Index of first byte to flush - Count of bytes to flush - True if this is the last block - - - - Get value indicating if internal buffer is full - - true if buffer is full - - - - Add literal to buffer - - Literal value to add to buffer. - Value indicating internal buffer is full - - - - Add distance code and length to literal and distance trees - - Distance code - Length - Value indicating if internal buffer is full - - - - Reverse the bits of a 16 bit value. - - Value to reverse bits - Value with bits reversed - - - - - - - Resets the internal state of the tree - - - - - Set static codes and length - - new codes - length for new codes - - - - Build dynamic codes and lengths - - - - - Get encoded length - - Encoded length, the sum of frequencies * lengths - - - - Scan a literal or distance tree to determine the frequencies of the codes - in the bit length tree. - - - - - Write the tree values. - - The pending buffer. - The tree to write. - - - - A special stream deflating or compressing the bytes that are - written to it. It uses a Deflater to perform actual deflating. - - - - - Initializes a new instance of the class. - - The memory allocator to use for buffer allocations. - The output stream where deflated output is written. - The compression level. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Stores pending data for writing data to the Deflater. - - - - - Initializes a new instance of the class. - - The memory allocator to use for buffer allocations. - - - - Gets the number of bits written to the buffer. - - - - - Gets a value indicating whether indicates the buffer has been flushed. - - - - - Clear internal state/buffers. - - - - - Write a short value to buffer LSB first. - - The value to write. - - - - Write a block of data to the internal buffer. - - The data to write. - The offset of first byte to write. - The number of bytes to write. - - - - Aligns internal buffer on a byte boundary. - - - - - Write bits to internal buffer - - source of bits - number of bits to write - - - - Write a short value to internal buffer most significant byte first - - The value to write - - - - Flushes the pending buffer into the given output array. - If the output array is to small, only a partial flush is done. - - The output array. - The offset into output array. - The maximum number of bytes to store. - The number of bytes flushed. - - - - - - - Provides methods and properties for compressing streams by using the Zlib Deflate algorithm. - - - - - The raw stream containing the uncompressed image data. - - - - - Computes the checksum for the data stream. - - - - - A value indicating whether this instance of the given entity has been disposed. - - if this instance has been disposed; otherwise, . - - If the entity is disposed, it must not be disposed a second - time. The isDisposed field is set the first time the entity - is disposed. If the isDisposed field is true, then the Dispose() - method will not dispose again. This help not to prolong the entity's - life in the Garbage Collector. - - - - - The stream responsible for compressing the input stream. - - - - - Initializes a new instance of the class. - - The memory allocator to use for buffer allocations. - The stream to compress. - The compression level. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Provides methods and properties for deframing streams from PNGs. - - - - - Used to read the Adler-32 and Crc-32 checksums. - We don't actually use this for anything so it doesn't - have to be threadsafe. - - - - - A default delegate to get more data from the inner stream. - - - - - The inner raw memory stream. - - - - - A value indicating whether this instance of the given entity has been disposed. - - if this instance has been disposed; otherwise, . - - If the entity is disposed, it must not be disposed a second - time. The isDisposed field is set the first time the entity - is disposed. If the isDisposed field is true, then the Dispose() - method will not dispose again. This help not to prolong the entity's - life in the Garbage Collector. - - - - - The current data remaining to be read. - - - - - Delegate to get more data once we've exhausted the current data remaining. - - - - - Initializes a new instance of the class. - - The inner raw stream. - - - - Initializes a new instance of the class. - - The inner raw stream. - A delegate to get more data from the inner stream. - - - - - - - - - - - - - - - - - - - Gets the compressed stream over the deframed inner stream. - - - - - Adds new bytes from a frame found in the original stream. - - The current remaining data according to the chunk length. - Whether the chunk to be inflated is a critical chunk. - The . - - - - - - - - - - - - - - - - - - - - - - - - - The options for decoding tga images. Currently empty, but this may change in the future. - - - - - Configuration options for use during tga encoding. - - - - - Gets the number of bits per pixel. - - - - - Gets a value indicating whether run length compression should be used. - - - - - Enumerates the available bits per pixel the tga encoder supports. - - - - - 8 bits per pixel. Each pixel consists of 1 byte. - - - - - 16 bits per pixel. Each pixel consists of 2 bytes. - - - - - 24 bits per pixel. Each pixel consists of 3 bytes. - - - - - 32 bits per pixel. Each pixel consists of 4 bytes. - - - - - Indicates if compression is used. - - - - - No compression is used. - - - - - Run length encoding is used. - - - - - Registers the image encoders, decoders and mime type detectors for the tga format. - - - - - - - - The list of mimetypes that equate to a targa file. - - - - - The list of file extensions that equate to a targa file. - - - - - The file header length of a tga image in bytes. - - - - - Image decoder for Truevision TGA images. - - - - - - - - - - - - - - - - - - - - - - - Performs the tga decoding operation. - - - - - A scratch buffer to reduce allocations. - - - - - The metadata. - - - - - The tga specific metadata. - - - - - The file header containing general information about the image. - - - - - Used for allocating memory during processing operations. - - - - - The stream to decode from. - - - - - The bitmap decoder options. - - - - - Indicates whether there is a alpha channel present. - - - - - Initializes a new instance of the class. - - The configuration. - The options. - - - - - - - Gets the dimensions of the image. - - - - - - - - Reads a uncompressed TGA image with a palette. - - The pixel type. - The width of the image. - The height of the image. - The to assign the palette to. - The color palette. - Color map size of one entry in bytes. - The image origin. - - - - Reads a run length encoded TGA image with a palette. - - The pixel type. - The width of the image. - The height of the image. - The to assign the palette to. - The color palette. - Color map size of one entry in bytes. - The image origin. - - - - Reads a uncompressed monochrome TGA image. - - The pixel type. - The width of the image. - The height of the image. - The to assign the palette to. - the image origin. - - - - Reads a uncompressed TGA image where each pixels has 16 bit. - - The pixel type. - The width of the image. - The height of the image. - The to assign the palette to. - The image origin. - - - - Reads a uncompressed TGA image where each pixels has 24 bit. - - The pixel type. - The width of the image. - The height of the image. - The to assign the palette to. - The image origin. - - - - Reads a uncompressed TGA image where each pixels has 32 bit. - - The pixel type. - The width of the image. - The height of the image. - The to assign the palette to. - The image origin. - - - - Reads a run length encoded TGA image. - - The pixel type. - The width of the image. - The height of the image. - The to assign the palette to. - The bytes per pixel. - The image origin. - - - - - - - Produce uncompressed tga data from a run length encoded stream. - - The width of the image. - The height of the image. - Buffer for uncompressed data. - The bytes used per pixel. - - - - Returns the y- value based on the given height. - - The y- value representing the current row. - The height of the image. - The image origin. - The representing the inverted value. - - - - Indicates whether the y coordinates needs to be inverted, to keep a top left origin. - - The image origin. - True, if y coordinate needs to be inverted. - - - - Returns the x- value based on the given width. - - The x- value representing the current column. - The width of the image. - The image origin. - The representing the inverted value. - - - - Indicates whether the x coordinates needs to be inverted, to keep a top left origin. - - The image origin. - True, if x coordinate needs to be inverted. - - - - Reads the tga file header from the stream. - - The containing image data. - The image origin. - - - - Image encoder for writing an image to a stream as a targa truevision image. - - - - - Gets or sets the number of bits per pixel. - - - - - Gets or sets a value indicating whether no compression or run length compression should be used. - - - - - - - - - - - Image encoder for writing an image to a stream as a truevision targa image. - - - - - Used for allocating memory during processing operations. - - - - - The global configuration. - - - - - Reusable buffer for writing data. - - - - - The color depth, in number of bits per pixel. - - - - - Indicates if run length compression should be used. - - - - - Initializes a new instance of the class. - - The encoder options. - The memory manager. - - - - Encodes the image to the specified stream from the . - - The pixel format. - The to encode from. - The to encode the image data to. - The token to request cancellation. - - - - Writes the pixel data to the binary stream. - - The pixel format. - The to write to. - - The containing pixel data. - - - - - Writes a run length encoded tga image to the stream. - - The pixel type. - The stream to write the image to. - The image to encode. - - - - Finds consecutive pixels which have the same value. - - The pixel type. - The pixels of the image. - X coordinate to start searching for the same pixels. - Y coordinate to start searching for the same pixels. - The number of equal pixels. - - - - Writes the 8bit pixels uncompressed to the stream. - - The pixel format. - The to write to. - The containing pixel data. - - - - Writes the 16bit pixels uncompressed to the stream. - - The pixel format. - The to write to. - The containing pixel data. - - - - Writes the 24bit pixels uncompressed to the stream. - - The pixel format. - The to write to. - The containing pixel data. - - - - Writes the 32bit pixels uncompressed to the stream. - - The pixel format. - The to write to. - The containing pixel data. - - - - Convert the pixel values to grayscale using ITU-R Recommendation BT.709. - - The pixel to get the luminance from. - - - - This block of bytes tells the application detailed information about the targa image. - - - - - - Defines the size of the data structure in the targa file. - - - - - Gets the id length. - This field identifies the number of bytes contained in Field 6, the Image ID Field. The maximum number - of characters is 255. A value of zero indicates that no Image ID field is included with the image. - - - - - Gets the color map type. - This field indicates the type of color map (if any) included with the image. There are currently 2 defined - values for this field: - 0 - indicates that no color-map data is included with this image. - 1 - indicates that a color-map is included with this image. - - - - - Gets the image type. - The TGA File Format can be used to store Pseudo-Color, True-Color and Direct-Color images of various - pixel depths. - - - - - Gets the start of the color map. - This field and its sub-fields describe the color map (if any) used for the image. If the Color Map Type field - is set to zero, indicating that no color map exists, then these 5 bytes should be set to zero. - - - - - Gets the total number of color map entries included. - - - - - Gets the number of bits per entry. Typically 15, 16, 24 or 32-bit values are used. - - - - - Gets the XOffset. - These bytes specify the absolute horizontal coordinate for the lower left - corner of the image as it is positioned on a display device having an - origin at the lower left of the screen. - - - - - Gets the YOffset. - These bytes specify the absolute vertical coordinate for the lower left - corner of the image as it is positioned on a display device having an - origin at the lower left of the screen. - - - - - Gets the width of the image in pixels. - - - - - Gets the height of the image in pixels. - - - - - Gets the number of bits per pixel. This number includes - the Attribute or Alpha channel bits. Common values are 8, 16, 24 and - 32 but other pixel depths could be used. - - - - - Gets the ImageDescriptor. - ImageDescriptor contains two pieces of information. - Bits 0 through 3 contain the number of attribute bits per pixel. - Attribute bits are found only in pixels for the 16- and 32-bit flavors of the TGA format and are called alpha channel, - overlay, or interrupt bits. Bits 4 and 5 contain the image origin location (coordinate 0,0) of the image. - This position may be any of the four corners of the display screen. - When both of these bits are set to zero, the image origin is the lower-left corner of the screen. - Bits 6 and 7 of the ImageDescriptor field are unused and should be set to 0. - - - - - Registers the image encoders, decoders and mime type detectors for the tga format. - - - - - Gets the current instance. - - - - - - - - - - - - - - - - - - - - Detects tga file headers. - - - - - - - - - - - Bottom left origin. - - - - - Bottom right origin. - - - - - Top left origin. - - - - - Top right origin. - - - - - Defines the tga image type. The TGA File Format can be used to store Pseudo-Color, - True-Color and Direct-Color images of various pixel depths. - - - - - No image data included. - - - - - Uncompressed, color mapped image. - - - - - Uncompressed true color image. - - - - - Uncompressed Black and white (grayscale) image. - - - - - Run length encoded, color mapped image. - - - - - Run length encoded, true color image. - - - - - Run length encoded, black and white (grayscale) image. - - - - - Extension methods for TgaImageType enum. - - - - - Checks if this tga image type is run length encoded. - - The tga image type. - True, if this image type is run length encoded, otherwise false. - - - - Checks, if the image type has valid value. - - The image type. - true, if its a valid tga image type. - - - - Provides TGA specific metadata information for the image. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - The metadata to create an instance from. - - - - Gets or sets the number of bits per pixel. - - - - - Gets or sets the the number of alpha bits per pixel. - - - - - - - - Cold path optimization for throwing 's - - The error message for the exception. - - - - Cold path optimization for throwing 's - - The error message for the exception. - The exception that is the cause of the current exception, or a null reference - if no inner exception is specified. - - - - Cold path optimization for throwing 's - - The error message for the exception. - - - - Extension methods for the type. - - - Extension methods for the type. - - - Extension methods for the type. - - - Extension methods for the type. - - - Extension methods for the type. - - - - - Gets the bmp format specific metadata for the image. - - The metadata this method extends. - The . - - - - Gets the gif format specific metadata for the image. - - The metadata this method extends. - The . - - - - Gets the gif format specific metadata for the image frame. - - The metadata this method extends. - The . - - - - Gets the jpeg format specific metadata for the image. - - The metadata this method extends. - The . - - - - Gets the png format specific metadata for the image. - - The metadata this method extends. - The . - - - - Gets the tga format specific metadata for the image. - - The metadata this method extends. - The . - - - - Extension methods for the type. - - - Extension methods for the type. - - - Contains internal extensions for - - - - - Saves the image to the given stream with the Bmp format. - - The image this method extends. - The file path to save the image to. - Thrown if the path is null. - - - - Saves the image to the given stream with the Bmp format. - - The image this method extends. - The file path to save the image to. - Thrown if the path is null. - A representing the asynchronous operation. - - - - Saves the image to the given stream with the Bmp format. - - The image this method extends. - The file path to save the image to. - The token to monitor for cancellation requests. - Thrown if the path is null. - A representing the asynchronous operation. - - - - Saves the image to the given stream with the Bmp format. - - The image this method extends. - The file path to save the image to. - The encoder to save the image with. - Thrown if the path is null. - - - - Saves the image to the given stream with the Bmp format. - - The image this method extends. - The file path to save the image to. - The encoder to save the image with. - The token to monitor for cancellation requests. - Thrown if the path is null. - A representing the asynchronous operation. - - - - Saves the image to the given stream with the Bmp format. - - The image this method extends. - The stream to save the image to. - Thrown if the stream is null. - - - - Saves the image to the given stream with the Bmp format. - - The image this method extends. - The stream to save the image to. - The token to monitor for cancellation requests. - Thrown if the stream is null. - A representing the asynchronous operation. - - - - Saves the image to the given stream with the Bmp format. - - The image this method extends. - The stream to save the image to. - The encoder to save the image with. - Thrown if the stream is null. - A representing the asynchronous operation. - - - - Saves the image to the given stream with the Bmp format. - - The image this method extends. - The stream to save the image to. - The encoder to save the image with. - The token to monitor for cancellation requests. - Thrown if the stream is null. - A representing the asynchronous operation. - - - - Saves the image to the given stream with the Gif format. - - The image this method extends. - The file path to save the image to. - Thrown if the path is null. - - - - Saves the image to the given stream with the Gif format. - - The image this method extends. - The file path to save the image to. - Thrown if the path is null. - A representing the asynchronous operation. - - - - Saves the image to the given stream with the Gif format. - - The image this method extends. - The file path to save the image to. - The token to monitor for cancellation requests. - Thrown if the path is null. - A representing the asynchronous operation. - - - - Saves the image to the given stream with the Gif format. - - The image this method extends. - The file path to save the image to. - The encoder to save the image with. - Thrown if the path is null. - - - - Saves the image to the given stream with the Gif format. - - The image this method extends. - The file path to save the image to. - The encoder to save the image with. - The token to monitor for cancellation requests. - Thrown if the path is null. - A representing the asynchronous operation. - - - - Saves the image to the given stream with the Gif format. - - The image this method extends. - The stream to save the image to. - Thrown if the stream is null. - - - - Saves the image to the given stream with the Gif format. - - The image this method extends. - The stream to save the image to. - The token to monitor for cancellation requests. - Thrown if the stream is null. - A representing the asynchronous operation. - - - - Saves the image to the given stream with the Gif format. - - The image this method extends. - The stream to save the image to. - The encoder to save the image with. - Thrown if the stream is null. - A representing the asynchronous operation. - - - - Saves the image to the given stream with the Gif format. - - The image this method extends. - The stream to save the image to. - The encoder to save the image with. - The token to monitor for cancellation requests. - Thrown if the stream is null. - A representing the asynchronous operation. - - - - Saves the image to the given stream with the Jpeg format. - - The image this method extends. - The file path to save the image to. - Thrown if the path is null. - - - - Saves the image to the given stream with the Jpeg format. - - The image this method extends. - The file path to save the image to. - Thrown if the path is null. - A representing the asynchronous operation. - - - - Saves the image to the given stream with the Jpeg format. - - The image this method extends. - The file path to save the image to. - The token to monitor for cancellation requests. - Thrown if the path is null. - A representing the asynchronous operation. - - - - Saves the image to the given stream with the Jpeg format. - - The image this method extends. - The file path to save the image to. - The encoder to save the image with. - Thrown if the path is null. - - - - Saves the image to the given stream with the Jpeg format. - - The image this method extends. - The file path to save the image to. - The encoder to save the image with. - The token to monitor for cancellation requests. - Thrown if the path is null. - A representing the asynchronous operation. - - - - Saves the image to the given stream with the Jpeg format. - - The image this method extends. - The stream to save the image to. - Thrown if the stream is null. - - - - Saves the image to the given stream with the Jpeg format. - - The image this method extends. - The stream to save the image to. - The token to monitor for cancellation requests. - Thrown if the stream is null. - A representing the asynchronous operation. - - - - Saves the image to the given stream with the Jpeg format. - - The image this method extends. - The stream to save the image to. - The encoder to save the image with. - Thrown if the stream is null. - A representing the asynchronous operation. - - - - Saves the image to the given stream with the Jpeg format. - - The image this method extends. - The stream to save the image to. - The encoder to save the image with. - The token to monitor for cancellation requests. - Thrown if the stream is null. - A representing the asynchronous operation. - - - - Saves the image to the given stream with the Png format. - - The image this method extends. - The file path to save the image to. - Thrown if the path is null. - - - - Saves the image to the given stream with the Png format. - - The image this method extends. - The file path to save the image to. - Thrown if the path is null. - A representing the asynchronous operation. - - - - Saves the image to the given stream with the Png format. - - The image this method extends. - The file path to save the image to. - The token to monitor for cancellation requests. - Thrown if the path is null. - A representing the asynchronous operation. - - - - Saves the image to the given stream with the Png format. - - The image this method extends. - The file path to save the image to. - The encoder to save the image with. - Thrown if the path is null. - - - - Saves the image to the given stream with the Png format. - - The image this method extends. - The file path to save the image to. - The encoder to save the image with. - The token to monitor for cancellation requests. - Thrown if the path is null. - A representing the asynchronous operation. - - - - Saves the image to the given stream with the Png format. - - The image this method extends. - The stream to save the image to. - Thrown if the stream is null. - - - - Saves the image to the given stream with the Png format. - - The image this method extends. - The stream to save the image to. - The token to monitor for cancellation requests. - Thrown if the stream is null. - A representing the asynchronous operation. - - - - Saves the image to the given stream with the Png format. - - The image this method extends. - The stream to save the image to. - The encoder to save the image with. - Thrown if the stream is null. - A representing the asynchronous operation. - - - - Saves the image to the given stream with the Png format. - - The image this method extends. - The stream to save the image to. - The encoder to save the image with. - The token to monitor for cancellation requests. - Thrown if the stream is null. - A representing the asynchronous operation. - - - - Saves the image to the given stream with the Tga format. - - The image this method extends. - The file path to save the image to. - Thrown if the path is null. - - - - Saves the image to the given stream with the Tga format. - - The image this method extends. - The file path to save the image to. - Thrown if the path is null. - A representing the asynchronous operation. - - - - Saves the image to the given stream with the Tga format. - - The image this method extends. - The file path to save the image to. - The token to monitor for cancellation requests. - Thrown if the path is null. - A representing the asynchronous operation. - - - - Saves the image to the given stream with the Tga format. - - The image this method extends. - The file path to save the image to. - The encoder to save the image with. - Thrown if the path is null. - - - - Saves the image to the given stream with the Tga format. - - The image this method extends. - The file path to save the image to. - The encoder to save the image with. - The token to monitor for cancellation requests. - Thrown if the path is null. - A representing the asynchronous operation. - - - - Saves the image to the given stream with the Tga format. - - The image this method extends. - The stream to save the image to. - Thrown if the stream is null. - - - - Saves the image to the given stream with the Tga format. - - The image this method extends. - The stream to save the image to. - The token to monitor for cancellation requests. - Thrown if the stream is null. - A representing the asynchronous operation. - - - - Saves the image to the given stream with the Tga format. - - The image this method extends. - The stream to save the image to. - The encoder to save the image with. - Thrown if the stream is null. - A representing the asynchronous operation. - - - - Saves the image to the given stream with the Tga format. - - The image this method extends. - The stream to save the image to. - The encoder to save the image with. - The token to monitor for cancellation requests. - Thrown if the stream is null. - A representing the asynchronous operation. - - - - Writes the image to the given file path using an encoder detected from the path. - - The source image. - The file path to save the image to. - The path is null. - No encoder available for provided path. - - - - Writes the image to the given file path using an encoder detected from the path. - - The source image. - The file path to save the image to. - The token to monitor for cancellation requests. - The path is null. - No encoder available for provided path. - A representing the asynchronous operation. - - - - Writes the image to the given file path using the given image encoder. - - The source image. - The file path to save the image to. - The encoder to save the image with. - The path is null. - The encoder is null. - - - - Writes the image to the given file path using the given image encoder. - - The source image. - The file path to save the image to. - The encoder to save the image with. - The token to monitor for cancellation requests. - The path is null. - The encoder is null. - A representing the asynchronous operation. - - - - Writes the image to the given stream using the given image format. - - The source image. - The stream to save the image to. - The format to save the image in. - The stream is null. - The format is null. - The stream is not writable. - No encoder available for provided format. - - - - Writes the image to the given stream using the given image format. - - The source image. - The stream to save the image to. - The format to save the image in. - The token to monitor for cancellation requests. - The stream is null. - The format is null. - The stream is not writable. - No encoder available for provided format. - A representing the asynchronous operation. - - - - Returns a Base64 encoded string from the given image. - The result is prepended with a Data URI - - - For example: - - - - - The source image - The format. - The format is null. - The - - - - Locks the image providing access to the pixels. - - It is imperative that the accessor is correctly disposed off after use. - - - The type of the pixel. - The image. - - The - - - - - Utility class for common geometric functions. - - - - - Converts a degree (360-periodic) angle to a radian (2*Pi-periodic) angle. - - The angle in degrees. - - The representing the degree as radians. - - - - - Converts a radian (2*Pi-periodic) angle to a degree (360-periodic) angle. - - The angle in radians. - - The representing the degree as radians. - - - - - Adds extensions that allow the processing of images to the type. - - - - - Sets the default options against the image processing context. - - The image processing context to store default against. - The action to update instance of the default options used. - The passed in to allow chaining. - - - - Sets the default options against the configuration. - - The configuration to store default against. - The default options to use. - - - - Sets the default options against the image processing context. - - The image processing context to store default against. - The default options to use. - The passed in to allow chaining. - - - - Sets the default options against the configuration. - - The configuration to store default against. - The default options to use. - - - - Gets the default options against the image processing context. - - The image processing context to retrieve defaults from. - The globaly configued default options. - - - - Gets the default options against the image processing context. - - The configuration to retrieve defaults from. - The globaly configued default options. - - - - Options for influencing the drawing functions. - - - - - Initializes a new instance of the class. - - - - - Gets or sets a value indicating whether antialiasing should be applied. - Defaults to true. - - - - - Gets or sets a value indicating the number of subpixels to use while rendering with antialiasing enabled. - Defaults to 16. - - - - - Gets or sets a value between indicating the blending percentage to apply to the drawing operation. - Range 0..1; Defaults to 1. - - - - - Gets or sets a value indicating the color blending mode to apply to the drawing operation. - Defaults to . - - - - - Gets or sets a value indicating the alpha composition mode to apply to the drawing operation - Defaults to . - - - - - - - - Represents an interface that can register image encoders, decoders and image format detectors. - - - - - Called when loaded into a configuration object so the module can register items into the configuration. - - The configuration that will retain the encoders, decodes and mime type detectors. - - - - A generic interface for a deeply cloneable type. - - The type of object to clone. - - - - Creates a new that is a deep copy of the current instance. - - The . - - - - An interface for objects that can be cloned. This creates a deep copy of the object. - - - - - Creates a new object that is a deep copy of the current instance. - - The . - - - - Encapsulates the properties and methods that describe an image. - - - - - Encapsulates properties that describe basic image information including dimensions, pixel type information - and additional metadata. - - - - - Gets information about the image pixels. - - - - - Gets the width. - - - - - Gets the height. - - - - - Gets the metadata of the image. - - - - - Encapsulates an image, which consists of the pixel data for a graphics image and its attributes. - For the non-generic type, the pixel type is only known at runtime. - is always implemented by a pixel-specific instance. - - - Adds static methods allowing the decoding of new images. - - - Adds static methods allowing the creation of new image from a byte array. - - - Adds static methods allowing the creation of new image from a given file. - - - Adds static methods allowing the creation of new image from a given stream. - - - Adds static methods allowing the creation of new image from raw pixel data. - - - Adds static methods allowing wrapping an existing memory area as an image. - - - - - Initializes a new instance of the class. - - - The configuration which allows altering default behaviour or extending the library. - - The . - The . - The . - - - - Initializes a new instance of the class. - - - - - Gets the implementing the public property. - - - - - - - - - - - - - - - - - Gets the frames of the image as (non-generic) . - - - - - - - - - - - Saves the image to the given stream using the given image encoder. - - The stream to save the image to. - The encoder to save the image with. - Thrown if the stream or encoder is null. - - - - Saves the image to the given stream using the given image encoder. - - The stream to save the image to. - The encoder to save the image with. - The token to monitor for cancellation requests. - Thrown if the stream or encoder is null. - A representing the asynchronous operation. - - - - Returns a copy of the image in the given pixel format. - - The pixel format. - The - - - - Returns a copy of the image in the given pixel format. - - The pixel format. - The configuration providing initialization code which allows extending the library. - The . - - - - Update the size of the image after mutation. - - The . - - - - Disposes the object and frees resources for the Garbage Collector. - - Whether to dispose of managed and unmanaged objects. - - - - Throws if the image is disposed. - - - - - Accepts a . - Implemented by invoking - with the pixel type of the image. - - The visitor. - - - - Accepts a . - Implemented by invoking - with the pixel type of the image. - - The visitor. - The token to monitor for cancellation requests. - - - - Creates an instance backed by an uninitialized memory buffer. - This is an optimized creation method intended to be used by decoders. - The image might be filled with memory garbage. - - The pixel type - The - The width of the image - The height of the image - The - The result - - - - By reading the header on the provided stream this calculates the images format. - - The image stream to read the header from. - The configuration. - The mime type or null if none found. - - - - By reading the header on the provided stream this calculates the images format. - - The image stream to read the header from. - The configuration. - The mime type or null if none found. - - - - By reading the header on the provided stream this calculates the images format. - - The image stream to read the header from. - The configuration. - The IImageFormat. - The image format or null if none found. - - - - By reading the header on the provided stream this calculates the images format. - - The image stream to read the header from. - The configuration. - The decoder and the image format or null if none found. - - - - Decodes the image stream to the current image. - - The stream. - the configuration. - The pixel format. - - A new . - - - - - Decodes the image stream to the current image. - - The stream. - the configuration. - The token to monitor for cancellation requests. - The pixel format. - A representing the asynchronous operation. - - - - Reads the raw image information from the specified stream. - - The stream. - the configuration. - - The or null if a suitable info detector is not found. - - - - - Reads the raw image information from the specified stream. - - The stream. - the configuration. - The token to monitor for cancellation requests. - - A representing the asynchronous operation with the - property of the returned type set to null if a suitable detector - is not found. - - - - By reading the header on the provided byte array this calculates the images format. - - The byte array containing encoded image data to read the header from. - The data is null. - The format or null if none found. - - - - By reading the header on the provided byte array this calculates the images format. - - The configuration. - The byte array containing encoded image data to read the header from. - The configuration is null. - The data is null. - The mime type or null if none found. - - - - Reads the raw image information from the specified stream without fully decoding it. - - The byte array containing encoded image data to read the header from. - The data is null. - The data is not readable. - - The or null if suitable info detector not found. - - - - - Reads the raw image information from the specified stream without fully decoding it. - - The byte array containing encoded image data to read the header from. - The format type of the decoded image. - The data is null. - The data is not readable. - - The or null if suitable info detector not found. - - - - - Reads the raw image information from the specified stream without fully decoding it. - - The configuration. - The byte array containing encoded image data to read the header from. - The format type of the decoded image. - The configuration is null. - The data is null. - The data is not readable. - - The or null if suitable info detector is not found. - - - - - Load a new instance of from the given encoded byte array. - - The byte array containing image data. - The configuration is null. - The data is null. - A new . - - - - Load a new instance of from the given encoded byte array. - - The byte array containing encoded image data. - The pixel format. - The data is null. - Image format not recognised. - Image contains invalid content. - A new . - - - - Load a new instance of from the given encoded byte array. - - The byte array containing image data. - The mime type of the decoded image. - The pixel format. - The data is null. - Image format not recognised. - Image contains invalid content. - A new . - - - - Load a new instance of from the given encoded byte array. - - The configuration options. - The byte array containing encoded image data. - The pixel format. - The configuration is null. - The data is null. - Image format not recognised. - Image contains invalid content. - A new . - - - - Load a new instance of from the given encoded byte array. - - The configuration options. - The byte array containing encoded image data. - The of the decoded image. - The pixel format. - The configuration is null. - The data is null. - Image format not recognised. - Image contains invalid content. - A new . - - - - Load a new instance of from the given encoded byte array. - - The byte array containing encoded image data. - The decoder. - The pixel format. - The data is null. - Image format not recognised. - Image contains invalid content. - A new . - - - - Load a new instance of from the given encoded byte array. - - The Configuration. - The byte array containing encoded image data. - The decoder. - The pixel format. - The configuration is null. - The data is null. - Image format not recognised. - Image contains invalid content. - A new . - - - - By reading the header on the provided byte span this calculates the images format. - - The byte span containing encoded image data to read the header from. - The format or null if none found. - - - - By reading the header on the provided byte span this calculates the images format. - - The configuration. - The byte span containing encoded image data to read the header from. - The configuration is null. - The mime type or null if none found. - - - - Load a new instance of from the given encoded byte span. - - The byte span containing encoded image data. - The pixel format. - Image format not recognised. - Image contains invalid content. - A new . - - - - Load a new instance of from the given encoded byte span. - - The byte span containing image data. - The mime type of the decoded image. - The pixel format. - Image format not recognised. - Image contains invalid content. - A new . - - - - Load a new instance of from the given encoded byte span. - - The byte span containing encoded image data. - The decoder. - The pixel format. - Image format not recognised. - Image contains invalid content. - A new . - - - - Load a new instance of from the given encoded byte span. - - The configuration options. - The byte span containing encoded image data. - The pixel format. - The configuration is null. - Image format not recognised. - Image contains invalid content. - A new . - - - - Load a new instance of from the given encoded byte span. - - The Configuration. - The byte span containing image data. - The decoder. - The pixel format. - The configuration is null. - Image format not recognised. - Image contains invalid content. - A new . - - - - Load a new instance of from the given encoded byte span. - - The configuration options. - The byte span containing image data. - The of the decoded image. - The pixel format. - The configuration is null. - Image format not recognised. - Image contains invalid content. - A new . - - - - Load a new instance of from the given encoded byte array. - - The byte array containing image data. - The detected format. - The configuration is null. - The data is null. - Image format not recognised. - Image contains invalid content. - The . - - - - Load a new instance of from the given encoded byte array. - - The byte array containing encoded image data. - The decoder. - The data is null. - Image format not recognised. - Image contains invalid content. - The . - - - - Load a new instance of from the given encoded byte array. - - The configuration for the decoder. - The byte array containing encoded image data. - The configuration is null. - The data is null. - Image format not recognised. - Image contains invalid content. - The . - - - - Load a new instance of from the given encoded byte array. - - The configuration for the decoder. - The byte array containing image data. - The decoder. - The configuration is null. - The data is null. - Image format not recognised. - Image contains invalid content. - The . - - - - Load a new instance of from the given encoded byte array. - - The configuration for the decoder. - The byte array containing image data. - The mime type of the decoded image. - The configuration is null. - The data is null. - Image format not recognised. - Image contains invalid content. - The . - - - - Load a new instance of from the given encoded byte span. - - The byte span containing image data. - Image format not recognised. - Image contains invalid content. - The . - - - - Load a new instance of from the given encoded byte span. - - The byte span containing image data. - The decoder. - The data is null. - The decoder is null. - Image format not recognised. - Image contains invalid content. - The . - - - - Load a new instance of from the given encoded byte array. - - The byte span containing image data. - The detected format. - The decoder is null. - Image format not recognised. - Image contains invalid content. - The . - - - - Decodes a new instance of from the given encoded byte span. - - The configuration options. - The byte span containing image data. - The . - - - - Load a new instance of from the given encoded byte span. - - The Configuration. - The byte span containing image data. - The decoder. - The configuration is null. - The decoder is null. - The stream is not readable. - Image format not recognised. - Image contains invalid content. - The . - - - - Load a new instance of from the given encoded byte span. - - The configuration options. - The byte span containing image data. - The of the decoded image.> - The configuration is null. - Image format not recognised. - Image contains invalid content. - The . - - - - By reading the header on the provided file this calculates the images mime type. - - The image file to open and to read the header from. - The mime type or null if none found. - - - - By reading the header on the provided file this calculates the images mime type. - - The configuration. - The image file to open and to read the header from. - The configuration is null. - The mime type or null if none found. - - - - Reads the raw image information from the specified stream without fully decoding it. - - The image file to open and to read the header from. - - The or null if suitable info detector not found. - - - - - Reads the raw image information from the specified stream without fully decoding it. - - The image file to open and to read the header from. - The format type of the decoded image. - - The or null if suitable info detector not found. - - - - - Reads the raw image information from the specified stream without fully decoding it. - - The configuration. - The image file to open and to read the header from. - The format type of the decoded image. - The configuration is null. - - The or null if suitable info detector is not found. - - - - - Reads the raw image information from the specified stream without fully decoding it. - - The image file to open and to read the header from. - The token to monitor for cancellation requests. - The configuration is null. - - The representing the asynchronous operation with the parameter type - property set to null if suitable info detector is not found. - - - - - Reads the raw image information from the specified stream without fully decoding it. - - The configuration. - The image file to open and to read the header from. - The token to monitor for cancellation requests. - The configuration is null. - - The representing the asynchronous operation with the parameter type - property set to null if suitable info detector is not found. - - - - - Reads the raw image information from the specified stream without fully decoding it. - - The image file to open and to read the header from. - The token to monitor for cancellation requests. - The configuration is null. - - The representing the asynchronous operation with the parameter type - property set to null if suitable info detector is not found. - - - - - Reads the raw image information from the specified stream without fully decoding it. - - The configuration. - The image file to open and to read the header from. - The token to monitor for cancellation requests. - The configuration is null. - - The representing the asynchronous operation with the parameter type - property set to null if suitable info detector is not found. - - - - - Create a new instance of the class from the given file. - - The file path to the image. - - Thrown if the stream is not readable nor seekable. - - The . - - - - Create a new instance of the class from the given file. - - The file path to the image. - The mime type of the decoded image. - - Thrown if the stream is not readable nor seekable. - - A new . - - - - Create a new instance of the class from the given file. - - The configuration for the decoder. - The file path to the image. - The configuration is null. - The path is null. - Image format not recognised. - Image contains invalid content. - The . - - - - Create a new instance of the class from the given file. - - The configuration for the decoder. - The file path to the image. - The token to monitor for cancellation requests. - The configuration is null. - The path is null. - Image format not recognised. - Image contains invalid content. - A representing the asynchronous operation. - - - - Create a new instance of the class from the given file. - - The Configuration. - The file path to the image. - The decoder. - The configuration is null. - The path is null. - The decoder is null. - Image format not recognised. - Image contains invalid content. - The . - - - - Create a new instance of the class from the given file. - - The file path to the image. - The token to monitor for cancellation requests. - The configuration is null. - The path is null. - The decoder is null. - Image format not recognised. - Image contains invalid content. - A representing the asynchronous operation. - - - - Create a new instance of the class from the given file. - - The file path to the image. - The decoder. - The configuration is null. - The path is null. - The decoder is null. - Image format not recognised. - Image contains invalid content. - A representing the asynchronous operation. - - - - Create a new instance of the class from the given file. - - The file path to the image. - The decoder. - The configuration is null. - The path is null. - The decoder is null. - Image format not recognised. - Image contains invalid content. - The pixel format. - A representing the asynchronous operation. - - - - Create a new instance of the class from the given file. - - The Configuration. - The file path to the image. - The decoder. - The token to monitor for cancellation requests. - The configuration is null. - The path is null. - The decoder is null. - Image format not recognised. - Image contains invalid content. - A representing the asynchronous operation. - - - - Create a new instance of the class from the given file. - - The Configuration. - The file path to the image. - The decoder. - The token to monitor for cancellation requests. - The configuration is null. - The path is null. - The decoder is null. - Image format not recognised. - Image contains invalid content. - The pixel format. - A representing the asynchronous operation. - - - - Create a new instance of the class from the given file. - - The file path to the image. - The configuration is null. - The path is null. - Image format not recognised. - Image contains invalid content. - The pixel format. - A representing the asynchronous operation. - - - - Create a new instance of the class from the given file. - - The configuration for the decoder. - The file path to the image. - The token to monitor for cancellation requests. - The configuration is null. - The path is null. - Image format not recognised. - Image contains invalid content. - The pixel format. - A representing the asynchronous operation. - - - - Create a new instance of the class from the given file. - - The file path to the image. - The decoder. - The path is null. - The decoder is null. - Image format not recognised. - Image contains invalid content. - The . - - - - Create a new instance of the class from the given file. - - The file path to the image. - The path is null. - Image format not recognised. - Image contains invalid content. - The pixel format. - A new . - - - - Create a new instance of the class from the given file. - - The file path to the image. - The mime type of the decoded image. - The path is null. - Image format not recognised. - Image contains invalid content. - The pixel format. - A new . - - - - Create a new instance of the class from the given file. - - The configuration options. - The file path to the image. - The configuration is null. - The path is null. - Image format not recognised. - Image contains invalid content. - The pixel format. - A new . - - - - Create a new instance of the class from the given file. - - The configuration options. - The file path to the image. - The mime type of the decoded image. - The configuration is null. - The path is null. - Image format not recognised. - Image contains invalid content. - The pixel format. - A new . - - - - Create a new instance of the class from the given file. - The pixel type is selected by the decoder. - - The configuration options. - The file path to the image. - The mime type of the decoded image. - The configuration is null. - The path is null. - Image format not recognised. - Image contains invalid content. - A new . - - - - Create a new instance of the class from the given file. - - The file path to the image. - The decoder. - The path is null. - Image format not recognised. - Image contains invalid content. - The pixel format. - A new . - - - - Create a new instance of the class from the given file. - - The Configuration. - The file path to the image. - The decoder. - The configuration is null. - The path is null. - The decoder is null. - Image format not recognised. - Image contains invalid content. - The pixel format. - A new . - - - - By reading the header on the provided stream this calculates the images format type. - - The image stream to read the header from. - The stream is null. - The stream is not readable. - The format type or null if none found. - - - - By reading the header on the provided stream this calculates the images format type. - - The configuration. - The image stream to read the header from. - The configuration is null. - The stream is null. - The stream is not readable. - The format type or null if none found. - - - - By reading the header on the provided stream this calculates the images format type. - - The image stream to read the header from. - The stream is null. - The stream is not readable. - A representing the asynchronous operation or null if none is found. - - - - By reading the header on the provided stream this calculates the images format type. - - The configuration. - The image stream to read the header from. - The configuration is null. - The stream is null. - The stream is not readable. - A representing the asynchronous operation. - - - - Reads the raw image information from the specified stream without fully decoding it. - - The image stream to read the header from. - The stream is null. - The stream is not readable. - Image contains invalid content. - - The or null if a suitable info detector is not found. - - - - - Reads the raw image information from the specified stream without fully decoding it. - - The image stream to read the header from. - The stream is null. - The stream is not readable. - Image contains invalid content. - - A representing the asynchronous operation or null if - a suitable detector is not found. - - - - - Reads the raw image information from the specified stream without fully decoding it. - - The image stream to read the header from. - The format type of the decoded image. - The stream is null. - The stream is not readable. - Image contains invalid content. - - The or null if a suitable info detector is not found. - - - - - Reads the raw image information from the specified stream without fully decoding it. - - The configuration. - The image stream to read the information from. - The configuration is null. - The stream is null. - The stream is not readable. - Image contains invalid content. - - The or null if a suitable info detector is not found. - - - - - Reads the raw image information from the specified stream without fully decoding it. - - The configuration. - The image stream to read the information from. - The token to monitor for cancellation requests. - The configuration is null. - The stream is null. - The stream is not readable. - Image contains invalid content. - - A representing the asynchronous operation or null if - a suitable detector is not found. - - - - - Reads the raw image information from the specified stream without fully decoding it. - - The configuration. - The image stream to read the information from. - The format type of the decoded image. - The configuration is null. - The stream is null. - The stream is not readable. - Image contains invalid content. - - The or null if a suitable info detector is not found. - - - - - Reads the raw image information from the specified stream without fully decoding it. - - The image stream to read the information from. - The token to monitor for cancellation requests. - The configuration is null. - The stream is null. - The stream is not readable. - Image contains invalid content. - - The representing the asynchronous operation with the parameter type - property set to null if suitable info detector is not found. - - - - - Reads the raw image information from the specified stream without fully decoding it. - - The configuration. - The image stream to read the information from. - The token to monitor for cancellation requests. - The configuration is null. - The stream is null. - The stream is not readable. - Image contains invalid content. - - The representing the asynchronous operation with the parameter type - property set to null if suitable info detector is not found. - - - - - Decode a new instance of the class from the given stream. - The pixel format is selected by the decoder. - - The stream containing image information. - The format type of the decoded image. - The stream is null. - The stream is not readable. - Image format not recognised. - Image contains invalid content. - The . - - - - Decode a new instance of the class from the given stream. - The pixel format is selected by the decoder. - - The stream containing image information. - The stream is null. - The stream is not readable. - Image format not recognised. - Image contains invalid content. - A representing the asynchronous operation. - - - - Decode a new instance of the class from the given stream. - The pixel format is selected by the decoder. - - The stream containing image information. - The stream is null. - The stream is not readable. - Image format not recognised. - Image contains invalid content. - The . - - - - Decode a new instance of the class from the given stream. - The pixel format is selected by the decoder. - - The stream containing image information. - The stream is null. - The stream is not readable. - Image format not recognised. - Image contains invalid content. - A representing the asynchronous operation. - - - - Decode a new instance of the class from the given stream. - The pixel format is selected by the decoder. - - The stream containing image information. - The decoder. - The stream is null. - The decoder is null. - The stream is not readable. - Image format not recognised. - Image contains invalid content. - The . - - - - Decode a new instance of the class from the given stream. - The pixel format is selected by the decoder. - - The stream containing image information. - The decoder. - The stream is null. - The decoder is null. - The stream is not readable. - Image format not recognised. - Image contains invalid content. - A representing the asynchronous operation. - - - - Decode a new instance of the class from the given stream. - The pixel format is selected by the decoder. - - The configuration for the decoder. - The stream containing image information. - The decoder. - The configuration is null. - The stream is null. - The decoder is null. - The stream is not readable. - Image format not recognised. - Image contains invalid content. - A new . - - - - Decode a new instance of the class from the given stream. - The pixel format is selected by the decoder. - - The configuration for the decoder. - The stream containing image information. - The decoder. - The token to monitor for cancellation requests. - The configuration is null. - The stream is null. - The decoder is null. - The stream is not readable. - Image format not recognised. - Image contains invalid content. - A representing the asynchronous operation. - - - - Decode a new instance of the class from the given stream. - - The configuration for the decoder. - The stream containing image information. - The configuration is null. - The stream is null. - The stream is not readable. - Image format not recognised. - Image contains invalid content. - A new . - - - - Decode a new instance of the class from the given stream. - - The configuration for the decoder. - The stream containing image information. - The token to monitor for cancellation requests. - The configuration is null. - The stream is null. - The stream is not readable. - Image format not recognised. - Image contains invalid content. - A representing the asynchronous operation. - - - - Create a new instance of the class from the given stream. - - The stream containing image information. - The stream is null. - The stream is not readable. - Image format not recognised. - Image contains invalid content. - The pixel format. - A new . - - - - Create a new instance of the class from the given stream. - - The stream containing image information. - The stream is null. - The stream is not readable. - Image format not recognised. - Image contains invalid content. - The pixel format. - A representing the asynchronous operation. - - - - Create a new instance of the class from the given stream. - - The stream containing image information. - The format type of the decoded image. - The stream is null. - The stream is not readable. - Image format not recognised. - Image contains invalid content. - The pixel format. - A new . - - - - Create a new instance of the class from the given stream. - - The stream containing image information. - The stream is null. - The stream is not readable. - Image format not recognised. - Image contains invalid content. - The pixel format. - A representing the asynchronous operation. - - - - Create a new instance of the class from the given stream. - - The stream containing image information. - The decoder. - The stream is null. - The stream is not readable. - Image format not recognised. - Image contains invalid content. - The pixel format. - A new . - - - - Create a new instance of the class from the given stream. - - The stream containing image information. - The decoder. - The token to monitor for cancellation requests. - The stream is null. - The stream is not readable. - Image format not recognised. - Image contains invalid content. - The pixel format. - A representing the asynchronous operation. - - - - Create a new instance of the class from the given stream. - - The Configuration. - The stream containing image information. - The decoder. - The configuration is null. - The stream is null. - The stream is not readable. - Image format not recognised. - Image contains invalid content. - The pixel format. - A new . - - - - Create a new instance of the class from the given stream. - - The Configuration. - The stream containing image information. - The decoder. - The token to monitor for cancellation requests. - The configuration is null. - The stream is null. - The stream is not readable. - Image format not recognised. - Image contains invalid content. - The pixel format. - A representing the asynchronous operation. - - - - Create a new instance of the class from the given stream. - - The configuration options. - The stream containing image information. - The configuration is null. - The stream is null. - The stream is not readable. - Image format not recognised. - Image contains invalid content. - The pixel format. - A new . - - - - Create a new instance of the class from the given stream. - - The configuration options. - The stream containing image information. - The format type of the decoded image. - The configuration is null. - The stream is null. - The stream is not readable. - Image format not recognised. - Image contains invalid content. - The pixel format. - A representing the asynchronous operation. - - - - Create a new instance of the class from the given stream. - - The configuration options. - The stream containing image information. - The token to monitor for cancellation requests. - The configuration is null. - The stream is null. - The stream is not readable. - Image format not recognised. - Image contains invalid content. - A representing the asynchronous operation. - - - - Create a new instance of the class from the given stream. - - The configuration options. - The stream containing image information. - The token to monitor for cancellation requests. - The configuration is null. - The stream is null. - The stream is not readable. - Image format not recognised. - Image contains invalid content. - The pixel format. - A representing the asynchronous operation. - - - - Create a new instance of the class from the given stream. - - The configuration options. - The stream containing image information. - The token to monitor for cancellation requests. - The configuration is null. - The stream is null. - The stream is not readable. - Image format not recognised. - Image contains invalid content. - The pixel format. - A representing the asynchronous operation. - - - - Decode a new instance of the class from the given stream. - The pixel format is selected by the decoder. - - The configuration options. - The stream containing image information. - The format type of the decoded image. - The configuration is null. - The stream is null. - The stream is not readable. - Image format not recognised. - Image contains invalid content. - A new . - - - - Performs the given action against the stream ensuring that it is seekable. - - The type of object returned from the action. - The configuration. - The input stream. - The action to perform. - The . - - - - Performs the given action asynchronously against the stream ensuring that it is seekable. - - The type of object returned from the action. - The configuration. - The input stream. - The action to perform. - The cancellation token. - The . - - - - Create a new instance of the class from the raw data. - - The byte array containing image data. - The width of the final image. - The height of the final image. - The pixel format. - The data length is incorrect. - A new . - - - - Create a new instance of the class from the raw data. - - The byte array containing image data. - The width of the final image. - The height of the final image. - The pixel format. - The data length is incorrect. - A new . - - - - Create a new instance of the class from the given byte array in format. - - The byte array containing image data. - The width of the final image. - The height of the final image. - The pixel format. - The data length is incorrect. - A new . - - - - Create a new instance of the class from the given byte array in format. - - The byte array containing image data. - The width of the final image. - The height of the final image. - The pixel format. - The data length is incorrect. - A new . - - - - Create a new instance of the class from the given byte array in format. - - The configuration for the decoder. - The byte array containing image data. - The width of the final image. - The height of the final image. - The pixel format. - The configuration is null. - The data length is incorrect. - A new . - - - - Create a new instance of the class from the given byte array in format. - - The configuration for the decoder. - The byte array containing image data. - The width of the final image. - The height of the final image. - The pixel format. - The configuration is null. - The data length is incorrect. - A new . - - - - Create a new instance of the class from the raw data. - - The configuration for the decoder. - The Span containing the image Pixel data. - The width of the final image. - The height of the final image. - The pixel format. - The configuration is null. - The data length is incorrect. - A new . - - - - Create a new instance of the class from the raw data. - - The configuration for the decoder. - The Span containing the image Pixel data. - The width of the final image. - The height of the final image. - The configuration is null. - The data length is incorrect. - The pixel format. - A new . - - - - - Wraps an existing contiguous memory area of at least 'width' x 'height' pixels allowing viewing/manipulation as - an instance. - - - Please note: using this method does not transfer the ownership of the underlying buffer of the input - to the new instance. This means that consumers of this method must ensure that the input buffer - is either self-contained, (for example, a instance wrapping a new array that was - created), or that the owning object is not disposed until the returned is disposed. - - - If the input instance is one retrieved from an instance - rented from a memory pool (such as ), and that owning instance is disposed while the image is still - in use, this will lead to undefined behavior and possibly runtime crashes (as the same buffer might then be modified by other - consumers while the returned image is still working on it). Make sure to control the lifetime of the input buffers appropriately. - - - The pixel type - The - The pixel memory. - The width of the memory image. - The height of the memory image. - The . - The configuration is null. - The metadata is null. - An instance - - - - - Wraps an existing contiguous memory area of at least 'width' x 'height' pixels allowing viewing/manipulation as - an instance. - - - Please note: using this method does not transfer the ownership of the underlying buffer of the input - to the new instance. This means that consumers of this method must ensure that the input buffer - is either self-contained, (for example, a instance wrapping a new array that was - created), or that the owning object is not disposed until the returned is disposed. - - - If the input instance is one retrieved from an instance - rented from a memory pool (such as ), and that owning instance is disposed while the image is still - in use, this will lead to undefined behavior and possibly runtime crashes (as the same buffer might then be modified by other - consumers while the returned image is still working on it). Make sure to control the lifetime of the input buffers appropriately. - - - The pixel type - The - The pixel memory. - The width of the memory image. - The height of the memory image. - The configuration is null. - An instance. - - - - - Wraps an existing contiguous memory area of at least 'width' x 'height' pixels allowing viewing/manipulation as - an instance. - - - Please note: using this method does not transfer the ownership of the underlying buffer of the input - to the new instance. This means that consumers of this method must ensure that the input buffer - is either self-contained, (for example, a instance wrapping a new array that was - created), or that the owning object is not disposed until the returned is disposed. - - - If the input instance is one retrieved from an instance - rented from a memory pool (such as ), and that owning instance is disposed while the image is still - in use, this will lead to undefined behavior and possibly runtime crashes (as the same buffer might then be modified by other - consumers while the returned image is still working on it). Make sure to control the lifetime of the input buffers appropriately. - - - The pixel type. - The pixel memory. - The width of the memory image. - The height of the memory image. - An instance. - - - - Wraps an existing contiguous memory area of at least 'width' x 'height' pixels, - allowing to view/manipulate it as an instance. - The ownership of the is being transferred to the new instance, - meaning that the caller is not allowed to dispose . - It will be disposed together with the result image. - - The pixel type - The - The that is being transferred to the image - The width of the memory image. - The height of the memory image. - The - The configuration is null. - The metadata is null. - An instance - - - - Wraps an existing contiguous memory area of at least 'width' x 'height' pixels, - allowing to view/manipulate it as an instance. - The ownership of the is being transferred to the new instance, - meaning that the caller is not allowed to dispose . - It will be disposed together with the result image. - - The pixel type. - The - The that is being transferred to the image. - The width of the memory image. - The height of the memory image. - The configuration is null. - An instance - - - - Wraps an existing contiguous memory area of at least 'width' x 'height' pixels, - allowing to view/manipulate it as an instance. - The ownership of the is being transferred to the new instance, - meaning that the caller is not allowed to dispose . - It will be disposed together with the result image. - - The pixel type - The that is being transferred to the image. - The width of the memory image. - The height of the memory image. - An instance. - - - - - Wraps an existing contiguous memory area of at least 'width' x 'height' pixels allowing viewing/manipulation as - an instance. - - - Please note: using this method does not transfer the ownership of the underlying buffer of the input - to the new instance. This means that consumers of this method must ensure that the input buffer - is either self-contained, (for example, a instance wrapping a new array that was - created), or that the owning object is not disposed until the returned is disposed. - - - If the input instance is one retrieved from an instance - rented from a memory pool (such as ), and that owning instance is disposed while the image is still - in use, this will lead to undefined behavior and possibly runtime crashes (as the same buffer might then be modified by other - consumers while the returned image is still working on it). Make sure to control the lifetime of the input buffers appropriately. - - - The pixel type - The - The byte memory representing the pixel data. - The width of the memory image. - The height of the memory image. - The . - The configuration is null. - The metadata is null. - An instance - - - - - Wraps an existing contiguous memory area of at least 'width' x 'height' pixels allowing viewing/manipulation as - an instance. - - - Please note: using this method does not transfer the ownership of the underlying buffer of the input - to the new instance. This means that consumers of this method must ensure that the input buffer - is either self-contained, (for example, a instance wrapping a new array that was - created), or that the owning object is not disposed until the returned is disposed. - - - If the input instance is one retrieved from an instance - rented from a memory pool (such as ), and that owning instance is disposed while the image is still - in use, this will lead to undefined behavior and possibly runtime crashes (as the same buffer might then be modified by other - consumers while the returned image is still working on it). Make sure to control the lifetime of the input buffers appropriately. - - - The pixel type - The - The byte memory representing the pixel data. - The width of the memory image. - The height of the memory image. - The configuration is null. - An instance. - - - - - Wraps an existing contiguous memory area of at least 'width' x 'height' pixels allowing viewing/manipulation as - an instance. - - - Please note: using this method does not transfer the ownership of the underlying buffer of the input - to the new instance. This means that consumers of this method must ensure that the input buffer - is either self-contained, (for example, a instance wrapping a new array that was - created), or that the owning object is not disposed until the returned is disposed. - - - If the input instance is one retrieved from an instance - rented from a memory pool (such as ), and that owning instance is disposed while the image is still - in use, this will lead to undefined behavior and possibly runtime crashes (as the same buffer might then be modified by other - consumers while the returned image is still working on it). Make sure to control the lifetime of the input buffers appropriately. - - - The pixel type. - The byte memory representing the pixel data. - The width of the memory image. - The height of the memory image. - An instance. - - - - - Wraps an existing contiguous memory area of at least 'width' x 'height' pixels allowing viewing/manipulation as - an instance. - - - Please note: this method relies on callers to carefully manage the target memory area being referenced by the - pointer and that the lifetime of such a memory area is at least equal to that of the returned - instance. For example, if the input pointer references an unmanaged memory area, - callers must ensure that the memory area is not freed as long as the returned is - in use and not disposed. The same applies if the input memory area points to a pinned managed object, as callers - must ensure that objects will remain pinned as long as the instance is in use. - Failing to do so constitutes undefined behavior and will likely lead to memory corruption and runtime crashes. - - - Note also that if you have a or an array (which can be cast to ) of - either or values, it is highly recommended to use one of the other - available overloads of this method instead (such as - or , to make the resulting code less error - prone and avoid having to pin the underlying memory buffer in use. This method is primarily meant to be used when - doing interop or working with buffers that are located in unmanaged memory. - - - The pixel type - The - The pointer to the target memory buffer to wrap. - The width of the memory image. - The height of the memory image. - The . - The configuration is null. - The metadata is null. - An instance - - - - - Wraps an existing contiguous memory area of at least 'width' x 'height' pixels allowing viewing/manipulation as - an instance. - - - Please note: this method relies on callers to carefully manage the target memory area being referenced by the - pointer and that the lifetime of such a memory area is at least equal to that of the returned - instance. For example, if the input pointer references an unmanaged memory area, - callers must ensure that the memory area is not freed as long as the returned is - in use and not disposed. The same applies if the input memory area points to a pinned managed object, as callers - must ensure that objects will remain pinned as long as the instance is in use. - Failing to do so constitutes undefined behavior and will likely lead to memory corruption and runtime crashes. - - - Note also that if you have a or an array (which can be cast to ) of - either or values, it is highly recommended to use one of the other - available overloads of this method instead (such as - or , to make the resulting code less error - prone and avoid having to pin the underlying memory buffer in use. This method is primarily meant to be used when - doing interop or working with buffers that are located in unmanaged memory. - - - The pixel type - The - The pointer to the target memory buffer to wrap. - The width of the memory image. - The height of the memory image. - The configuration is null. - An instance. - - - - - Wraps an existing contiguous memory area of at least 'width' x 'height' pixels allowing viewing/manipulation as - an instance. - - - Please note: this method relies on callers to carefully manage the target memory area being referenced by the - pointer and that the lifetime of such a memory area is at least equal to that of the returned - instance. For example, if the input pointer references an unmanaged memory area, - callers must ensure that the memory area is not freed as long as the returned is - in use and not disposed. The same applies if the input memory area points to a pinned managed object, as callers - must ensure that objects will remain pinned as long as the instance is in use. - Failing to do so constitutes undefined behavior and will likely lead to memory corruption and runtime crashes. - - - Note also that if you have a or an array (which can be cast to ) of - either or values, it is highly recommended to use one of the other - available overloads of this method instead (such as - or , to make the resulting code less error - prone and avoid having to pin the underlying memory buffer in use. This method is primarily meant to be used when - doing interop or working with buffers that are located in unmanaged memory. - - - The pixel type. - The pointer to the target memory buffer to wrap. - The width of the memory image. - The height of the memory image. - An instance. - - - - Represents a pixel-agnostic image frame containing all pixel data and . - In case of animated formats like gif, it contains the single frame in a animation. - In all other cases it is the only frame of the image. - - - Contains methods for loading raw pixel data. - - - - - Initializes a new instance of the class. - - The configuration which allows altering default behaviour or extending the library. - The frame width. - The frame height. - The . - - - - Gets the width. - - - - - Gets the height. - - - - - Gets the metadata of the frame. - - - - - - - - Gets the size of the frame. - - The - - - - Gets the bounds of the frame. - - The - - - - - - - Disposes the object and frees resources for the Garbage Collector. - - Whether to dispose of managed and unmanaged objects. - - - - Updates the size of the image frame. - - - - - Create a new instance of the class from the given byte array in format. - - The configuration which allows altering default behaviour or extending the library. - The byte array containing image data. - The width of the final image. - The height of the final image. - The pixel format. - A new . - - - - Create a new instance of the class from the raw data. - - The configuration which allows altering default behaviour or extending the library. - The Span containing the image Pixel data. - The width of the final image. - The height of the final image. - The pixel format. - A new . - - - - Encapsulates a pixel-agnostic collection of instances - that make up an . - - - - - Gets the number of frames. - - - - - Gets the root frame. - - - - - Gets the root frame. (Implements .) - - - - - Gets the at the specified index. - - - The . - - The index. - The at the specified index. - - - - Determines the index of a specific in the . - - The to locate in the . - The index of item if found in the list; otherwise, -1. - - - - Clones and inserts the into the at the specified . - - The zero-based index to insert the frame at. - The to clone and insert into the . - Frame must have the same dimensions as the image. - The cloned . - - - - Clones the frame and appends the clone to the end of the collection. - - The raw pixel data to generate the from. - The cloned . - - - - Removes the frame at the specified index and frees all freeable resources associated with it. - - The zero-based index of the frame to remove. - Cannot remove last frame. - - - - Determines whether the contains the . - - The frame. - - true if the contains the specified frame; otherwise, false. - - - - - Moves an from to . - - The zero-based index of the frame to move. - The index to move the frame to. - - - - Removes the frame at the specified index and creates a new image with only the removed frame - with the same metadata as the original image. - - The zero-based index of the frame to export. - Cannot remove last frame. - The new with the specified frame. - - - - Creates an with only the frame at the specified index - with the same metadata as the original image. - - The zero-based index of the frame to clone. - The new with the specified frame. - - - - Creates a new and appends it to the end of the collection. - - - The new . - - - - - Creates a new and appends it to the end of the collection. - - The background color to initialize the pixels with. - - The new . - - - - - - - - - - - Implements . - - The enumerator. - - - - Implements the getter of the indexer. - - The index. - The frame. - - - - Implements . - - The index. - The frame. - The new frame. - - - - Implements . - - The frame. - The new frame. - - - - Implements . - - The index. - The new image. - - - - Implements . - - The index. - The new image. - - - - Implements . - - The new frame. - - - - Implements . - - The background color. - The new frame. - - - - Encapsulates a pixel-specific collection of instances - that make up an . - - The type of the pixel. - - - - Gets the number of frames. - - - - - Gets the root frame. - - - - - - - - Gets the at the specified index. - - - The . - - The index. - The at the specified index. - - - - - - - Determines the index of a specific in the . - - The to locate in the . - The index of item if found in the list; otherwise, -1. - - - - Clones and inserts the into the at the specified . - - The zero-based index to insert the frame at. - The to clone and insert into the . - Frame must have the same dimensions as the image. - The cloned . - - - - Clones the frame and appends the clone to the end of the collection. - - The raw pixel data to generate the from. - The cloned . - - - - Creates a new frame from the pixel data with the same dimensions as the other frames and inserts the - new frame at the end of the collection. - - The raw pixel data to generate the from. - The new . - - - - Creates a new frame from the pixel data with the same dimensions as the other frames and inserts the - new frame at the end of the collection. - - The raw pixel data to generate the from. - The new . - - - - Removes the frame at the specified index and frees all freeable resources associated with it. - - The zero-based index of the frame to remove. - Cannot remove last frame. - - - - - - - Determines whether the contains the . - - The frame. - - true if the contains the specified frame; otherwise, false. - - - - - Moves an from to . - - The zero-based index of the frame to move. - The index to move the frame to. - - - - Removes the frame at the specified index and creates a new image with only the removed frame - with the same metadata as the original image. - - The zero-based index of the frame to export. - Cannot remove last frame. - The new with the specified frame. - - - - Creates an with only the frame at the specified index - with the same metadata as the original image. - - The zero-based index of the frame to clone. - The new with the specified frame. - - - - Creates a new and appends it to the end of the collection. - - - The new . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Creates a new and appends it to the end of the collection. - - The background color to initialize the pixels with. - - The new . - - - - - - - - - - - Represents a pixel-specific image frame containing all pixel data and . - In case of animated formats like gif, it contains the single frame in a animation. - In all other cases it is the only frame of the image. - - The pixel format. - - - - Initializes a new instance of the class. - - The configuration which allows altering default behaviour or extending the library. - The width of the image in pixels. - The height of the image in pixels. - - - - Initializes a new instance of the class. - - The configuration which allows altering default behaviour or extending the library. - The of the frame. - The metadata. - - - - Initializes a new instance of the class. - - The configuration which allows altering default behaviour or extending the library. - The width of the image in pixels. - The height of the image in pixels. - The metadata. - - - - Initializes a new instance of the class. - - The configuration which allows altering default behaviour or extending the library. - The width of the image in pixels. - The height of the image in pixels. - The color to clear the image with. - - - - Initializes a new instance of the class. - - The configuration which allows altering default behaviour or extending the library. - The width of the image in pixels. - The height of the image in pixels. - The color to clear the image with. - The metadata. - - - - Initializes a new instance of the class wrapping an existing buffer. - - The configuration providing initialization code which allows extending the library. - The width of the image in pixels. - The height of the image in pixels. - The memory source. - - - - Initializes a new instance of the class wrapping an existing buffer. - - The configuration providing initialization code which allows extending the library. - The width of the image in pixels. - The height of the image in pixels. - The memory source. - The metadata. - - - - Initializes a new instance of the class. - - The configuration which allows altering default behaviour or extending the library. - The source. - - - - Gets the image pixels. Not private as Buffer2D requires an array in its constructor. - - - - - - - - Gets or sets the pixel at the specified position. - - The x-coordinate of the pixel. Must be greater than or equal to zero and less than the width of the image. - The y-coordinate of the pixel. Must be greater than or equal to zero and less than the height of the image. - The at the specified position. - Thrown when the provided (x,y) coordinates are outside the image boundary. - - - - Gets the representation of the pixels as a of contiguous memory - at row beginning from the first pixel on that row. - - The row. - The - Thrown when row index is out of range. - - - - Gets the representation of the pixels as a in the source image's pixel format - stored in row major order, if the backing buffer is contiguous. - - The . - The . - - - - Gets a reference to the pixel at the specified position. - - The x-coordinate of the pixel. Must be greater than or equal to zero and less than the width of the image. - The y-coordinate of the pixel. Must be greater than or equal to zero and less than the height of the image. - The at the specified position. - - - - Copies the pixels to a of the same size. - - The target pixel buffer accessor. - - - - Switches the buffers used by the image and the pixelSource meaning that the Image will "own" the buffer from the pixelSource and the pixelSource will now own the Images buffer. - - The pixel source. - - - - - - - - - - Clones the current instance. - - The - - - - Clones the current instance. - - The configuration providing initialization code which allows extending the library. - The - - - - Returns a copy of the image frame in the given pixel format. - - The pixel format. - The - - - - Returns a copy of the image frame in the given pixel format. - - The pixel format. - The configuration providing initialization code which allows extending the library. - The - - - - Clears the bitmap. - - The value to initialize the bitmap with. - - - - A implementing the clone logic for . - - - - - - - - Contains information about the image including dimensions, pixel type information and additional metadata - - - - - Initializes a new instance of the class. - - The image pixel type information. - The width of the image in pixels. - The height of the image in pixels. - The images metadata. - - - - - - - - - - - - - - - - Extension methods that allow the addition of geometry calculating methods to the type - - - - - Gets the bounds of the image. - - The image info - The - - - - Gets the bounds of the image. - - The image info - The - - - - Encapsulates an image, which consists of the pixel data for a graphics image and its attributes. - For generic -s the pixel type is known at compile time. - - The pixel format. - - - - Initializes a new instance of the class - with the height and the width of the image. - - The configuration providing initialization code which allows extending the library. - The width of the image in pixels. - The height of the image in pixels. - - - - Initializes a new instance of the class - with the height and the width of the image. - - The configuration providing initialization code which allows extending the library. - The width of the image in pixels. - The height of the image in pixels. - The color to initialize the pixels with. - - - - Initializes a new instance of the class - with the height and the width of the image. - - The width of the image in pixels. - The height of the image in pixels. - The color to initialize the pixels with. - - - - Initializes a new instance of the class - with the height and the width of the image. - - The width of the image in pixels. - The height of the image in pixels. - - - - Initializes a new instance of the class - with the height and the width of the image. - - The configuration providing initialization code which allows extending the library. - The width of the image in pixels. - The height of the image in pixels. - The images metadata. - - - - Initializes a new instance of the class - wrapping an external . - - The configuration providing initialization code which allows extending the library. - The memory source. - The width of the image in pixels. - The height of the image in pixels. - The images metadata. - - - - Initializes a new instance of the class - with the height and the width of the image. - - The configuration providing initialization code which allows extending the library. - The width of the image in pixels. - The height of the image in pixels. - The color to initialize the pixels with. - The images metadata. - - - - Initializes a new instance of the class - with the height and the width of the image. - - The configuration providing initialization code which allows extending the library. - The images metadata. - The frames that will be owned by this image instance. - - - - - - - Gets the collection of image frames. - - - - - Gets the root frame. - - - - - Gets or sets the pixel at the specified position. - - The x-coordinate of the pixel. Must be greater than or equal to zero and less than the width of the image. - The y-coordinate of the pixel. Must be greater than or equal to zero and less than the height of the image. - The at the specified position. - Thrown when the provided (x,y) coordinates are outside the image boundary. - - - - Gets the representation of the pixels as a of contiguous memory - at row beginning from the first pixel on that row. - - The row. - The - Thrown when row index is out of range. - - - - Gets the representation of the pixels as a in the source image's pixel format - stored in row major order, if the backing buffer is contiguous. - - The . - The . - - - - Clones the current image - - Returns a new image with all the same metadata as the original. - - - - Clones the current image with the given configuration. - - The configuration providing initialization code which allows extending the library. - Returns a new with all the same pixel data as the original. - - - - Returns a copy of the image in the given pixel format. - - The pixel format. - The configuration providing initialization code which allows extending the library. - The . - - - - - - - - - - - - - - - - - - - Switches the buffers used by the image and the pixelSource meaning that the Image will "own" the buffer from the pixelSource and the pixelSource will now own the Images buffer. - - The pixel source. - - - - A pixel-specific image frame where each pixel buffer value represents an index in a color palette. - - The pixel format. - - - - Initializes a new instance of the class. - - - The configuration which allows altering default behaviour or extending the library. - - The frame width. - The frame height. - The color palette. - - - - Gets the configuration which allows altering default behaviour or extending the library. - - - - - Gets the width of this . - - - - - Gets the height of this . - - - - - Gets the color palette of this . - - - - - - - - Gets the representation of the pixels as a of contiguous memory - at row beginning from the first pixel on that row. - - The row index in the pixel buffer. - The pixel row as a . - - - - - Gets the representation of the pixels as a of contiguous memory - at row beginning from the first pixel on that row. - - - Note: Values written to this span are not sanitized against the palette length. - Care should be taken during assignment to prevent out-of-bounds errors. - - - The row index in the pixel buffer. - The pixel row as a . - - - - - - - A readonly stream that add a secondary level buffer in addition to native stream - buffered reading to reduce the overhead of small incremental reads. - - - - - Initializes a new instance of the class. - - The configuration which allows altering default behaviour or extending the library. - The input stream. - - - - Gets the size, in bytes, of the underlying buffer. - - - - - - - - - - - - - - - - - - - - Gets the underlying stream. - - - - - - - - - - - - - - - - - - - - - This operation is not supported in . - - - - - - This operation is not supported in . - - - - - - - - Provides an in-memory stream composed of non-contiguous chunks that doesn't need to be resized. - Chunks are allocated by the assigned via the constructor - and is designed to take advantage of buffer pooling when available. - - - - - The default length in bytes of each buffer chunk. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - The length, in bytes of each buffer chunk. - The memory allocator. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Copy entire buffer into an array. - - The . - - - - Write remainder of this stream to another stream. - - The stream to write to. - - - - A simple interface representing the filesystem. - - - - - Returns a readable stream as defined by the path. - - Path to the file to open. - A stream representing the file to open. - - - - Creates or opens a file and returns it as a writable stream as defined by the path. - - Path to the file to open. - A stream representing the file to open. - - - - A wrapper around the local File apis. - - - - - - - - - - - Options for allocating buffers. - - - - - Indicates that the buffer should just be allocated. - - - - - Indicates that the allocated buffer should be cleaned following allocation. - - - - - Contains and . - - - Contains common factory methods and configuration constants. - - - Implements by allocating memory from . - - - - - The buffer implementation of . - - - - - The length of the buffer. - - - - - A weak reference to the source pool. - - - By using a weak reference here, we are making sure that array pools and their retained arrays are always GC-ed - after a call to , regardless of having buffer instances still being in use. - - - - - Gets the buffer as a byte array. - - - - - - - - - - - The implementation of . - - - - - - - - The default value for: maximum size of pooled arrays in bytes. - Currently set to 24MB, which is equivalent to 8 megapixels of raw RGBA32 data. - - - - - The value for: The threshold to pool arrays in which has less buckets for memory safety. - - - - - The default bucket count for . - - - - - The default bucket count for . - - - - - This is the default. Should be good for most use cases. - - The memory manager. - - - - For environments with very limited memory capabilities, only small buffers like image rows are pooled. - - The memory manager. - - - - For environments with limited memory capabilities, only small array requests are pooled, which can result in reduced throughput. - - The memory manager. - - - - For environments where memory capabilities are not an issue, the maximum amount of array requests are pooled which results in optimal throughput. - - The memory manager. - - - - The for small-to-medium buffers which is not kept clean. - - - - - The for huge buffers, which is not kept clean. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - The maximum size of pooled arrays. Arrays over the thershold are gonna be always allocated. - - - - Initializes a new instance of the class. - - The maximum size of pooled arrays. Arrays over the thershold are gonna be always allocated. - Arrays over this threshold will be pooled in which has less buckets for memory safety. - - - - Initializes a new instance of the class. - - The maximum size of pooled arrays. Arrays over the thershold are gonna be always allocated. - The threshold to pool arrays in which has less buckets for memory safety. - Max arrays per bucket for the large array pool. - Max arrays per bucket for the normal array pool. - - - - Initializes a new instance of the class. - - The maximum size of pooled arrays. Arrays over the thershold are gonna be always allocated. - The threshold to pool arrays in which has less buckets for memory safety. - Max arrays per bucket for the large array pool. - Max arrays per bucket for the normal array pool. - The length of the largest contiguous buffer that can be handled by this allocator instance. - - - - Gets the maximum size of pooled arrays in bytes. - - - - - Gets the threshold to pool arrays in which has less buckets for memory safety. - - - - - Gets the length of the largest contiguous buffer that can be handled by this allocator instance. - - - - - - - - - - - - - - - - - Represents a byte buffer backed by a managed array. Useful for interop with classic .NET API-s. - - - - - Gets the managed array backing this buffer instance. - - - - - Wraps an array as an instance. - - - - - - Initializes a new instance of the class. - - The array. - The length of the buffer. - - - - Initializes a new instance of the class. - - The array. - - - - Gets the array. - - - - - Gets the length. - - - - - - - - - - - - - - Provides an based on . - - - - - Initializes a new instance of the class. - - The byte array. - - - - Provides a base class for implementations by implementing pinning logic for adaption. - - The element type. - - - - - - - - - - Gets the object that should be pinned. - - The pinnable . - - - - Memory managers are used to allocate memory for image processing operations. - - - - - Gets the length of the largest contiguous buffer that can be handled by this allocator instance in bytes. - - The length of the largest contiguous buffer that can be handled by this allocator instance. - - - - Allocates an , holding a of length . - - Type of the data stored in the buffer. - Size of the buffer to allocate. - The allocation options. - A buffer of values of type . - When length is zero or negative. - When length is over the capacity of the allocator. - - - - Allocates an . - - The requested buffer length. - The allocation options. - The . - When length is zero or negative. - When length is over the capacity of the allocator. - - - - Releases all retained resources not being in use. - Eg: by resetting array pools and letting GC to free the arrays. - - - - - Implements by newing up managed arrays on every allocation request. - - - - - - - - - - - - - - Defines extension methods for . - - - - - Gets the backing . - - The buffer. - The element type. - The MemoryGroup. - - - - TODO: Does not work with multi-buffer groups, should be specific to Resize. - Copy columns of inplace, - from positions starting at to positions at . - - - - - Returns a representing the full area of the buffer. - - The element type - The - The - - - - Return a to the subregion represented by 'rectangle' - - The element type - The - The rectangle subregion - The - - - - Return a to the whole area of 'buffer' - - The element type - The - The - - - - Returns the size of the buffer. - - The element type - The - The of the buffer - - - - Represents a rectangular region inside a 2D memory buffer (). - - The element type. - - - - Initializes a new instance of the struct. - - The . - The defining a rectangular area within the buffer. - - - - Initializes a new instance of the struct. - - The . - - - - Gets the rectangle specifying the boundaries of the area in . - - - - - Gets the being pointed by this instance. - - - - - Gets the width - - - - - Gets the height - - - - - Gets the pixel stride which is equal to the width of . - - - - - Gets the size of the area. - - - - - Gets a value indicating whether the area refers to the entire - - - - - Gets or sets a value at the given index. - - The position inside a row - The row index - The reference to the value - - - - Gets a span to row 'y' inside this area. - - The row index - The span - - - - Returns a subregion as . (Similar to .) - - The x index at the subregion origin. - The y index at the subregion origin. - The desired width of the subregion. - The desired height of the subregion. - The subregion - - - - Returns a subregion as . (Similar to .) - - The specifying the boundaries of the subregion - The subregion - - - - Gets a reference to the [0,0] element. - - The reference to the [0,0] element - - - - Represents a buffer of value type objects - interpreted as a 2D region of x elements. - - - Before RC1, this class might be target of API changes, use it on your own risk! - - The value type. - - - - Initializes a new instance of the class. - - The to wrap. - The number of elements in a row. - The number of rows. - - - - Gets the width. - - - - - Gets the height. - - - - - Gets the backing . - - The MemoryGroup. - - - - Gets the backing without the view abstraction. - - - This property has been kept internal intentionally. - It's public counterpart is , - which only exposes the view of the MemoryGroup. - - - - - Gets a reference to the element at the specified position. - - The x coordinate (row) - The y coordinate (position at row) - A reference to the element. - When index is out of range of the buffer. - - - - Disposes the instance - - - - - Gets a to the row 'y' beginning from the pixel at the first pixel on that row. - - - This method does not validate the y argument for performance reason, - is being propagated from lower levels. - - The row index. - The of the pixels in the row. - Thrown when row index is out of range. - - - - Gets a to the row 'y' beginning from the pixel at the first pixel on that row. - This method is intended for internal use only, since it does not use the indirection provided by - . - - The y (row) coordinate. - The . - - - - Gets a to the row 'y' beginning from the pixel at the first pixel on that row. - - The y (row) coordinate. - The . - - - - Gets a to the backing data if the backing group consists of a single contiguous memory buffer. - Throws otherwise. - - The referencing the memory area. - - Thrown when the backing group is discontiguous. - - - - - Gets a to the backing data of if the backing group consists of a single contiguous memory buffer. - Throws otherwise. - - The . - - Thrown when the backing group is discontiguous. - - - - - Swaps the contents of 'destination' with 'source' if the buffers are owned (1), - copies the contents of 'source' to 'destination' otherwise (2). Buffers should be of same size in case 2! - - - - - A custom that can wrap of instances - and cast them to be for any arbitrary unmanaged value type. - - The value type to use when casting the wrapped instance. - - - - The wrapped of instance. - - - - - Initializes a new instance of the class. - - The of instance to wrap. - - - - - - - - - - - - - - - - Represents discontiguous group of multiple uniformly-sized memory segments. - The last segment can be smaller than the preceding ones. - - The element type. - - - - Gets the number of elements per contiguous sub-buffer preceding the last buffer. - The last buffer is allowed to be smaller. - - - - - Gets the aggregate number of elements in the group. - - - - - Gets a value indicating whether the group has been invalidated. - - - Invalidation usually occurs when an image processor capable to alter the image dimensions replaces - the image buffers internally. - - - - - Returns a value-type implementing an allocation-free enumerator of the memory groups in the current - instance. The return type shouldn't be used directly: just use a block on - the instance in use and the C# compiler will automatically invoke this - method behind the scenes. This method takes precedence over the - implementation, which is still available when casting to one of the underlying interfaces. - - A new instance mapping the current values in use. - - - - A value-type enumerator for instances. - - The element type. - - - - - - - - - - Returns a slice that is expected to be within the bounds of a single buffer. - Otherwise is thrown. - - - - - Implements , defining a view for - rather than owning the segments. - - - This type provides an indirection, protecting the users of publicly exposed memory API-s - from internal memory-swaps. Whenever an internal swap happens, the - instance becomes invalid, throwing an exception on all operations. - - The element type. - - - - - - - - - - - - - Represents discontinuous group of multiple uniformly-sized memory segments. - The underlying buffers may change with time, therefore it's not safe to expose them directly on - and . - - The element type. - - - - A implementation that consumes the underlying memory buffers. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Creates a new memory group, allocating it's buffers with the provided allocator. - - The to use. - The total length of the buffer. - The expected alignment (eg. to make sure image rows fit into single buffers). - The . - A new . - Thrown when 'blockAlignment' converted to bytes is greater than the buffer capacity of the allocator. - - - - Swaps the contents of 'target' with 'source' if the buffers are allocated (1), - copies the contents of 'source' to 'target' otherwise (2). - Groups should be of same TotalLength in case 2. - - - - - A implementation that owns the underlying memory buffers. - - - - - - - - - - - Exception thrown when the library detects an invalid memory allocation request, - or an attempt has been made to use an invalidated . - - - - - Initializes a new instance of the class. - - The exception message text. - - - - Initializes a new instance of the class. - - - - - Extension methods for . - - - - - Allocates a buffer of value type objects interpreted as a 2D region - of x elements. - - The type of buffer items to allocate. - The memory allocator. - The buffer width. - The buffer height. - The allocation options. - The . - - - - Allocates a buffer of value type objects interpreted as a 2D region - of width x height elements. - - The type of buffer items to allocate. - The memory allocator. - The buffer size. - The allocation options. - The . - - - - Allocates padded buffers for BMP encoder/decoder. (Replacing old PixelRow/PixelArea). - - The . - Pixel count in the row - The pixel size in bytes, eg. 3 for RGB. - The padding. - A . - - - - Allocates a . - - The to use. - The total length of the buffer. - The expected alignment (eg. to make sure image rows fit into single buffers). - The . - A new . - Thrown when 'blockAlignment' converted to bytes is greater than the buffer capacity of the allocator. - - - - Extension methods for - - - - - Gets a from an instance. - - The buffer - The - - - - Gets the length of an internal buffer. - - The buffer - The length of the buffer - - - - Gets a to an offsetted position inside the buffer. - - The buffer - The start - The - - - - Gets a to an offsetted position inside the buffer. - - The buffer - The start - The length of the slice - The - - - - Clears the contents of this buffer. - - The buffer - - - - Gets a reference to the first item in the internal buffer for an instance. - - The buffer - A reference to the first item within the memory wrapped by - - - - Represents an interval of rows in a and/or - - - Before RC1, this class might be target of API changes, use it on your own risk! - - - - - Initializes a new instance of the struct. - - The inclusive minimum row. - The exclusive maximum row. - - - - Gets the inclusive minimum row. - - - - - Gets the exclusive maximum row. - - - - - Gets the difference ( - ). - - - - - Returns a boolean indicating whether the given two -s are equal. - - The first to compare. - The second to compare. - True if the given -s are equal; False otherwise. - - - - Returns a boolean indicating whether the given two -s are not equal. - - The first to compare. - The second to compare. - True if the given -s are not equal; False otherwise. - - - - - - - - - - - - - - - - A custom that can wrap a rawpointer to a buffer of a specified type. - - The value type to use when casting the wrapped instance. - This manager doesn't own the memory buffer that it points to. - - - - The pointer to the memory buffer. - - - - - The length of the memory area. - - - - - Initializes a new instance of the class. - - The pointer to the memory buffer. - The length of the memory area. - - - - - - - - - - - - - - - - Enumerated frame process modes to apply to multi-frame images. - - - - - Decodes all the frames of a multi-frame image. - - - - - Decodes only the first frame of a multi-frame image. - - - - - Encapsulates the metadata of an image frame. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class - by making a copy from other metadata. - - - The other to create this instance from. - - - - - - - - Gets the metadata value associated with the specified key. - - The type of format metadata. - The type of format frame metadata. - The key of the value to get. - - The . - - - - - Encapsulates the metadata of an image. - - - - - The default horizontal resolution value (dots per inch) in x direction. - The default value is 96 . - - - - - The default vertical resolution value (dots per inch) in y direction. - The default value is 96 . - - - - - The default pixel resolution units. - The default value is . - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class - by making a copy from other metadata. - - - The other to create this instance from. - - - - - Gets or sets the resolution of the image in x- direction. - It is defined as the number of dots per inch and should be an positive value. - - The density of the image in x- direction. - - - - Gets or sets the resolution of the image in y- direction. - It is defined as the number of dots per inch and should be an positive value. - - The density of the image in y- direction. - - - - Gets or sets unit of measure used when reporting resolution. - 00 : No units; width:height pixel aspect ratio = Ydensity:Xdensity - 01 : Pixels per inch (2.54 cm) - 02 : Pixels per centimeter - 03 : Pixels per meter - - - - - Gets or sets the Exif profile. - - - - - Gets or sets the list of ICC profiles. - - - - - Gets or sets the iptc profile. - - - - - Gets the metadata value associated with the specified key. - - The type of metadata. - The key of the value to get. - - The . - - - - - - - - Synchronizes the profiles with the current metadata. - - - - - Provides enumeration of available pixel density units. - - - - - No units; width:height pixel aspect ratio. - - - - - Pixels per inch (2.54 cm). - - - - - Pixels per centimeter. - - - - - Pixels per meter (100 cm). - - - - - Specifies exif data types. - - - - - Unknown - - - - - An 8-bit unsigned integer. - - - - - An 8-bit byte containing one 7-bit ASCII code. The final byte is terminated with NULL. - - Although the standard defines ASCII this has commonly been ignored as - ASCII cannot properly encode text in many languages. - - - - - - A 16-bit (2-byte) unsigned integer. - - - - - A 32-bit (4-byte) unsigned integer. - - - - - Two LONGs. The first LONG is the numerator and the second LONG expresses the denominator. - - - - - An 8-bit signed integer. - - - - - An 8-bit byte that can take any value depending on the field definition. - - - - - A 16-bit (2-byte) signed integer. - - - - - A 32-bit (4-byte) signed integer (2's complement notation). - - - - - Two SLONGs. The first SLONG is the numerator and the second SLONG is the denominator. - - - - - A 32-bit single precision floating point value. - - - - - A 64-bit double precision floating point value. - - - - - Gets the size in bytes of the given data type. - - The data type. - - The . - - - Thrown if the type is unsupported. - - - - - Specifies which parts will be written when the profile is added to an image. - - - - - None - - - - - IfdTags - - - - - ExifTags - - - - - GPSTags - - - - - All - - - - - Represents an EXIF profile providing access to the collection of values. - - - - - The byte array to read the EXIF profile from. - - - - - The collection of EXIF values - - - - - The thumbnail offset position in the byte stream - - - - - The thumbnail length in the byte stream - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - The byte array to read the EXIF profile from. - - - - Initializes a new instance of the class - by making a copy from another EXIF profile. - - The other EXIF profile, where the clone should be made from. - is null.> - - - - Gets or sets which parts will be written when the profile is added to an image. - - - - - Gets the tags that where found but contained an invalid value. - - - - - Gets the values of this EXIF profile. - - - - - Returns the thumbnail in the EXIF profile when available. - - The pixel format. - - The . - - - - - Returns the value with the specified tag. - - The tag of the exif value. - The value with the specified tag. - The data type of the tag. - - - - Removes the value with the specified tag. - - The tag of the EXIF value. - - The . - - - - - Sets the value of the specified tag. - - The tag of the exif value. - The value. - The data type of the tag. - - - - Converts this instance to a byte array. - - The - - - - - - - Returns the value with the specified tag. - - The tag of the exif value. - The value with the specified tag. - - - - Sets the value of the specified tag. - - The tag of the exif value. - The value. - - - - Synchronizes the profiles with the specified metadata. - - The metadata. - - - - Reads and parses EXIF data from a byte array. - - - - - Gets the invalid tags. - - - - - Gets the thumbnail length in the byte stream. - - - - - Gets the thumbnail offset position in the byte stream. - - - - - Gets the remaining length. - - - - - Reads and returns the collection of EXIF values. - - - The . - - - - - Adds the collection of EXIF values to the reader. - - The values. - The index. - - - - Class that provides a description for an ExifTag value. - - - - - Initializes a new instance of the class. - - The value of the exif tag. - The description for the value of the exif tag. - - - - Gets the tag description from any custom attributes. - - The tag. - The value. - - The . - - - - - Contains methods for writing EXIF metadata. - - - - - Which parts will be written. - - - - - Initializes a new instance of the class. - - The values. - The allowed parts. - - - - Returns the EXIF data. - - - The . - - - - - - - Class that represents an exif tag from the Exif standard 2.31. - - - - - - - - - - - - - - - - - - Gets the FaxProfile exif tag. - - - - - Gets the ModeNumber exif tag. - - - - - Gets the GPSAltitudeRef exif tag. - - - - - Gets the ClipPath exif tag. - - - - - Gets the VersionYear exif tag. - - - - - Gets the XMP exif tag. - - - - - Gets the CFAPattern2 exif tag. - - - - - Gets the TIFFEPStandardID exif tag. - - - - - Gets the XPTitle exif tag. - - - - - Gets the XPComment exif tag. - - - - - Gets the XPAuthor exif tag. - - - - - Gets the XPKeywords exif tag. - - - - - Gets the XPSubject exif tag. - - - - - Gets the GPSVersionID exif tag. - - - - - Converts the specified to a . - - The to convert. - - - - Determines whether the specified instances are considered equal. - - The first to compare. - The second to compare. - - - - Determines whether the specified instances are not considered equal. - - The first to compare. - The second to compare. - - - - - - - - - - - - - - - - Gets the PixelScale exif tag. - - - - - Gets the IntergraphMatrix exif tag. - - - - - Gets the ModelTiePoint exif tag. - - - - - Gets the ModelTransform exif tag. - - - - - Gets the SubfileType exif tag. - - - - - Gets the SubIFDOffset exif tag. - - - - - Gets the GPSIFDOffset exif tag. - - - - - Gets the T4Options exif tag. - - - - - Gets the T6Options exif tag. - - - - - Gets the XClipPathUnits exif tag. - - - - - Gets the YClipPathUnits exif tag. - - - - - Gets the ProfileType exif tag. - - - - - Gets the CodingMethods exif tag. - - - - - Gets the T82ptions exif tag. - - - - - Gets the JPEGInterchangeFormat exif tag. - - - - - Gets the JPEGInterchangeFormatLength exif tag. - - - - - Gets the MDFileTag exif tag. - - - - - Gets the StandardOutputSensitivity exif tag. - - - - - Gets the RecommendedExposureIndex exif tag. - - - - - Gets the ISOSpeed exif tag. - - - - - Gets the ISOSpeedLatitudeyyy exif tag. - - - - - Gets the ISOSpeedLatitudezzz exif tag. - - - - - Gets the FaxRecvParams exif tag. - - - - - Gets the FaxRecvTime exif tag. - - - - - Gets the ImageNumber exif tag. - - - - - Gets the FreeOffsets exif tag. - - - - - Gets the FreeByteCounts exif tag. - - - - - Gets the ColorResponseUnit exif tag. - - - - - Gets the TileOffsets exif tag. - - - - - Gets the SMinSampleValue exif tag. - - - - - Gets the SMaxSampleValue exif tag. - - - - - Gets the JPEGQTables exif tag. - - - - - Gets the JPEGDCTables exif tag. - - - - - Gets the JPEGACTables exif tag. - - - - - Gets the StripRowCounts exif tag. - - - - - Gets the IntergraphRegisters exif tag. - - - - - Gets the TimeZoneOffset exif tag. - - - - - Gets the ImageWidth exif tag. - - - - - Gets the ImageLength exif tag. - - - - - Gets the TileWidth exif tag. - - - - - Gets the TileLength exif tag. - - - - - Gets the BadFaxLines exif tag. - - - - - Gets the ConsecutiveBadFaxLines exif tag. - - - - - Gets the PixelXDimension exif tag. - - - - - Gets the PixelYDimension exif tag. - - - - - Gets the StripOffsets exif tag. - - - - - Gets the TileByteCounts exif tag. - - - - - Gets the ImageLayer exif tag. - - - - - Gets the XPosition exif tag. - - - - - Gets the YPosition exif tag. - - - - - Gets the XResolution exif tag. - - - - - Gets the YResolution exif tag. - - - - - Gets the BatteryLevel exif tag. - - - - - Gets the ExposureTime exif tag. - - - - - Gets the FNumber exif tag. - - - - - Gets the MDScalePixel exif tag. - - - - - Gets the CompressedBitsPerPixel exif tag. - - - - - Gets the ApertureValue exif tag. - - - - - Gets the MaxApertureValue exif tag. - - - - - Gets the SubjectDistance exif tag. - - - - - Gets the FocalLength exif tag. - - - - - Gets the FlashEnergy2 exif tag. - - - - - Gets the FocalPlaneXResolution2 exif tag. - - - - - Gets the FocalPlaneYResolution2 exif tag. - - - - - Gets the ExposureIndex2 exif tag. - - - - - Gets the Humidity exif tag. - - - - - Gets the Pressure exif tag. - - - - - Gets the Acceleration exif tag. - - - - - Gets the FlashEnergy exif tag. - - - - - Gets the FocalPlaneXResolution exif tag. - - - - - Gets the FocalPlaneYResolution exif tag. - - - - - Gets the ExposureIndex exif tag. - - - - - Gets the DigitalZoomRatio exif tag. - - - - - Gets the GPSAltitude exif tag. - - - - - Gets the GPSDOP exif tag. - - - - - Gets the GPSSpeed exif tag. - - - - - Gets the GPSTrack exif tag. - - - - - Gets the GPSImgDirection exif tag. - - - - - Gets the GPSDestBearing exif tag. - - - - - Gets the GPSDestDistance exif tag. - - - - - Gets the WhitePoint exif tag. - - - - - Gets the PrimaryChromaticities exif tag. - - - - - Gets the YCbCrCoefficients exif tag. - - - - - Gets the ReferenceBlackWhite exif tag. - - - - - Gets the GPSLatitude exif tag. - - - - - Gets the GPSLongitude exif tag. - - - - - Gets the GPSTimestamp exif tag. - - - - - Gets the GPSDestLatitude exif tag. - - - - - Gets the GPSDestLongitude exif tag. - - - - - Gets the LensSpecification exif tag. - - - - - Gets the OldSubfileType exif tag. - - - - - Gets the Compression exif tag. - - - - - Gets the PhotometricInterpretation exif tag. - - - - - Gets the Thresholding exif tag. - - - - - Gets the CellWidth exif tag. - - - - - Gets the CellLength exif tag. - - - - - Gets the FillOrder exif tag. - - - - - Gets the Orientation exif tag. - - - - - Gets the SamplesPerPixel exif tag. - - - - - Gets the PlanarConfiguration exif tag. - - - - - Gets the GrayResponseUnit exif tag. - - - - - Gets the ResolutionUnit exif tag. - - - - - Gets the CleanFaxData exif tag. - - - - - Gets the InkSet exif tag. - - - - - Gets the NumberOfInks exif tag. - - - - - Gets the DotRange exif tag. - - - - - Gets the Indexed exif tag. - - - - - Gets the OPIProxy exif tag. - - - - - Gets the JPEGProc exif tag. - - - - - Gets the JPEGRestartInterval exif tag. - - - - - Gets the YCbCrPositioning exif tag. - - - - - Gets the Rating exif tag. - - - - - Gets the RatingPercent exif tag. - - - - - Gets the ExposureProgram exif tag. - - - - - Gets the Interlace exif tag. - - - - - Gets the SelfTimerMode exif tag. - - - - - Gets the SensitivityType exif tag. - - - - - Gets the MeteringMode exif tag. - - - - - Gets the LightSource exif tag. - - - - - Gets the FocalPlaneResolutionUnit2 exif tag. - - - - - Gets the SensingMethod2 exif tag. - - - - - Gets the Flash exif tag. - - - - - Gets the ColorSpace exif tag. - - - - - Gets the FocalPlaneResolutionUnit exif tag. - - - - - Gets the SensingMethod exif tag. - - - - - Gets the CustomRendered exif tag. - - - - - Gets the ExposureMode exif tag. - - - - - Gets the WhiteBalance exif tag. - - - - - Gets the FocalLengthIn35mmFilm exif tag. - - - - - Gets the SceneCaptureType exif tag. - - - - - Gets the GainControl exif tag. - - - - - Gets the Contrast exif tag. - - - - - Gets the Saturation exif tag. - - - - - Gets the Sharpness exif tag. - - - - - Gets the SubjectDistanceRange exif tag. - - - - - Gets the GPSDifferential exif tag. - - - - - Gets the BitsPerSample exif tag. - - - - - Gets the MinSampleValue exif tag. - - - - - Gets the MaxSampleValue exif tag. - - - - - Gets the GrayResponseCurve exif tag. - - - - - Gets the ColorMap exif tag. - - - - - Gets the ExtraSamples exif tag. - - - - - Gets the PageNumber exif tag. - - - - - Gets the TransferFunction exif tag. - - - - - Gets the Predictor exif tag. - - - - - Gets the HalftoneHints exif tag. - - - - - Gets the SampleFormat exif tag. - - - - - Gets the TransferRange exif tag. - - - - - Gets the DefaultImageColor exif tag. - - - - - Gets the JPEGLosslessPredictors exif tag. - - - - - Gets the JPEGPointTransforms exif tag. - - - - - Gets the YCbCrSubsampling exif tag. - - - - - Gets the CFARepeatPatternDim exif tag. - - - - - Gets the IntergraphPacketData exif tag. - - - - - Gets the ISOSpeedRatings exif tag. - - - - - Gets the SubjectArea exif tag. - - - - - Gets the SubjectLocation exif tag. - - - - - Gets the ShutterSpeedValue exif tag. - - - - - Gets the BrightnessValue exif tag. - - - - - Gets the ExposureBiasValue exif tag. - - - - - Gets the AmbientTemperature exif tag. - - - - - Gets the WaterDepth exif tag. - - - - - Gets the CameraElevationAngle exif tag. - - - - - Gets the Decode exif tag. - - - - - Gets the ImageDescription exif tag. - - - - - Gets the Make exif tag. - - - - - Gets the Model exif tag. - - - - - Gets the Software exif tag. - - - - - Gets the DateTime exif tag. - - - - - Gets the Artist exif tag. - - - - - Gets the HostComputer exif tag. - - - - - Gets the Copyright exif tag. - - - - - Gets the DocumentName exif tag. - - - - - Gets the PageName exif tag. - - - - - Gets the InkNames exif tag. - - - - - Gets the TargetPrinter exif tag. - - - - - Gets the ImageID exif tag. - - - - - Gets the MDLabName exif tag. - - - - - Gets the MDSampleInfo exif tag. - - - - - Gets the MDPrepDate exif tag. - - - - - Gets the MDPrepTime exif tag. - - - - - Gets the MDFileUnits exif tag. - - - - - Gets the SEMInfo exif tag. - - - - - Gets the SpectralSensitivity exif tag. - - - - - Gets the DateTimeOriginal exif tag. - - - - - Gets the DateTimeDigitized exif tag. - - - - - Gets the SubsecTime exif tag. - - - - - Gets the SubsecTimeOriginal exif tag. - - - - - Gets the SubsecTimeDigitized exif tag. - - - - - Gets the RelatedSoundFile exif tag. - - - - - Gets the FaxSubaddress exif tag. - - - - - Gets the OffsetTime exif tag. - - - - - Gets the OffsetTimeOriginal exif tag. - - - - - Gets the OffsetTimeDigitized exif tag. - - - - - Gets the SecurityClassification exif tag. - - - - - Gets the ImageHistory exif tag. - - - - - Gets the ImageUniqueID exif tag. - - - - - Gets the OwnerName exif tag. - - - - - Gets the SerialNumber exif tag. - - - - - Gets the LensMake exif tag. - - - - - Gets the LensModel exif tag. - - - - - Gets the LensSerialNumber exif tag. - - - - - Gets the GDALMetadata exif tag. - - - - - Gets the GDALNoData exif tag. - - - - - Gets the GPSLatitudeRef exif tag. - - - - - Gets the GPSLongitudeRef exif tag. - - - - - Gets the GPSSatellites exif tag. - - - - - Gets the GPSStatus exif tag. - - - - - Gets the GPSMeasureMode exif tag. - - - - - Gets the GPSSpeedRef exif tag. - - - - - Gets the GPSTrackRef exif tag. - - - - - Gets the GPSImgDirectionRef exif tag. - - - - - Gets the GPSMapDatum exif tag. - - - - - Gets the GPSDestLatitudeRef exif tag. - - - - - Gets the GPSDestLongitudeRef exif tag. - - - - - Gets the GPSDestBearingRef exif tag. - - - - - Gets the GPSDestDistanceRef exif tag. - - - - - Gets the GPSDateStamp exif tag. - - - - - Gets the JPEGTables exif tag. - - - - - Gets the OECF exif tag. - - - - - Gets the ExifVersion exif tag. - - - - - Gets the ComponentsConfiguration exif tag. - - - - - Gets the MakerNote exif tag. - - - - - Gets the UserComment exif tag. - - - - - Gets the FlashpixVersion exif tag. - - - - - Gets the SpatialFrequencyResponse exif tag. - - - - - Gets the SpatialFrequencyResponse2 exif tag. - - - - - Gets the Noise exif tag. - - - - - Gets the CFAPattern exif tag. - - - - - Gets the DeviceSettingDescription exif tag. - - - - - Gets the ImageSourceData exif tag. - - - - - Gets the GPSProcessingMethod exif tag. - - - - - Gets the GPSAreaInformation exif tag. - - - - - Gets the FileSource exif tag. - - - - - Gets the ImageDescription exif tag. - - - - - All exif tags from the Exif standard 2.31. - - - - - Unknown - - - - - SubIFDOffset - - - - - GPSIFDOffset - - - - - SubfileType - - - - - OldSubfileType - - - - - ImageWidth - - - - - ImageLength - - - - - BitsPerSample - - - - - Compression - - - - - PhotometricInterpretation - - - - - Thresholding - - - - - CellWidth - - - - - CellLength - - - - - FillOrder - - - - - DocumentName - - - - - ImageDescription - - - - - Make - - - - - Model - - - - - StripOffsets - - - - - Orientation - - - - - SamplesPerPixel - - - - - RowsPerStrip - - - - - StripByteCounts - - - - - MinSampleValue - - - - - MaxSampleValue - - - - - XResolution - - - - - YResolution - - - - - PlanarConfiguration - - - - - PageName - - - - - XPosition - - - - - YPosition - - - - - FreeOffsets - - - - - FreeByteCounts - - - - - GrayResponseUnit - - - - - GrayResponseCurve - - - - - T4Options - - - - - T6Options - - - - - ResolutionUnit - - - - - PageNumber - - - - - ColorResponseUnit - - - - - TransferFunction - - - - - Software - - - - - DateTime - - - - - Artist - - - - - HostComputer - - - - - Predictor - - - - - WhitePoint - - - - - PrimaryChromaticities - - - - - ColorMap - - - - - HalftoneHints - - - - - TileWidth - - - - - TileLength - - - - - TileOffsets - - - - - TileByteCounts - - - - - BadFaxLines - - - - - CleanFaxData - - - - - ConsecutiveBadFaxLines - - - - - InkSet - - - - - InkNames - - - - - NumberOfInks - - - - - DotRange - - - - - TargetPrinter - - - - - ExtraSamples - - - - - SampleFormat - - - - - SMinSampleValue - - - - - SMaxSampleValue - - - - - TransferRange - - - - - ClipPath - - - - - XClipPathUnits - - - - - YClipPathUnits - - - - - Indexed - - - - - JPEGTables - - - - - OPIProxy - - - - - ProfileType - - - - - FaxProfile - - - - - CodingMethods - - - - - VersionYear - - - - - ModeNumber - - - - - Decode - - - - - DefaultImageColor - - - - - T82ptions - - - - - JPEGProc - - - - - JPEGInterchangeFormat - - - - - JPEGInterchangeFormatLength - - - - - JPEGRestartInterval - - - - - JPEGLosslessPredictors - - - - - JPEGPointTransforms - - - - - JPEGQTables - - - - - JPEGDCTables - - - - - JPEGACTables - - - - - YCbCrCoefficients - - - - - YCbCrSubsampling - - - - - YCbCrPositioning - - - - - ReferenceBlackWhite - - - - - StripRowCounts - - - - - XMP - - - - - Rating - - - - - RatingPercent - - - - - ImageID - - - - - CFARepeatPatternDim - - - - - CFAPattern2 - - - - - BatteryLevel - - - - - Copyright - - - - - ExposureTime - - - - - FNumber - - - - - MDFileTag - - - - - MDScalePixel - - - - - MDLabName - - - - - MDSampleInfo - - - - - MDPrepDate - - - - - MDPrepTime - - - - - MDFileUnits - - - - - PixelScale - - - - - IntergraphPacketData - - - - - IntergraphRegisters - - - - - IntergraphMatrix - - - - - ModelTiePoint - - - - - SEMInfo - - - - - ModelTransform - - - - - ImageLayer - - - - - ExposureProgram - - - - - SpectralSensitivity - - - - - ISOSpeedRatings - - - - - OECF - - - - - Interlace - - - - - TimeZoneOffset - - - - - SelfTimerMode - - - - - SensitivityType - - - - - StandardOutputSensitivity - - - - - RecommendedExposureIndex - - - - - ISOSpeed - - - - - ISOSpeedLatitudeyyy - - - - - ISOSpeedLatitudezzz - - - - - FaxRecvParams - - - - - FaxSubaddress - - - - - FaxRecvTime - - - - - ExifVersion - - - - - DateTimeOriginal - - - - - DateTimeDigitized - - - - - OffsetTime - - - - - OffsetTimeOriginal - - - - - OffsetTimeDigitized - - - - - ComponentsConfiguration - - - - - CompressedBitsPerPixel - - - - - ShutterSpeedValue - - - - - ApertureValue - - - - - BrightnessValue - - - - - ExposureBiasValue - - - - - MaxApertureValue - - - - - SubjectDistance - - - - - MeteringMode - - - - - LightSource - - - - - Flash - - - - - FocalLength - - - - - FlashEnergy2 - - - - - SpatialFrequencyResponse2 - - - - - Noise - - - - - FocalPlaneXResolution2 - - - - - FocalPlaneYResolution2 - - - - - FocalPlaneResolutionUnit2 - - - - - ImageNumber - - - - - SecurityClassification - - - - - ImageHistory - - - - - SubjectArea - - - - - ExposureIndex2 - - - - - TIFFEPStandardID - - - - - SensingMethod - - - - - MakerNote - - - - - UserComment - - - - - SubsecTime - - - - - SubsecTimeOriginal - - - - - SubsecTimeDigitized - - - - - ImageSourceData - - - - - AmbientTemperature - - - - - Humidity - - - - - Pressure - - - - - WaterDepth - - - - - Acceleration - - - - - CameraElevationAngle - - - - - XPTitle - - - - - XPComment - - - - - XPAuthor - - - - - XPKeywords - - - - - XPSubject - - - - - FlashpixVersion - - - - - ColorSpace - - - - - PixelXDimension - - - - - PixelYDimension - - - - - RelatedSoundFile - - - - - FlashEnergy - - - - - SpatialFrequencyResponse - - - - - FocalPlaneXResolution - - - - - FocalPlaneYResolution - - - - - FocalPlaneResolutionUnit - - - - - SubjectLocation - - - - - ExposureIndex - - - - - SensingMethod - - - - - FileSource - - - - - SceneType - - - - - CFAPattern - - - - - CustomRendered - - - - - ExposureMode - - - - - WhiteBalance - - - - - DigitalZoomRatio - - - - - FocalLengthIn35mmFilm - - - - - SceneCaptureType - - - - - GainControl - - - - - Contrast - - - - - Saturation - - - - - Sharpness - - - - - DeviceSettingDescription - - - - - SubjectDistanceRange - - - - - ImageUniqueID - - - - - OwnerName - - - - - SerialNumber - - - - - LensSpecification - - - - - LensMake - - - - - LensModel - - - - - LensSerialNumber - - - - - GDALMetadata - - - - - GDALNoData - - - - - GPSVersionID - - - - - GPSLatitudeRef - - - - - GPSLatitude - - - - - GPSLongitudeRef - - - - - GPSLongitude - - - - - GPSAltitudeRef - - - - - GPSAltitude - - - - - GPSTimestamp - - - - - GPSSatellites - - - - - GPSStatus - - - - - GPSMeasureMode - - - - - GPSDOP - - - - - GPSSpeedRef - - - - - GPSSpeed - - - - - GPSTrackRef - - - - - GPSTrack - - - - - GPSImgDirectionRef - - - - - GPSImgDirection - - - - - GPSMapDatum - - - - - GPSDestLatitudeRef - - - - - GPSDestLatitude - - - - - GPSDestLongitudeRef - - - - - GPSDestLongitude - - - - - GPSDestBearingRef - - - - - GPSDestBearing - - - - - GPSDestDistanceRef - - - - - GPSDestDistance - - - - - GPSProcessingMethod - - - - - GPSAreaInformation - - - - - GPSDateStamp - - - - - GPSDifferential - - - - - Class that represents an exif tag from the Exif standard 2.31 with as the data type of the tag. - - The data type of the tag. - - - - Gets the value of the current instance as a string. - - - - - A value of the exif profile. - - - - - Gets the data type of the exif value. - - - - - Gets a value indicating whether the value is an array. - - - - - Gets the tag of the exif value. - - - - - Gets the value of this exif value. - - The value of this exif value. - - - - Sets the value of this exif value. - - The value of this exif value. - A value indicating whether the value could be set. - - - - A value of the exif profile. - - The type of the value. - - - - Gets or sets the value. - - - - - A segment of a curve - - - - - Initializes a new instance of the class. - - The signature of this segment - - - - Gets the signature of this segment - - - - - - - - A formula based curve segment - - - - - Initializes a new instance of the class. - - The type of this segment - Gamma segment parameter - A segment parameter - B segment parameter - C segment parameter - D segment parameter - E segment parameter - - - - Gets the type of this curve - - - - - Gets the gamma curve parameter - - - - - Gets the A curve parameter - - - - - Gets the B curve parameter - - - - - Gets the C curve parameter - - - - - Gets the D curve parameter - - - - - Gets the E curve parameter - - - - - - - - - - - A one dimensional ICC curve. - - - - - Initializes a new instance of the class. - - The break points of this curve - The segments of this curve - - - - Gets the breakpoints that separate two curve segments - - - - - Gets an array of curve segments - - - - - - - - A parametric curve - - - - - Initializes a new instance of the class. - - G curve parameter - - - - Initializes a new instance of the class. - - G curve parameter - A curve parameter - B curve parameter - - - - Initializes a new instance of the class. - - G curve parameter - A curve parameter - B curve parameter - C curve parameter - - - - Initializes a new instance of the class. - - G curve parameter - A curve parameter - B curve parameter - C curve parameter - D curve parameter - - - - Initializes a new instance of the class. - - G curve parameter - A curve parameter - B curve parameter - C curve parameter - D curve parameter - E curve parameter - F curve parameter - - - - Gets the type of this curve - - - - - Gets the G curve parameter - - - - - Gets the A curve parameter - - - - - Gets the B curve parameter - - - - - Gets the C curve parameter - - - - - Gets the D curve parameter - - - - - Gets the E curve parameter - - - - - Gets the F curve parameter - - - - - - - - - - - - - - A response curve - - - - - Initializes a new instance of the class. - - The type of this curve - The XYZ values - The response arrays - - - - Gets the type of this curve - - - - - Gets the XYZ values - - - - - Gets the response arrays - - - - - - - - - - - - - - A sampled curve segment - - - - - Initializes a new instance of the class. - - The curve values of this segment - - - - Gets the curve values of this segment - - - - - - - - - - - Provides methods to read ICC data types - - - Provides methods to read ICC data types - - - Provides methods to read ICC data types - - - Provides methods to read ICC data types - - - Provides methods to read ICC data types - - - Provides methods to read ICC data types - - - Provides methods to read ICC data types - - - Provides methods to read ICC data types - - - - - The data that is read - - - - - The current reading position - - - - - Initializes a new instance of the class. - - The data to read - - - - Gets the length in bytes of the raw data - - - - - Sets the reading position to the given value - - The new index position - - - - Returns the current without increment and adds the given increment - - The value to increment - The current without the increment - - - - Calculates the 4 byte padding and adds it to the variable - - - - - Calculates the 4 byte padding - - the number of bytes to pad - - - - Gets the bit value at a specified position - - The value from where the bit will be extracted - Position of the bit. Zero based index from left to right. - The bit value at specified position - - - - Reads a - - The read curve - - - - Reads a - - The number of channels - The read curve - - - - Reads a - - The read curve - - - - Reads a - - The read segment - - - - Reads a - - The read segment - - - - Reads a - - The read segment - - - - Reads curve data - - Number of input channels - The curve data - - - - Reads an 8bit lookup table - - The read LUT - - - - Reads a 16bit lookup table - - The number of entries - The read LUT - - - - Reads a CLUT depending on type - - Input channel count - Output channel count - If true, it's read as CLUTf32, - else read as either CLUT8 or CLUT16 depending on embedded information - The read CLUT - - - - Reads an 8 bit CLUT - - Input channel count - Output channel count - Grid point count for each CLUT channel - The read CLUT8 - - - - Reads a 16 bit CLUT - - Input channel count - Output channel count - Grid point count for each CLUT channel - The read CLUT16 - - - - Reads a 32bit floating point CLUT - - Input channel count - Output channel count - Grid point count for each CLUT channel - The read CLUTf32 - - - - Reads a two dimensional matrix - - Number of values in X - Number of values in Y - True if the values are encoded as Single; false if encoded as Fix16 - The read matrix - - - - Reads a one dimensional matrix - - Number of values - True if the values are encoded as Single; false if encoded as Fix16 - The read matrix - - - - Reads a - - The read - - - - Reads a CurveSet - - Number of input channels - Number of output channels - The read - - - - Reads a Matrix - - Number of input channels - Number of output channels - The read - - - - Reads a CLUT - - Number of input channels - Number of output channels - The read - - - - Reads a DateTime - - the value - - - - Reads an ICC profile version number - - the version number - - - - Reads an XYZ number - - the XYZ number - - - - Reads a profile ID - - the profile ID - - - - Reads a position number - - the position number - - - - Reads a response number - - the response number - - - - Reads a named color - - Number of device coordinates - the named color - - - - Reads a profile description - - the profile description - - - - Reads a colorant table entry - - the profile description - - - - Reads a screening channel - - the screening channel - - - - Reads an ushort - - the value - - - - Reads a short - - the value - - - - Reads an uint - - the value - - - - Reads an int - - the value - - - - Reads an ulong - - the value - - - - Reads a long - - the value - - - - Reads a float. - - the value - - - - Reads a double - - the value - - - - Reads an ASCII encoded string. - - number of bytes to read - The value as a string - - - - Reads an UTF-16 big-endian encoded string. - - number of bytes to read - The value as a string - - - - Reads a signed 32bit number with 1 sign bit, 15 value bits and 16 fractional bits. - - The number as double - - - - Reads an unsigned 32bit number with 16 value bits and 16 fractional bits. - - The number as double - - - - Reads an unsigned 16bit number with 1 value bit and 15 fractional bits. - - The number as double - - - - Reads an unsigned 16bit number with 8 value bits and 8 fractional bits. - - The number as double - - - - Reads a number of bytes and advances the index. - - The number of bytes to read - The read bytes - - - - Reads a tag data entry - - The table entry with reading information - the tag data entry - - - - Reads the header of a - - The read signature - - - - Reads the header of a and checks if it's the expected value - - expected value to check against - - - - Reads a with an unknown - - The size of the entry in bytes - The read entry - - - - Reads a - - The read entry - - - - Reads a - - The read entry - - - - Reads a - - The read entry - - - - Reads a - - The read entry - - - - Reads a - - The size of the entry in bytes - The read entry - - - - Reads a - - The read entry - - - - Reads a - - The read entry - - - - Reads a - - The read entry - - - - Reads a - - The read entry - - - - Reads a - - The read entry - - - - Reads a - - The read entry - - - - Reads a - - The read entry - - - - Reads a - - The read entry - - - - Reads a - - The read entry - - - - Reads a - - The read entry - - - - Reads a - - The read entry - - - - Reads a - - The read entry - - - - Reads a - - The read entry - - - - Reads a - - The size of the entry in bytes - The read entry - - - - Reads a - - The read entry - - - - Reads a - - The size of the entry in bytes - The read entry - - - - Reads a - - The size of the entry in bytes - The read entry - - - - Reads a - - The size of the entry in bytes - The read entry - - - - Reads a - - The size of the entry in bytes - The read entry - - - - Reads a - - The size of the entry in bytes - The read entry - - - - Reads a - - The size of the entry in bytes - The read entry - - - - Reads a - - The read entry - - - - Reads a - - The size of the entry in bytes - The read entry - - - - Reads a - - The read entry - - - - Reads a - - The read entry - - - - Reads a - - The read entry - - - - Reads a - - The size of the entry in bytes - The read entry - - - - Provides methods to write ICC data types - - - Provides methods to write ICC data types - - - Provides methods to write ICC data types - - - Provides methods to write ICC data types - - - Provides methods to write ICC data types - - - Provides methods to write ICC data types - - - Provides methods to write ICC data types - - - Provides methods to write ICC data types - - - - - The underlying stream where the data is written to - - - - - To detect redundant calls - - - - - Initializes a new instance of the class. - - - - - Gets the currently written length in bytes - - - - - Gets the written data bytes - - The written data - - - - Sets the writing position to the given value - - The new index position - - - - Writes a byte array - - The array to write - The number of bytes written - - - - Writes a ushort array - - The array to write - The number of bytes written - - - - Writes a short array - - The array to write - The number of bytes written - - - - Writes a uint array - - The array to write - The number of bytes written - - - - Writes an int array - - The array to write - The number of bytes written - - - - Writes a ulong array - - The array to write - The number of bytes written - - - - Write a number of empty bytes - - The number of bytes to write - The number of bytes written - - - - Writes empty bytes to a 4-byte margin - - The number of bytes written - - - - - - - Writes given bytes from pointer - - Pointer to the bytes to write - The number of bytes to write - The number of bytes written - - - - Writes given bytes from pointer ignoring endianness - - Pointer to the bytes to write - The number of bytes to write - The number of bytes written - - - - Writes curve data - - The curves to write - The number of bytes written - - - - Writes a - - The curve to write - The number of bytes written - - - - Writes a - - The curve to write - The number of bytes written - - - - Writes a - - The curve to write - The number of bytes written - - - - Writes a - - The curve to write - The number of bytes written - - - - Writes a - - The curve to write - The number of bytes written - - - - Writes a - - The curve to write - The number of bytes written - - - - Writes an 8bit lookup table - - The LUT to write - The number of bytes written - - - - Writes an 16bit lookup table - - The LUT to write - The number of bytes written - - - - Writes an color lookup table - - The CLUT to write - The number of bytes written - - - - Writes a 8bit color lookup table - - The CLUT to write - The number of bytes written - - - - Writes a 16bit color lookup table - - The CLUT to write - The number of bytes written - - - - Writes a 32bit float color lookup table - - The CLUT to write - The number of bytes written - - - - Writes a two dimensional matrix - - The matrix to write - True if the values are encoded as Single; false if encoded as Fix16 - The number of bytes written - - - - Writes a two dimensional matrix - - The matrix to write - True if the values are encoded as Single; false if encoded as Fix16 - The number of bytes written - - - - Writes a two dimensional matrix - - The matrix to write - True if the values are encoded as Single; false if encoded as Fix16 - The number of bytes written - - - - Writes a one dimensional matrix - - The matrix to write - True if the values are encoded as Single; false if encoded as Fix16 - The number of bytes written - - - - Writes a one dimensional matrix - - The matrix to write - True if the values are encoded as Single; false if encoded as Fix16 - The number of bytes written - - - - Writes a - - The element to write - The number of bytes written - - - - Writes a CurveSet - - The element to write - The number of bytes written - - - - Writes a Matrix - - The element to write - The number of bytes written - - - - Writes a CLUT - - The element to write - The number of bytes written - - - - Writes a DateTime - - The value to write - the number of bytes written - - - - Writes an ICC profile version number - - The value to write - the number of bytes written - - - - Writes an XYZ number - - The value to write - the number of bytes written - - - - Writes a profile ID - - The value to write - the number of bytes written - - - - Writes a position number - - The value to write - the number of bytes written - - - - Writes a response number - - The value to write - the number of bytes written - - - - Writes a named color - - The value to write - the number of bytes written - - - - Writes a profile description - - The value to write - the number of bytes written - - - - Writes a screening channel - - The value to write - the number of bytes written - - - - Writes a byte - - The value to write - the number of bytes written - - - - Writes an ushort - - The value to write - the number of bytes written - - - - Writes a short - - The value to write - the number of bytes written - - - - Writes an uint - - The value to write - the number of bytes written - - - - Writes an int - - The value to write - the number of bytes written - - - - Writes an ulong - - The value to write - the number of bytes written - - - - Writes a long - - The value to write - the number of bytes written - - - - Writes a float - - The value to write - the number of bytes written - - - - Writes a double - - The value to write - the number of bytes written - - - - Writes a signed 32bit number with 1 sign bit, 15 value bits and 16 fractional bits - - The value to write - the number of bytes written - - - - Writes an unsigned 32bit number with 16 value bits and 16 fractional bits - - The value to write - the number of bytes written - - - - Writes an unsigned 16bit number with 1 value bit and 15 fractional bits - - The value to write - the number of bytes written - - - - Writes an unsigned 16bit number with 8 value bits and 8 fractional bits - - The value to write - the number of bytes written - - - - Writes an ASCII encoded string - - the string to write - the number of bytes written - - - - Writes an ASCII encoded string resizes it to the given length - - The string to write - The desired length of the string (including potential null terminator) - If True, there will be a \0 added at the end - the number of bytes written - - - - Writes an UTF-16 big-endian encoded string - - the string to write - the number of bytes written - - - - Writes a tag data entry - - The entry to write - The table entry for the written data entry - The number of bytes written (excluding padding) - - - - Writes a tag data entry (without padding) - - The entry to write - The number of bytes written - - - - Writes the header of a - - The signature of the entry - The number of bytes written - - - - Writes a - - The entry to write - The number of bytes written - - - - Writes a - - The entry to write - The number of bytes written - - - - Writes a - - The entry to write - The number of bytes written - - - - Writes a - - The entry to write - The number of bytes written - - - - Writes a - - The entry to write - The number of bytes written - - - - Writes a - - The entry to write - The number of bytes written - - - - Writes a - - The entry to write - The number of bytes written - - - - Writes a - - The entry to write - The number of bytes written - - - - Writes a - - The entry to write - The number of bytes written - - - - Writes a - - The entry to write - The number of bytes written - - - - Writes a - - The entry to write - The number of bytes written - - - - Writes a - - The entry to write - The number of bytes written - - - - Writes a - - The entry to write - The number of bytes written - - - - Writes a - - The entry to write - The number of bytes written - - - - Writes a - - The entry to write - The number of bytes written - - - - Writes a - - The entry to write - The number of bytes written - - - - Writes a - - The entry to write - The number of bytes written - - - - Writes a - - The entry to write - The number of bytes written - - - - Writes a - - The entry to write - The number of bytes written - - - - Writes a - - The entry to write - The number of bytes written - - - - Writes a - - The entry to write - The number of bytes written - - - - Writes a - - The entry to write - The number of bytes written - - - - Writes a - - The entry to write - The number of bytes written - - - - Writes a - - The entry to write - The number of bytes written - - - - Writes a - - The entry to write - The number of bytes written - - - - Writes a - - The entry to write - The number of bytes written - - - - Writes a - - The entry to write - The number of bytes written - - - - Writes a - - The entry to write - The number of bytes written - - - - Writes a - - The entry to write - The number of bytes written - - - - Writes a - - The entry to write - The number of bytes written - - - - Writes a - - The entry to write - The number of bytes written - - - - Writes a - - The entry to write - The number of bytes written - - - - Writes a - - The entry to write - The number of bytes written - - - - Color lookup table data type - - - - - 32bit floating point - - - - - 8bit unsigned integer (byte) - - - - - 16bit unsigned integer (ushort) - - - - - Colorant Encoding - - - - - Unknown colorant encoding - - - - - ITU-R BT.709-2 colorant encoding - - - - - SMPTE RP145 colorant encoding - - - - - EBU Tech.3213-E colorant encoding - - - - - P22 colorant encoding - - - - - Color Space Type - - - - - CIE XYZ - - - - - CIE Lab - - - - - CIE Luv - - - - - YCbCr - - - - - CIE Yxy - - - - - RGB - - - - - Gray - - - - - HSV - - - - - HLS - - - - - CMYK - - - - - CMY - - - - - Generic 2 channel color - - - - - Generic 3 channel color - - - - - Generic 4 channel color - - - - - Generic 5 channel color - - - - - Generic 6 channel color - - - - - Generic 7 channel color - - - - - Generic 8 channel color - - - - - Generic 9 channel color - - - - - Generic 10 channel color - - - - - Generic 11 channel color - - - - - Generic 12 channel color - - - - - Generic 13 channel color - - - - - Generic 14 channel color - - - - - Generic 15 channel color - - - - - Curve Measurement Encodings - - - - - ISO 5-3 densitometer response. This is the accepted standard for - reflection densitometers for measuring photographic color prints - - - - - ISO 5-3 densitometer response which is the accepted standard in - Europe for color reflection densitometers - - - - - ISO 5-3 densitometer response commonly referred to as narrow band - or interference-type response. - - - - - ISO 5-3 wide band color reflection densitometer response which is - the accepted standard in the United States for color reflection densitometers - - - - - ISO 5-3 densitometer response for measuring color negatives - - - - - DIN 16536-2 densitometer response, with no polarizing filter - - - - - DIN 16536-2 densitometer response, with polarizing filter - - - - - DIN 16536-2 narrow band densitometer response, with no polarizing filter - - - - - DIN 16536-2 narrow band densitometer response, with polarizing filter - - - - - Curve Segment Signature - - - - - Curve defined by a formula - - - - - Curve defined by multiple segments - - - - - Enumerates the basic data types as defined in ICC.1:2010 version 4.3.0.0 - Section 4.2 to 4.15 - - - - - A 12-byte value representation of the time and date - - - - - A single-precision 32-bit floating-point as specified in IEEE 754, - excluding un-normalized s, infinities, and not a "" (NaN) values - - - - - Positions of some data elements are indicated using a position offset with the data element's size. - - - - - An 8-byte value, used to associate a normalized device code with a measurement value - - - - - A fixed signed 4-byte (32-bit) quantity which has 16 fractional bits - - - - - A fixed unsigned 4-byte (32-bit) quantity having 16 fractional bits - - - - - A fixed unsigned 2-byte (16-bit) quantity having15 fractional bits - - - - - A fixed unsigned 2-byte (16-bit) quantity having 8 fractional bits - - - - - An unsigned 2-byte (16-bit) integer - - - - - An unsigned 4-byte (32-bit) integer - - - - - An unsigned 8-byte (64-bit) integer - - - - - An unsigned 1-byte (8-bit) integer - - - - - A set of three fixed signed 4-byte (32-bit) quantities used to encode CIEXYZ, nCIEXYZ, and PCSXYZ tristimulus values - - - - - Alpha-numeric values, and other input and output codes, shall conform to the American Standard Code for - Information Interchange (ASCII) specified in ISO/IEC 646. - - - - - Device attributes. Can be combined with a logical OR - The least-significant 32 bits are defined by the ICC, - the rest can be used for vendor specific values - - - - - Opacity transparent - - - - - Opacity reflective - - - - - Reflectivity matte - - - - - Reflectivity glossy - - - - - Polarity negative - - - - - Polarity positive - - - - - Chroma black and white - - - - - Chroma color - - - - - Formula curve segment type - - - - - Type 1: Y = (a * X + b)^γ + c - - - - - Type 1: Y = a * log10 (b * X^γ + c) + d - - - - - Type 3: Y = a * b^(c * X + d) + e - - - - - Measurement Geometry - - - - - Unknown geometry - - - - - Geometry of 0°:45° or 45°:0° - - - - - Geometry of 0°:d or d:0° - - - - - Multi process element signature - - - - - Set of curves - - - - - Matrix transformation - - - - - Color lookup table - - - - - Reserved for future expansion. Do not use! - - - - - Reserved for future expansion. Do not use! - - - - - Formula curve segment type - - - - - Type 1: Y = X^g - - - - - CIE 122-1996: - For X >= -b/a: Y =(a * X + b)^g - For X $lt; -b/a: Y = 0 - - - - - IEC 61966-3: - For X >= -b/a: Y =(a * X + b)^g + c - For X $lt; -b/a: Y = c - - - - - IEC 61966-2-1 (sRGB): - For X >= d: Y =(a * X + b)^g - For X $lt; d: Y = c * X - - - - - Type 5: - For X >= d: Y =(a * X + b)^g + c - For X $lt; d: Y = c * X + f - - - - - Enumerates the primary platform/operating system framework for which the profile was created - - - - - No platform identified - - - - - Apple Computer, Inc. - - - - - Microsoft Corporation - - - - - Silicon Graphics, Inc. - - - - - Sun Microsystems, Inc. - - - - - Profile Class Name - - - - - Input profiles are generally used with devices such as scanners and - digital cameras. The types of profiles available for use as Input - profiles are N-component LUT-based, Three-component matrix-based, - and monochrome. - - - - - This class of profiles represents display devices such as monitors. - The types of profiles available for use as Display profiles are - N-component LUT-based, Three-component matrix-based, and monochrome. - - - - - Output profiles are used to support devices such as printers and - film recorders. The types of profiles available for use as Output - profiles are N-component LUT-based and Monochrome. - - - - - This profile contains a pre-evaluated transform that cannot be undone, - which represents a one-way link or connection between devices. It does - not represent any device model nor can it be embedded into images. - - - - - This profile provides the relevant information to perform a transformation - between color encodings and the PCS. This type of profile is based on - modeling rather than device measurement or characterization data. - ColorSpace profiles may be embedded in images. - - - - - This profile represents abstract transforms and does not represent any - device model. Color transformations using Abstract profiles are performed - from PCS to PCS. Abstract profiles cannot be embedded in images. - - - - - NamedColor profiles can be thought of as sibling profiles to device profiles. - For a given device there would be one or more device profiles to handle - process color conversions and one or more named color profiles to handle - named colors. - - - - - Profile flags. Can be combined with a logical OR. - The least-significant 16 bits are reserved for the ICC, - the rest can be used for vendor specific values - - - - - No flags (equivalent to NotEmbedded and Independent) - - - - - Profile is embedded within another file - - - - - Profile is embedded within another file - - - - - Profile cannot be used independently of the embedded color data - - - - - Profile can be used independently of the embedded color data - - - - - Enumerates the ICC Profile Tags as defined in ICC.1:2010 version 4.3.0.0 - Section 9 - - Each tag value represent the size of the tag in the profile. - - - - - - Unknown tag - - - - - A2B0 - This tag defines a color transform from Device, Color Encoding or PCS, to PCS, or a color transform - from Device 1 to Device 2, using lookup table tag element structures - - - - - A2B2 - This tag describes the color transform from Device or Color Encoding to PCS using lookup table tag element structures - - - - - A2B2 - This tag describes the color transform from Device or Color Encoding to PCS using lookup table tag element structures - - - - - bXYZ - This tag contains the third column in the matrix used in matrix/TRC transforms. - - - - - bTRC - This tag contains the blue channel tone reproduction curve. The first element represents no colorant (white) or - phosphor (black) and the last element represents 100 % colorant (blue) or 100 % phosphor (blue). - - - - - B2A0 - This tag defines a color transform from PCS to Device or Color Encoding using the lookup table tag element structures - - - - - B2A1 - This tag defines a color transform from PCS to Device or Color Encoding using the lookup table tag element structures. - - - - - B2A2 - This tag defines a color transform from PCS to Device or Color Encoding using the lookup table tag element structures. - - - - - B2D0 - This tag defines a color transform from PCS to Device. It supports float32Number-encoded input range, output range and transform, and - provides a means to override the BToA0 tag. - - - - - B2D1 - This tag defines a color transform from PCS to Device. It supports float32Number-encoded input range, output range and transform, and - provides a means to override the BToA1 tag. - - - - - B2D2 - This tag defines a color transform from PCS to Device. It supports float32Number-encoded input range, output range and transform, and - provides a means to override the BToA2 tag. - - - - - B2D3 - This tag defines a color transform from PCS to Device. It supports float32Number-encoded input range, output range and transform, and - provides a means to override the BToA1 tag. - - - - - calt - This tag contains the profile calibration date and time. This allows applications and utilities to verify if this profile matches a - vendor's profile and how recently calibration has been performed. - - - - - targ - This tag contains the name of the registered characterization data set, or it contains the measurement - data for a characterization target. - - - - - chad - This tag contains a matrix, which shall be invertible, and which converts an nCIEXYZ color, measured using the actual illumination - conditions and relative to the actual adopted white, to an nCIEXYZ color relative to the PCS adopted white - - - - - chrm - This tag contains the type and the data of the phosphor/colorant chromaticity set used. - - - - - clro - This tag specifies the laydown order of colorants. - - - - - clrt - - - - - clot - This tag identifies the colorants used in the profile by a unique name and set of PCSXYZ or PCSLAB values. - When used in DeviceLink profiles only the PCSLAB values shall be permitted. - - - - - ciis - This tag indicates the image state of PCS colorimetry produced using the colorimetric intent transforms. - - - - - cprt - This tag contains the text copyright information for the profile. - - - - - crdi - Removed in V4 - - - - - data - Removed in V4 - - - - - dtim - Removed in V4 - - - - - dmnd - This tag describes the structure containing invariant and localizable - versions of the device manufacturer for display - - - - - dmdd - This tag describes the structure containing invariant and localizable - versions of the device model for display. - - - - - devs - Removed in V4 - - - - - D2B0 - This tag defines a color transform from Device to PCS. It supports float32Number-encoded - input range, output range and transform, and provides a means to override the AToB0 tag - - - - - D2B1 - This tag defines a color transform from Device to PCS. It supports float32Number-encoded - input range, output range and transform, and provides a means to override the AToB1 tag - - - - - D2B2 - This tag defines a color transform from Device to PCS. It supports float32Number-encoded - input range, output range and transform, and provides a means to override the AToB1 tag - - - - - D2B3 - This tag defines a color transform from Device to PCS. It supports float32Number-encoded - input range, output range and transform, and provides a means to override the AToB1 tag - - - - - gamt - This tag provides a table in which PCS values are the input and a single - output value for each input value is the output. If the output value is 0, the PCS color is in-gamut. - If the output is non-zero, the PCS color is out-of-gamut - - - - - kTRC - This tag contains the grey tone reproduction curve. The tone reproduction curve provides the necessary - information to convert between a single device channel and the PCSXYZ or PCSLAB encoding. - - - - - gXYZ - This tag contains the second column in the matrix, which is used in matrix/TRC transforms. - - - - - gTRC - This tag contains the green channel tone reproduction curve. The first element represents no - colorant (white) or phosphor (black) and the last element represents 100 % colorant (green) or 100 % phosphor (green). - - - - - lumi - This tag contains the absolute luminance of emissive devices in candelas per square meter as described by the Y channel. - - - - - meas - This tag describes the alternative measurement specification, such as a D65 illuminant instead of the default D50. - - - - - bkpt - Removed in V4 - - - - - wtpt - This tag, which is used for generating the ICC-absolute colorimetric intent, specifies the chromatically - adapted nCIEXYZ tristimulus values of the media white point. - - - - - ncol - OBSOLETE, use - - - - - ncl2 - This tag contains the named color information providing a PCS and optional device representation - for a list of named colors. - - - - - resp - This tag describes the structure containing a description of the device response for which the profile is intended. - - - - - rig0 - There is only one standard reference medium gamut, as defined in ISO 12640-3 - - - - - pre0 - This tag contains the preview transformation from PCS to device space and back to the PCS. - - - - - pre1 - This tag defines the preview transformation from PCS to device space and back to the PCS. - - - - - pre2 - This tag contains the preview transformation from PCS to device space and back to the PCS. - - - - - desc - This tag describes the structure containing invariant and localizable versions of the profile - description for display. - - - - - pseq - This tag describes the structure containing a description of the profile sequence from source to - destination, typically used with the DeviceLink profile. - - - - - psd0 - Removed in V4 - - - - - psd1 - Removed in V4 - - - - - psd2 - Removed in V4 - - - - - psd3 - Removed in V4 - - - - - ps2s - Removed in V4 - - - - - psd2i- Removed in V4 - - - - - rXYZ - This tag contains the first column in the matrix, which is used in matrix/TRC transforms. - - - - - This tag contains the red channel tone reproduction curve. The first element represents no colorant - (white) or phosphor (black) and the last element represents 100 % colorant (red) or 100 % phosphor (red). - - - - - rig2 - There is only one standard reference medium gamut, as defined in ISO 12640-3. - - - - - scrd - Removed in V4 - - - - - scrn - Removed in V4 - - - - - tech - The device technology signature - - - - - bfd - Removed in V4 - - - - - vued - This tag describes the structure containing invariant and localizable - versions of the viewing conditions. - - - - - view - This tag defines the viewing conditions parameters - - - - - Rendering intent - - - - - In perceptual transforms the PCS values represent hypothetical - measurements of a color reproduction on the reference reflective - medium. By extension, for the perceptual intent, the PCS represents - the appearance of that reproduction as viewed in the reference viewing - environment by a human observer adapted to that environment. The exact - color rendering of the perceptual intent is vendor specific. - - - - - Transformations for this intent shall re-scale the in-gamut, - chromatically adapted tristimulus values such that the white - point of the actual medium is mapped to the PCS white point - (for either input or output) - - - - - The exact color rendering of the saturation intent is vendor - specific and involves compromises such as trading off - preservation of hue in order to preserve the vividness of pure colors. - - - - - Transformations for this intent shall leave the chromatically - adapted nCIEXYZ tristimulus values of the in-gamut colors unchanged. - - - - - Screening flags. Can be combined with a logical OR. - - - - - No flags (equivalent to NotDefaultScreens and UnitLinesPerCm) - - - - - Use printer default screens - - - - - Don't use printer default screens - - - - - Frequency units in Lines/Inch - - - - - Frequency units in Lines/cm - - - - - Enumerates the screening spot types - - - - - Unknown spot type - - - - - Default printer spot type - - - - - Round stop type - - - - - Diamond spot type - - - - - Ellipse spot type - - - - - Line spot type - - - - - Square spot type - - - - - Cross spot type - - - - - Signature Name - - - - - Unknown signature - - - - - Scene Colorimetry Estimates - - - - - Scene Appearance Estimates - - - - - Focal Plane Colorimetry Estimates - - - - - Reflection Hardcopy Original Colorimetry - - - - - Reflection Print Output Colorimetry - - - - - Perceptual Reference Medium Gamut - - - - - Film Scanner - - - - - Digital Camera - - - - - Reflective Scanner - - - - - InkJet Printer - - - - - Thermal Wax Printer - - - - - Electrophotographic Printer - - - - - Electrostatic Printer - - - - - Dye Sublimation Printer - - - - - Photographic Paper Printer - - - - - Film Writer - - - - - Video Monitor - - - - - Video Camera - - - - - Projection Television - - - - - Cathode Ray Tube Display - - - - - Passive Matrix Display - - - - - Active Matrix Display - - - - - Photo CD - - - - - Photographic Image Setter - - - - - Gravure - - - - - Offset Lithography - - - - - Silkscreen - - - - - Flexography - - - - - Motion Picture Film Scanner - - - - - Motion Picture Film Recorder - - - - - Digital Motion Picture Camera - - - - - Digital Cinema Projector - - - - - Standard Illuminant - - - - - Unknown illuminant - - - - - D50 illuminant - - - - - D65 illuminant - - - - - D93 illuminant - - - - - F2 illuminant - - - - - D55 illuminant - - - - - A illuminant - - - - - D50 illuminant - - - - - F8 illuminant - - - - - Standard Observer - - - - - Unknown observer - - - - - CIE 1931 observer - - - - - CIE 1964 observer - - - - - Type Signature - - - - - Unknown type signature - - - - - The chromaticity tag type provides basic chromaticity data and type of - phosphors or colorants of a monitor to applications and utilities - - - - - This is an optional tag which specifies the laydown order in which colorants - will be printed on an n-colorant device. The laydown order may be the same - as the channel generation order listed in the colorantTableTag or the channel - order of a color encoding type such as CMYK, in which case this tag is not - needed. When this is not the case (for example, ink-towers sometimes use - the order KCMY), this tag may be used to specify the laydown order of the - colorants - - - - - The purpose of this tag is to identify the colorants used in the profile - by a unique name and set of PCSXYZ or PCSLAB values to give the colorant - an unambiguous value. The first colorant listed is the colorant of the - first device channel of a LUT tag. The second colorant listed is the - colorant of the second device channel of a LUT tag, and so on - - - - - The curveType embodies a one-dimensional function which maps an input - value in the domain of the function to an output value in the range - of the function - - - - - The dataType is a simple data structure that contains either 7-bit ASCII - or binary data - - - - - Date and time defined by 6 unsigned 16bit integers - (year, month, day, hour, minute, second) - - - - - This structure represents a color transform using tables with 16-bit - precision. This type contains four processing elements: a 3 × 3 matrix - (which shall be the identity matrix unless the input color space is - PCSXYZ), a set of one-dimensional input tables, a multi-dimensional - lookup table, and a set of one-dimensional output tables - - - - - This structure represents a color transform using tables of 8-bit - precision. This type contains four processing elements: a 3 × 3 matrix - (which shall be the identity matrix unless the input color space is - PCSXYZ), a set of one-dimensional input tables, a multi-dimensional - lookup table, and a set of one-dimensional output tables. - - - - - This structure represents a color transform. The type contains up - to five processing elements which are stored in the AToBTag tag - in the following order: a set of one-dimensional curves, a 3 × 3 - matrix with offset terms, a set of one-dimensional curves, a - multi-dimensional lookup table, and a set of one-dimensional - output curves - - - - - This structure represents a color transform. The type contains - up to five processing elements which are stored in the BToATag - in the following order: a set of one-dimensional curves, a 3 × 3 - matrix with offset terms, a set of one-dimensional curves, a - multi-dimensional lookup table, and a set of one-dimensional curves. - - - - - This information refers only to the internal - profile data and is meant to provide profile makers an alternative - to the default measurement specifications - - - - - This tag structure contains a set of records each referencing a - multilingual Unicode string associated with a profile. Each string - is referenced in a separate record with the information about what - language and region the string is for. - - - - - This structure represents a color transform, containing a sequence - of processing elements. The processing elements contained in the - structure are defined in the structure itself, allowing for a flexible - structure. Currently supported processing elements are: a set of one - dimensional curves, a matrix with offset terms, and a multidimensional - lookup table (CLUT). Other processing element types may be added in - the future. Each type of processing element may be contained any - number of times in the structure. - - - - - This type is a count value and array of structures that provide color - coordinates for color names. For each named color, a PCS and optional - device representation of the color are given. Both representations are - 16-bit values and PCS values shall be relative colorimetric. The device - representation corresponds to the header’s "data color space" field. - This representation should be consistent with the "number of device - coordinates" field in the namedColor2Type. If this field is 0, device - coordinates are not provided. The PCS representation corresponds to the - header's PCS field. The PCS representation is always provided. Color - names are fixed-length, 32-byte fields including null termination. In - order to maintain maximum portability, it is strongly recommended that - special characters of the 7-bit ASCII set not be used. - - - - - This type describes a one-dimensional curve by specifying one of a - predefined set of functions using the parameters. - - - - - This type is an array of structures, each of which contains information - from the header fields and tags from the original profiles which were - combined to create the final profile. The order of the structures is - the order in which the profiles were combined and includes a structure - for the final profile. This provides a description of the profile - sequence from source to destination, typically used with the DeviceLink - profile. - - - - - This type is an array of structures, each of which contains information - for identification of a profile used in a sequence. - - - - - The purpose of this tag type is to provide a mechanism to relate physical - colorant amounts with the normalized device codes produced by lut8Type, - lut16Type, lutAToBType, lutBToAType or multiProcessElementsType tags - so that corrections can be made for variation in the device without - having to produce a new profile. The mechanism can be used by applications - to allow users with relatively inexpensive and readily available - instrumentation to apply corrections to individual output color - channels in order to achieve consistent results. - - - - - Array of signed floating point numbers with 1 sign bit, 15 value bits and 16 fractional bits - - - - - The signatureType contains a 4-byte sequence. Sequences of less than four - characters are padded at the end with spaces. Typically this type is used - for registered tags that can be displayed on many development systems as - a sequence of four characters. - - - - - Simple ASCII text - - - - - Array of unsigned floating point numbers with 16 value bits and 16 fractional bits - - - - - Array of unsigned 16bit integers (ushort) - - - - - Array of unsigned 32bit integers (uint) - - - - - Array of unsigned 64bit integers (ulong) - - - - - Array of unsigned 8bit integers (byte) - - - - - This type represents a set of viewing condition parameters. - - - - - 3 floating point values describing a XYZ color value - - - - - REMOVED IN V4 - The textDescriptionType is a complex structure that contains three - types of text description structures: 7-bit ASCII, Unicode and ScriptCode. Since no - single standard method for specifying localizable character sets exists across - the major platform vendors, including all three provides access for the major - operating systems. The 7-bit ASCII description is to be an invariant, - nonlocalizable name for consistent reference. It is preferred that both the - Unicode and ScriptCode structures be properly localized. - - - - - REMOVED IN V4 - This type contains the PostScript product name to which this - profile corresponds and the names of the companion CRDs - - - - - REMOVED IN V4 - The screeningType describes various screening parameters including - screen frequency, screening angle, and spot shape - - - - - REMOVED IN V4 - This type contains curves representing the under color removal and - black generation and a text string which is a general description of the method - used for the UCR and BG - - - - - REMOVED IN V4 - This type is an array of structures each of which contains - platform-specific information about the settings of the device for which - this profile is valid. This type is not supported. - - - - - REMOVED IN V2 - use instead. This type is not supported. - - - - - Represents an error that happened while reading or writing a corrupt/invalid ICC profile - - - - - Initializes a new instance of the class. - - The message that describes the error - - - - Initializes a new instance of the class. - - The message that describes the error - The exception that is the cause of the current exception, or a null reference - (Nothing in Visual Basic) if no inner exception is specified - - - - Represents an ICC profile - - - - - The byte array to read the ICC profile from - - - - - The backing file for the property - - - - - ICC profile header - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - The raw ICC profile data - - - - Initializes a new instance of the class. - - The profile header - The actual profile data - - - - Initializes a new instance of the class - by making a copy from another ICC profile. - - The other ICC profile, where the clone should be made from. - is null.> - - - - Gets or sets the profile header - - - - - Gets the actual profile data - - - - - - - - Calculates the MD5 hash value of an ICC profile - - The data of which to calculate the hash value - The calculated hash - - - - Checks for signs of a corrupt profile. - - This is not an absolute proof of validity but should weed out most corrupt data. - True if the profile is valid; False otherwise - - - - Converts this instance to a byte array. - - The - - - - Contains all values of an ICC profile header. - - - - - Gets or sets the profile size in bytes (will be ignored when writing a profile). - - - - - Gets or sets the preferred CMM (Color Management Module) type. - - - - - Gets or sets the profiles version number. - - - - - Gets or sets the type of the profile. - - - - - Gets or sets the data colorspace. - - - - - Gets or sets the profile connection space. - - - - - Gets or sets the date and time this profile was created. - - - - - Gets or sets the file signature. Should always be "acsp". - Value will be ignored when writing a profile. - - - - - Gets or sets the primary platform this profile as created for - - - - - Gets or sets the profile flags to indicate various options for the CMM - such as distributed processing and caching options. - - - - - Gets or sets the device manufacturer of the device for which this profile is created. - - - - - Gets or sets the model of the device for which this profile is created. - - - - - Gets or sets the device attributes unique to the particular device setup such as media type. - - - - - Gets or sets the rendering Intent. - - - - - Gets or sets The normalized XYZ values of the illuminant of the PCS. - - - - - Gets or sets profile creator signature. - - - - - Gets or sets the profile ID (hash). - - - - - Reads and parses ICC data from a byte array - - - - - Reads an ICC profile - - The raw ICC data - The read ICC profile - - - - Reads an ICC profile header - - The raw ICC data - The read ICC profile header - - - - Reads the ICC profile tag data - - The raw ICC data - The read ICC profile tag data - - - - The data of an ICC tag entry - - - - - Initializes a new instance of the class. - TagSignature will be - - Type Signature - - - - Initializes a new instance of the class. - - Type Signature - Tag Signature - - - - Gets the type Signature - - - - - Gets or sets the tag Signature - - - - - - - - - - - - - - Contains methods for writing ICC profiles. - - - - - Writes the ICC profile into a byte array - - The ICC profile to write - The ICC profile as a byte array - - - - A placeholder (might be used for future ICC versions) - - - - - Initializes a new instance of the class. - - Number of input channels - Number of output channels - - - - - - - A CLUT (color lookup table) element to process data - - - - - Initializes a new instance of the class. - - The color lookup table of this element - - - - Gets the color lookup table of this element - - - - - - - - - - - A set of curves to process data - - - - - Initializes a new instance of the class. - - An array with one dimensional curves - - - - Gets an array of one dimensional curves - - - - - - - - - - - A placeholder (might be used for future ICC versions) - - - - - Initializes a new instance of the class. - - Number of input channels - Number of output channels - - - - - - - A matrix element to process data - - - - - Initializes a new instance of the class. - - Two dimensional matrix with size of Input-Channels x Output-Channels - One dimensional matrix with size of Output-Channels x 1 - - - - Gets the two dimensional matrix with size of Input-Channels x Output-Channels - - - - - Gets the one dimensional matrix with size of Output-Channels x 1 - - - - - - - - - - - An element to process data - - - - - Initializes a new instance of the class. - - The signature of this element - Number of input channels - Number of output channels - - - - Gets the signature of this element, - - - - - Gets the number of input channels - - - - - Gets the number of output channels. - - - - - - - - The chromaticity tag type provides basic chromaticity data - and type of phosphors or colorants of a monitor to applications and utilities. - - - - - Initializes a new instance of the class. - - Colorant Type - - - - Initializes a new instance of the class. - - Values per channel - - - - Initializes a new instance of the class. - - Colorant Type - Tag Signature - - - - Initializes a new instance of the class. - - Values per channel - Tag Signature - - - - Gets the number of channels - - - - - Gets the colorant type - - - - - Gets the values per channel - - - - - - - - - - - - - - - - - This tag specifies the laydown order in which colorants - will be printed on an n-colorant device. - - - - - Initializes a new instance of the class. - - Colorant order numbers - - - - Initializes a new instance of the class. - - Colorant order numbers - Tag Signature - - - - Gets the colorant order numbers - - - - - - - - - - - - - - - - - The purpose of this tag is to identify the colorants used in - the profile by a unique name and set of PCSXYZ or PCSLAB values - to give the colorant an unambiguous value. - - - - - Initializes a new instance of the class. - - Colorant Data - - - - Initializes a new instance of the class. - - Colorant Data - Tag Signature - - - - Gets the colorant data - - - - - - - - - - - - - - - - - This type contains the PostScript product name to which this profile - corresponds and the names of the companion CRDs - - - - - Initializes a new instance of the class. - - the PostScript product name - the rendering intent 0 CRD name - the rendering intent 1 CRD name - the rendering intent 2 CRD name - the rendering intent 3 CRD name - - - - Initializes a new instance of the class. - - the PostScript product name - the rendering intent 0 CRD name - the rendering intent 1 CRD name - the rendering intent 2 CRD name - the rendering intent 3 CRD name - Tag Signature - - - - Gets the PostScript product name - - - - - Gets the rendering intent 0 CRD name - - - - - Gets the rendering intent 1 CRD name - - - - - Gets the rendering intent 2 CRD name - - - - - Gets the rendering intent 3 CRD name - - - - - - - - - - - - - - - - - The type contains a one-dimensional table of double values. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - Gamma value - - - - Initializes a new instance of the class. - - Curve Data - - - - Initializes a new instance of the class. - - Tag Signature - - - - Initializes a new instance of the class. - - Gamma value - Tag Signature - - - - Initializes a new instance of the class. - - Curve Data - Tag Signature - - - - Gets the curve data - - - - - Gets the gamma value. - Only valid if is true - - - - - Gets a value indicating whether the curve maps input directly to output. - - - - - Gets a value indicating whether the curve is a gamma curve. - - - - - - - - - - - - - - - - - The dataType is a simple data structure that contains - either 7-bit ASCII or binary data, i.e. textType data or transparent bytes. - - - - - Initializes a new instance of the class. - - The raw data - - - - Initializes a new instance of the class. - - The raw data - True if the given data is 7bit ASCII encoded text - - - - Initializes a new instance of the class. - - The raw data - True if the given data is 7bit ASCII encoded text - Tag Signature - - - - Gets the raw Data - - - - - Gets a value indicating whether the represents 7bit ASCII encoded text - - - - - Gets the decoded as 7bit ASCII. - If is false, returns null - - - - - - - - - - - - - - - - - This type is a representation of the time and date. - - - - - Initializes a new instance of the class. - - The DateTime value - - - - Initializes a new instance of the class. - - The DateTime value - Tag Signature - - - - Gets the date and time value - - - - - - - - - - - - - - - - - This type represents an array of doubles (from 32bit fixed point values). - - - - - Initializes a new instance of the class. - - The array data - - - - Initializes a new instance of the class. - - The array data - Tag Signature - - - - Gets the array data - - - - - - - - - - - - - - - - - This structure represents a color transform using tables - with 16-bit precision. - - - - - Initializes a new instance of the class. - - Input LUT - CLUT - Output LUT - - - - Initializes a new instance of the class. - - Input LUT - CLUT - Output LUT - Tag Signature - - - - Initializes a new instance of the class. - - Conversion matrix (must be 3x3) - Input LUT - CLUT - Output LUT - - - - Initializes a new instance of the class. - - Conversion matrix (must be 3x3) - Input LUT - CLUT - Output LUT - Tag Signature - - - - Gets the number of input channels - - - - - Gets the number of output channels - - - - - Gets the conversion matrix - - - - - Gets the input lookup table - - - - - Gets the color lookup table - - - - - Gets the output lookup table - - - - - - - - - - - - - - - - - This structure represents a color transform using tables - with 8-bit precision. - - - - - Initializes a new instance of the class. - - Input LUT - CLUT - Output LUT - - - - Initializes a new instance of the class. - - Input LUT - CLUT - Output LUT - Tag Signature - - - - Initializes a new instance of the class. - - Conversion matrix (must be 3x3) - Input LUT - CLUT - Output LUT - - - - Initializes a new instance of the class. - - Conversion matrix (must be 3x3) - Input LUT - CLUT - Output LUT - Tag Signature - - - - Gets the number of input channels - - - - - Gets the number of output channels - - - - - Gets the conversion matrix - - - - - Gets the input lookup table - - - - - Gets the color lookup table - - - - - Gets the output lookup table - - - - - - - - - - - - - - - - - This structure represents a color transform. - - - - - Initializes a new instance of the class. - - B Curve - Two dimensional conversion matrix (3x3) - One dimensional conversion matrix (3x1) - M Curve - CLUT - A Curve - - - - Initializes a new instance of the class. - - B Curve - Two dimensional conversion matrix (3x3) - One dimensional conversion matrix (3x1) - M Curve - CLUT - A Curve - Tag Signature - - - - Gets the number of input channels - - - - - Gets the number of output channels - - - - - Gets the two dimensional conversion matrix (3x3) - - - - - Gets the one dimensional conversion matrix (3x1) - - - - - Gets the color lookup table - - - - - Gets the B Curve - - - - - Gets the M Curve - - - - - Gets the A Curve - - - - - - - - - - - - - - - - - This structure represents a color transform. - - - - - Initializes a new instance of the class. - - B Curve - Two dimensional conversion matrix (3x3) - One dimensional conversion matrix (3x1) - M Curve - CLUT - A Curve - - - - Initializes a new instance of the class. - - B Curve - Two dimensional conversion matrix (3x3) - One dimensional conversion matrix (3x1) - M Curve - CLUT - A Curve - Tag Signature - - - - Gets the number of input channels - - - - - Gets the number of output channels - - - - - Gets the two dimensional conversion matrix (3x3) - - - - - Gets the one dimensional conversion matrix (3x1) - - - - - Gets the color lookup table - - - - - Gets the B Curve - - - - - Gets the M Curve - - - - - Gets the A Curve - - - - - - - - - - - - - - - - - The measurementType information refers only to the internal - profile data and is meant to provide profile makers an alternative - to the default measurement specifications. - - - - - Initializes a new instance of the class. - - Observer - XYZ Backing values - Geometry - Flare - Illuminant - - - - Initializes a new instance of the class. - - Observer - XYZ Backing values - Geometry - Flare - Illuminant - Tag Signature - - - - Gets the observer - - - - - Gets the XYZ Backing values - - - - - Gets the geometry - - - - - Gets the flare - - - - - Gets the illuminant - - - - - - - - - - - - - - - - - This tag structure contains a set of records each referencing - a multilingual string associated with a profile. - - - - - Initializes a new instance of the class. - - Localized Text - - - - Initializes a new instance of the class. - - Localized Text - Tag Signature - - - - Gets the localized texts - - - - - - - - - - - - - - - - - This structure represents a color transform, containing - a sequence of processing elements. - - - - - Initializes a new instance of the class. - - Processing elements - - - - Initializes a new instance of the class. - - Processing elements - Tag Signature - - - - Gets the number of input channels - - - - - Gets the number of output channels - - - - - Gets the processing elements - - - - - - - - - - - - - - - - - The namedColor2Type is a count value and array of structures - that provide color coordinates for color names. - - - - - Initializes a new instance of the class. - - The named colors - - - - Initializes a new instance of the class. - - Prefix - Suffix - /// The named colors - - - - Initializes a new instance of the class. - - Vendor specific flags - Prefix - Suffix - The named colors - - - - Initializes a new instance of the class. - - The named colors - Tag Signature - - - - Initializes a new instance of the class. - - Prefix - Suffix - The named colors - Tag Signature - - - - Initializes a new instance of the class. - - Vendor specific flags - Prefix - Suffix - The named colors - Tag Signature - - - - Gets the number of coordinates - - - - - Gets the prefix - - - - - Gets the suffix - - - - - Gets the vendor specific flags - - - - - Gets the named colors - - - - - - - - - - - - - - - - - The parametricCurveType describes a one-dimensional curve by - specifying one of a predefined set of functions using the parameters. - - - - - Initializes a new instance of the class. - - The Curve - - - - Initializes a new instance of the class. - - The Curve - Tag Signature - - - - Gets the Curve - - - - - - - - - - - - - - - - - This type is an array of structures, each of which contains information - from the header fields and tags from the original profiles which were - combined to create the final profile. - - - - - Initializes a new instance of the class. - - Profile Descriptions - - - - Initializes a new instance of the class. - - Profile Descriptions - Tag Signature - - - - Gets the profile descriptions - - - - - - - - - - - - - - - - - This type is an array of structures, each of which contains information - for identification of a profile used in a sequence. - - - - - Initializes a new instance of the class. - - Profile Identifiers - - - - Initializes a new instance of the class. - - Profile Identifiers - Tag Signature - - - - Gets the profile identifiers - - - - - - - - - - - - - - - - - The purpose of this tag type is to provide a mechanism to relate physical - colorant amounts with the normalized device codes produced by lut8Type, lut16Type, - lutAToBType, lutBToAType or multiProcessElementsType tags so that corrections can - be made for variation in the device without having to produce a new profile. - - - - - Initializes a new instance of the class. - - The Curves - - - - Initializes a new instance of the class. - - The Curves - Tag Signature - - - - Gets the number of channels - - - - - Gets the curves - - - - - - - - - - - - - - - - - This type describes various screening parameters including - screen frequency, screening angle, and spot shape. - - - - - Initializes a new instance of the class. - - Screening flags - Channel information - - - - Initializes a new instance of the class. - - Screening flags - Channel information - Tag Signature - - - - Gets the screening flags - - - - - Gets the channel information - - - - - - - - - - - - - - - - - Typically this type is used for registered tags that can - be displayed on many development systems as a sequence of four characters. - - - - - Initializes a new instance of the class. - - The Signature - - - - Initializes a new instance of the class. - - The Signature - Tag Signature - - - - Gets the signature data - - - - - - - - - - - - - - - - - The TextDescriptionType contains three types of text description. - - - - - Initializes a new instance of the class. - - ASCII text - Unicode text - ScriptCode text - Unicode Language-Code - ScriptCode Code - - - - Initializes a new instance of the class. - - ASCII text - Unicode text - ScriptCode text - Unicode Language-Code - ScriptCode Code - Tag Signature - - - - Gets the ASCII text - - - - - Gets the Unicode text - - - - - Gets the ScriptCode text - - - - - Gets the Unicode Language-Code - - - - - Gets the ScriptCode Code - - - - - Performs an explicit conversion from - to . - - The entry to convert - The converted entry - - - - - - - - - - - - - - - - This is a simple text structure that contains a text string. - - - - - Initializes a new instance of the class. - - The Text - - - - Initializes a new instance of the class. - - The Text - Tag Signature - - - - Gets the Text - - - - - - - - - - - - - - - - - This type contains curves representing the under color removal and black generation - and a text string which is a general description of the method used for the UCR and BG. - - - - - Initializes a new instance of the class. - - UCR (under color removal) curve values - BG (black generation) curve values - Description of the used UCR and BG method - - - - Initializes a new instance of the class. - - UCR (under color removal) curve values - BG (black generation) curve values - Description of the used UCR and BG method - Tag Signature - - - - Gets the UCR (under color removal) curve values - - - - - Gets the BG (black generation) curve values - - - - - Gets a description of the used UCR and BG method - - - - - - - - - - - - - - - - - This type represents an array of doubles (from 32bit values). - - - - - Initializes a new instance of the class. - - The array data - - - - Initializes a new instance of the class. - - The array data - Tag Signature - - - - Gets the array data. - - - - - - - - - - - - - - - - - This type represents an array of unsigned shorts. - - - - - Initializes a new instance of the class. - - The array data - - - - Initializes a new instance of the class. - - The array data - Tag Signature - - - - Gets the array data - - - - - - - - - - - - - - - - - This type represents an array of unsigned 32bit integers. - - - - - Initializes a new instance of the class. - - The array data - - - - Initializes a new instance of the class. - - The array data - Tag Signature - - - - Gets the array data - - - - - - - - - - - - - - - - - This type represents an array of unsigned 64bit integers. - - - - - Initializes a new instance of the class. - - The array data - - - - Initializes a new instance of the class. - - The array data - Tag Signature - - - - Gets the array data - - - - - - - - - - - - - - - - - This type represents an array of bytes. - - - - - Initializes a new instance of the class. - - The array data - - - - Initializes a new instance of the class. - - The array data - Tag Signature - - - - Gets the array data. - - - - - - - - - - - - - - - - - This tag stores data of an unknown tag data entry - - - - - Initializes a new instance of the class. - - The raw data of the entry - - - - Initializes a new instance of the class. - - The raw data of the entry - Tag Signature - - - - Gets the raw data of the entry. - - - - - - - - - - - - - - - - - This type represents a set of viewing condition parameters. - - - - - Initializes a new instance of the class. - - XYZ values of Illuminant - XYZ values of Surrounding - Illuminant - - - - Initializes a new instance of the class. - - XYZ values of Illuminant - XYZ values of Surrounding - Illuminant - Tag Signature - - - - Gets the XYZ values of illuminant. - - - - - Gets the XYZ values of Surrounding - - - - - Gets the illuminant. - - - - - - - - - - - - - - - - - The XYZType contains an array of XYZ values. - - - - - Initializes a new instance of the class. - - The XYZ numbers. - - - - Initializes a new instance of the class. - - The XYZ numbers - Tag Signature - - - - Gets the XYZ numbers. - - - - - - - - - - - Color Lookup Table - - - - - Initializes a new instance of the class. - - The CLUT values - The gridpoint count - The data type of this CLUT - - - - Initializes a new instance of the class. - - The CLUT values - The gridpoint count - - - - Initializes a new instance of the class. - - The CLUT values - The gridpoint count - - - - Gets the values that make up this table - - - - - Gets the CLUT data type (important when writing a profile) - - - - - Gets the number of input channels - - - - - Gets the number of output channels - - - - - Gets the number of grid points per input channel - - - - - - - - - - - - - - Entry of ICC colorant table - - - - - Initializes a new instance of the struct. - - Name of the colorant - - - - Initializes a new instance of the struct. - - Name of the colorant - First PCS value - Second PCS value - Third PCS value - - - - Gets the colorant name. - - - - - Gets the first PCS value. - - - - - Gets the second PCS value. - - - - - Gets the third PCS value. - - - - - Compares two objects for equality. - - - The on the left side of the operand. - - - The on the right side of the operand. - - - True if the parameter is equal to the parameter; otherwise, false. - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is not equal to the parameter; otherwise, false. - - - - - - - - - - - - - - - - - A string with a specific locale. - - - - - Initializes a new instance of the struct. - The culture will be - - The text value of this string - - - - Initializes a new instance of the struct. - The culture will be - - The culture of this string - The text value of this string - - - - Gets the text value. - - - - - Gets the culture of text. - - - - - - - - - - - Lookup Table - - - - - Initializes a new instance of the struct. - - The LUT values - - - - Initializes a new instance of the struct. - - The LUT values - - - - Initializes a new instance of the struct. - - The LUT values - - - - Gets the values that make up this table - - - - - - - - A specific color with a name - - - - - Initializes a new instance of the struct. - - Name of the color - Coordinates of the color in the profiles PCS - Coordinates of the color in the profiles Device-Space - - - - Gets the name of the color - - - - - Gets the coordinates of the color in the profiles PCS - - - - - Gets the coordinates of the color in the profiles Device-Space - - - - - Compares two objects for equality. - - - The on the left side of the operand. - - - The on the right side of the operand. - - - True if the parameter is equal to the parameter; otherwise, false. - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is not equal to the parameter; otherwise, false. - - - - - - - - - - - - - - - - - Position of an object within an ICC profile - - - - - Initializes a new instance of the struct. - - Offset in bytes - Size in bytes - - - - Gets the offset in bytes - - - - - Gets the size in bytes - - - - - Compares two objects for equality. - - - The on the left side of the operand. - - - The on the right side of the operand. - - - True if the parameter is equal to the parameter; otherwise, false. - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is not equal to the parameter; otherwise, false. - - - - - - - - - - - - - - - - - ICC Profile description - - - - - Initializes a new instance of the struct. - - Device Manufacturer - Device Model - Device Attributes - Technology Information - Device Manufacturer Info - Device Model Info - - - - Gets the device manufacturer. - - - - - Gets the device model. - - - - - Gets the device attributes. - - - - - Gets the technology information. - - - - - Gets the device manufacturer info. - - - - - Gets the device model info. - - - - - - - - - - - - - - ICC Profile ID - - - - - A profile ID with all values set to zero - - - - - Initializes a new instance of the struct. - - Part 1 of the ID - Part 2 of the ID - Part 3 of the ID - Part 4 of the ID - - - - Gets the first part of the ID. - - - - - Gets the second part of the ID. - - - - - Gets the third part of the ID. - - - - - Gets the fourth part of the ID. - - - - - Gets a value indicating whether the ID is set or just consists of zeros. - - - - - Compares two objects for equality. - - - The on the left side of the operand. - - - The on the right side of the operand. - - - True if the parameter is equal to the parameter; otherwise, false. - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is not equal to the parameter; otherwise, false. - - - - - - - - - - - - - - - - - Description of a profile within a sequence. - - - - - Initializes a new instance of the struct. - - ID of the profile - Description of the profile - - - - Gets the ID of the profile. - - - - - Gets the description of the profile. - - - - - - - - - - - - - - Associates a normalized device code with a measurement value - - - - - Initializes a new instance of the struct. - - Device Code - Measurement Value - - - - Gets the device code - - - - - Gets the measurement value - - - - - Compares two objects for equality. - - - The on the left side of the operand. - - - The on the right side of the operand. - - - True if the parameter is equal to the parameter; otherwise, false. - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is not equal to the parameter; otherwise, false. - - - - - - - - - - - - - - - - - A single channel of a - - - - - Initializes a new instance of the struct. - - Screen frequency - Angle in degrees - Spot shape - - - - Gets the screen frequency. - - - - - Gets the angle in degrees. - - - - - Gets the spot shape - - - - - Compares two objects for equality. - - - The on the left side of the operand. - - - The on the right side of the operand. - - - True if the parameter is equal to the parameter; otherwise, false. - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is not equal to the parameter; otherwise, false. - - - - - - - - - - - - - - - - - Entry of ICC tag table - - - - - Initializes a new instance of the struct. - - Signature of the tag - Offset of entry in bytes - Size of entry in bytes - - - - Gets the signature of the tag. - - - - - Gets the offset of entry in bytes. - - - - - Gets the size of entry in bytes. - - - - - Compares two objects for equality. - - - The on the left side of the operand. - - - The on the right side of the operand. - - - True if the parameter is equal to the parameter; otherwise, false. - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is not equal to the parameter; otherwise, false. - - - - - - - - - - - - - - - - - Represents the ICC profile version number. - - - - - Initializes a new instance of the struct. - - The major version number. - The minor version number. - The patch version number. - - - - Gets the major version number. - - - - - Gets the minor version number. - - - - - Gets the patch number. - - - - - - - - - - - Represents an IPTC profile providing access to the collection of values. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - The byte array to read the iptc profile from. - - - - Initializes a new instance of the class - by making a copy from another IPTC profile. - - The other IPTC profile, from which the clone should be made from. - - - - Gets the byte data of the IPTC profile. - - - - - Gets the values of this iptc profile. - - - - - - - - Returns all values with the specified tag. - - The tag of the iptc value. - The values found with the specified tag. - - - - Removes all values with the specified tag. - - The tag of the iptc value to remove. - True when the value was found and removed. - - - - Removes values with the specified tag and value. - - The tag of the iptc value to remove. - The value of the iptc item to remove. - True when the value was found and removed. - - - - Changes the encoding for all the values. - - The encoding to use when storing the bytes. - - - - Sets the value for the specified tag. - - The tag of the iptc value. - The encoding to use when storing the bytes. - The value. - - Indicates if length restrictions from the specification should be followed strictly. - Defaults to true. - - - - - Makes sure the datetime is formatted according to the iptc specification. - - A date will be formatted as CCYYMMDD, e.g. "19890317" for 17 March 1989. - A time value will be formatted as HHMMSS±HHMM, e.g. "090000+0200" for 9 o'clock Berlin time, - two hours ahead of UTC. - - - The tag of the iptc value. - The datetime. - - - - Sets the value of the specified tag. - - The tag of the iptc value. - The value. - - Indicates if length restrictions from the specification should be followed strictly. - Defaults to true. - - - - - Updates the data of the profile. - - - - - Provides enumeration of all IPTC tags relevant for images. - - - - - Unknown. - - - - - Record version identifying the version of the Information Interchange Model. - Not repeatable. Max length is 2. - - - - - Object type, not repeatable. Max Length is 67. - - - - - Object attribute. Max length is 68. - - - - - Object Name, not repeatable. Max length is 64. - - - - - Edit status, not repeatable. Max length is 64. - - - - - Editorial update, not repeatable. Max length is 2. - - - - - Urgency, not repeatable. Max length is 2. - - - - - Subject Reference. Max length is 236. - - - - - Category, not repeatable. Max length is 3. - - - - - Supplemental categories. Max length is 32. - - - - - Fixture identifier, not repeatable. Max length is 32. - - - - - Keywords. Max length is 64. - - - - - Location code. Max length is 3. - - - - - Location name. Max length is 64. - - - - - Release date. Format should be CCYYMMDD. - Not repeatable, max length is 8. - - A date will be formatted as CCYYMMDD, e.g. "19890317" for 17 March 1989. - - - - - - Release time. Format should be HHMMSS±HHMM. - Not repeatable, max length is 11. - - A time value will be formatted as HHMMSS±HHMM, e.g. "090000+0200" for 9 o'clock Berlin time, - two hours ahead of UTC. - - - - - - Expiration date. Format should be CCYYMMDD. - Not repeatable, max length is 8. - - A date will be formatted as CCYYMMDD, e.g. "19890317" for 17 March 1989. - - - - - - Expiration time. Format should be HHMMSS±HHMM. - Not repeatable, max length is 11. - - A time value will be formatted as HHMMSS±HHMM, e.g. "090000+0200" for 9 o'clock Berlin time, - two hours ahead of UTC. - - - - - - Special instructions, not repeatable. Max length is 256. - - - - - Action advised, not repeatable. Max length is 2. - - - - - Reference service. Max length is 10. - - - - - Reference date. Format should be CCYYMMDD. - Not repeatable, max length is 8. - - A date will be formatted as CCYYMMDD, e.g. "19890317" for 17 March 1989. - - - - - - ReferenceNumber. Max length is 8. - - - - - Created date. Format should be CCYYMMDD. - Not repeatable, max length is 8. - - A date will be formatted as CCYYMMDD, e.g. "19890317" for 17 March 1989. - - - - - - Created time. Format should be HHMMSS±HHMM. - Not repeatable, max length is 11. - - A time value will be formatted as HHMMSS±HHMM, e.g. "090000+0200" for 9 o'clock Berlin time, - two hours ahead of UTC. - - - - - - Digital creation date. Format should be CCYYMMDD. - Not repeatable, max length is 8. - - A date will be formatted as CCYYMMDD, e.g. "19890317" for 17 March 1989. - - - - - - Digital creation time. Format should be HHMMSS±HHMM. - Not repeatable, max length is 11. - - A time value will be formatted as HHMMSS±HHMM, e.g. "090000+0200" for 9 o'clock Berlin time, - two hours ahead of UTC. - - - - - - Originating program, not repeatable. Max length is 32. - - - - - Program version, not repeatable. Max length is 10. - - - - - Object cycle, not repeatable. Max length is 1. - - - - - Byline. Max length is 32. - - - - - Byline title. Max length is 32. - - - - - City, not repeatable. Max length is 32. - - - - - Sub location, not repeatable. Max length is 32. - - - - - Province/State, not repeatable. Max length is 32. - - - - - Country code, not repeatable. Max length is 3. - - - - - Country, not repeatable. Max length is 64. - - - - - Original transmission reference, not repeatable. Max length is 32. - - - - - Headline, not repeatable. Max length is 256. - - - - - Credit, not repeatable. Max length is 32. - - - - - Source, not repeatable. Max length is 32. - - - - - Copyright notice, not repeatable. Max length is 128. - - - - - Contact. Max length 128. - - - - - Caption, not repeatable. Max length is 2000. - - - - - Local caption. - - - - - Caption writer. Max length is 32. - - - - - Image type, not repeatable. Max length is 2. - - - - - Image orientation, not repeatable. Max length is 1. - - - - - Custom field 1 - - - - - Custom field 2 - - - - - Custom field 3 - - - - - Custom field 4 - - - - - Custom field 5 - - - - - Custom field 6 - - - - - Custom field 7 - - - - - Custom field 8 - - - - - Custom field 9 - - - - - Custom field 10 - - - - - Custom field 11 - - - - - Custom field 12 - - - - - Custom field 13 - - - - - Custom field 14 - - - - - Custom field 15 - - - - - Custom field 16 - - - - - Custom field 17 - - - - - Custom field 18 - - - - - Custom field 19 - - - - - Custom field 20 - - - - - Extension methods for IPTC tags. - - - - - Maximum length of the IPTC value with the given tag according to the specification. - - The tag to check the max length for. - The maximum length. - - - - Determines if the given tag can be repeated according to the specification. - - The tag to check. - True, if the tag can occur multiple times. - - - - Determines if the tag is a datetime tag which needs to be formatted as CCYYMMDD. - - The tag to check. - True, if its a datetime tag. - - - - Determines if the tag is a time tag which need to be formatted as HHMMSS±HHMM. - - The tag to check. - True, if its a time tag. - - - - Represents a single value of the IPTC profile. - - - - - Gets or sets the encoding to use for the Value. - - - - - Gets the tag of the iptc value. - - - - - Gets or sets a value indicating whether to be enforce value length restrictions according - to the specification. - - - - - Gets or sets the value. - - - - - Gets the length of the value. - - - - - - - - Determines whether the specified object is equal to the current . - - The object to compare this with. - True when the specified object is equal to the current . - - - - Determines whether the specified iptc value is equal to the current . - - The iptc value to compare this with. - True when the specified iptc value is equal to the current . - - - - Serves as a hash of this type. - - A hash code for the current instance. - - - - Converts this instance to a byte array. - - A array. - - - - Returns a string that represents the current value. - - A string that represents the current value. - - - - Returns a string that represents the current value with the specified encoding. - - The encoding to use. - A string that represents the current value with the specified encoding. - - - - Helper methods for packing and unpacking floating point values - - - - - Packs a into an - - The float to pack - The - - - - Packs an into a - - The integer to pack. - The - - - - Unpacks a into a . - - The value. - The . - - - - Maps the position of number types in memory - - - - - The float. - - - - - The integer. - - - - - The unsigned integer. - - - - - This interface exists for ensuring signature compatibility to MonoGame and XNA packed color types. - - - The packed format. uint, long, float. - - - - Gets or sets the packed representation of the value. - - - - - An interface that represents a generic pixel type. - The naming convention of each pixel format is to order the color components from least significant to most significant, reading from left to right. - For example in the pixel format the R component is the least significant byte, and the A component is the most significant. - - The type implementing this interface - - - - Creates a instance for this pixel type. - This method is not intended to be consumed directly. Use instead. - - The instance. - - - - A base interface for all pixels, defining the mandatory operations to be implemented by a pixel type. - - - - - Initializes the pixel instance from a generic ("scaled") . - - The vector to load the pixel from. - - - - Expands the pixel into a generic ("scaled") representation - with values scaled and clamped between 0 and 1. - The vector components are typically expanded in least to greatest significance order. - - The . - - - - Initializes the pixel instance from a which is specific to the current pixel type. - - The vector to load the pixel from. - - - - Expands the pixel into a which is specific to the current pixel type. - The vector components are typically expanded in least to greatest significance order. - - The . - - - - Initializes the pixel instance from an value. - - The value. - - - - Initializes the pixel instance from an value. - - The value. - - - - Initializes the pixel instance from an value. - - The value. - - - - Initializes the pixel instance from an value. - - The value. - - - - Initializes the pixel instance from an value. - - The value. - - - - Initializes the pixel instance from an value. - - The value. - - - - Initializes the pixel instance from an value. - - The value. - - - - Initializes the pixel instance from an value. - - The value. - - - - Initializes the pixel instance from an value. - - The value. - - - - Initializes the pixel instance from an value. - - The value. - - - - Convert the pixel instance into representation. - - The reference to the destination pixel - - - - Initializes the pixel instance from an value. - - The value. - - - - Initializes the pixel instance from an value. - - The value. - - - - Enumerates the various alpha composition modes. - - - - - Returns the destination over the source. - - - - - Returns the source colors. - - - - - Returns the source over the destination. - - - - - The source where the destination and source overlap. - - - - - The destination where the destination and source overlap. - - - - - The destination where the source does not overlap it. - - - - - The source where they don't overlap otherwise dest in overlapping parts. - - - - - The destination over the source. - - - - - The destination where the destination and source overlap. - - - - - The source where the destination and source overlap. - - - - - The clear. - - - - - Clear where they overlap. - - - - - Provides enumeration of the alpha value transparency behavior of a pixel format. - - - - - Indicates that the pixel format does not contain an alpha channel. - - - - - Indicates that the transparency behavior is premultiplied. - Each color is first scaled by the alpha value. The alpha value itself is the same - in both straight and premultiplied alpha. Typically, no color channel value is - greater than the alpha channel value. - If a color channel value in a premultiplied format is greater than the alpha - channel, the standard source-over blending math results in an additive blend. - - - - - Indicates that the transparency behavior is not premultiplied. - The alpha channel indicates the transparency of the color. - - - - - Collection of Porter Duff alpha blending functions applying different composition models. - - - These functions are designed to be a general solution for all color cases, - that is, they take in account the alpha value of both the backdrop - and source, and there's no need to alpha-premultiply neither the backdrop - nor the source. - Note there are faster functions for when the backdrop color is known - to be opaque - - - - - A pixel blender that implements the "NormalSrc" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "MultiplySrc" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "AddSrc" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "SubtractSrc" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "ScreenSrc" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "DarkenSrc" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "LightenSrc" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "OverlaySrc" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "HardLightSrc" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "NormalSrcAtop" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "MultiplySrcAtop" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "AddSrcAtop" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "SubtractSrcAtop" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "ScreenSrcAtop" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "DarkenSrcAtop" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "LightenSrcAtop" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "OverlaySrcAtop" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "HardLightSrcAtop" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "NormalSrcOver" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "MultiplySrcOver" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "AddSrcOver" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "SubtractSrcOver" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "ScreenSrcOver" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "DarkenSrcOver" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "LightenSrcOver" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "OverlaySrcOver" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "HardLightSrcOver" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "NormalSrcIn" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "MultiplySrcIn" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "AddSrcIn" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "SubtractSrcIn" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "ScreenSrcIn" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "DarkenSrcIn" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "LightenSrcIn" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "OverlaySrcIn" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "HardLightSrcIn" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "NormalSrcOut" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "MultiplySrcOut" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "AddSrcOut" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "SubtractSrcOut" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "ScreenSrcOut" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "DarkenSrcOut" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "LightenSrcOut" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "OverlaySrcOut" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "HardLightSrcOut" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "NormalDest" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "MultiplyDest" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "AddDest" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "SubtractDest" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "ScreenDest" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "DarkenDest" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "LightenDest" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "OverlayDest" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "HardLightDest" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "NormalDestAtop" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "MultiplyDestAtop" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "AddDestAtop" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "SubtractDestAtop" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "ScreenDestAtop" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "DarkenDestAtop" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "LightenDestAtop" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "OverlayDestAtop" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "HardLightDestAtop" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "NormalDestOver" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "MultiplyDestOver" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "AddDestOver" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "SubtractDestOver" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "ScreenDestOver" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "DarkenDestOver" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "LightenDestOver" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "OverlayDestOver" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "HardLightDestOver" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "NormalDestIn" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "MultiplyDestIn" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "AddDestIn" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "SubtractDestIn" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "ScreenDestIn" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "DarkenDestIn" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "LightenDestIn" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "OverlayDestIn" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "HardLightDestIn" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "NormalDestOut" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "MultiplyDestOut" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "AddDestOut" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "SubtractDestOut" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "ScreenDestOut" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "DarkenDestOut" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "LightenDestOut" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "OverlayDestOut" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "HardLightDestOut" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "NormalClear" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "MultiplyClear" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "AddClear" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "SubtractClear" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "ScreenClear" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "DarkenClear" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "LightenClear" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "OverlayClear" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "HardLightClear" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "NormalXor" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "MultiplyXor" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "AddXor" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "SubtractXor" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "ScreenXor" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "DarkenXor" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "LightenXor" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "OverlayXor" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - A pixel blender that implements the "HardLightXor" composition equation. - - - - - Gets the static instance of this blender. - - - - - - - - - - - - - - Collection of Porter Duff Color Blending and Alpha Composition Functions. - - - These functions are designed to be a general solution for all color cases, - that is, they take in account the alpha value of both the backdrop - and source, and there's no need to alpha-premultiply neither the backdrop - nor the source. - Note there are faster functions for when the backdrop color is known - to be opaque - - - - - Returns the result of the "Normal" compositing equation. - - The backdrop vector. - The source vector. - The . - - - - Returns the result of the "Multiply" compositing equation. - - The backdrop vector. - The source vector. - The . - - - - Returns the result of the "Add" compositing equation. - - The backdrop vector. - The source vector. - The . - - - - Returns the result of the "Subtract" compositing equation. - - The backdrop vector. - The source vector. - The . - - - - Returns the result of the "Screen" compositing equation. - - The backdrop vector. - The source vector. - The . - - - - Returns the result of the "Darken" compositing equation. - - The backdrop vector. - The source vector. - The . - - - - Returns the result of the "Lighten" compositing equation. - - The backdrop vector. - The source vector. - The . - - - - Returns the result of the "Overlay" compositing equation. - - The backdrop vector. - The source vector. - The . - - - - Returns the result of the "HardLight" compositing equation. - - The backdrop vector. - The source vector. - The . - - - - Helper function for Overlay andHardLight modes - - Backdrop color element - Source color element - Overlay value - - - - Returns the result of the "Over" compositing equation. - - The destination vector. - The source vector. - The amount to blend. Range 0..1 - The . - - - - Returns the result of the "Atop" compositing equation. - - The destination vector. - The source vector. - The amount to blend. Range 0..1 - The . - - - - Returns the result of the "In" compositing equation. - - The destination vector. - The source vector. - The . - - - - Returns the result of the "Out" compositing equation. - - The destination vector. - The source vector. - The . - - - - Returns the result of the "XOr" compositing equation. - - The destination vector. - The source vector. - The . - - - - Returns the result of the "NormalSrc" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "NormalSrcAtop" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "NormalSrcOver" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "NormalSrcIn" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "NormalSrcOut" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "NormalDest" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "NormalDestAtop" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "NormalDestOver" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "NormalDestIn" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "NormalDestOut" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "NormalXor" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "NormalClear" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "NormalSrc" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "NormalSrcAtop" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "NormalSrcOver" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "NormalSrcIn" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "NormalSrcOut" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "NormalDest" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "NormalDestAtop" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "NormalDestOver" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "NormalDestIn" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "NormalDestOut" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "NormalClear" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "NormalXor" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "MultiplySrc" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "MultiplySrcAtop" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "MultiplySrcOver" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "MultiplySrcIn" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "MultiplySrcOut" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "MultiplyDest" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "MultiplyDestAtop" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "MultiplyDestOver" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "MultiplyDestIn" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "MultiplyDestOut" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "MultiplyXor" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "MultiplyClear" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "MultiplySrc" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "MultiplySrcAtop" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "MultiplySrcOver" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "MultiplySrcIn" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "MultiplySrcOut" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "MultiplyDest" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "MultiplyDestAtop" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "MultiplyDestOver" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "MultiplyDestIn" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "MultiplyDestOut" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "MultiplyClear" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "MultiplyXor" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "AddSrc" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "AddSrcAtop" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "AddSrcOver" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "AddSrcIn" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "AddSrcOut" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "AddDest" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "AddDestAtop" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "AddDestOver" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "AddDestIn" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "AddDestOut" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "AddXor" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "AddClear" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "AddSrc" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "AddSrcAtop" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "AddSrcOver" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "AddSrcIn" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "AddSrcOut" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "AddDest" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "AddDestAtop" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "AddDestOver" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "AddDestIn" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "AddDestOut" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "AddClear" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "AddXor" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "SubtractSrc" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "SubtractSrcAtop" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "SubtractSrcOver" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "SubtractSrcIn" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "SubtractSrcOut" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "SubtractDest" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "SubtractDestAtop" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "SubtractDestOver" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "SubtractDestIn" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "SubtractDestOut" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "SubtractXor" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "SubtractClear" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "SubtractSrc" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "SubtractSrcAtop" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "SubtractSrcOver" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "SubtractSrcIn" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "SubtractSrcOut" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "SubtractDest" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "SubtractDestAtop" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "SubtractDestOver" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "SubtractDestIn" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "SubtractDestOut" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "SubtractClear" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "SubtractXor" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "ScreenSrc" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "ScreenSrcAtop" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "ScreenSrcOver" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "ScreenSrcIn" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "ScreenSrcOut" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "ScreenDest" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "ScreenDestAtop" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "ScreenDestOver" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "ScreenDestIn" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "ScreenDestOut" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "ScreenXor" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "ScreenClear" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "ScreenSrc" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "ScreenSrcAtop" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "ScreenSrcOver" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "ScreenSrcIn" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "ScreenSrcOut" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "ScreenDest" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "ScreenDestAtop" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "ScreenDestOver" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "ScreenDestIn" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "ScreenDestOut" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "ScreenClear" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "ScreenXor" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "DarkenSrc" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "DarkenSrcAtop" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "DarkenSrcOver" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "DarkenSrcIn" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "DarkenSrcOut" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "DarkenDest" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "DarkenDestAtop" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "DarkenDestOver" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "DarkenDestIn" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "DarkenDestOut" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "DarkenXor" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "DarkenClear" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "DarkenSrc" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "DarkenSrcAtop" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "DarkenSrcOver" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "DarkenSrcIn" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "DarkenSrcOut" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "DarkenDest" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "DarkenDestAtop" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "DarkenDestOver" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "DarkenDestIn" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "DarkenDestOut" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "DarkenClear" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "DarkenXor" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "LightenSrc" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "LightenSrcAtop" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "LightenSrcOver" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "LightenSrcIn" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "LightenSrcOut" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "LightenDest" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "LightenDestAtop" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "LightenDestOver" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "LightenDestIn" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "LightenDestOut" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "LightenXor" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "LightenClear" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "LightenSrc" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "LightenSrcAtop" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "LightenSrcOver" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "LightenSrcIn" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "LightenSrcOut" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "LightenDest" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "LightenDestAtop" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "LightenDestOver" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "LightenDestIn" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "LightenDestOut" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "LightenClear" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "LightenXor" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "OverlaySrc" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "OverlaySrcAtop" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "OverlaySrcOver" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "OverlaySrcIn" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "OverlaySrcOut" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "OverlayDest" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "OverlayDestAtop" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "OverlayDestOver" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "OverlayDestIn" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "OverlayDestOut" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "OverlayXor" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "OverlayClear" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "OverlaySrc" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "OverlaySrcAtop" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "OverlaySrcOver" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "OverlaySrcIn" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "OverlaySrcOut" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "OverlayDest" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "OverlayDestAtop" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "OverlayDestOver" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "OverlayDestIn" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "OverlayDestOut" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "OverlayClear" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "OverlayXor" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "HardLightSrc" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "HardLightSrcAtop" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "HardLightSrcOver" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "HardLightSrcIn" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "HardLightSrcOut" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "HardLightDest" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "HardLightDestAtop" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "HardLightDestOver" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "HardLightDestIn" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "HardLightDestOut" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "HardLightXor" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "HardLightClear" compositing equation. - - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "HardLightSrc" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "HardLightSrcAtop" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "HardLightSrcOver" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "HardLightSrcIn" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "HardLightSrcOut" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "HardLightDest" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "HardLightDestAtop" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "HardLightDestOver" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "HardLightDestIn" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "HardLightDestOut" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "HardLightClear" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Returns the result of the "HardLightXor" compositing equation. - - The pixel format. - The backdrop vector. - The source vector. - The source opacity. Range 0..1 - The . - - - - Abstract base class for calling pixel composition functions - - The type of the pixel - - - - Blend 2 pixels together. - - The background color. - The source color. - - A value between 0 and 1 indicating the weight of the second source vector. - At amount = 0, "background" is returned, at amount = 1, "source" is returned. - - The final pixel value after composition. - - - - Blends 2 rows together - - the pixel format of the source span - to use internally - the destination span - the background span - the source span - - A value between 0 and 1 indicating the weight of the second source vector. - At amount = 0, "background" is returned, at amount = 1, "source" is returned. - - - - - Blends 2 rows together - - to use internally - the destination span - the background span - the source span - - A span with values between 0 and 1 indicating the weight of the second source vector. - At amount = 0, "background" is returned, at amount = 1, "source" is returned. - - - - - Blends 2 rows together - - the pixel format of the source span - to use internally - the destination span - the background span - the source span - - A span with values between 0 and 1 indicating the weight of the second source vector. - At amount = 0, "background" is returned, at amount = 1, "source" is returned. - - - - - Blend 2 rows together. - - destination span - the background span - the source span - - A value between 0 and 1 indicating the weight of the second source vector. - At amount = 0, "background" is returned, at amount = 1, "source" is returned. - - - - - Blend 2 rows together. - - destination span - the background span - the source span - - A span with values between 0 and 1 indicating the weight of the second source vector. - At amount = 0, "background" is returned, at amount = 1, "source" is returned. - - - - - Enumerates the various color blending modes. - - - - - Default blending mode, also known as "Normal" or "Alpha Blending" - - - - - Blends the 2 values by multiplication. - - - - - Blends the 2 values by addition. - - - - - Blends the 2 values by subtraction. - - - - - Multiplies the complements of the backdrop and source values, then complements the result. - - - - - Selects the minimum of the backdrop and source values. - - - - - Selects the max of the backdrop and source values. - - - - - Multiplies or screens the values, depending on the backdrop vector values. - - - - - Multiplies or screens the colors, depending on the source value. - - - - - Flags responsible to select additional operations which could be efficiently applied in - - or - - knowing the pixel type. - - - - - No special operation is selected - - - - - Select and instead the standard (non scaled) variants. - - - - - Enable alpha premultiplication / unpremultiplication - - - - - Enable SRGB companding (defined in ). - - - - - Extension and utility methods for . - - - - - Applies the union of and , - if is true, returns unmodified otherwise. - - - and - should be always used together! - - - - - Packed pixel type containing a single 8-bit normalized alpha value. - - Ranges from [0, 0, 0, 0] to [0, 0, 0, 1] in vector form. - - - - Provides optimized overrides for bulk operations. - - - - - Initializes a new instance of the struct. - - The alpha component. - - - - Initializes a new instance of the struct. - - The alpha component. - - - - - - - Compares two objects for equality. - - - The on the left side of the operand. - - - The on the right side of the operand. - - - True if the parameter is equal to the parameter; otherwise, false. - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is not equal to the parameter; otherwise, false. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Compares an object with the packed vector. - - The object to compare. - True if the object is equal to the packed vector. - - - - Compares another A8 packed vector with the packed vector. - - The A8 packed vector to compare. - True if the packed vectors are equal. - - - - Gets a string representation of the packed vector. - - A string representation of the packed vector. - - - - - - - Packs a into a byte. - - The float containing the value to pack. - The containing the packed values. - - - - Provides optimized overrides for bulk operations. - - - - - - - - Packed pixel type containing four 8-bit unsigned normalized values ranging from 0 to 255. - The color components are stored in alpha, red, green, and blue order (least significant to most significant byte). - - Ranges from [0, 0, 0, 0] to [1, 1, 1, 1] in vector form. - - - - This struct is fully mutable. This is done (against the guidelines) for the sake of performance, - as it avoids the need to create new values for modification operations. - - - Provides optimized overrides for bulk operations. - - - Provides optimized overrides for bulk operations. - - - - - Gets or sets the alpha component. - - - - - Gets or sets the red component. - - - - - Gets or sets the green component. - - - - - Gets or sets the blue component. - - - - - The maximum byte value. - - - - - The half vector value. - - - - - Initializes a new instance of the struct. - - The red component. - The green component. - The blue component. - - - - Initializes a new instance of the struct. - - The red component. - The green component. - The blue component. - The alpha component. - - - - Initializes a new instance of the struct. - - The red component. - The green component. - The blue component. - The alpha component. - - - - Initializes a new instance of the struct. - - - The vector containing the components for the packed vector. - - - - - Initializes a new instance of the struct. - - - The vector containing the components for the packed vector. - - - - - Initializes a new instance of the struct. - - - The packed value. - - - - - Gets or sets the packed representation of the Argb32 struct. - - - - - - - - Converts an to . - - The . - The . - - - - Converts a to . - - The . - The . - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is equal to the parameter; otherwise, false. - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is not equal to the parameter; otherwise, false. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Gets a string representation of the packed vector. - - A string representation of the packed vector. - - - - - - - Packs the four floats into a color. - - The x-component - The y-component - The z-component - The w-component - - - - Packs a into a uint. - - The vector containing the values to pack. - - - - Packs a into a color. - - The vector containing the values to pack. - - - - Provides optimized overrides for bulk operations. - - - Provides optimized overrides for bulk operations. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Pixel type containing three 8-bit unsigned normalized values ranging from 0 to 255. - The color components are stored in blue, green, red order (least significant to most significant byte). - - Ranges from [0, 0, 0, 1] to [1, 1, 1, 1] in vector form. - - - - Provides optimized overrides for bulk operations. - - - Provides optimized overrides for bulk operations. - - - - - The blue component. - - - - - The green component. - - - - - The red component. - - - - - Initializes a new instance of the struct. - - The red component. - The green component. - The blue component. - - - - Converts an to . - - The . - The . - - - - Converts a to . - - The . - The . - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is equal to the parameter; otherwise, false. - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is not equal to the parameter; otherwise, false. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Provides optimized overrides for bulk operations. - - - Provides optimized overrides for bulk operations. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Packed pixel type containing unsigned normalized values ranging from 0 to 1. - The x and z components use 5 bits, and the y component uses 6 bits. - - Ranges from [0, 0, 0, 1] to [1, 1, 1, 1] in vector form. - - - - Provides optimized overrides for bulk operations. - - - - - Initializes a new instance of the struct. - - The x-component - The y-component - The z-component - - - - Initializes a new instance of the struct. - - - The vector containing the components for the packed value. - - - - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is equal to the parameter; otherwise, false. - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is not equal to the parameter; otherwise, false. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Expands the packed representation into a . - The vector components are typically expanded in least to greatest significance order. - - The . - - - - - - - - - - - - - - - - Provides optimized overrides for bulk operations. - - - - - - - - Packed pixel type containing four 8-bit unsigned normalized values ranging from 0 to 255. - The color components are stored in blue, green, red, and alpha order (least significant to most significant byte). - The format is binary compatible with System.Drawing.Imaging.PixelFormat.Format32bppArgb - - Ranges from [0, 0, 0, 0] to [1, 1, 1, 1] in vector form. - - - - Provides optimized overrides for bulk operations. - - - Provides optimized overrides for bulk operations. - - - - - Gets or sets the blue component. - - - - - Gets or sets the green component. - - - - - Gets or sets the red component. - - - - - Gets or sets the alpha component. - - - - - The maximum byte value. - - - - - The half vector value. - - - - - Initializes a new instance of the struct. - - The red component. - The green component. - The blue component. - - - - Initializes a new instance of the struct. - - The red component. - The green component. - The blue component. - The alpha component. - - - - Gets or sets the packed representation of the Bgra32 struct. - - - - - - - - Converts an to . - - The . - The . - - - - Converts a to . - - The . - The . - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is equal to the parameter; otherwise, false. - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is not equal to the parameter; otherwise, false. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Packs a into a color. - - The vector containing the values to pack. - - - - Provides optimized overrides for bulk operations. - - - Provides optimized overrides for bulk operations. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Packed pixel type containing unsigned normalized values, ranging from 0 to 1, using 4 bits each for x, y, z, and w. - - Ranges from [0, 0, 0, 0] to [1, 1, 1, 1] in vector form. - - - - Provides optimized overrides for bulk operations. - - - - - Initializes a new instance of the struct. - - The x-component - The y-component - The z-component - The w-component - - - - Initializes a new instance of the struct. - - The vector containing the components for the packed vector. - - - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is equal to the parameter; otherwise, false. - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is not equal to the parameter; otherwise, false. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Provides optimized overrides for bulk operations. - - - - - - - - Packed pixel type containing unsigned normalized values ranging from 0 to 1. - The x , y and z components use 5 bits, and the w component uses 1 bit. - - Ranges from [0, 0, 0, 0] to [1, 1, 1, 1] in vector form. - - - - Provides optimized overrides for bulk operations. - - - Provides optimized overrides for bulk operations. - - - - - Initializes a new instance of the struct. - - The x-component - The y-component - The z-component - The w-component - - - - Initializes a new instance of the struct. - - - The vector containing the components for the packed vector. - - - - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is equal to the parameter; otherwise, false. - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is not equal to the parameter; otherwise, false. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Provides optimized overrides for bulk operations. - - - Provides optimized overrides for bulk operations. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Packed pixel type containing four 8-bit unsigned integer values, ranging from 0 to 255. - - Ranges from [0, 0, 0, 0] to [255, 255, 255, 255] in vector form. - - - - Provides optimized overrides for bulk operations. - - - - - Initializes a new instance of the struct. - - - A vector containing the initial values for the components of the Byte4 structure. - - - - - Initializes a new instance of the struct. - - The x-component - The y-component - The z-component - The w-component - - - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is equal to the parameter; otherwise, false. - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is not equal to the parameter; otherwise, false. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Packs a vector into a uint. - - The vector containing the values to pack. - The containing the packed values. - - - - Provides optimized overrides for bulk operations. - - - - - - - - Packed pixel type containing a single 16 bit floating point value. - - Ranges from [-1, 0, 0, 1] to [1, 0, 0, 1] in vector form. - - - - Provides optimized overrides for bulk operations. - - - - - Initializes a new instance of the struct. - - The single component. - - - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is equal to the parameter; otherwise, false. - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is not equal to the parameter; otherwise, false. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Expands the packed representation into a . - - The . - - - - - - - - - - - - - - - - Provides optimized overrides for bulk operations. - - - - - - - - Packed pixel type containing two 16-bit floating-point values. - - Ranges from [-1, -1, 0, 1] to [1, 1, 0, 1] in vector form. - - - - Provides optimized overrides for bulk operations. - - - - - Initializes a new instance of the struct. - - The x-component. - The y-component. - - - - Initializes a new instance of the struct. - - A vector containing the initial values for the components. - - - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is equal to the parameter; otherwise, false. - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is not equal to the parameter; otherwise, false. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Expands the packed representation into a . - - The . - - - - - - - - - - - - - - - - Provides optimized overrides for bulk operations. - - - - - - - - Packed pixel type containing four 16-bit floating-point values. - - Ranges from [-1, -1, -1, -1] to [1, 1, 1, 1] in vector form. - - - - Provides optimized overrides for bulk operations. - - - - - Initializes a new instance of the struct. - - The x-component. - The y-component. - The z-component. - The w-component. - - - - Initializes a new instance of the struct. - - A vector containing the initial values for the components - - - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is equal to the parameter; otherwise, false. - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is not equal to the parameter; otherwise, false. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Packs a into a . - - The vector containing the values to pack. - The containing the packed values. - - - - Provides optimized overrides for bulk operations. - - - - - - - - Packed pixel type containing a single 16-bit normalized luminance value. - - Ranges from [0, 0, 0, 1] to [1, 1, 1, 1] in vector form. - - - - Provides optimized overrides for bulk operations. - - - Provides optimized overrides for bulk operations. - - - - - Initializes a new instance of the struct. - - The luminance component - - - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is equal to the parameter; otherwise, false. - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is not equal to the parameter; otherwise, false. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Provides optimized overrides for bulk operations. - - - Provides optimized overrides for bulk operations. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Packed pixel type containing a single 8-bit normalized luminance value. - - Ranges from [0, 0, 0, 1] to [1, 1, 1, 1] in vector form. - - - - Provides optimized overrides for bulk operations. - - - Provides optimized overrides for bulk operations. - - - - - Initializes a new instance of the struct. - - The luminance component. - - - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is equal to the parameter; otherwise, false. - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is not equal to the parameter; otherwise, false. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Provides optimized overrides for bulk operations. - - - Provides optimized overrides for bulk operations. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Packed pixel type containing two 8-bit normalized values representing luminance and alpha. - - Ranges from [0, 0, 0, 0] to [1, 1, 1, 1] in vector form. - - - - Provides optimized overrides for bulk operations. - - - Provides optimized overrides for bulk operations. - - - - - Gets or sets the luminance component. - - - - - Gets or sets the alpha component. - - - - - Initializes a new instance of the struct. - - The luminance component. - The alpha componant. - - - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is equal to the parameter; otherwise, false. - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is not equal to the parameter; otherwise, false. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Provides optimized overrides for bulk operations. - - - Provides optimized overrides for bulk operations. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Packed pixel type containing two 16-bit normalized values representing luminance and alpha. - - Ranges from [0, 0, 0, 0] to [1, 1, 1, 1] in vector form. - - - - Provides optimized overrides for bulk operations. - - - Provides optimized overrides for bulk operations. - - - - - Gets or sets the luminance component. - - - - - Gets or sets the alpha component. - - - - - Initializes a new instance of the struct. - - The luminance component. - The alpha componant. - - - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is equal to the parameter; otherwise, false. - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is not equal to the parameter; otherwise, false. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Provides optimized overrides for bulk operations. - - - Provides optimized overrides for bulk operations. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Packed pixel type containing two 8-bit signed normalized values, ranging from −1 to 1. - - Ranges from [-1, -1, 0, 1] to [1, 1, 0, 1] in vector form. - - - - Provides optimized overrides for bulk operations. - - - - - Initializes a new instance of the struct. - - The x-component. - The y-component. - - - - Initializes a new instance of the struct. - - The vector containing the component values. - - - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is equal to the parameter; otherwise, false. - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is not equal to the parameter; otherwise, false. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Expands the packed representation into a . - The vector components are typically expanded in least to greatest significance order. - - The . - - - - - - - - - - - - - - - - Provides optimized overrides for bulk operations. - - - - - - - - Packed pixel type containing four 8-bit signed normalized values, ranging from −1 to 1. - - Ranges from [-1, -1, -1, -1] to [1, 1, 1, 1] in vector form. - - - - Provides optimized overrides for bulk operations. - - - - - Initializes a new instance of the struct. - - The x-component. - The y-component. - The z-component. - The w-component. - - - - Initializes a new instance of the struct. - - The vector containing the component values. - - - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is equal to the parameter; otherwise, false. - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is not equal to the parameter; otherwise, false. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Provides optimized overrides for bulk operations. - - - - - - - - Packed pixel type containing two 16-bit signed normalized values, ranging from −1 to 1. - - Ranges from [-1, -1, 0, 1] to [1, 1, 0, 1] in vector form. - - - - Provides optimized overrides for bulk operations. - - - - - Initializes a new instance of the struct. - - The x-component. - The y-component. - - - - Initializes a new instance of the struct. - - The vector containing the component values. - - - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is equal to the parameter; otherwise, false. - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is not equal to the parameter; otherwise, false. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Expands the packed representation into a . - The vector components are typically expanded in least to greatest significance order. - - The . - - - - - - - - - - - - - - - - Provides optimized overrides for bulk operations. - - - - - - - - Packed pixel type containing four 16-bit signed normalized values, ranging from −1 to 1. - - Ranges from [-1, -1, -1, -1] to [1, 1, 1, 1] in vector form. - - - - Provides optimized overrides for bulk operations. - - - - - Initializes a new instance of the struct. - - The x-component. - The y-component. - The z-component. - The w-component. - - - - Initializes a new instance of the struct. - - The vector containing the component values. - - - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is equal to the parameter; otherwise, false. - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is not equal to the parameter; otherwise, false. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Provides optimized overrides for bulk operations. - - - - - - - - Provides optimized overrides for bulk operations. - - - Provides optimized overrides for bulk operations. - - - Pixel type containing three 8-bit unsigned normalized values ranging from 0 to 255. - The color components are stored in red, green, blue order (least significant to most significant byte). - - Ranges from [0, 0, 0, 1] to [1, 1, 1, 1] in vector form. - - - - - - Provides optimized overrides for bulk operations. - - - Provides optimized overrides for bulk operations. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - The red component. - - - - - The green component. - - - - - The blue component. - - - - - Initializes a new instance of the struct. - - The red component. - The green component. - The blue component. - - - - Converts an to . - - The . - The . - - - - Converts a to . - - The . - The . - - - - Allows the implicit conversion of an instance of to a - . - - The instance of to convert. - An instance of . - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is equal to the parameter; otherwise, false. - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is not equal to the parameter; otherwise, false. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Packs a into a color. - - The vector containing the values to pack. - - - - Provides optimized overrides for bulk operations. - - - Provides optimized overrides for bulk operations. - - - Packed pixel type containing three 16-bit unsigned normalized values ranging from 0 to 635535. - - Ranges from [0, 0, 0, 1] to [1, 1, 1, 1] in vector form. - - - - - - Provides optimized overrides for bulk operations. - - - Provides optimized overrides for bulk operations. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Gets or sets the red component. - - - - - Gets or sets the green component. - - - - - Gets or sets the blue component. - - - - - Initializes a new instance of the struct. - - The red component. - The green component. - The blue component. - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is equal to the parameter; otherwise, false. - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is not equal to the parameter; otherwise, false. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Provides optimized overrides for bulk operations. - - - Provides optimized overrides for bulk operations. - - - Packed pixel type containing four 8-bit unsigned normalized values ranging from 0 to 255. - The color components are stored in red, green, blue, and alpha order (least significant to most significant byte). - - Ranges from [0, 0, 0, 0] to [1, 1, 1, 1] in vector form. - - - - This struct is fully mutable. This is done (against the guidelines) for the sake of performance, - as it avoids the need to create new values for modification operations. - - - - - Provides optimized overrides for bulk operations. - - - implementation optimized for . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Gets or sets the red component. - - - - - Gets or sets the green component. - - - - - Gets or sets the blue component. - - - - - Gets or sets the alpha component. - - - - - Initializes a new instance of the struct. - - The red component. - The green component. - The blue component. - - - - Initializes a new instance of the struct. - - The red component. - The green component. - The blue component. - The alpha component. - - - - Initializes a new instance of the struct. - - The red component. - The green component. - The blue component. - The alpha component. - - - - Initializes a new instance of the struct. - - - The vector containing the components for the packed vector. - - - - - Initializes a new instance of the struct. - - - The vector containing the components for the packed vector. - - - - - Initializes a new instance of the struct. - - - The packed value. - - - - - Gets or sets the packed representation of the Rgba32 struct. - - - - - Gets or sets the RGB components of this struct as - - - - - Gets or sets the RGB components of this struct as reverting the component order. - - - - - - - - Converts an to . - - The . - The . - - - - Converts a to . - - The . - The . - - - - Allows the implicit conversion of an instance of to a - . - - The instance of to convert. - An instance of . - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is equal to the parameter; otherwise, false. - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is not equal to the parameter; otherwise, false. - - - - - Creates a new instance of the struct - from the given hexadecimal string. - - - The hexadecimal representation of the combined color components arranged - in rgb, rgba, rrggbb, or rrggbbaa format to match web syntax. - - - The . - - - - - Attempts to creates a new instance of the struct - from the given hexadecimal string. - - - The hexadecimal representation of the combined color components arranged - in rgb, rgba, rrggbb, or rrggbbaa format to match web syntax. - - When this method returns, contains the equivalent of the hexadecimal input. - - The . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Converts the value of this instance to a hexadecimal string. - - A hexadecimal string representation of the value. - - - - - - - - - - - - - - - - Packs a into a color returning a new instance as a result. - - The vector containing the values to pack. - The - - - - Packs the four floats into a color. - - The x-component - The y-component - The z-component - The w-component - - - - Packs a into a uint. - - The vector containing the values to pack. - - - - Packs a into a color. - - The vector containing the values to pack. - - - - Converts the specified hex value to an rrggbbaa hex value. - - The hex value to convert. - - A rrggbbaa hex value. - - - - - Provides optimized overrides for bulk operations. - - - Provides optimized overrides for bulk operations. - - - Packed pixel type containing four 16-bit unsigned normalized values ranging from 0 to 65535. - - Ranges from [0, 0, 0, 0] to [1, 1, 1, 1] in vector form. - - - - - - Provides optimized overrides for bulk operations. - - - Provides optimized overrides for bulk operations. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Gets or sets the red component. - - - - - Gets or sets the green component. - - - - - Gets or sets the blue component. - - - - - Gets or sets the alpha component. - - - - - Initializes a new instance of the struct. - - The red component. - The green component. - The blue component. - The alpha component. - - - - Initializes a new instance of the struct. - - A structure of 4 bytes in RGBA byte order. - - - - Initializes a new instance of the struct. - - A structure of 4 bytes in BGRA byte order. - - - - Initializes a new instance of the struct. - - A structure of 4 bytes in ARGB byte order. - - - - Initializes a new instance of the struct. - - A structure of 3 bytes in RGB byte order. - - - - Initializes a new instance of the struct. - - A structure of 3 bytes in BGR byte order. - - - - Initializes a new instance of the struct. - - The . - - - - Gets or sets the RGB components of this struct as . - - - - - - - - Converts an to . - - The . - The . - - - - Converts a to . - - The . - The . - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is equal to the parameter; otherwise, false. - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is not equal to the parameter; otherwise, false. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Convert to . - - The . - - - - Convert to . - - The . - - - - Convert to . - - The . - - - - Convert to . - - The . - - - - Convert to . - - The . - - - - - - - - - - - - - - - - Provides optimized overrides for bulk operations. - - - Packed pixel type containing two 16-bit unsigned normalized values ranging from 0 to 1. - - Ranges from [0, 0, 0, 1] to [1, 1, 0, 1] in vector form. - - - - - - Provides optimized overrides for bulk operations. - - - - - - - - Initializes a new instance of the struct. - - The x-component - The y-component - - - - Initializes a new instance of the struct. - - The vector containing the component values. - - - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is equal to the parameter; otherwise, false. - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is not equal to the parameter; otherwise, false. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Expands the packed representation into a . - The vector components are typically expanded in least to greatest significance order. - - The . - - - - - - - - - - - - - - - - Provides optimized overrides for bulk operations. - - - Packed vector type containing unsigned normalized values ranging from 0 to 1. - The x, y and z components use 10 bits, and the w component uses 2 bits. - - Ranges from [0, 0, 0, 0] to [1, 1, 1, 1] in vector form. - - - - - - Provides optimized overrides for bulk operations. - - - - - - - - Initializes a new instance of the struct. - - The x-component - The y-component - The z-component - The w-component - - - - Initializes a new instance of the struct. - - The vector containing the component values. - - - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is equal to the parameter; otherwise, false. - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is not equal to the parameter; otherwise, false. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Provides optimized overrides for bulk operations. - - - Unpacked pixel type containing four 32-bit floating-point values typically ranging from 0 to 1. - The color components are stored in red, green, blue, and alpha order. - - Ranges from [0, 0, 0, 0] to [1, 1, 1, 1] in vector form. - - - - This struct is fully mutable. This is done (against the guidelines) for the sake of performance, - as it avoids the need to create new values for modification operations. - - - - - implementation optimized for . - - - - - - - - - - - - - - - - - Gets or sets the red component. - - - - - Gets or sets the green component. - - - - - Gets or sets the blue component. - - - - - Gets or sets the alpha component. - - - - - Initializes a new instance of the struct. - - The red component. - The green component. - The blue component. - The alpha component. - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is equal to the parameter; otherwise, false. - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is not equal to the parameter; otherwise, false. - - - - - Creates a new instance of the struct. - - - The hexadecimal representation of the combined color components arranged - in rgb, rgba, rrggbb, or rrggbbaa format to match web syntax. - - - The . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Converts the value of this instance to a hexadecimal string. - - A hexadecimal string representation of the value. - - - - - - - - - - - - - - - - Provides optimized overrides for bulk operations. - - - Packed pixel type containing two 16-bit signed integer values. - - Ranges from [-32767, -32767, 0, 1] to [32767, 32767, 0, 1] in vector form. - - - - - - Provides optimized overrides for bulk operations. - - - - - - - - Initializes a new instance of the struct. - - The x-component. - The y-component. - - - - Initializes a new instance of the struct. - - The vector containing the component values. - - - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is not equal to the parameter; otherwise, false. - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is not equal to the parameter; otherwise, false. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Expands the packed representation into a . - The vector components are typically expanded in least to greatest significance order. - - The . - - - - - - - - - - - - - - - - Provides optimized overrides for bulk operations. - - - Packed pixel type containing four 16-bit signed integer values. - - Ranges from [-37267, -37267, -37267, -37267] to [37267, 37267, 37267, 37267] in vector form. - - - - - - Provides optimized overrides for bulk operations. - - - - - - - - Initializes a new instance of the struct. - - The x-component. - The y-component. - The z-component. - The w-component. - - - - Initializes a new instance of the struct. - - A vector containing the initial values for the components. - - - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is not equal to the parameter; otherwise, false. - - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the parameter is not equal to the parameter; otherwise, false. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Gets the hash code for the current instance. - - Hash code for the instance. - - - - - - - A stateless class implementing Strategy Pattern for batched pixel-data conversion operations - for pixel buffers of type . - - The pixel format. - - Provides access to pixel blenders - - - - - Gets the global instance for the pixel type - - - - - Gets the pixel type info for the given . - - The . - - - - Bulk version of converting 'sourceVectors.Length' pixels into 'destinationColors'. - The method is DESTRUCTIVE altering the contents of . - - - The destructive behavior is a design choice for performance reasons. - In a typical use case the contents of are abandoned after the conversion. - - A to configure internal operations - The to the source vectors. - The to the destination colors. - The to apply during the conversion - - - - Bulk version of converting 'sourceVectors.Length' pixels into 'destinationColors'. - The method is DESTRUCTIVE altering the contents of . - - - The destructive behavior is a design choice for performance reasons. - In a typical use case the contents of are abandoned after the conversion. - - A to configure internal operations - The to the source vectors. - The to the destination colors. - - - - Bulk version of converting 'sourceColors.Length' pixels into 'destinationVectors'. - - A to configure internal operations - The to the source colors. - The to the destination vectors. - The to apply during the conversion - - - - Bulk version of converting 'sourceColors.Length' pixels into 'destinationVectors'. - - A to configure internal operations - The to the source colors. - The to the destination vectors. - - - - Bulk operation that copies the to in - format. - - The destination pixel type. - A to configure internal operations. - The to the source pixels. - The to the destination pixels. - - - - Bulk operation that copies the to in - format. - - The destination pixel type. - A to configure internal operations. - The to the source pixels. - The to the destination pixels. - - - - Bulk operation that packs 3 seperate RGB channels to . - The destination must have a padding of 3. - - A to configure internal operations. - A to the red values. - A to the green values. - A to the blue values. - A to the destination pixels. - - - - Converts all pixels in 'source` span of into a span of -s. - - A to configure internal operations. - The source of data. - The to the destination pixels. - - - - A helper for that expects a byte span. - The layout of the data in 'sourceBytes' must be compatible with layout. - - A to configure internal operations. - The to the source bytes. - The to the destination pixels. - The number of pixels to convert. - - - - Converts all pixels of the 'sourcePixels` span to a span of -s. - - A to configure internal operations - The span of source pixels - The destination span of data. - - - - A helper for that expects a byte span as destination. - The layout of the data in 'destBytes' must be compatible with layout. - - A to configure internal operations - The to the source pixels. - The to the destination bytes. - The number of pixels to convert. - - - - Converts all pixels in 'source` span of into a span of -s. - - A to configure internal operations. - The source of data. - The to the destination pixels. - - - - A helper for that expects a byte span. - The layout of the data in 'sourceBytes' must be compatible with layout. - - A to configure internal operations. - The to the source bytes. - The to the destination pixels. - The number of pixels to convert. - - - - Converts all pixels of the 'sourcePixels` span to a span of -s. - - A to configure internal operations - The span of source pixels - The destination span of data. - - - - A helper for that expects a byte span as destination. - The layout of the data in 'destBytes' must be compatible with layout. - - A to configure internal operations - The to the source pixels. - The to the destination bytes. - The number of pixels to convert. - - - - Converts all pixels in 'source` span of into a span of -s. - - A to configure internal operations. - The source of data. - The to the destination pixels. - - - - A helper for that expects a byte span. - The layout of the data in 'sourceBytes' must be compatible with layout. - - A to configure internal operations. - The to the source bytes. - The to the destination pixels. - The number of pixels to convert. - - - - Converts all pixels of the 'sourcePixels` span to a span of -s. - - A to configure internal operations - The span of source pixels - The destination span of data. - - - - A helper for that expects a byte span as destination. - The layout of the data in 'destBytes' must be compatible with layout. - - A to configure internal operations - The to the source pixels. - The to the destination bytes. - The number of pixels to convert. - - - - Converts all pixels in 'source` span of into a span of -s. - - A to configure internal operations. - The source of data. - The to the destination pixels. - - - - A helper for that expects a byte span. - The layout of the data in 'sourceBytes' must be compatible with layout. - - A to configure internal operations. - The to the source bytes. - The to the destination pixels. - The number of pixels to convert. - - - - Converts all pixels of the 'sourcePixels` span to a span of -s. - - A to configure internal operations - The span of source pixels - The destination span of data. - - - - A helper for that expects a byte span as destination. - The layout of the data in 'destBytes' must be compatible with layout. - - A to configure internal operations - The to the source pixels. - The to the destination bytes. - The number of pixels to convert. - - - - Converts all pixels in 'source` span of into a span of -s. - - A to configure internal operations. - The source of data. - The to the destination pixels. - - - - A helper for that expects a byte span. - The layout of the data in 'sourceBytes' must be compatible with layout. - - A to configure internal operations. - The to the source bytes. - The to the destination pixels. - The number of pixels to convert. - - - - Converts all pixels of the 'sourcePixels` span to a span of -s. - - A to configure internal operations - The span of source pixels - The destination span of data. - - - - A helper for that expects a byte span as destination. - The layout of the data in 'destBytes' must be compatible with layout. - - A to configure internal operations - The to the source pixels. - The to the destination bytes. - The number of pixels to convert. - - - - Converts all pixels in 'source` span of into a span of -s. - - A to configure internal operations. - The source of data. - The to the destination pixels. - - - - A helper for that expects a byte span. - The layout of the data in 'sourceBytes' must be compatible with layout. - - A to configure internal operations. - The to the source bytes. - The to the destination pixels. - The number of pixels to convert. - - - - Converts all pixels of the 'sourcePixels` span to a span of -s. - - A to configure internal operations - The span of source pixels - The destination span of data. - - - - A helper for that expects a byte span as destination. - The layout of the data in 'destBytes' must be compatible with layout. - - A to configure internal operations - The to the source pixels. - The to the destination bytes. - The number of pixels to convert. - - - - Converts all pixels in 'source` span of into a span of -s. - - A to configure internal operations. - The source of data. - The to the destination pixels. - - - - A helper for that expects a byte span. - The layout of the data in 'sourceBytes' must be compatible with layout. - - A to configure internal operations. - The to the source bytes. - The to the destination pixels. - The number of pixels to convert. - - - - Converts all pixels of the 'sourcePixels` span to a span of -s. - - A to configure internal operations - The span of source pixels - The destination span of data. - - - - A helper for that expects a byte span as destination. - The layout of the data in 'destBytes' must be compatible with layout. - - A to configure internal operations - The to the source pixels. - The to the destination bytes. - The number of pixels to convert. - - - - Converts all pixels in 'source` span of into a span of -s. - - A to configure internal operations. - The source of data. - The to the destination pixels. - - - - A helper for that expects a byte span. - The layout of the data in 'sourceBytes' must be compatible with layout. - - A to configure internal operations. - The to the source bytes. - The to the destination pixels. - The number of pixels to convert. - - - - Converts all pixels of the 'sourcePixels` span to a span of -s. - - A to configure internal operations - The span of source pixels - The destination span of data. - - - - A helper for that expects a byte span as destination. - The layout of the data in 'destBytes' must be compatible with layout. - - A to configure internal operations - The to the source pixels. - The to the destination bytes. - The number of pixels to convert. - - - - Converts all pixels in 'source` span of into a span of -s. - - A to configure internal operations. - The source of data. - The to the destination pixels. - - - - A helper for that expects a byte span. - The layout of the data in 'sourceBytes' must be compatible with layout. - - A to configure internal operations. - The to the source bytes. - The to the destination pixels. - The number of pixels to convert. - - - - Converts all pixels of the 'sourcePixels` span to a span of -s. - - A to configure internal operations - The span of source pixels - The destination span of data. - - - - A helper for that expects a byte span as destination. - The layout of the data in 'destBytes' must be compatible with layout. - - A to configure internal operations - The to the source pixels. - The to the destination bytes. - The number of pixels to convert. - - - - Converts all pixels in 'source` span of into a span of -s. - - A to configure internal operations. - The source of data. - The to the destination pixels. - - - - A helper for that expects a byte span. - The layout of the data in 'sourceBytes' must be compatible with layout. - - A to configure internal operations. - The to the source bytes. - The to the destination pixels. - The number of pixels to convert. - - - - Converts all pixels of the 'sourcePixels` span to a span of -s. - - A to configure internal operations - The span of source pixels - The destination span of data. - - - - A helper for that expects a byte span as destination. - The layout of the data in 'destBytes' must be compatible with layout. - - A to configure internal operations - The to the source pixels. - The to the destination bytes. - The number of pixels to convert. - - - - Converts all pixels in 'source` span of into a span of -s. - - A to configure internal operations. - The source of data. - The to the destination pixels. - - - - A helper for that expects a byte span. - The layout of the data in 'sourceBytes' must be compatible with layout. - - A to configure internal operations. - The to the source bytes. - The to the destination pixels. - The number of pixels to convert. - - - - Converts all pixels of the 'sourcePixels` span to a span of -s. - - A to configure internal operations - The span of source pixels - The destination span of data. - - - - A helper for that expects a byte span as destination. - The layout of the data in 'destBytes' must be compatible with layout. - - A to configure internal operations - The to the source pixels. - The to the destination bytes. - The number of pixels to convert. - - - - Converts all pixels in 'source` span of into a span of -s. - - A to configure internal operations. - The source of data. - The to the destination pixels. - - - - A helper for that expects a byte span. - The layout of the data in 'sourceBytes' must be compatible with layout. - - A to configure internal operations. - The to the source bytes. - The to the destination pixels. - The number of pixels to convert. - - - - Converts all pixels of the 'sourcePixels` span to a span of -s. - - A to configure internal operations - The span of source pixels - The destination span of data. - - - - A helper for that expects a byte span as destination. - The layout of the data in 'destBytes' must be compatible with layout. - - A to configure internal operations - The to the source pixels. - The to the destination bytes. - The number of pixels to convert. - - - - Find an instance of the pixel blender. - - the blending and composition to apply - A . - - - - Find an instance of the pixel blender. - - The color blending mode to apply - The alpha composition mode to apply - A . - - - - Contains optimized implementations for conversion between pixel formats. - - - Implementations are based on ideas in: - https://github.com/dotnet/coreclr/blob/master/src/System.Private.CoreLib/shared/System/Buffers/Binary/Reader.cs#L84 - The JIT can detect and optimize rotation idioms ROTL (Rotate Left) - and ROTR (Rotate Right) emitting efficient CPU instructions: - https://github.com/dotnet/coreclr/pull/1830 - - - - - Converts a representing a collection of - pixels to a representing - a collection of pixels. - - - - - Converts a representing a collection of - pixels to a representing - a collection of pixels. - - - - - Converts a representing a collection of - pixels to a representing - a collection of pixels. - - - - - Converts a representing a collection of - pixels to a representing - a collection of pixels. - - - - - Converts a representing a collection of - pixels to a representing - a collection of pixels. - - - - - Converts a representing a collection of - pixels to a representing - a collection of pixels. - - - - - Converts a representing a collection of - pixels to a representing - a collection of pixels. - - - - - Converts a representing a collection of - pixels to a representing - a collection of pixels. - - - - - Converts a representing a collection of - pixels to a representing - a collection of pixels. - - - - - Converts a representing a collection of - pixels to a representing - a collection of pixels. - - - - - Converts a representing a collection of - pixels to a representing - a collection of pixels. - - - - - Converts a representing a collection of - pixels to a representing - a collection of pixels. - - - - - Converts a representing a collection of - pixels to a representing - a collection of pixels. - - - - - Converts a representing a collection of - pixels to a representing - a collection of pixels. - - - - - Converts a representing a collection of - pixels to a representing - a collection of pixels. - - - - - Converts a representing a collection of - pixels to a representing - a collection of pixels. - - - - - Converts a representing a collection of - pixels to a representing - a collection of pixels. - - - - - Converts a representing a collection of - pixels to a representing - a collection of pixels. - - - - - Converts a representing a collection of - pixels to a representing - a collection of pixels. - - - - - Converts a representing a collection of - pixels to a representing - a collection of pixels. - - - - - Helper class for (bulk) conversion of buffers to/from other buffer types. - - - Contains - - - - - Apply modifiers used requested by ToVector4() conversion. - - - - - Apply modifiers used requested by FromVector4() conversion. - - - - - Provides default implementations for batched to/from conversion. - WARNING: The methods prefixed with "Unsafe" are operating without bounds checking and input validation! - Input validation is the responsibility of the caller! - - - - - Provides efficient implementations for batched to/from conversion. - which is applicable for -compatible pixel types where - returns the same scaled result as . - The method is works by internally converting to a therefore it's not applicable for that type! - - - - - It's not worth to bother the transitive pixel conversion method below this limit. - The value depends on the actual gain brought by the SIMD characteristics of the executing CPU and JIT. - - - - - Provides an efficient default implementation for - The method works by internally converting to a therefore it's not applicable for that type! - - - - - Provides an efficient default implementation for - The method is works by internally converting to a therefore it's not applicable for that type! - - - - - Enumerates the RGBA (red, green, blue, alpha) color components. - - - - - The red component. - - - - - The green component. - - - - - The blue component. - - - - - The alpha component. - - - - - A structure encapsulating a 5x4 matrix used for transforming the color and alpha components of an image. - - - - - Value at row 1, column 1 of the matrix. - - - - - Value at row 1, column 2 of the matrix. - - - - - Value at row 1, column 3 of the matrix. - - - - - Value at row 1, column 4 of the matrix. - - - - - Value at row 2, column 1 of the matrix. - - - - - Value at row 2, column 2 of the matrix. - - - - - Value at row 2, column 3 of the matrix. - - - - - Value at row 2, column 4 of the matrix. - - - - - Value at row 3, column 1 of the matrix. - - - - - Value at row 3, column 2 of the matrix. - - - - - Value at row 3, column 3 of the matrix. - - - - - Value at row 3, column 4 of the matrix. - - - - - Value at row 4, column 1 of the matrix. - - - - - Value at row 4, column 2 of the matrix. - - - - - Value at row 4, column 3 of the matrix. - - - - - Value at row 4, column 4 of the matrix. - - - - - Value at row 5, column 1 of the matrix. - - - - - Value at row 5, column 2 of the matrix. - - - - - Value at row 5, column 3 of the matrix. - - - - - Value at row 5, column 4 of the matrix. - - - - - Initializes a new instance of the struct. - - The value at row 1, column 1 of the matrix. - The value at row 1, column 2 of the matrix. - The value at row 1, column 3 of the matrix. - The value at row 1, column 4 of the matrix. - The value at row 2, column 1 of the matrix. - The value at row 2, column 2 of the matrix. - The value at row 2, column 3 of the matrix. - The value at row 2, column 4 of the matrix. - The value at row 3, column 1 of the matrix. - The value at row 3, column 2 of the matrix. - The value at row 3, column 3 of the matrix. - The value at row 3, column 4 of the matrix. - The value at row 4, column 1 of the matrix. - The value at row 4, column 2 of the matrix. - The value at row 4, column 3 of the matrix. - The value at row 4, column 4 of the matrix. - The value at row 5, column 1 of the matrix. - The value at row 5, column 2 of the matrix. - The value at row 5, column 3 of the matrix. - The value at row 5, column 4 of the matrix. - - - - Gets the multiplicative identity matrix. - - - - - Gets a value indicating whether the matrix is the identity matrix. - - - - - Adds two matrices together. - - The first source matrix. - The second source matrix. - The resulting matrix. - - - - Subtracts the second matrix from the first. - - The first source matrix. - The second source matrix. - The result of the subtraction. - - - - Returns a new matrix with the negated elements of the given matrix. - - The source matrix. - The negated matrix. - - - - Multiplies a matrix by another matrix. - - The first source matrix. - The second source matrix. - The result of the multiplication. - - - - Multiplies a matrix by a scalar value. - - The source matrix. - The scaling factor. - The scaled matrix. - - - - Returns a boolean indicating whether the given two matrices are equal. - - The first matrix to compare. - The second matrix to compare. - True if the given matrices are equal; False otherwise. - - - - Returns a boolean indicating whether the given two matrices are not equal. - - The first matrix to compare. - The second matrix to compare. - True if the given matrices are equal; False otherwise. - - - - - - - - - - - - - - - - Represents a complex number, where the real and imaginary parts are stored as values. - - - This is a more efficient version of the type. - - - - - The real part of the complex number - - - - - The imaginary part of the complex number - - - - - Initializes a new instance of the struct. - - The real part in the complex number. - The imaginary part in the complex number. - - - - Performs the multiplication operation between a instance and a scalar. - - The value to multiply. - The scalar to use to multiply the value. - The result - - - - Performs the multiplication operation between a instance and a . - - The value to multiply. - The instance to use to multiply the value. - The result - - - - Performs the multiplication operation between a instance and a . - - The value to multiply. - The instance to use to multiply the value. - The result - - - - - - - - - - - - - - - - A vector with 4 values of type . - - - - - The real part of the complex vector - - - - - The imaginary part of the complex number - - - - - Sums the values in the input to the current instance - - The input to sum - - - - Performs a weighted sum on the current instance according to the given parameters - - The 'a' parameter, for the real component - The 'b' parameter, for the imaginary component - The resulting value - - - - - - - - - - - - - Represents a dense matrix with arbitrary elements. - Components that are adjacent in a column of the matrix are adjacent in the storage array. - The components are said to be stored in column major order. - - The type of elements in the matrix. - - - - The 1D representation of the dense matrix. - - - - - Gets the number of columns in the dense matrix. - - - - - Gets the number of rows in the dense matrix. - - - - - Gets the size of the dense matrix. - - - - - Gets the number of items in the array. - - - - - Initializes a new instance of the struct. - - The length of each side in the matrix. - - - - Initializes a new instance of the struct. - - The number of columns. - The number of rows. - - - - Initializes a new instance of the struct. - - The 2D array to provide access to. - - - - Gets a span wrapping the . - - - - - Gets or sets the item at the specified position. - - The row-coordinate of the item. Must be greater than or equal to zero and less than the height of the array. - The column-coordinate of the item. Must be greater than or equal to zero and less than the width of the array. - The at the specified position. - - - - Performs an implicit conversion from a to a . - - The source array. - - The representation on the source data. - - - - - Performs an implicit conversion from a to a . - - The source array. - - The representation on the source data. - - - - - Compares the two instances to determine whether they are unequal. - - The first source instance. - The second source instance. - The . - - - - Compares the two instances to determine whether they are equal. - - The first source instance. - The second source instance. - The . - - - - Transposes the rows and columns of the dense matrix. - - The . - - - - Fills the matrix with the given value - - The value to fill each item with - - - - Clears the matrix setting each value to the default value for the element type - - - - - Checks the coordinates to ensure they are within bounds. - - The y-coordinate of the item. Must be greater than zero and smaller than the height of the matrix. - The x-coordinate of the item. Must be greater than zero and smaller than the width of the matrix. - - Thrown if the coordinates are not within the bounds of the array. - - - - - - - - - - - - - - Represents a number that can be expressed as a fraction. - - - This is a very simplified implementation of a rational number designed for use with metadata only. - - - - - Initializes a new instance of the struct. - - - The number above the line in a vulgar fraction showing how many of the parts - indicated by the denominator are taken. - - - The number below the line in a vulgar fraction; a divisor. - - - - - Gets the numerator of a number. - - - - - Gets the denominator of a number. - - - - - Gets a value indicating whether this instance is indeterminate. - - - - - Gets a value indicating whether this instance is an integer (n, 1) - - - - - Gets a value indicating whether this instance is equal to negative infinity (-1, 0) - - - - - Gets a value indicating whether this instance is equal to positive infinity (1, 0) - - - - - Gets a value indicating whether this instance is equal to 0 (0, 1) - - - - - - - - - - - - - - Converts the numeric value of this instance to its equivalent string representation using - the specified culture-specific format information. - - - An object that supplies culture-specific formatting information. - - The - - - - Create a new instance of the struct from a double value. - - The to create the instance from. - Whether to use the best possible precision when parsing the value. - - - - Finds the greatest common divisor of two values. - - The first value - The second value - The - - - - Simplifies the - - - - - Extension methods for the struct. - - - - - Creates a translation matrix from the given vector. - - The translation position. - A translation matrix. - - - - Creates a scale matrix that is offset by a given center point. - - Value to scale by on the X-axis. - Value to scale by on the Y-axis. - The center point. - A scaling matrix. - - - - Creates a scale matrix from the given vector scale. - - The scale to use. - A scaling matrix. - - - - Creates a scale matrix from the given vector scale with an offset from the given center point. - - The scale to use. - The center offset. - A scaling matrix. - - - - Creates a scale matrix that scales uniformly with the given scale with an offset from the given center. - - The uniform scale to use. - The center offset. - A scaling matrix. - - - - Creates a skew matrix from the given angles in degrees. - - The X angle, in degrees. - The Y angle, in degrees. - A skew matrix. - - - - Creates a skew matrix from the given angles in radians and a center point. - - The X angle, in radians. - The Y angle, in radians. - The center point. - A skew matrix. - - - - Creates a skew matrix from the given angles in degrees and a center point. - - The X angle, in degrees. - The Y angle, in degrees. - The center point. - A skew matrix. - - - - Creates a rotation matrix using the given rotation in degrees. - - The amount of rotation, in degrees. - A rotation matrix. - - - - Creates a rotation matrix using the given rotation in radians and a center point. - - The amount of rotation, in radians. - The center point. - A rotation matrix. - - - - Creates a rotation matrix using the given rotation in degrees and a center point. - - The amount of rotation, in degrees. - The center point. - A rotation matrix. - - - - Represents an integral number. - - - - - Initializes a new instance of the struct. - - The value of the number. - - - - Initializes a new instance of the struct. - - The value of the number. - - - - Converts the specified to an instance of this type. - - The value. - - - - Converts the specified to an instance of this type. - - The value. - - - - Converts the specified to an instance of this type. - - The value. - - - - Converts the specified to a . - - The to convert. - - - - Converts the specified to a . - - The to convert. - - - - Converts the specified to a . - - The to convert. - - - - Determines whether the specified instances are considered equal. - - The first to compare. - The second to compare. - - - - Determines whether the specified instances are not considered equal. - - The first to compare. - The second to compare. - - - - Determines whether the first is more than the second . - - The first to compare. - The second to compare. - - - - Determines whether the first is less than the second . - - The first to compare. - The second to compare. - - - - Determines whether the first is more than or equal to the second . - - The first to compare. - The second to compare. - - - - Determines whether the first is less than or equal to the second . - - The first to compare. - The second to compare. - - - - - - - - - - - - - - - - - - - Converts the numeric value of this instance to its equivalent string representation using the specified culture-specific format information. - - An object that supplies culture-specific formatting information. - The string representation of the value of this instance, which consists of a sequence of digits ranging from 0 to 9, without a sign or leading zeros. - - - - Represents an ordered pair of integer x- and y-coordinates that defines a point in - a two-dimensional plane. - - - This struct is fully mutable. This is done (against the guidelines) for the sake of performance, - as it avoids the need to create new values for modification operations. - - - - - Represents a that has X and Y values set to zero. - - - - - Initializes a new instance of the struct. - - The horizontal and vertical position of the point. - - - - Initializes a new instance of the struct. - - The horizontal position of the point. - The vertical position of the point. - - - - Initializes a new instance of the struct from the given . - - The size. - - - - Gets or sets the x-coordinate of this . - - - - - Gets or sets the y-coordinate of this . - - - - - Gets a value indicating whether this is empty. - - - - - Creates a with the coordinates of the specified . - - The point. - - - - Creates a with the coordinates of the specified . - - The point. - - - - Creates a with the coordinates of the specified . - - The point. - - - - Negates the given point by multiplying all values by -1. - - The source point. - The negated point. - - - - Translates a by a given . - - The point on the left hand of the operand. - The size on the right hand of the operand. - - The . - - - - - Translates a by the negative of a given . - - The point on the left hand of the operand. - The size on the right hand of the operand. - The . - - - - Multiplies by a producing . - - Multiplier of type . - Multiplicand of type . - Product of type . - - - - Multiplies by a producing . - - Multiplicand of type . - Multiplier of type . - Product of type . - - - - Divides by a producing . - - Dividend of type . - Divisor of type . - Result of type . - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the current left is equal to the parameter; otherwise, false. - - - - - Compares two objects for inequality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the current left is unequal to the parameter; otherwise, false. - - - - - Translates a by the negative of a given . - - The point on the left hand of the operand. - The size on the right hand of the operand. - The . - - - - Translates a by the negative of a given value. - - The point on the left hand of the operand. - The value on the right hand of the operand. - The . - - - - Translates a by the negative of a given . - - The point on the left hand of the operand. - The size on the right hand of the operand. - The . - - - - Converts a to a by performing a ceiling operation on all the coordinates. - - The point. - The . - - - - Converts a to a by performing a round operation on all the coordinates. - - The point. - The . - - - - Converts a to a by performing a round operation on all the coordinates. - - The vector. - The . - - - - Converts a to a by performing a truncate operation on all the coordinates. - - The point. - The . - - - - Transforms a point by a specified 3x2 matrix. - - The point to transform. - The transformation matrix used. - The transformed . - - - - Deconstructs this point into two integers. - - The out value for X. - The out value for Y. - - - - Translates this by the specified amount. - - The amount to offset the x-coordinate. - The amount to offset the y-coordinate. - - - - Translates this by the specified amount. - - The used offset this . - - - - - - - - - - - - - - - - Represents an ordered pair of single precision floating point x- and y-coordinates that defines a point in - a two-dimensional plane. - - - This struct is fully mutable. This is done (against the guidelines) for the sake of performance, - as it avoids the need to create new values for modification operations. - - - - - Represents a that has X and Y values set to zero. - - - - - Initializes a new instance of the struct. - - The horizontal position of the point. - The vertical position of the point. - - - - Initializes a new instance of the struct from the given . - - The size. - - - - Gets or sets the x-coordinate of this . - - - - - Gets or sets the y-coordinate of this . - - - - - Gets a value indicating whether this is empty. - - - - - Creates a with the coordinates of the specified . - - The vector. - - The . - - - - - Creates a with the coordinates of the specified . - - The point. - - The . - - - - - Creates a with the coordinates of the specified by truncating each of the coordinates. - - The point. - - The . - - - - - Negates the given point by multiplying all values by -1. - - The source point. - The negated point. - - - - Translates a by a given . - - The point on the left hand of the operand. - The size on the right hand of the operand. - - The . - - - - - Translates a by the negative of a given . - - The point on the left hand of the operand. - The size on the right hand of the operand. - The . - - - - Translates a by a given . - - The point on the left hand of the operand. - The size on the right hand of the operand. - - The . - - - - - Translates a by the negative of a given . - - The point on the left hand of the operand. - The size on the right hand of the operand. - The . - - - - Multiplies by a producing . - - Multiplier of type . - Multiplicand of type . - Product of type . - - - - Multiplies by a producing . - - Multiplicand of type . - Multiplier of type . - Product of type . - - - - Divides by a producing . - - Dividend of type . - Divisor of type . - Result of type . - - - - Compares two objects for equality. - - - The on the left side of the operand. - - - The on the right side of the operand. - - - True if the current left is equal to the parameter; otherwise, false. - - - - - Compares two objects for inequality. - - - The on the left side of the operand. - - - The on the right side of the operand. - - - True if the current left is unequal to the parameter; otherwise, false. - - - - - Translates a by the given . - - The point on the left hand of the operand. - The size on the right hand of the operand. - The . - - - - Translates a by the given . - - The point on the left hand of the operand. - The point on the right hand of the operand. - The . - - - - Translates a by the negative of a given . - - The point on the left hand of the operand. - The size on the right hand of the operand. - The . - - - - Translates a by the negative of a given . - - The point on the left hand of the operand. - The point on the right hand of the operand. - The . - - - - Translates a by the multiplying the X and Y by the given value. - - The point on the left hand of the operand. - The value on the right hand of the operand. - The . - - - - Transforms a point by a specified 3x2 matrix. - - The point to transform. - The transformation matrix used. - The transformed . - - - - Deconstructs this point into two floats. - - The out value for X. - The out value for Y. - - - - Translates this by the specified amount. - - The amount to offset the x-coordinate. - The amount to offset the y-coordinate. - - - - Translates this by the specified amount. - - The used offset this . - - - - - - - - - - - - - - - - Represents a number that can be expressed as a fraction. - - - This is a very simplified implementation of a rational number designed for use with metadata only. - - - - - Initializes a new instance of the struct. - - The to create the rational from. - - - - Initializes a new instance of the struct. - - The number above the line in a vulgar fraction showing how many of the parts indicated by the denominator are taken. - The number below the line in a vulgar fraction; a divisor. - - - - Initializes a new instance of the struct. - - The number above the line in a vulgar fraction showing how many of the parts indicated by the denominator are taken. - The number below the line in a vulgar fraction; a divisor. - Specified if the rational should be simplified. - - - - Initializes a new instance of the struct. - - The to create the instance from. - - - - Initializes a new instance of the struct. - - The to create the instance from. - Whether to use the best possible precision when parsing the value. - - - - Gets the numerator of a number. - - - - - Gets the denominator of a number. - - - - - Determines whether the specified instances are considered equal. - - The first to compare. - The second to compare. - The - - - - Determines whether the specified instances are not considered equal. - - The first to compare. - The second to compare. - The - - - - Converts the specified to an instance of this type. - - The to convert to an instance of this type. - - The . - - - - - Converts the specified to an instance of this type. - - The to convert to an instance of this type. - Whether to use the best possible precision when parsing the value. - - The . - - - - - - - - - - - - - - Converts a rational number to the nearest . - - - The . - - - - - - - - Converts the numeric value of this instance to its equivalent string representation using - the specified culture-specific format information. - - - An object that supplies culture-specific formatting information. - - The - - - - Stores a set of four integers that represent the location and size of a rectangle. - - - This struct is fully mutable. This is done (against the guidelines) for the sake of performance, - as it avoids the need to create new values for modification operations. - - - - - Represents a that has X, Y, Width, and Height values set to zero. - - - - - Initializes a new instance of the struct. - - The horizontal position of the rectangle. - The vertical position of the rectangle. - The width of the rectangle. - The height of the rectangle. - - - - Initializes a new instance of the struct. - - - The which specifies the rectangles point in a two-dimensional plane. - - - The which specifies the rectangles height and width. - - - - - Gets or sets the x-coordinate of this . - - - - - Gets or sets the y-coordinate of this . - - - - - Gets or sets the width of this . - - - - - Gets or sets the height of this . - - - - - Gets or sets the coordinates of the upper-left corner of the rectangular region represented by this . - - - - - Gets or sets the size of this . - - - - - Gets a value indicating whether this is empty. - - - - - Gets the y-coordinate of the top edge of this . - - - - - Gets the x-coordinate of the right edge of this . - - - - - Gets the y-coordinate of the bottom edge of this . - - - - - Gets the x-coordinate of the left edge of this . - - - - - Creates a with the coordinates of the specified . - - The rectangle. - - - - Creates a with the coordinates of the specified . - - The rectangle. - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the current left is equal to the parameter; otherwise, false. - - - - - Compares two objects for inequality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the current left is unequal to the parameter; otherwise, false. - - - - - Creates a new with the specified location and size. - The left coordinate of the rectangle. - The top coordinate of the rectangle. - The right coordinate of the rectangle. - The bottom coordinate of the rectangle. - The . - - - - Returns the center point of the given . - - The rectangle. - The . - - - - Creates a rectangle that represents the intersection between and - . If there is no intersection, an empty rectangle is returned. - - The first rectangle. - The second rectangle. - The . - - - - Creates a that is inflated by the specified amount. - - The rectangle. - The amount to inflate the width by. - The amount to inflate the height by. - A new . - - - - Converts a to a by performing a ceiling operation on all the coordinates. - - The rectangle. - The . - - - - Transforms a rectangle by the given matrix. - - The source rectangle. - The transformation matrix. - A transformed rectangle. - - - - Converts a to a by performing a truncate operation on all the coordinates. - - The rectangle. - The . - - - - Converts a to a by performing a round operation on all the coordinates. - - The rectangle. - The . - - - - Creates a rectangle that represents the union between and . - - The first rectangle. - The second rectangle. - The . - - - - Deconstructs this rectangle into four integers. - - The out value for X. - The out value for Y. - The out value for the width. - The out value for the height. - - - - Creates a Rectangle that represents the intersection between this Rectangle and the . - - The rectangle. - - - - Inflates this by the specified amount. - - The width. - The height. - - - - Inflates this by the specified amount. - - The size. - - - - Determines if the specfied point is contained within the rectangular region defined by - this . - - The x-coordinate of the given point. - The y-coordinate of the given point. - The . - - - - Determines if the specified point is contained within the rectangular region defined by this . - - The point. - The . - - - - Determines if the rectangular region represented by is entirely contained - within the rectangular region represented by this . - - The rectangle. - The . - - - - Determines if the specfied intersects the rectangular region defined by - this . - - The other Rectange. - The . - - - - Adjusts the location of this rectangle by the specified amount. - - The point. - - - - Adjusts the location of this rectangle by the specified amount. - - The amount to offset the x-coordinate. - The amount to offset the y-coordinate. - - - - - - - - - - - - - - - - Stores a set of four single precision floating points that represent the location and size of a rectangle. - - - This struct is fully mutable. This is done (against the guidelines) for the sake of performance, - as it avoids the need to create new values for modification operations. - - - - - Represents a that has X, Y, Width, and Height values set to zero. - - - - - Initializes a new instance of the struct. - - The horizontal position of the rectangle. - The vertical position of the rectangle. - The width of the rectangle. - The height of the rectangle. - - - - Initializes a new instance of the struct. - - - The which specifies the rectangles point in a two-dimensional plane. - - - The which specifies the rectangles height and width. - - - - - Gets or sets the x-coordinate of this . - - - - - Gets or sets the y-coordinate of this . - - - - - Gets or sets the width of this . - - - - - Gets or sets the height of this . - - - - - Gets or sets the coordinates of the upper-left corner of the rectangular region represented by this . - - - - - Gets or sets the size of this . - - - - - Gets a value indicating whether this is empty. - - - - - Gets the y-coordinate of the top edge of this . - - - - - Gets the x-coordinate of the right edge of this . - - - - - Gets the y-coordinate of the bottom edge of this . - - - - - Gets the x-coordinate of the left edge of this . - - - - - Creates a with the coordinates of the specified by truncating each coordinate. - - The rectangle. - - - - Compares two objects for equality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the current left is equal to the parameter; otherwise, false. - - - - - Compares two objects for inequality. - - The on the left side of the operand. - The on the right side of the operand. - - True if the current left is unequal to the parameter; otherwise, false. - - - - - Creates a new with the specified location and size. - The left coordinate of the rectangle. - The top coordinate of the rectangle. - The right coordinate of the rectangle. - The bottom coordinate of the rectangle. - The . - - - - Returns the center point of the given . - - The rectangle. - The . - - - - Creates a rectangle that represents the intersection between and - . If there is no intersection, an empty rectangle is returned. - - The first rectangle. - The second rectangle. - The . - - - - Creates a that is inflated by the specified amount. - - The rectangle. - The amount to inflate the width by. - The amount to inflate the height by. - A new . - - - - Transforms a rectangle by the given matrix. - - The source rectangle. - The transformation matrix. - A transformed . - - - - Creates a rectangle that represents the union between and . - - The first rectangle. - The second rectangle. - The . - - - - Deconstructs this rectangle into four floats. - - The out value for X. - The out value for Y. - The out value for the width. - The out value for the height. - - - - Creates a RectangleF that represents the intersection between this RectangleF and the . - - The rectangle. - - - - Inflates this by the specified amount. - - The width. - The height. - - - - Inflates this by the specified amount. - - The size. - - - - Determines if the specfied point is contained within the rectangular region defined by - this . - - The x-coordinate of the given point. - The y-coordinate of the given point. - The . - - - - Determines if the specified point is contained within the rectangular region defined by this . - - The point. - The . - - - - Determines if the rectangular region represented by is entirely contained - within the rectangular region represented by this . - - The rectangle. - The . - - - - Determines if the specfied intersects the rectangular region defined by - this . - - The other Rectange. - The . - - - - Adjusts the location of this rectangle by the specified amount. - - The point. - - - - Adjusts the location of this rectangle by the specified amount. - - The amount to offset the x-coordinate. - The amount to offset the y-coordinate. - - - - - - - - - - - - - - - - Represents a number that can be expressed as a fraction. - - - This is a very simplified implementation of a rational number designed for use with metadata only. - - - - - Initializes a new instance of the struct. - - The to create the rational from. - - - - Initializes a new instance of the struct. - - The number above the line in a vulgar fraction showing how many of the parts indicated by the denominator are taken. - The number below the line in a vulgar fraction; a divisor. - - - - Initializes a new instance of the struct. - - The number above the line in a vulgar fraction showing how many of the parts indicated by the denominator are taken. - The number below the line in a vulgar fraction; a divisor. - Specified if the rational should be simplified. - - - - Initializes a new instance of the struct. - - The to create the instance from. - - - - Initializes a new instance of the struct. - - The to create the instance from. - Whether to use the best possible precision when parsing the value. - - - - Gets the numerator of a number. - - - - - Gets the denominator of a number. - - - - - Determines whether the specified instances are considered equal. - - The first to compare. - The second to compare. - The - - - - Determines whether the specified instances are not considered equal. - - The first to compare. - The second to compare. - The - - - - Converts the specified to an instance of this type. - - The to convert to an instance of this type. - - The . - - - - - Converts the specified to an instance of this type. - - The to convert to an instance of this type. - Whether to use the best possible precision when parsing the value. - - The . - - - - - - - - - - - - - - Converts a rational number to the nearest . - - - The . - - - - - - - - Converts the numeric value of this instance to its equivalent string representation using - the specified culture-specific format information. - - - An object that supplies culture-specific formatting information. - - The - - - - Stores an ordered pair of integers, which specify a height and width. - - - This struct is fully mutable. This is done (against the guidelines) for the sake of performance, - as it avoids the need to create new values for modification operations. - - - - - Represents a that has Width and Height values set to zero. - - - - - Initializes a new instance of the struct. - - The width and height of the size. - - - - Initializes a new instance of the struct. - - The width of the size. - The height of the size. - - - - Initializes a new instance of the struct. - - The size. - - - - Initializes a new instance of the struct from the given . - - The point. - - - - Gets or sets the width of this . - - - - - Gets or sets the height of this . - - - - - Gets a value indicating whether this is empty. - - - - - Creates a with the dimensions of the specified . - - The point. - - - - Converts the given into a . - - The size. - - - - Computes the sum of adding two sizes. - - The size on the left hand of the operand. - The size on the right hand of the operand. - - The . - - - - - Computes the difference left by subtracting one size from another. - - The size on the left hand of the operand. - The size on the right hand of the operand. - - The . - - - - - Multiplies a by an producing . - - Multiplier of type . - Multiplicand of type . - Product of type . - - - - Multiplies by an producing . - - Multiplicand of type . - Multiplier of type . - Product of type . - - - - Divides by an producing . - - Dividend of type . - Divisor of type . - Result of type . - - - - Multiplies by a producing . - - Multiplier of type . - Multiplicand of type . - Product of type . - - - - Multiplies by a producing . - - Multiplicand of type . - Multiplier of type . - Product of type . - - - - Divides by a producing . - - Dividend of type . - Divisor of type . - Result of type . - - - - Compares two objects for equality. - - - The on the left side of the operand. - - - The on the right side of the operand. - - - True if the current left is equal to the parameter; otherwise, false. - - - - - Compares two objects for inequality. - - - The on the left side of the operand. - - - The on the right side of the operand. - - - True if the current left is unequal to the parameter; otherwise, false. - - - - - Performs vector addition of two objects. - - The size on the left hand of the operand. - The size on the right hand of the operand. - The . - - - - Contracts a by another . - - The size on the left hand of the operand. - The size on the right hand of the operand. - The . - - - - Converts a to a by performing a ceiling operation on all the dimensions. - - The size. - The . - - - - Converts a to a by performing a round operation on all the dimensions. - - The size. - The . - - - - Transforms a size by the given matrix. - - The source size. - The transformation matrix. - A transformed size. - - - - Converts a to a by performing a round operation on all the dimensions. - - The size. - The . - - - - Deconstructs this size into two integers. - - The out value for the width. - The out value for the height. - - - - - - - - - - - - - - - - Multiplies by an producing . - - Multiplicand of type . - Multiplier of type . - Product of type . - - - - Multiplies by a producing . - - Multiplicand of type . - Multiplier of type . - Product of type SizeF. - - - - Stores an ordered pair of single precision floating points, which specify a height and width. - - - This struct is fully mutable. This is done (against the guidelines) for the sake of performance, - as it avoids the need to create new values for modification operations. - - - - - Represents a that has Width and Height values set to zero. - - - - - Initializes a new instance of the struct. - - The width of the size. - The height of the size. - - - - Initializes a new instance of the struct. - - The size. - - - - Initializes a new instance of the struct from the given . - - The point. - - - - Gets or sets the width of this . - - - - - Gets or sets the height of this . - - - - - Gets a value indicating whether this is empty. - - - - - Creates a with the coordinates of the specified . - - The point. - - The . - - - - - Creates a with the dimensions of the specified by truncating each of the dimensions. - - The size. - - The . - - - - - Converts the given into a . - - The size. - - - - Computes the sum of adding two sizes. - - The size on the left hand of the operand. - The size on the right hand of the operand. - - The . - - - - - Computes the difference left by subtracting one size from another. - - The size on the left hand of the operand. - The size on the right hand of the operand. - - The . - - - - - Multiplies by a producing . - - Multiplier of type . - Multiplicand of type . - Product of type . - - - - Multiplies by a producing . - - Multiplicand of type . - Multiplier of type . - Product of type . - - - - Divides by a producing . - - Dividend of type . - Divisor of type . - Result of type . - - - - Compares two objects for equality. - - The size on the left hand of the operand. - The size on the right hand of the operand. - - True if the current left is equal to the parameter; otherwise, false. - - - - - Compares two objects for inequality. - - The size on the left hand of the operand. - The size on the right hand of the operand. - - True if the current left is unequal to the parameter; otherwise, false. - - - - - Performs vector addition of two objects. - - The size on the left hand of the operand. - The size on the right hand of the operand. - The . - - - - Contracts a by another . - - The size on the left hand of the operand. - The size on the right hand of the operand. - The . - - - - Transforms a size by the given matrix. - - The source size. - The transformation matrix. - A transformed size. - - - - Deconstructs this size into two floats. - - The out value for the width. - The out value for the height. - - - - - - - - - - - - - - - - Multiplies by a producing . - - Multiplicand of type . - Multiplier of type . - Product of type SizeF. - - - - Represents a value in relation to a value on the image. - - - - - Initializes a new instance of the struct. - - The value. - The type. - - - - Enumerates the different value types. - - - - - The value is the final return value. - - - - - The value is a percentage of the image width. - - - - - The value is a percentage of the images height. - - - - - Gets the value. - - - - - Gets the type. - - - - - Implicitly converts a float into an absolute value. - - the value to use as the absolute figure. - - - - Create a new ValueSize with as a PercentageOfWidth type with value set to percentage. - - The percentage. - a Values size with type PercentageOfWidth - - - - Create a new ValueSize with as a PercentageOfHeight type with value set to percentage. - - The percentage. - a Values size with type PercentageOfHeight - - - - Create a new ValueSize with as a Absolute type with value set to value. - - The value. - a Values size with type Absolute. - - - - Calculates the specified size. - - The size. - The calculated value. - - - - - - - - - - - - - - - - Extensions to perform AdaptiveThreshold through Mutator. - - - - - Applies Bradley Adaptive Threshold to the image. - - The image this method extends. - The . - - - - Applies Bradley Adaptive Threshold to the image. - - The image this method extends. - Threshold limit (0.0-1.0) to consider for binarization. - The . - - - - Applies Bradley Adaptive Threshold to the image. - - The image this method extends. - Upper (white) color for thresholding. - Lower (black) color for thresholding. - The . - - - - Applies Bradley Adaptive Threshold to the image. - - The image this method extends. - Upper (white) color for thresholding. - Lower (black) color for thresholding. - Threshold limit (0.0-1.0) to consider for binarization. - The . - - - - Applies Bradley Adaptive Threshold to the image. - - The image this method extends. - Upper (white) color for thresholding. - Lower (black) color for thresholding. - Rectangle region to apply the processor on. - The . - - - - Applies Bradley Adaptive Threshold to the image. - - The image this method extends. - Upper (white) color for thresholding. - Lower (black) color for thresholding. - Threshold limit (0.0-1.0) to consider for binarization. - Rectangle region to apply the processor on. - The . - - - - A helper class for constructing instances for use in affine transforms. - - - - - Prepends a rotation matrix using the given rotation angle in degrees - and the image center point as rotation center. - - The amount of rotation, in degrees. - The . - - - - Prepends a rotation matrix using the given rotation angle in radians - and the image center point as rotation center. - - The amount of rotation, in radians. - The . - - - - Prepends a rotation matrix using the given rotation in degrees at the given origin. - - The amount of rotation, in degrees. - The rotation origin point. - The . - - - - Prepends a rotation matrix using the given rotation in radians at the given origin. - - The amount of rotation, in radians. - The rotation origin point. - The . - - - - Appends a rotation matrix using the given rotation angle in degrees - and the image center point as rotation center. - - The amount of rotation, in degrees. - The . - - - - Appends a rotation matrix using the given rotation angle in radians - and the image center point as rotation center. - - The amount of rotation, in radians. - The . - - - - Appends a rotation matrix using the given rotation in degrees at the given origin. - - The amount of rotation, in degrees. - The rotation origin point. - The . - - - - Appends a rotation matrix using the given rotation in radians at the given origin. - - The amount of rotation, in radians. - The rotation origin point. - The . - - - - Prepends a scale matrix from the given uniform scale. - - The uniform scale. - The . - - - - Prepends a scale matrix from the given vector scale. - - The horizontal and vertical scale. - The . - - - - Prepends a scale matrix from the given vector scale. - - The horizontal and vertical scale. - The . - - - - Appends a scale matrix from the given uniform scale. - - The uniform scale. - The . - - - - Appends a scale matrix from the given vector scale. - - The horizontal and vertical scale. - The . - - - - Appends a scale matrix from the given vector scale. - - The horizontal and vertical scale. - The . - - - - Prepends a centered skew matrix from the give angles in degrees. - - The X angle, in degrees. - The Y angle, in degrees. - The . - - - - Prepends a centered skew matrix from the give angles in radians. - - The X angle, in radians. - The Y angle, in radians. - The . - - - - Prepends a skew matrix using the given angles in degrees at the given origin. - - The X angle, in degrees. - The Y angle, in degrees. - The skew origin point. - The . - - - - Prepends a skew matrix using the given angles in radians at the given origin. - - The X angle, in radians. - The Y angle, in radians. - The skew origin point. - The . - - - - Appends a centered skew matrix from the give angles in degrees. - - The X angle, in degrees. - The Y angle, in degrees. - The . - - - - Appends a centered skew matrix from the give angles in radians. - - The X angle, in radians. - The Y angle, in radians. - The . - - - - Appends a skew matrix using the given angles in degrees at the given origin. - - The X angle, in degrees. - The Y angle, in degrees. - The skew origin point. - The . - - - - Appends a skew matrix using the given angles in radians at the given origin. - - The X angle, in radians. - The Y angle, in radians. - The skew origin point. - The . - - - - Prepends a translation matrix from the given vector. - - The translation position. - The . - - - - Prepends a translation matrix from the given vector. - - The translation position. - The . - - - - Appends a translation matrix from the given vector. - - The translation position. - The . - - - - Appends a translation matrix from the given vector. - - The translation position. - The . - - - - Prepends a raw matrix. - - The matrix to prepend. - - The resultant matrix is degenerate containing one or more values equivalent - to or a zero determinant and therefore cannot be used - for linear transforms. - - The . - - - - Appends a raw matrix. - - The matrix to append. - - The resultant matrix is degenerate containing one or more values equivalent - to or a zero determinant and therefore cannot be used - for linear transforms. - - The . - - - - Returns the combined matrix for a given source size. - - The source image size. - The . - - - - Returns the combined matrix for a given source rectangle. - - The rectangle in the source image. - - The resultant matrix is degenerate containing one or more values equivalent - to or a zero determinant and therefore cannot be used - for linear transforms. - - The . - - - - Enumerated anchor positions to apply to resized images. - - - - - Anchors the position of the image to the center of it's bounding container. - - - - - Anchors the position of the image to the top of it's bounding container. - - - - - Anchors the position of the image to the bottom of it's bounding container. - - - - - Anchors the position of the image to the left of it's bounding container. - - - - - Anchors the position of the image to the right of it's bounding container. - - - - - Anchors the position of the image to the top left side of it's bounding container. - - - - - Anchors the position of the image to the top right side of it's bounding container. - - - - - Anchors the position of the image to the bottom right side of it's bounding container. - - - - - Anchors the position of the image to the bottom left side of it's bounding container. - - - - - Selects the value to be compared to threshold. - - - - - Compare the color luminance (according to ITU-R Recommendation BT.709). - - - - - Compare the HSL saturation of the color. - - - - - Compare the maximum of YCbCr chroma value, i.e. Cb and Cr distance from achromatic value. - - - - - Enumerates the various types of defined color blindness filters. - - - - - Partial color desensitivity. - - - - - Complete color desensitivity (Monochrome) - - - - - Green weak - - - - - Green blind - - - - - Red weak - - - - - Red blind - - - - - Blue weak - - - - - Blue blind - - - - - Performs processor application operations on the source image - - The pixel format - - - - Initializes a new instance of the class. - - The configuration which allows altering default behaviour or extending the library. - The source image. - Whether to mutate the image. - - - - - - - - - - - - - - - - - - - - - - Defines extensions to apply binary dithering on an - using Mutate/Clone. - - - - - Dithers the image reducing it to two colors using ordered dithering. - - The image this method extends. - The ordered ditherer. - The to allow chaining of operations. - - - - Dithers the image reducing it to two colors using ordered dithering. - - The image this method extends. - The ordered ditherer. - The color to use for pixels that are above the threshold. - The color to use for pixels that are below the threshold - The to allow chaining of operations. - - - - Dithers the image reducing it to two colors using ordered dithering. - - The image this method extends. - The ordered ditherer. - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Dithers the image reducing it to two colors using ordered dithering. - - The image this method extends. - The ordered ditherer. - The color to use for pixels that are above the threshold. - The color to use for pixels that are below the threshold - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Defines extension methods to apply binary thresholding on an - using Mutate/Clone. - - - - - Applies binarization to the image splitting the pixels at the given threshold with - Luminance as the color component to be compared to threshold. - - The image this method extends. - The threshold to apply binarization of the image. Must be between 0 and 1. - The to allow chaining of operations. - - - - Applies binarization to the image splitting the pixels at the given threshold. - - The image this method extends. - The threshold to apply binarization of the image. Must be between 0 and 1. - Selects the value to be compared to threshold. - The to allow chaining of operations. - - - - Applies binarization to the image splitting the pixels at the given threshold with - Luminance as the color component to be compared to threshold. - - The image this method extends. - The threshold to apply binarization of the image. Must be between 0 and 1. - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Applies binarization to the image splitting the pixels at the given threshold. - - The image this method extends. - The threshold to apply binarization of the image. Must be between 0 and 1. - Selects the value to be compared to threshold. - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Applies binarization to the image splitting the pixels at the given threshold with - Luminance as the color component to be compared to threshold. - - The image this method extends. - The threshold to apply binarization of the image. Must be between 0 and 1. - The color to use for pixels that are above the threshold. - The color to use for pixels that are below the threshold - The to allow chaining of operations. - - - - Applies binarization to the image splitting the pixels at the given threshold. - - The image this method extends. - The threshold to apply binarization of the image. Must be between 0 and 1. - The color to use for pixels that are above the threshold. - The color to use for pixels that are below the threshold - Selects the value to be compared to threshold. - The to allow chaining of operations. - - - - Applies binarization to the image splitting the pixels at the given threshold with - Luminance as the color component to be compared to threshold. - - The image this method extends. - The threshold to apply binarization of the image. Must be between 0 and 1. - The color to use for pixels that are above the threshold. - The color to use for pixels that are below the threshold - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Applies binarization to the image splitting the pixels at the given threshold. - - The image this method extends. - The threshold to apply binarization of the image. Must be between 0 and 1. - The color to use for pixels that are above the threshold. - The color to use for pixels that are below the threshold - Selects the value to be compared to threshold. - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Adds bokeh blurring extensions to the type. - - - - - Applies a bokeh blur to the image. - - The image this method extends. - The to allow chaining of operations. - - - - Applies a bokeh blur to the image. - - The image this method extends. - The 'radius' value representing the size of the area to sample. - The 'components' value representing the number of kernels to use to approximate the bokeh effect. - The gamma highlight factor to use to emphasize bright spots in the source image - The to allow chaining of operations. - - - - Applies a bokeh blur to the image. - - The image this method extends. - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Applies a bokeh blur to the image. - - The image this method extends. - The 'radius' value representing the size of the area to sample. - The 'components' value representing the number of kernels to use to approximate the bokeh effect. - The gamma highlight factor to use to emphasize bright spots in the source image - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Defines extensions methods to apply box blurring to an - using Mutate/Clone. - - - - - Applies a box blur to the image. - - The image this method extends. - The to allow chaining of operations. - - - - Applies a box blur to the image. - - The image this method extends. - The 'radius' value representing the size of the area to sample. - The to allow chaining of operations. - - - - Applies a box blur to the image. - - The image this method extends. - The 'radius' value representing the size of the area to sample. - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Defines edge detection extensions applicable on an using Mutate/Clone. - - - - - Detects any edges within the image. - Uses the kernel operating in grayscale mode. - - The image this method extends. - The to allow chaining of operations. - - - - Detects any edges within the image. - Uses the kernel operating in grayscale mode. - - The image this method extends. - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Detects any edges within the image operating in grayscale mode. - - The image this method extends. - The 2D edge detector kernel. - The to allow chaining of operations. - - - - Detects any edges within the image using a . - - The image this method extends. - The 2D edge detector kernel. - - Whether to convert the image to grayscale before performing edge detection. - - The to allow chaining of operations. - - - - Detects any edges within the image operating in grayscale mode. - - The image this method extends. - The 2D edge detector kernel. - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Detects any edges within the image using a . - - The image this method extends. - The 2D edge detector kernel. - - Whether to convert the image to grayscale before performing edge detection. - - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Detects any edges within the image operating in grayscale mode. - - The image this method extends. - The edge detector kernel. - The to allow chaining of operations. - - - - Detects any edges within the image using a . - - The image this method extends. - The edge detector kernel. - - Whether to convert the image to grayscale before performing edge detection. - - The to allow chaining of operations. - - - - Detects any edges within the image operating in grayscale mode. - - The image this method extends. - The edge detector kernel. - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Detects any edges within the image using a . - - The image this method extends. - The edge detector kernel. - - Whether to convert the image to grayscale before performing edge detection. - - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Detects any edges within the image operating in grayscale mode. - - The image this method extends. - Thecompass edge detector kernel. - The to allow chaining of operations. - - - - Detects any edges within the image using a . - - The image this method extends. - Thecompass edge detector kernel. - - Whether to convert the image to grayscale before performing edge detection. - - The to allow chaining of operations. - - - - Detects any edges within the image operating in grayscale mode. - - The image this method extends. - Thecompass edge detector kernel. - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Detects any edges within the image using a . - - The image this method extends. - Thecompass edge detector kernel. - - Whether to convert the image to grayscale before performing edge detection. - - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Defines Gaussian blurring extensions to apply on an - using Mutate/Clone. - - - - - Applies a Gaussian blur to the image. - - The image this method extends. - The to allow chaining of operations. - - - - Applies a Gaussian blur to the image. - - The image this method extends. - The 'sigma' value representing the weight of the blur. - The to allow chaining of operations. - - - - Applies a Gaussian blur to the image. - - The image this method extends. - The 'sigma' value representing the weight of the blur. - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Defines Gaussian sharpening extensions to apply on an - using Mutate/Clone. - - - - - Applies a Gaussian sharpening filter to the image. - - The image this method extends. - The to allow chaining of operations. - - - - Applies a Gaussian sharpening filter to the image. - - The image this method extends. - The 'sigma' value representing the weight of the blur. - The to allow chaining of operations. - - - - Applies a Gaussian sharpening filter to the image. - - The image this method extends. - The 'sigma' value representing the weight of the blur. - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Defines dithering extensions to apply on an - using Mutate/Clone. - - - - - Dithers the image reducing it to a web-safe palette using . - - The image this method extends. - The to allow chaining of operations. - - - - Dithers the image reducing it to a web-safe palette using ordered dithering. - - The image this method extends. - The ordered ditherer. - The to allow chaining of operations. - - - - Dithers the image reducing it to a web-safe palette using ordered dithering. - - The image this method extends. - The ordered ditherer. - The dithering scale used to adjust the amount of dither. - The to allow chaining of operations. - - - - Dithers the image reducing it to the given palette using ordered dithering. - - The image this method extends. - The ordered ditherer. - The palette to select substitute colors from. - The to allow chaining of operations. - - - - Dithers the image reducing it to the given palette using ordered dithering. - - The image this method extends. - The ordered ditherer. - The dithering scale used to adjust the amount of dither. - The palette to select substitute colors from. - The to allow chaining of operations. - - - - Dithers the image reducing it to a web-safe palette using . - - The image this method extends. - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Dithers the image reducing it to a web-safe palette using ordered dithering. - - The image this method extends. - The ordered ditherer. - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Dithers the image reducing it to a web-safe palette using ordered dithering. - - The image this method extends. - The ordered ditherer. - The dithering scale used to adjust the amount of dither. - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Dithers the image reducing it to the given palette using ordered dithering. - - The image this method extends. - The ordered ditherer. - The palette to select substitute colors from. - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Dithers the image reducing it to the given palette using ordered dithering. - - The image this method extends. - The ordered ditherer. - The dithering scale used to adjust the amount of dither. - The palette to select substitute colors from. - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Adds extensions that allow the drawing of images to the type. - - - - - Draws the given image together with the current one by blending their pixels. - - The image this method extends. - The image to blend with the currently processing image. - The opacity of the image to blend. Must be between 0 and 1. - The . - - - - Draws the given image together with the current one by blending their pixels. - - The image this method extends. - The image to blend with the currently processing image. - The blending mode. - The opacity of the image to blend. Must be between 0 and 1. - The . - - - - Draws the given image together with the current one by blending their pixels. - - The image this method extends. - The image to blend with the currently processing image. - The color blending mode. - The alpha composition mode. - The opacity of the image to blend. Must be between 0 and 1. - The . - - - - Draws the given image together with the current one by blending their pixels. - - The image this method extends. - The image to blend with the currently processing image. - The options, including the blending type and blending amount. - The . - - - - Draws the given image together with the current one by blending their pixels. - - The image this method extends. - The image to blend with the currently processing image. - The location to draw the blended image. - The opacity of the image to blend. Must be between 0 and 1. - The . - - - - Draws the given image together with the current one by blending their pixels. - - The image this method extends. - The image to blend with the currently processing image. - The location to draw the blended image. - The color blending to apply. - The opacity of the image to blend. Must be between 0 and 1. - The . - - - - Draws the given image together with the current one by blending their pixels. - - The image this method extends. - The image to blend with the currently processing image. - The location to draw the blended image. - The color blending to apply. - The alpha composition mode. - The opacity of the image to blend. Must be between 0 and 1. - The . - - - - Draws the given image together with the current one by blending their pixels. - - The image this method extends. - The image to blend with the currently processing image. - The location to draw the blended image. - The options containing the blend mode and opacity. - The . - - - - Defines oil painting effect extensions applicable on an - using Mutate/Clone. - - - - - Alters the colors of the image recreating an oil painting effect with levels and brushSize - set to 10 and 15 respectively. - - The image this method extends. - The to allow chaining of operations. - - - - Alters the colors of the image recreating an oil painting effect with levels and brushSize - set to 10 and 15 respectively. - - The image this method extends. - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Alters the colors of the image recreating an oil painting effect. - - The image this method extends. - The number of intensity levels. Higher values result in a broader range of color intensities forming part of the result image. - The number of neighboring pixels used in calculating each individual pixel value. - The to allow chaining of operations. - - - - Alters the colors of the image recreating an oil painting effect. - - The image this method extends. - The number of intensity levels. Higher values result in a broader range of color intensities forming part of the result image. - The number of neighboring pixels used in calculating each individual pixel value. - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Defines pixelation effect extensions applicable on an - using Mutate/Clone. - - - - - Pixelates an image with the given pixel size. - - The image this method extends. - The to allow chaining of operations. - - - - Pixelates an image with the given pixel size. - - The image this method extends. - The size of the pixels. - The to allow chaining of operations. - - - - Pixelates an image with the given pixel size. - - The image this method extends. - The size of the pixels. - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Defines extension methods that allow the application of user defined processing delegate to an . - - - - - Applies a user defined processing delegate to the image. - - The image this method extends. - The user defined processing delegate to use to modify image rows. - The to allow chaining of operations. - - - - Applies a user defined processing delegate to the image. - - The image this method extends. - The user defined processing delegate to use to modify image rows. - The to apply during the pixel conversions. - The to allow chaining of operations. - - - - Applies a user defined processing delegate to the image. - - The image this method extends. - The user defined processing delegate to use to modify image rows. - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Applies a user defined processing delegate to the image. - - The image this method extends. - The user defined processing delegate to use to modify image rows. - - The structure that specifies the portion of the image object to alter. - - The to apply during the pixel conversions. - The to allow chaining of operations. - - - - Applies a user defined processing delegate to the image. - - The image this method extends. - The user defined processing delegate to use to modify image rows. - The to allow chaining of operations. - - - - Applies a user defined processing delegate to the image. - - The image this method extends. - The user defined processing delegate to use to modify image rows. - The to apply during the pixel conversions. - The to allow chaining of operations. - - - - Applies a user defined processing delegate to the image. - - The image this method extends. - The user defined processing delegate to use to modify image rows. - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Applies a user defined processing delegate to the image. - - The image this method extends. - The user defined processing delegate to use to modify image rows. - - The structure that specifies the portion of the image object to alter. - - The to apply during the pixel conversions. - The to allow chaining of operations. - - - - Defines extension methods that allow the application of black and white toning to an - using Mutate/Clone. - - - - - Applies black and white toning to the image. - - The image this method extends. - The to allow chaining of operations. - - - - Applies black and white toning to the image. - - The image this method extends. - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Defines extensions that allow the alteration of the brightness component of an - using Mutate/Clone. - - - - - Alters the brightness component of the image. - - - A value of 0 will create an image that is completely black. A value of 1 leaves the input unchanged. - Other values are linear multipliers on the effect. Values of an amount over 1 are allowed, providing brighter results. - - The image this method extends. - The proportion of the conversion. Must be greater than or equal to 0. - The to allow chaining of operations. - - - - Alters the brightness component of the image. - - - A value of 0 will create an image that is completely black. A value of 1 leaves the input unchanged. - Other values are linear multipliers on the effect. Values of an amount over 1 are allowed, providing brighter results. - - The image this method extends. - The proportion of the conversion. Must be greater than or equal to 0. - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Defines extensions that simulate the effects of various color blindness disorders on an - using Mutate/Clone. - - - - - Applies the given colorblindness simulator to the image. - - The image this method extends. - The type of color blindness simulator to apply. - The to allow chaining of operations. - - - - Applies the given colorblindness simulator to the image. - - The image this method extends. - The type of color blindness simulator to apply. - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Defines extensions that allow the alteration of the contrast component of an - using Mutate/Clone. - - - - - Alters the contrast component of the image. - - - A value of 0 will create an image that is completely gray. A value of 1 leaves the input unchanged. - Other values are linear multipliers on the effect. Values of an amount over 1 are allowed, providing results with more contrast. - - The image this method extends. - The proportion of the conversion. Must be greater than or equal to 0. - The to allow chaining of operations. - - - - Alters the contrast component of the image. - - - A value of 0 will create an image that is completely gray. A value of 1 leaves the input unchanged. - Other values are linear multipliers on the effect. Values of an amount over 1 are allowed, providing results with more contrast. - - The image this method extends. - The proportion of the conversion. Must be greater than or equal to 0. - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Defines extensions that allow the application of composable filters to an - using Mutate/Clone. - - - - - Filters an image by the given color matrix - - The image this method extends. - The filter color matrix - The to allow chaining of operations. - - - - Filters an image by the given color matrix - - The image this method extends. - The filter color matrix - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Defines extensions that allow the application of grayscale toning to an - using Mutate/Clone. - - - - - Applies grayscale toning to the image. - - The image this method extends. - The . - - - - Applies grayscale toning to the image using the given amount. - - The image this method extends. - The proportion of the conversion. Must be between 0 and 1. - The . - - - - Applies grayscale toning to the image with the given . - - The image this method extends. - The formula to apply to perform the operation. - The . - - - - Applies grayscale toning to the image with the given using the given amount. - - The image this method extends. - The formula to apply to perform the operation. - The proportion of the conversion. Must be between 0 and 1. - The . - - - - Applies grayscale toning to the image. - - The image this method extends. - - The structure that specifies the portion of the image object to alter. - - The . - - - - Applies grayscale toning to the image using the given amount. - - The image this method extends. - The proportion of the conversion. Must be between 0 and 1. - - The structure that specifies the portion of the image object to alter. - - The . - - - - Applies grayscale toning to the image. - - The image this method extends. - The formula to apply to perform the operation. - - The structure that specifies the portion of the image object to alter. - - The . - - - - Applies grayscale toning to the image using the given amount. - - The image this method extends. - The formula to apply to perform the operation. - The proportion of the conversion. Must be between 0 and 1. - - The structure that specifies the portion of the image object to alter. - - The . - - - - Defines extensions that allow the alteration of the hue component of an - using Mutate/Clone. - - - - - Alters the hue component of the image. - - The image this method extends. - The rotation angle in degrees to adjust the hue. - The to allow chaining of operations. - - - - Alters the hue component of the image. - - The image this method extends. - The rotation angle in degrees to adjust the hue. - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Defines extensions that allow the inversion of colors of an - using Mutate/Clone. - - - - - Inverts the colors of the image. - - The image this method extends. - The to allow chaining of operations. - - - - Inverts the colors of the image. - - The image this method extends. - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Defines extensions that allow the recreation of an old Kodachrome camera effect on an - using Mutate/Clone. - - - - - Alters the colors of the image recreating an old Kodachrome camera effect. - - The image this method extends. - The to allow chaining of operations. - - - - Alters the colors of the image recreating an old Kodachrome camera effect. - - The image this method extends. - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Defines extensions that allow the alteration of the lightness component of an - using Mutate/Clone. - - - - - Alters the lightness component of the image. - - - A value of 0 will create an image that is completely black. A value of 1 leaves the input unchanged. - Other values are linear multipliers on the effect. Values of an amount over 1 are allowed, providing lighter results. - - The image this method extends. - The proportion of the conversion. Must be greater than or equal to 0. - The to allow chaining of operations. - - - - Alters the lightness component of the image. - - - A value of 0 will create an image that is completely black. A value of 1 leaves the input unchanged. - Other values are linear multipliers on the effect. Values of an amount over 1 are allowed, providing lighter results. - - The image this method extends. - The proportion of the conversion. Must be greater than or equal to 0. - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Defines extensions that allow the recreation of an old Lomograph camera effect on an - using Mutate/Clone. - - - - - Alters the colors of the image recreating an old Lomograph camera effect. - - The image this method extends. - The to allow chaining of operations. - - - - Alters the colors of the image recreating an old Lomograph camera effect. - - The image this method extends. - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Defines extensions that allow the alteration of the opacity component of an - using Mutate/Clone. - - - - - Multiplies the alpha component of the image. - - The image this method extends. - The proportion of the conversion. Must be between 0 and 1. - The to allow chaining of operations. - - - - Multiplies the alpha component of the image. - - The image this method extends. - The proportion of the conversion. Must be between 0 and 1. - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Defines extensions that allow the recreation of an old Polaroid camera effect on an - using Mutate/Clone. - - - - - Alters the colors of the image recreating an old Polaroid camera effect. - - The image this method extends. - The to allow chaining of operations. - - - - Alters the colors of the image recreating an old Polaroid camera effect. - - The image this method extends. - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Defines extensions that allow the alteration of the saturation component of an - using Mutate/Clone. - - - - - Alters the saturation component of the image. - - - A value of 0 is completely un-saturated. A value of 1 leaves the input unchanged. - Other values are linear multipliers on the effect. Values of amount over 1 are allowed, providing super-saturated results - - The image this method extends. - The proportion of the conversion. Must be greater than or equal to 0. - The to allow chaining of operations. - - - - Alters the saturation component of the image. - - - A value of 0 is completely un-saturated. A value of 1 leaves the input unchanged. - Other values are linear multipliers on the effect. Values of amount over 1 are allowed, providing super-saturated results - - The image this method extends. - The proportion of the conversion. Must be greater than or equal to 0. - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Defines extensions that allow the application of sepia toning on an - using Mutate/Clone. - - - - - Applies sepia toning to the image. - - The image this method extends. - The to allow chaining of operations. - - - - Applies sepia toning to the image using the given amount. - - The image this method extends. - The proportion of the conversion. Must be between 0 and 1. - The to allow chaining of operations. - - - - Applies sepia toning to the image. - - The image this method extends. - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Applies sepia toning to the image. - - The image this method extends. - The proportion of the conversion. Must be between 0 and 1. - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Defines extension that allow the adjustment of the contrast of an image via its histogram. - - - - - Equalizes the histogram of an image to increases the contrast. - - The image this method extends. - The to allow chaining of operations. - - - - Equalizes the histogram of an image to increases the contrast. - - The image this method extends. - The histogram equalization options to use. - The to allow chaining of operations. - - - - Defines extension methods to replace the background color of an - using Mutate/Clone. - - - - - Replaces the background color of image with the given one. - - The image this method extends. - The color to set as the background. - The to allow chaining of operations. - - - - Replaces the background color of image with the given one. - - The image this method extends. - The color to set as the background. - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Replaces the background color of image with the given one. - - The image this method extends. - The options effecting pixel blending. - The color to set as the background. - The to allow chaining of operations. - - - - Replaces the background color of image with the given one. - - The image this method extends. - The options effecting pixel blending. - The color to set as the background. - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Defines extensions that allow the application of a radial glow on an - using Mutate/Clone. - - - - - Applies a radial glow effect to an image. - - The image this method extends. - The to allow chaining of operations. - - - - Applies a radial glow effect to an image. - - The image this method extends. - The color to set as the glow. - The to allow chaining of operations. - - - - Applies a radial glow effect to an image. - - The image this method extends. - The the radius. - The to allow chaining of operations. - - - - Applies a radial glow effect to an image. - - The image this method extends. - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Applies a radial glow effect to an image. - - The image this method extends. - The color to set as the glow. - The the radius. - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Applies a radial glow effect to an image. - - The image this method extends. - The options effecting things like blending. - The to allow chaining of operations. - - - - Applies a radial glow effect to an image. - - The image this method extends. - The options effecting things like blending. - The color to set as the glow. - The to allow chaining of operations. - - - - Applies a radial glow effect to an image. - - The image this method extends. - The options effecting things like blending. - The the radius. - The to allow chaining of operations. - - - - Applies a radial glow effect to an image. - - The image this method extends. - The options effecting things like blending. - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Applies a radial glow effect to an image. - - The image this method extends. - The options effecting things like blending. - The color to set as the glow. - The the radius. - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Applies a radial glow effect to an image. - - The image this method extends. - The options effecting things like blending. - The color to set as the glow. - The the radius. - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Applies a radial glow effect to an image. - - The image this method extends. - The options effecting things like blending. - The color to set as the glow. - The the radius. - The to allow chaining of operations. - - - - Defines extensions that allow the application of a radial glow to an - using Mutate/Clone. - - - - - Applies a radial vignette effect to an image. - - The image this method extends. - The to allow chaining of operations. - - - - Applies a radial vignette effect to an image. - - The image this method extends. - The color to set as the vignette. - The to allow chaining of operations. - - - - Applies a radial vignette effect to an image. - - The image this method extends. - The the x-radius. - The the y-radius. - The to allow chaining of operations. - - - - Applies a radial vignette effect to an image. - - The image this method extends. - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Applies a radial vignette effect to an image. - - The image this method extends. - The color to set as the vignette. - The the x-radius. - The the y-radius. - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Applies a radial vignette effect to an image. - - The image this method extends. - The options effecting pixel blending. - The to allow chaining of operations. - - - - Applies a radial vignette effect to an image. - - The image this method extends. - The options effecting pixel blending. - The color to set as the vignette. - The to allow chaining of operations. - - - - Applies a radial vignette effect to an image. - - The image this method extends. - The options effecting pixel blending. - The the x-radius. - The the y-radius. - The to allow chaining of operations. - - - - Applies a radial vignette effect to an image. - - The image this method extends. - The options effecting pixel blending. - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Applies a radial vignette effect to an image. - - The image this method extends. - The options effecting pixel blending. - The color to set as the vignette. - The the x-radius. - The the y-radius. - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Adds extensions that allow the processing of images to the type. - - - - - Mutates the source image by applying the image operation to it. - - The image to mutate. - The operation to perform on the source. - The source is null. - The operation is null. - The source has been disposed. - The processing operation failed. - - - - Mutates the source image by applying the image operation to it. - - The image to mutate. - The configuration which allows altering default behaviour or extending the library. - The operation to perform on the source. - The configuration is null. - The source is null. - The operation is null. - The source has been disposed. - The processing operation failed. - - - - Mutates the source image by applying the image operation to it. - - The pixel format. - The image to mutate. - The operation to perform on the source. - The source is null. - The operation is null. - The source has been disposed. - The processing operation failed. - - - - Mutates the source image by applying the image operation to it. - - The pixel format. - The image to mutate. - The configuration which allows altering default behaviour or extending the library. - The operation to perform on the source. - The configuration is null. - The source is null. - The operation is null. - The source has been disposed. - The processing operation failed. - - - - Mutates the source image by applying the operations to it. - - The pixel format. - The image to mutate. - The operations to perform on the source. - The source is null. - The operations are null. - The source has been disposed. - The processing operation failed. - - - - Mutates the source image by applying the operations to it. - - The pixel format. - The image to mutate. - The configuration which allows altering default behaviour or extending the library. - The operations to perform on the source. - The configuration is null. - The source is null. - The operations are null. - The source has been disposed. - The processing operation failed. - - - - Creates a deep clone of the current image. The clone is then mutated by the given operation. - - The image to clone. - The operation to perform on the clone. - The new . - The source is null. - The operation is null. - The source has been disposed. - The processing operation failed. - - - - Creates a deep clone of the current image. The clone is then mutated by the given operation. - - The image to clone. - The configuration which allows altering default behaviour or extending the library. - The operation to perform on the clone. - The configuration is null. - The source is null. - The operation is null. - The source has been disposed. - The processing operation failed. - The new . - - - - Creates a deep clone of the current image. The clone is then mutated by the given operation. - - The pixel format. - The image to clone. - The operation to perform on the clone. - The source is null. - The operation is null. - The source has been disposed. - The processing operation failed. - The new . - - - - Creates a deep clone of the current image. The clone is then mutated by the given operation. - - The pixel format. - The image to clone. - The configuration which allows altering default behaviour or extending the library. - The operation to perform on the clone. - The configuration is null. - The source is null. - The operation is null. - The source has been disposed. - The processing operation failed. - The new - - - - Creates a deep clone of the current image. The clone is then mutated by the given operations. - - The pixel format. - The image to clone. - The operations to perform on the clone. - The source is null. - The operations are null. - The source has been disposed. - The processing operation failed. - The new - - - - Creates a deep clone of the current image. The clone is then mutated by the given operations. - - The pixel format. - The image to clone. - The configuration which allows altering default behaviour or extending the library. - The operations to perform on the clone. - The configuration is null. - The source is null. - The operations are null. - The source has been disposed. - The processing operation failed. - The new - - - - Applies the given collection against the context - - The image processing context. - The operations to perform on the source. - The processing operation failed. - The to allow chaining of operations. - - - - Defines extensions that allow the application of quantizing algorithms on an - using Mutate/Clone. - - - - - Applies quantization to the image using the . - - The image this method extends. - The to allow chaining of operations. - - - - Applies quantization to the image. - - The image this method extends. - The quantizer to apply to perform the operation. - The to allow chaining of operations. - - - - Applies quantization to the image using the . - - The image this method extends. - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Applies quantization to the image. - - The image this method extends. - The quantizer to apply to perform the operation. - - The structure that specifies the portion of the image object to alter. - - The to allow chaining of operations. - - - - Defines extensions that allow the application of auto-orientation operations to an - using Mutate/Clone. - - - - - Adjusts an image so that its orientation is suitable for viewing. Adjustments are based on EXIF metadata embedded in the image. - - The image to auto rotate. - The to allow chaining of operations. - - - - Defines extensions that allow the application of cropping operations on an - using Mutate/Clone. - - - - - Crops an image to the given width and height. - - The image to resize. - The target image width. - The target image height. - The to allow chaining of operations. - - - - Crops an image to the given rectangle. - - The image to crop. - - The structure that specifies the portion of the image object to retain. - - The to allow chaining of operations. - - - - Defines extensions that allow the application of entropy cropping operations on an - using Mutate/Clone. - - - - - Crops an image to the area of greatest entropy using a threshold for entropic density of .5F. - - The image to crop. - The to allow chaining of operations. - - - - Crops an image to the area of greatest entropy. - - The image to crop. - The threshold for entropic density. - The to allow chaining of operations. - - - - Defines extensions that allow the application of flipping operations on an - using Mutate/Clone. - - - - - Flips an image by the given instructions. - - The image to rotate, flip, or both. - The to perform the flip. - The to allow chaining of operations. - - - - Defines extensions that allow the application of padding operations on an - using Mutate/Clone. - - - - - Evenly pads an image to fit the new dimensions. - - The source image to pad. - The new width. - The new height. - The to allow chaining of operations. - - - - Evenly pads an image to fit the new dimensions with the given background color. - - The source image to pad. - The new width. - The new height. - The background color with which to pad the image. - The to allow chaining of operations. - - - - Defines extensions that allow the application of resize operations on an - using Mutate/Clone. - - - - - Resizes an image to the given . - - The image to resize. - The target image size. - The to allow chaining of operations. - Passing zero for one of height or width will automatically preserve the aspect ratio of the original image or the nearest possible ratio. - - - - Resizes an image to the given . - - The image to resize. - The target image size. - Whether to compress and expand the image color-space to gamma correct the image during processing. - The to allow chaining of operations. - Passing zero for one of height or width will automatically preserve the aspect ratio of the original image or the nearest possible ratio. - - - - Resizes an image to the given width and height. - - The image to resize. - The target image width. - The target image height. - The to allow chaining of operations. - Passing zero for one of height or width will automatically preserve the aspect ratio of the original image or the nearest possible ratio. - - - - Resizes an image to the given width and height. - - The image to resize. - The target image width. - The target image height. - Whether to compress and expand the image color-space to gamma correct the image during processing. - The to allow chaining of operations. - Passing zero for one of height or width will automatically preserve the aspect ratio of the original image or the nearest possible ratio. - - - - Resizes an image to the given width and height with the given sampler. - - The image to resize. - The target image width. - The target image height. - The to perform the resampling. - The to allow chaining of operations. - Passing zero for one of height or width will automatically preserve the aspect ratio of the original image or the nearest possible ratio. - - - - Resizes an image to the given width and height with the given sampler. - - The image to resize. - The target image size. - The to perform the resampling. - Whether to compress and expand the image color-space to gamma correct the image during processing. - The to allow chaining of operations. - Passing zero for one of height or width will automatically preserve the aspect ratio of the original image or the nearest possible ratio. - - - - Resizes an image to the given width and height with the given sampler. - - The image to resize. - The target image width. - The target image height. - The to perform the resampling. - Whether to compress and expand the image color-space to gamma correct the image during processing. - The to allow chaining of operations. - Passing zero for one of height or width will automatically preserve the aspect ratio of the original image or the nearest possible ratio. - - - - Resizes an image to the given width and height with the given sampler and - source rectangle. - - The image to resize. - The target image width. - The target image height. - The to perform the resampling. - - The structure that specifies the portion of the image object to draw. - - - The structure that specifies the portion of the target image object to draw to. - - Whether to compress and expand the image color-space to gamma correct the image during processing. - The to allow chaining of operations. - Passing zero for one of height or width will automatically preserve the aspect ratio of the original image or the nearest possible ratio. - - - - Resizes an image to the given width and height with the given sampler and source rectangle. - - The image to resize. - The target image width. - The target image height. - The to perform the resampling. - - The structure that specifies the portion of the target image object to draw to. - - Whether to compress and expand the image color-space to gamma correct the image during processing. - The to allow chaining of operations. - Passing zero for one of height or width will automatically preserve the aspect ratio of the original image or the nearest possible ratio. - - - - Resizes an image in accordance with the given . - - The image to resize. - The resize options. - The to allow chaining of operations. - Passing zero for one of height or width within the resize options will automatically preserve the aspect ratio of the original image or the nearest possible ratio. - - - - Defines extensions that allow the application of rotate operations on an - using Mutate/Clone. - - - - - Rotates and flips an image by the given instructions. - - The image to rotate. - The to perform the rotation. - The to allow chaining of operations. - - - - Rotates an image by the given angle in degrees. - - The image to rotate. - The angle in degrees to perform the rotation. - The to allow chaining of operations. - - - - Rotates an image by the given angle in degrees using the specified sampling algorithm. - - The image to rotate. - The angle in degrees to perform the rotation. - The to perform the resampling. - The to allow chaining of operations. - - - - Defines extensions that allow the application of rotate-flip operations on an - using Mutate/Clone. - - - - - Rotates and flips an image by the given instructions. - - The image to rotate, flip, or both. - The to perform the rotation. - The to perform the flip. - The to allow chaining of operations. - - - - Defines extensions that allow the application of skew operations on an - using Mutate/Clone. - - - - - Skews an image by the given angles in degrees. - - The image to skew. - The angle in degrees to perform the skew along the x-axis. - The angle in degrees to perform the skew along the y-axis. - The to allow chaining of operations. - - - - Skews an image by the given angles in degrees using the specified sampling algorithm. - - The image to skew. - The angle in degrees to perform the skew along the x-axis. - The angle in degrees to perform the skew along the y-axis. - The to perform the resampling. - The to allow chaining of operations. - - - - Defines extensions that allow the application of swizzle operations on an - - - - - Swizzles an image. - - The image to swizzle. - The swizzler function. - The swizzler function type. - The to allow chaining of operations. - - - - Defines extensions that allow the application of composable transform operations on an - using Mutate/Clone. - - - - - Performs an affine transform of an image. - - The image to transform. - The affine transform builder. - The - - - - Performs an affine transform of an image using the specified sampling algorithm. - - The . - The affine transform builder. - The to perform the resampling. - The to allow chaining of operations. - - - - Performs an affine transform of an image using the specified sampling algorithm. - - The . - The source rectangle - The affine transform builder. - The to perform the resampling. - The to allow chaining of operations. - - - - Performs an affine transform of an image using the specified sampling algorithm. - - The . - The source rectangle - The transformation matrix. - The size of the result image. - The to perform the resampling. - The to allow chaining of operations. - - - - Performs a projective transform of an image. - - The image to transform. - The affine transform builder. - The to allow chaining of operations. - - - - Performs a projective transform of an image using the specified sampling algorithm. - - The . - The projective transform builder. - The to perform the resampling. - The to allow chaining of operations. - - - - Performs a projective transform of an image using the specified sampling algorithm. - - The . - The source rectangle - The projective transform builder. - The to perform the resampling. - The to allow chaining of operations. - - - - Performs a projective transform of an image using the specified sampling algorithm. - - The . - The source rectangle - The transformation matrix. - The size of the result image. - The to perform the resampling. - The to allow chaining of operations. - - - - Provides enumeration over how a image should be flipped. - - - - - Don't flip the image. - - - - - Flip the image horizontally. - - - - - Flip the image vertically. - - - - - Enumerates the various types of defined grayscale filters. - - - - - ITU-R Recommendation BT.709 - - - - - ITU-R Recommendation BT.601 - - - - - A pixel-agnostic interface to queue up image operations to apply to an image. - - - - - Gets the configuration which allows altering default behaviour or extending the library. - - - - - Gets a set of properties for the Image Processing Context. - - This can be used for storing global settings and defaults to be accessable to processors. - - - - Gets the image dimensions at the current point in the processing pipeline. - - The . - - - - Adds the processor to the current set of image operations to be applied. - - The processor to apply. - The area to apply it to. - The current operations class to allow chaining of operations. - - - - Adds the processor to the current set of image operations to be applied. - - The processor to apply. - The current operations class to allow chaining of operations. - - - - Represents an interface that will create IInternalImageProcessingContext instances - - - - - Called during mutate operations to generate the image operations provider. - - The pixel format - The configuration which allows altering default behaviour or extending the library. - The source image. - A flag to determine whether image operations are allowed to mutate the source image. - A new - - - - The default implementation of - - - - - - - - An interface for internal operations we don't want to expose on . - - The pixel type. - - - - Returns the result image to return by - (and other overloads). - - The current image or a new image depending on whether it is requested to mutate the source image. - - - - Contains reusable static instances of known dithering algorithms. - - - - - Gets the order ditherer using the 2x2 Bayer dithering matrix - - - - - Gets the order ditherer using the 3x3 dithering matrix - - - - - Gets the order ditherer using the 4x4 Bayer dithering matrix - - - - - Gets the order ditherer using the 8x8 Bayer dithering matrix - - - - - Gets the error Dither that implements the Atkinson algorithm. - - - - - Gets the error Dither that implements the Burks algorithm. - - - - - Gets the error Dither that implements the Floyd-Steinberg algorithm. - - - - - Gets the error Dither that implements the Jarvis-Judice-Ninke algorithm. - - - - - Gets the error Dither that implements the Sierra-2 algorithm. - - - - - Gets the error Dither that implements the Sierra-3 algorithm. - - - - - Gets the error Dither that implements the Sierra-Lite algorithm. - - - - - Gets the error Dither that implements the Stevenson-Arce algorithm. - - - - - Gets the error Dither that implements the Stucki algorithm. - - - - - Contains reusable static instances of known edge detection kernels. - - - - - Gets the Kayyali edge detector kernel. - - - - - Gets the Kirsch edge detector kernel. - - - - - Gets the Laplacian 3x3 edge detector kernel. - - - - - Gets the Laplacian 5x5 edge detector kernel. - - - - - Gets the Laplacian of Gaussian edge detector kernel. - - - - - Gets the Prewitt edge detector kernel. - - - - - Gets the Roberts-Cross edge detector kernel. - - - - - Gets the Robinson edge detector kernel. - - - - - Gets the Scharr edge detector kernel. - - - - - Gets the Sobel edge detector kernel. - - - - - A collection of known values for composing filters - - - - - Gets a filter recreating Achromatomaly (Color desensitivity) color blindness - - - - - Gets a filter recreating Achromatopsia (Monochrome) color blindness. - - - - - Gets a filter recreating Deuteranomaly (Green-Weak) color blindness. - - - - - Gets a filter recreating Deuteranopia (Green-Blind) color blindness. - - - - - Gets a filter recreating Protanomaly (Red-Weak) color blindness. - - - - - Gets a filter recreating Protanopia (Red-Blind) color blindness. - - - - - Gets a filter recreating Tritanomaly (Blue-Weak) color blindness. - - - - - Gets a filter recreating Tritanopia (Blue-Blind) color blindness. - - - - - Gets an approximated black and white filter - - - - - Gets a filter recreating an old Kodachrome camera effect. - - - - - Gets a filter recreating an old Lomograph camera effect. - - - - - Gets a filter recreating an old Polaroid camera effect. - - - - - Create a brightness filter matrix using the given amount. - - - A value of 0 will create an image that is completely black. A value of 1 leaves the input unchanged. - Other values are linear multipliers on the effect. Values of an amount over 1 are allowed, providing brighter results. - - The proportion of the conversion. Must be greater than or equal to 0. - The - - - - Create a contrast filter matrix using the given amount. - - - A value of 0 will create an image that is completely gray. A value of 1 leaves the input unchanged. - Other values are linear multipliers on the effect. Values of an amount over 1 are allowed, providing results with more contrast. - - The proportion of the conversion. Must be greater than or equal to 0. - The - - - - Create a grayscale filter matrix using the given amount using the formula as specified by ITU-R Recommendation BT.601. - - - The proportion of the conversion. Must be between 0 and 1. - The - - - - Create a grayscale filter matrix using the given amount using the formula as specified by ITU-R Recommendation BT.709. - - - The proportion of the conversion. Must be between 0 and 1. - The - - - - Create a hue filter matrix using the given angle in degrees. - - The angle of rotation in degrees. - The - - - - Create an invert filter matrix using the given amount. - - The proportion of the conversion. Must be between 0 and 1. - The - - - - Create an opacity filter matrix using the given amount. - - The proportion of the conversion. Must be between 0 and 1. - The - - - - Create a saturation filter matrix using the given amount. - - - A value of 0 is completely un-saturated. A value of 1 leaves the input unchanged. - Other values are linear multipliers on the effect. Values of amount over 1 are allowed, providing super-saturated results - - The proportion of the conversion. Must be greater than or equal to 0. - The - - - - Create a lightness filter matrix using the given amount. - - - A value of 0 will create an image that is completely black. A value of 1 leaves the input unchanged. - Other values are linear multipliers on the effect. Values of an amount over 1 are allowed, providing lighter results. - - The proportion of the conversion. Must be greater than or equal to 0. - The - - - - Create a sepia filter matrix using the given amount. - The formula used matches the svg specification. - - The proportion of the conversion. Must be between 0 and 1. - The - - - - Contains reusable static instances of known quantizing algorithms - - - - - Gets the adaptive Octree quantizer. Fast with good quality. - - - - - Gets the Xiaolin Wu's Color Quantizer which generates high quality output. - - - - - Gets the palette based quantizer consisting of web safe colors as defined in the CSS Color Module Level 4. - - - - - Gets the palette based quantizer consisting of colors as defined in the original second edition of Werner’s Nomenclature of Colours 1821. - The hex codes were collected and defined by Nicholas Rougeux - - - - - Contains reusable static instances of known resampling algorithms - - - - - Gets the Bicubic sampler that implements the bicubic kernel algorithm W(x) - - - - - Gets the Box sampler that implements the box algorithm. Similar to nearest neighbor when upscaling. - When downscaling the pixels will average, merging pixels together. - - - - - Gets the Catmull-Rom sampler, a well known standard Cubic Filter often used as a interpolation function - - - - - Gets the Hermite sampler. A type of smoothed triangular interpolation filter that rounds off strong edges while - preserving flat 'color levels' in the original image. - - - - - Gets the Lanczos kernel sampler that implements smooth interpolation with a radius of 2 pixels. - This algorithm provides sharpened results when compared to others when downsampling. - - - - - Gets the Lanczos kernel sampler that implements smooth interpolation with a radius of 3 pixels - This algorithm provides sharpened results when compared to others when downsampling. - - - - - Gets the Lanczos kernel sampler that implements smooth interpolation with a radius of 5 pixels - This algorithm provides sharpened results when compared to others when downsampling. - - - - - Gets the Lanczos kernel sampler that implements smooth interpolation with a radius of 8 pixels - This algorithm provides sharpened results when compared to others when downsampling. - - - - - Gets the Mitchell-Netravali sampler. This seperable cubic algorithm yields a very good equilibrium between - detail preservation (sharpness) and smoothness. - - - - - Gets the Nearest-Neighbour sampler that implements the nearest neighbor algorithm. This uses a very fast, unscaled filter - which will select the closest pixel to the new pixels position. - - - - - Gets the Robidoux sampler. This algorithm developed by Nicolas Robidoux providing a very good equilibrium between - detail preservation (sharpness) and smoothness comparable to . - - - - - Gets the Robidoux Sharp sampler. A sharpened form of the sampler - - - - - Gets the Spline sampler. A separable cubic algorithm similar to but yielding smoother results. - - - - - Gets the Triangle sampler, otherwise known as Bilinear. This interpolation algorithm can be used where perfect image transformation - with pixel matching is impossible, so that one can calculate and assign appropriate intensity values to pixels - - - - - Gets the Welch sampler. A high speed algorithm that delivers very sharpened results. - - - - - Enumerates the available orientation values supplied by EXIF metadata. - - - - - Unknown rotation. - - - - - The 0th row at the top, the 0th column on the left. - - - - - The 0th row at the top, the 0th column on the right. - - - - - The 0th row at the bottom, the 0th column on the right. - - - - - The 0th row at the bottom, the 0th column on the left. - - - - - The 0th row on the left, the 0th column at the top. - - - - - The 0th row at the right, the 0th column at the top. - - - - - The 0th row on the right, the 0th column at the bottom. - - - - - The 0th row on the left, the 0th column at the bottom. - - - - - A representing a user defined processing delegate to use to modify image rows. - - The target row of pixels to process. - The , , , and fields map the RGBA channels respectively. - - - - A representing a user defined processing delegate to use to modify image rows. - - - The type of the parameter of the method that this delegate encapsulates. - This type parameter is contravariant.That is, you can use either the type you specified or any type that is less derived. - - The target row of pixels to process. - The parameter of the method that this delegate encapsulates. - The , , , and fields map the RGBA channels respectively. - - - - Performs Bradley Adaptive Threshold filter against an image. - - - Implements "Adaptive Thresholding Using the Integral Image", - see paper: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.420.7883&rep=rep1&type=pdf - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - Threshold limit. - - - - Initializes a new instance of the class. - - Color for upper threshold. - Color for lower threshold. - - - - Initializes a new instance of the class. - - Color for upper threshold. - Color for lower threshold. - Threshold limit. - - - - Gets or sets upper color limit for thresholding. - - - - - Gets or sets lower color limit for threshold. - - - - - Gets or sets the value for threshold limit. - - - - - - - - Performs Bradley Adaptive Threshold filter against an image. - - - - - Initializes a new instance of the class. - - The configuration which allows altering default behaviour or extending the library. - The defining the processor parameters. - The source for the current processor instance. - The source area to process for the current processor instance. - - - - - - - - - - Performs simple binary threshold filtering against an image. - - - - - Initializes a new instance of the class. - - The threshold to split the image. Must be between 0 and 1. - The color component to be compared to threshold. - - - - Initializes a new instance of the class with - Luminance as color component to be compared to threshold. - - The threshold to split the image. Must be between 0 and 1. - - - - Initializes a new instance of the class. - - The threshold to split the image. Must be between 0 and 1. - The color to use for pixels that are above the threshold. - The color to use for pixels that are below the threshold. - The color component to be compared to threshold. - - - - Initializes a new instance of the class with - Luminance as color component to be compared to threshold. - - The threshold to split the image. Must be between 0 and 1. - The color to use for pixels that are above the threshold. - The color to use for pixels that are below the threshold. - - - - Gets the threshold value. - - - - - Gets the color to use for pixels that are above the threshold. - - - - - Gets the color to use for pixels that fall below the threshold. - - - - - Gets the defining the value to be compared to threshold. - - - - - - - - Performs simple binary threshold filtering against an image. - - The pixel format. - - - - Initializes a new instance of the class. - - The configuration which allows altering default behaviour or extending the library. - The defining the processor parameters. - The source for the current processor instance. - The source area to process for the current processor instance. - - - - - - - A implementing the clone logic for . - - - - - - - - The base class for all cloning image processors. - - - - - - - - - - - The base class for all pixel specific cloning image processors. - Allows the application of processing algorithms to the image. - The image is cloned before operating upon and the buffers swapped upon completion. - - The pixel format. - - - - Initializes a new instance of the class. - - The configuration which allows altering default behaviour or extending the library. - The source for the current processor instance. - The source area to process for the current processor instance. - - - - Gets The source for the current processor instance. - - - - - Gets The source area to process for the current processor instance. - - - - - Gets the instance to use when performing operations. - - - - - - - - - - - - - - Gets the size of the destination image. - - The . - - - - This method is called before the process is applied to prepare the processor. - - The cloned/destination image. Cannot be null. - - - - This method is called before the process is applied to prepare the processor. - - The source image. Cannot be null. - The cloned/destination image. Cannot be null. - - - - Applies the process to the specified portion of the specified at the specified location - and with the specified size. - - The source image. Cannot be null. - The cloned/destination image. Cannot be null. - - - - This method is called after the process is applied to prepare the processor. - - The source image. Cannot be null. - The cloned/destination image. Cannot be null. - - - - This method is called after the process is applied to prepare the processor. - - The cloned/destination image. Cannot be null. - - - - Disposes the object and frees resources for the Garbage Collector. - - Whether to dispose managed and unmanaged objects. - - - - Applies bokeh blur processing to the image. - - - - - The default radius used by the parameterless constructor. - - - - - The default component count used by the parameterless constructor. - - - - - The default gamma used by the parameterless constructor. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - - The 'radius' value representing the size of the area to sample. - - - The number of components to use to approximate the original 2D bokeh blur convolution kernel. - - - The gamma highlight factor to use to further process the image. - - - - - Gets the radius. - - - - - Gets the number of components. - - - - - Gets the gamma highlight factor to use when applying the effect. - - - - - - - - A implementing the horizontal convolution logic for . - - - This type is located in the non-generic class and not in , where - it is actually used, because it does not use any generic parameters internally. Defining in a non-generic class means that there will only - ever be a single instantiation of this type for the JIT/AOT compilers to process, instead of having duplicate versions for each pixel type. - - - - - - - - Applies bokeh blur processing to the image. - - The pixel format. - This processor is based on the code from Mike Pound, see
github.com/mikepound/convolve. - - - - The gamma highlight factor to use when applying the effect - - - - - The size of each complex convolution kernel. - - - - - The kernel parameters to use for the current instance (a: X, b: Y, A: Z, B: W) - - - - - The kernel components for the current instance - - - - - Initializes a new instance of the class. - - The configuration which allows altering default behaviour or extending the library. - The defining the processor parameters. - The source for the current processor instance. - The source area to process for the current processor instance. - - - - Gets the complex kernels to use to apply the blur for the current instance - - - - - Gets the kernel parameters used to compute the pixel values from each complex pixel - - - - - - - - Computes and aggregates the convolution for each complex kernel component in the processor. - - The source image. Cannot be null. - The structure that specifies the portion of the image object to draw. - The configuration. - The buffer with the raw pixel data to use to aggregate the results of each convolution. - - - - A implementing the vertical convolution logic for . - - - - - - - - A implementing the gamma exposure logic for . - - - - - - - - A implementing the 3F gamma exposure logic for . - - - - - - - - A implementing the inverse gamma exposure logic for . - - - - - - - - A implementing the inverse 3F gamma exposure logic for . - - - - - - - - Defines a box blur processor of a given radius. - - - - - The default radius used by the parameterless constructor. - - - - - Initializes a new instance of the class. - - - The 'radius' value representing the size of the area to sample. - - - - - Initializes a new instance of the class. - - - - - Gets the Radius. - - - - - - - - Applies box blur processing to the image. - - The pixel format. - - - - Initializes a new instance of the class. - - The configuration which allows altering default behaviour or extending the library. - The defining the processor parameters. - The source for the current processor instance. - The source area to process for the current processor instance. - - - - Gets the 1D convolution kernel. - - - - - - - - Create a 1 dimensional Box kernel. - - The maximum size of the kernel in either direction. - The . - - - - Defines a processor that uses two one-dimensional matrices to perform convolution against an image. - - The pixel format. - - - - Initializes a new instance of the class. - - The configuration which allows altering default behaviour or extending the library. - The horizontal gradient operator. - The vertical gradient operator. - Whether the convolution filter is applied to alpha as well as the color channels. - The source for the current processor instance. - The source area to process for the current processor instance. - - - - Gets the horizontal convolution kernel. - - - - - Gets the vertical convolution kernel. - - - - - Gets a value indicating whether the convolution filter is applied to alpha as well as the color channels. - - - - - - - - A implementing the logic for 2D convolution. - - - - - - - - A stack only struct used for reducing reference indirection during 2D convolution operations. - - - - - Defines a processor that uses two one-dimensional matrices to perform two-pass convolution against an image. - - The pixel format. - - - - Initializes a new instance of the class. - - The configuration which allows altering default behaviour or extending the library. - The 1D convolution kernel. - Whether the convolution filter is applied to alpha as well as the color channels. - The source for the current processor instance. - The source area to process for the current processor instance. - - - - Gets the convolution kernel. - - - - - Gets a value indicating whether the convolution filter is applied to alpha as well as the color channels. - - - - - - - - A implementing the logic for the horizontal 1D convolution. - - - - - - - - A implementing the logic for the vertical 1D convolution. - - - - - - - - Kernel radius is calculated using the minimum viable value. - See . - - - - - Create a 1 dimensional Gaussian kernel using the Gaussian G(x) function. - - The convolution kernel. - - - - Create a 1 dimensional Gaussian kernel using the Gaussian G(x) function - - The convolution kernel. - - - - Defines a processor that uses a 2 dimensional matrix to perform convolution against an image. - - The pixel format. - - - - Initializes a new instance of the class. - - The configuration which allows altering default behaviour or extending the library. - The 2d gradient operator. - Whether the convolution filter is applied to alpha as well as the color channels. - The source for the current processor instance. - The source area to process for the current processor instance. - - - - Gets the 2d convolution kernel. - - - - - Gets a value indicating whether the convolution filter is applied to alpha as well as the color channels. - - - - - - - - A implementing the convolution logic for . - - - - - - - - A stack only struct used for reducing reference indirection during convolution operations. - - - - - Defines edge detection using the two 1D gradient operators. - - - - - Initializes a new instance of the class. - - The 2D edge detector kernel. - - Whether to convert the image to grayscale before performing edge detection. - - - - - Gets the 2D edge detector kernel. - - - - - Gets a value indicating whether to convert the image to grayscale before performing - edge detection. - - - - - - - - Defines a processor that detects edges within an image using two one-dimensional matrices. - - The pixel format. - - - - Initializes a new instance of the class. - - The configuration which allows altering default behaviour or extending the library. - The defining the processor parameters. - The source for the current processor instance. - The source area to process for the current processor instance. - - - - - - - - - - Defines edge detection using eight gradient operators. - - - - - Initializes a new instance of the class. - - The edge detector kernel. - - Whether to convert the image to grayscale before performing edge detection. - - - - - Gets the edge detector kernel. - - - - - Gets a value indicating whether to convert the image to grayscale before performing - edge detection. - - - - - - - - Defines a processor that detects edges within an image using a eight two dimensional matrices. - - The pixel format. - - - - Initializes a new instance of the class. - - The configuration which allows altering default behaviour or extending the library. - The defining the processor parameters. - The source for the current processor instance. - The source area to process for the current processor instance. - - - - - - - - - - A implementing the convolution logic for . - - - - - - - - Defines edge detection using a single 2D gradient operator. - - - - - Initializes a new instance of the class. - - The edge detector kernel. - - Whether to convert the image to grayscale before performing edge detection. - - - - - Gets the edge detector kernel. - - - - - Gets a value indicating whether to convert the image to grayscale before performing - edge detection. - - - - - - - - Defines a processor that detects edges within an image using a single two dimensional matrix. - - The pixel format. - - - - Initializes a new instance of the class. - - The configuration which allows altering default behaviour or extending the library. - The defining the processor parameters. - The source for the current processor instance. - The target area to process for the current processor instance. - - - - - - - - - - Defines Gaussian blur by a (Sigma, Radius) pair. - - - - - The default value for . - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - The 'sigma' value representing the weight of the blur. - - - - Initializes a new instance of the class. - - - The 'radius' value representing the size of the area to sample. - - - - - Initializes a new instance of the class. - - - The 'sigma' value representing the weight of the blur. - - - The 'radius' value representing the size of the area to sample. - This should be at least twice the sigma value. - - - - - Gets the sigma value representing the weight of the blur - - - - - Gets the radius defining the size of the area to sample. - - - - - - - - Applies Gaussian blur processing to an image. - - The pixel format. - - - - Initializes a new instance of the class. - - The configuration which allows altering default behaviour or extending the library. - The defining the processor parameters. - The source for the current processor instance. - The source area to process for the current processor instance. - - - - Gets the 1D convolution kernel. - - - - - - - - Defines Gaussian sharpening by a (Sigma, Radius) pair. - - - - - The default value for . - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - The 'sigma' value representing the weight of the blur. - - - - Initializes a new instance of the class. - - - The 'radius' value representing the size of the area to sample. - - - - - Initializes a new instance of the class. - - - The 'sigma' value representing the weight of the blur. - - - The 'radius' value representing the size of the area to sample. - This should be at least twice the sigma value. - - - - - Gets the sigma value representing the weight of the blur - - - - - Gets the radius defining the size of the area to sample. - - - - - - - - Applies Gaussian sharpening processing to the image. - - The pixel format. - - - - Initializes a new instance of the class. - - The configuration which allows altering default behaviour or extending the library. - The defining the processor parameters. - The source for the current processor instance. - The source area to process for the current processor instance. - - - - Gets the 1D convolution kernel. - - - - - - - - Represents an edge detection convolution kernel consisting of two 1D gradient operators. - - - - - An edge detection kernel containing two Kayyali operators. - - - - - An edge detection kernel containing two Prewitt operators. - . - - - - - An edge detection kernel containing two Roberts-Cross operators. - . - - - - - An edge detection kernel containing two Scharr operators. - - - - - An edge detection kernel containing two Sobel operators. - . - - - - - Initializes a new instance of the struct. - - The horizontal gradient operator. - The vertical gradient operator. - - - - Gets the horizontal gradient operator. - - - - - Gets the vertical gradient operator. - - - - - Checks whether two structures are equal. - - The left hand operand. - The right hand operand. - - True if the parameter is equal to the parameter; - otherwise, false. - - - - - Checks whether two structures are equal. - - The left hand operand. - The right hand operand. - - True if the parameter is not equal to the parameter; - otherwise, false. - - - - - - - - - - - - - - Represents an edge detection convolution kernel consisting of eight gradient operators. - - - - - An edge detection kenel comprised of Kirsch gradient operators. - . - - - - - An edge detection kenel comprised of Robinson gradient operators. - - - - - - Initializes a new instance of the struct. - - The north gradient operator. - The north-west gradient operator. - The west gradient operator. - The south-west gradient operator. - The south gradient operator. - The south-east gradient operator. - The east gradient operator. - The north-east gradient operator. - - - - Gets the North gradient operator. - - - - - Gets the NorthWest gradient operator. - - - - - Gets the West gradient operator. - - - - - Gets the SouthWest gradient operator. - - - - - Gets the South gradient operator. - - - - - Gets the SouthEast gradient operator. - - - - - Gets the East gradient operator. - - - - - Gets the NorthEast gradient operator. - - - - - Checks whether two structures are equal. - - The left hand operand. - The right hand operand. - - True if the parameter is equal to the parameter; - otherwise, false. - - - - - Checks whether two structures are equal. - - The left hand operand. - The right hand operand. - - True if the parameter is not equal to the parameter; - otherwise, false. - - - - - - - - - - - - - - Represents an edge detection convolution kernel consisting of a single 2D gradient operator. - - - - - An edge detection kernel containing a 3x3 Laplacian operator. - - - - - - An edge detection kernel containing a 5x5 Laplacian operator. - - - - - - An edge detection kernel containing a Laplacian of Gaussian operator. - . - - - - - Initializes a new instance of the struct. - - The 2D gradient operator. - - - - Gets the 2D gradient operator. - - - - - Checks whether two structures are equal. - - The left hand operand. - The right hand operand. - - True if the parameter is equal to the parameter; - otherwise, false. - - - - - Checks whether two structures are equal. - - The left hand operand. - The right hand operand. - - True if the parameter is not equal to the parameter; - otherwise, false. - - - - - - - - - - - - - - Contains the kernels used for Kayyali edge detection - - - - - Gets the horizontal gradient operator. - - - - - Gets the vertical gradient operator. - - - - - Contains the eight matrices used for Kirsch edge detection. - . - - - - - Gets the North gradient operator - - - - - Gets the NorthWest gradient operator - - - - - Gets the West gradient operator - - - - - Gets the SouthWest gradient operator - - - - - Gets the South gradient operator - - - - - Gets the SouthEast gradient operator - - - - - Gets the East gradient operator - - - - - Gets the NorthEast gradient operator - - - - - A factory for creating Laplacian kernel matrices. - - - - - Creates a Laplacian matrix, 2nd derivative, of an arbitrary length. - - - The length of the matrix sides - The - - - - Contains Laplacian kernels of different sizes. - - . - - - - - Gets the 3x3 Laplacian kernel - - - - - Gets the 5x5 Laplacian kernel - - - - - Gets the Laplacian of Gaussian kernel. - - - - - Contains the kernels used for Prewitt edge detection - - - - - Gets the horizontal gradient operator. - - - - - Gets the vertical gradient operator. - - - - - Contains the kernels used for RobertsCross edge detection - - - - - Gets the horizontal gradient operator. - - - - - Gets the vertical gradient operator. - - - - - Contains the kernels used for Robinson edge detection. - - - - - - Gets the North gradient operator - - - - - Gets the NorthWest gradient operator - - - - - Gets the West gradient operator - - - - - Gets the SouthWest gradient operator - - - - - Gets the South gradient operator - - - - - Gets the SouthEast gradient operator - - - - - Gets the East gradient operator - - - - - Gets the NorthEast gradient operator - - - - - Contains the kernels used for Scharr edge detection - - - - - Gets the horizontal gradient operator. - - - - - Gets the vertical gradient operator. - - - - - Contains the kernels used for Sobel edge detection - - - - - Gets the horizontal gradient operator. - - - - - Gets the vertical gradient operator. - - - - - Provides a map of the convolution kernel sampling offsets. - - - - - Initializes a new instance of the class. - - The memory allocator. - - - - Builds a map of the sampling offsets for the kernel clamped by the given bounds. - - The convolution kernel. - The source bounds. - - - - Builds a map of the sampling offsets for the kernel clamped by the given bounds. - - The height (number of rows) of the convolution kernel to use. - The width (number of columns) of the convolution kernel to use. - The source bounds. - - - - - - - A that contains data about a set of bokeh blur kernels - - - - - The kernel parameters to use for the current set of complex kernels - - - - - The kernel components to apply the bokeh blur effect - - - - - Initializes a new instance of the struct. - - The kernel parameters - The complex kernel components - - - - Provides parameters to be used in the . - - - - - The mapping of initialized complex kernels and parameters, to speed up the initialization of new instances - - - - - Gets the kernel scales to adjust the component values in each kernel - - - - - Gets the available bokeh blur kernel parameters - - - - - Gets the bokeh blur kernel data for the specified parameters. - - The value representing the size of the area to sample. - The size of each kernel to compute. - The number of components to use to approximate the original 2D bokeh blur convolution kernel. - A instance with the kernel data for the current parameters. - - - - Gets the kernel parameters and scaling factor for the current count value in the current instance - - - - - Creates the collection of complex 1D kernels with the specified parameters - - The parameters to use to normalize the kernels - The value representing the size of the area to sample. - The size of each kernel to compute. - The scale factor for each kernel. - - - - Creates a complex 1D kernel with the specified parameters - - The value representing the size of the area to sample. - The size of each kernel to compute. - The scale factor for each kernel. - The exponential parameter for each complex component - The angle component for each complex component - - - - Normalizes the kernels with respect to A * real + B * imaginary - - The current convolution kernels to normalize - The parameters to use to normalize the kernels - - - - A that contains parameters to apply a bokeh blur filter - - - - - The size of the convolution kernel to use when applying the bokeh blur - - - - - The number of complex components to use to approximate the bokeh kernel - - - - - Initializes a new instance of the struct. - - The size of the kernel - The number of kernel components - - - - - - - - - - - - - A stack only, readonly, kernel matrix that can be indexed without - bounds checks when compiled in release mode. - - - - - An error diffusion dithering implementation. - - - An error diffusion dithering implementation. - - - - - - Applies error diffusion based dithering using the Atkinson image dithering algorithm. - - - - - Applies error diffusion based dithering using the Burks image dithering algorithm. - - - - - Applies error diffusion based dithering using the Floyd–Steinberg image dithering algorithm. - - - - - Applies error diffusion based dithering using the Jarvis, Judice, Ninke image dithering algorithm. - - - - - Applies error diffusion based dithering using the Sierra2 image dithering algorithm. - - - - - Applies error diffusion based dithering using the Sierra3 image dithering algorithm. - - - - - Applies error diffusion based dithering using the Sierra Lite image dithering algorithm. - - - - - Applies error diffusion based dithering using the Stevenson-Arce image dithering algorithm. - - - - - Applies error diffusion based dithering using the Stucki image dithering algorithm. - - - - - Initializes a new instance of the struct. - - The diffusion matrix. - The starting offset within the matrix. - - - - Compares the two instances to determine whether they are equal. - - The first source instance. - The second source instance. - The . - - - - Compares the two instances to determine whether they are unequal. - - The first source instance. - The second source instance. - The . - - - - Compares the two instances to determine whether they are equal. - - The first source instance. - The second source instance. - The . - - - - Compares the two instances to determine whether they are unequal. - - The first source instance. - The second source instance. - The . - - - - Compares the two instances to determine whether they are equal. - - The first source instance. - The second source instance. - The . - - - - Compares the two instances to determine whether they are unequal. - - The first source instance. - The second source instance. - The . - - - - - - - - - - - - - - - - - - - - - - Defines the contract for types that apply dithering to images. - - - - - Transforms the quantized image frame applying a dither matrix. - This method should be treated as destructive, altering the input pixels. - - The type of frame quantizer. - The pixel format. - The frame quantizer. - The source image. - The destination quantized frame. - The region of interest bounds. - - - - Transforms the image frame applying a dither matrix. - This method should be treated as destructive, altering the input pixels. - - The type of palette dithering processor. - The pixel format. - The palette dithering processor. - The source image. - The region of interest bounds. - - - - Implements an algorithm to alter the pixels of an image via palette dithering. - - The pixel format. - - - - Gets the configuration instance to use when performing operations. - - - - - Gets the dithering palette. - - - - - Gets the dithering scale used to adjust the amount of dither. Range 0..1. - - - - - Returns the color from the dithering palette corresponding to the given color. - - The color to match. - The match. - - - - An ordered dithering matrix with equal sides of arbitrary length - - - An ordered dithering matrix with equal sides of arbitrary length - - - - - Initializes a new instance of the struct. - - The length of the matrix sides - - - - Compares the two instances to determine whether they are equal. - - The first source instance. - The second source instance. - The . - - - - Compares the two instances to determine whether they are unequal. - - The first source instance. - The second source instance. - The . - - - - Compares the two instances to determine whether they are equal. - - The first source instance. - The second source instance. - The . - - - - Compares the two instances to determine whether they are unequal. - - The first source instance. - The second source instance. - The . - - - - Compares the two instances to determine whether they are equal. - - The first source instance. - The second source instance. - The . - - - - Compares the two instances to determine whether they are unequal. - - The first source instance. - The second source instance. - The . - - - - - - - - - - - - - - - - - - - - - - Applies order dithering using the 2x2 Bayer dithering matrix. - - - - - Applies order dithering using the 4x4 Bayer dithering matrix. - - - - - Applies order dithering using the 8x8 Bayer dithering matrix. - - - - - Applies order dithering using the 3x3 ordered dithering matrix. - - - - - A factory for creating ordered dither matrices. - - - - - Creates an ordered dithering matrix with equal sides of arbitrary length. - - - The length of the matrix sides - The - - - - Allows the consumption a palette to dither an image. - - - - - Initializes a new instance of the class. - - The ordered ditherer. - - - - Initializes a new instance of the class. - - The ordered ditherer. - The dithering scale used to adjust the amount of dither. - - - - Initializes a new instance of the class. - - The dithering algorithm. - The palette to select substitute colors from. - - - - Initializes a new instance of the class. - - The dithering algorithm. - The dithering scale used to adjust the amount of dither. - The palette to select substitute colors from. - - - - Gets the dithering algorithm to apply to the output image. - - - - - Gets the dithering scale used to adjust the amount of dither. Range 0..1. - - - - - Gets the palette to select substitute colors from. - - - - - - - - Allows the consumption a palette to dither an image. - - The pixel format. - - - - Initializes a new instance of the class. - - The configuration which allows altering default behaviour or extending the library. - The defining the processor parameters. - The source for the current processor instance. - The source area to process for the current processor instance. - - - - - - - - - - Used to allow inlining of calls to - . - - - - - Combines two images together by blending the pixels. - - - - - Initializes a new instance of the class. - - The image to blend. - The location to draw the blended image. - The blending mode to use when drawing the image. - The Alpha blending mode to use when drawing the image. - The opacity of the image to blend. - - - - Gets the image to blend. - - - - - Gets the location to draw the blended image. - - - - - Gets the blending mode to use when drawing the image. - - - - - Gets the Alpha blending mode to use when drawing the image. - - - - - Gets the opacity of the image to blend. - - - - - - - - Combines two images together by blending the pixels. - - The pixel format of destination image. - The pixel format of source image. - - - - Initializes a new instance of the class. - - The configuration which allows altering default behaviour or extending the library. - The foreground to blend with the currently processing image. - The source for the current processor instance. - The source area to process for the current processor instance. - The location to draw the blended image. - The blending mode to use when drawing the image. - The Alpha blending mode to use when drawing the image. - The opacity of the image to blend. Must be between 0 and 1. - - - - Gets the image to blend - - - - - Gets the opacity of the image to blend - - - - - Gets the pixel blender - - - - - Gets the location to draw the blended image - - - - - - - - A implementing the draw logic for . - - - - - - - - An used by the row delegates for a given instance - - - - - Applies the current pixel row delegate to a target row of preprocessed pixels. - - The target row of pixels to process. - The initial horizontal and vertical offset for the input pixels to process. - - - - Defines an oil painting effect. - - - - - Initializes a new instance of the class. - - - The number of intensity levels. Higher values result in a broader range of color intensities forming part of the result image. - - - The number of neighboring pixels used in calculating each individual pixel value. - - - - - Gets the number of intensity levels. - - - - - Gets the brush size. - - - - - - - - Applies oil painting effect processing to the image. - - Adapted from by Dewald Esterhuizen. - The pixel format. - - - - Initializes a new instance of the class. - - The configuration which allows altering default behaviour or extending the library. - The defining the processor parameters. - The source for the current processor instance. - The source area to process for the current processor instance. - - - - - - - A implementing the convolution logic for . - - - - - - - - Defines a pixelation effect of a given size. - - - - - Initializes a new instance of the class. - - The size of the pixels. Must be greater than 0. - - is less than 0 or equal to 0. - - - - - Gets or the pixel size. - - - - - - - - Applies a pixelation effect processing to the image. - - The pixel format. - - - - Initializes a new instance of the class. - - The configuration which allows altering default behaviour or extending the library. - The . - The source for the current processor instance. - The source area to process for the current processor instance. - - - - - - - Applies a user defined row processing delegate to the image. - - - - - Initializes a new instance of the class. - - The user defined, row processing delegate. - The to apply during the pixel conversions. - - - - Gets the user defined row processing delegate to the image. - - - - - Gets the to apply during the pixel conversions. - - - - - - - - A implementing the row processing logic for . - - - - - - - - The base class for all processors that accept a user defined row processing delegate. - - The pixel format. - The row processor type. - - - - The to apply during the pixel conversions. - - - - - Initializes a new instance of the class. - - The row processor to use to process each pixel row - The configuration which allows altering default behaviour or extending the library. - The to apply during the pixel conversions. - The source for the current processor instance. - The source area to process for the current processor instance. - - - - - - - A implementing the convolution logic for . - - - - - - - - Applies a user defined, position aware, row processing delegate to the image. - - - - - Initializes a new instance of the class. - - The user defined, position aware, row processing delegate. - The to apply during the pixel conversions. - - - - Gets the user defined, position aware, row processing delegate. - - - - - Gets the to apply during the pixel conversions. - - - - - - - - A implementing the row processing logic for . - - - - - - - - Converts the colors of the image recreating Achromatomaly (Color desensitivity) color blindness. - - - - - Initializes a new instance of the class. - - - - - Converts the colors of the image recreating Achromatopsia (Monochrome) color blindness. - - - - - Initializes a new instance of the class. - - - - - Applies a black and white filter matrix to the image. - - - - - Initializes a new instance of the class. - - - - - Applies a brightness filter matrix using the given amount. - - - - - Initializes a new instance of the class. - - - A value of 0 will create an image that is completely black. A value of 1 leaves the input unchanged. - Other values are linear multipliers on the effect. Values of an amount over 1 are allowed, providing brighter results. - - The proportion of the conversion. Must be greater than or equal to 0. - - - - Gets the proportion of the conversion - - - - - Applies a contrast filter matrix using the given amount. - - - - - Initializes a new instance of the class. - - - A value of 0 will create an image that is completely gray. A value of 1 leaves the input unchanged. - Other values are linear multipliers on the effect. Values of an amount over 1 are allowed, providing results with more contrast. - - The proportion of the conversion. Must be greater than or equal to 0. - - - - Gets the proportion of the conversion. - - - - - Converts the colors of the image recreating Deuteranomaly (Green-Weak) color blindness. - - - - - Initializes a new instance of the class. - - - - - Converts the colors of the image recreating Deuteranopia (Green-Blind) color blindness. - - - - - Initializes a new instance of the class. - - - - - Defines a free-form color filter by a . - - - - - Initializes a new instance of the class. - - The matrix used to apply the image filter - - - - Gets the used to apply the image filter. - - - - - - - - Provides methods that accept a matrix to apply free-form filters to images. - - The pixel format. - - - - Initializes a new instance of the class. - - The configuration which allows altering default behaviour or extending the library. - The . - The source for the current processor instance. - The source area to process for the current processor instance. - - - - - - - A implementing the convolution logic for . - - - - - - - - Applies a grayscale filter matrix using the given amount and the formula as specified by ITU-R Recommendation BT.601 - - - - - Initializes a new instance of the class. - - The proportion of the conversion. Must be between 0 and 1. - - - - Gets the proportion of the conversion - - - - - Applies a grayscale filter matrix using the given amount and the formula as specified by ITU-R Recommendation BT.709 - - - - - Initializes a new instance of the class. - - The proportion of the conversion. Must be between 0 and 1. - - - - Gets the proportion of the conversion. - - - - - Applies a hue filter matrix using the given angle of rotation in degrees - - - - - Initializes a new instance of the class. - - The angle of rotation in degrees - - - - Gets the angle of rotation in degrees - - - - - Applies a filter matrix that inverts the colors of an image - - - - - Initializes a new instance of the class. - - The proportion of the conversion. Must be between 0 and 1. - - - - Gets the proportion of the conversion - - - - - Applies a filter matrix recreating an old Kodachrome camera effect matrix to the image - - - - - Initializes a new instance of the class. - - - - - Applies a lightness filter matrix using the given amount. - - - - - Initializes a new instance of the class. - - - A value of 0 will create an image that is completely black. A value of 1 leaves the input unchanged. - Other values are linear multipliers on the effect. Values of an amount over 1 are allowed, providing lighter results. - - The proportion of the conversion. Must be greater than or equal to 0. - - - - Gets the proportion of the conversion - - - - - Converts the colors of the image recreating an old Lomograph effect. - - - - - Initializes a new instance of the class. - - Graphics options to use within the processor. - - - - Gets the options effecting blending and composition - - - - - - - - Converts the colors of the image recreating an old Lomograph effect. - - - - - Initializes a new instance of the class. - - The configuration which allows altering default behaviour or extending the library. - The defining the parameters. - The source for the current processor instance. - The source area to process for the current processor instance. - - - - - - - Applies an opacity filter matrix using the given amount. - - - - - Initializes a new instance of the class. - - The proportion of the conversion. Must be between 0 and 1. - - - - Gets the proportion of the conversion. - - - - - - - - Converts the colors of the image recreating an old Polaroid effect. - - - - - Initializes a new instance of the class. - - Graphics options to use within the processor. - - - - Gets the options effecting blending and composition - - - - - - - - Converts the colors of the image recreating an old Polaroid effect. - - - - - Initializes a new instance of the class. - - The configuration which allows altering default behaviour or extending the library. - The defining the parameters. - The source for the current processor instance. - The source area to process for the current processor instance. - - - - - - - Converts the colors of the image recreating Protanomaly (Red-Weak) color blindness. - - - - - Initializes a new instance of the class. - - - - - Converts the colors of the image recreating Protanopia (Red-Blind) color blindness. - - - - - Initializes a new instance of the class. - - - - - Applies a saturation filter matrix using the given amount. - - - - - Initializes a new instance of the class. - - - A value of 0 is completely un-saturated. A value of 1 leaves the input unchanged. - Other values are linear multipliers on the effect. Values of amount over 1 are allowed, providing super-saturated results - - The proportion of the conversion. Must be greater than or equal to 0. - - - - Gets the proportion of the conversion - - - - - Applies a sepia filter matrix using the given amount. - - - - - Initializes a new instance of the class. - - The proportion of the conversion. Must be between 0 and 1. - - - - Gets the proportion of the conversion - - - - - Converts the colors of the image recreating Tritanomaly (Blue-Weak) color blindness. - - - - - Initializes a new instance of the class. - - - - - Converts the colors of the image recreating Tritanopia (Blue-Blind) color blindness. - - - - - Initializes a new instance of the class. - - - - - Defines an algorithm to alter the pixels of a cloned image. - - - - - Creates a pixel specific that is capable of executing - the processing algorithm on an . - - The pixel type. - The configuration which allows altering default behaviour or extending the library. - The source image. Cannot be null. - - The structure that specifies the portion of the image object to draw. - - The - - - - Implements an algorithm to alter the pixels of a cloned image. - - The pixel format. - - - - Clones the specified and executes the process against the clone. - - The . - - - - Defines an algorithm to alter the pixels of an image. - Non-generic implementations are responsible for: - 1. Encapsulating the parameters of the algorithm. - 2. Creating the generic instance to execute the algorithm. - - - - - Creates a pixel specific that is capable of executing - the processing algorithm on an . - - The pixel type. - The configuration which allows altering default behaviour or extending the library. - The source image. Cannot be null. - - The structure that specifies the portion of the image object to draw. - - The - - - - Implements an algorithm to alter the pixels of an image. - - The pixel format. - - - - Executes the process against the specified . - - - - - Executes the processor against the given source image and rectangle bounds. - - The processor. - The configuration which allows altering default behaviour or extending the library. - The source image. - The source bounds. - - - - The base class for all pixel specific image processors. - Allows the application of processing algorithms to the image. - - The pixel format. - - - - Initializes a new instance of the class. - - The configuration which allows altering default behaviour or extending the library. - The source for the current processor instance. - The source area to process for the current processor instance. - - - - Gets The source for the current processor instance. - - - - - Gets The source area to process for the current processor instance. - - - - - Gets the instance to use when performing operations. - - - - - - - - Applies the processor to a single image frame. - - the source image. - - - - - - - This method is called before the process is applied to prepare the processor. - - - - - This method is called before the process is applied to prepare the processor. - - The source image. Cannot be null. - - - - Applies the process to the specified portion of the specified at the specified location - and with the specified size. - - The source image. Cannot be null. - - - - This method is called after the process is applied to prepare the processor. - - The source image. Cannot be null. - - - - This method is called after the process is applied to prepare the processor. - - - - - Disposes the object and frees resources for the Garbage Collector. - - Whether to dispose managed and unmanaged objects. - - - - Applies an adaptive histogram equalization to the image. The image is split up in tiles. For each tile a cumulative distribution function (cdf) is calculated. - To calculate the final equalized pixel value, the cdf value of four adjacent tiles will be interpolated. - - - - - Initializes a new instance of the class. - - The number of different luminance levels. Typical values are 256 for 8-bit grayscale images - or 65536 for 16-bit grayscale images. - Indicating whether to clip the histogram bins at a specific value. - The histogram clip limit. Histogram bins which exceed this limit, will be capped at this value. - The number of tiles the image is split into (horizontal and vertically). Minimum value is 2. Maximum value is 100. - - - - Gets the number of tiles the image is split into (horizontal and vertically) for the adaptive histogram equalization. - - - - - - - - Applies an adaptive histogram equalization to the image. The image is split up in tiles. For each tile a cumulative distribution function (cdf) is calculated. - To calculate the final equalized pixel value, the cdf value of four adjacent tiles will be interpolated. - - The pixel format. - - - - Initializes a new instance of the class. - - The configuration which allows altering default behaviour or extending the library. - The number of different luminance levels. Typical values are 256 for 8-bit grayscale images - or 65536 for 16-bit grayscale images. - Indicating whether to clip the histogram bins at a specific value. - The histogram clip limit. Histogram bins which exceed this limit, will be capped at this value. - The number of tiles the image is split into (horizontal and vertically). Minimum value is 2. Maximum value is 100. - The source for the current processor instance. - The source area to process for the current processor instance. - - - - Gets the number of tiles the image is split into (horizontal and vertically) for the adaptive histogram equalization. - - - - - - - - Processes the part of a corner tile which was previously left out. It consists of 1 / 4 of a tile and does not need interpolation. - - The source image. - The lookup table to remap the grey values. - The x-position in the CDF lookup map. - The y-position in the CDF lookup map. - X start position. - X end position. - Y start position. - Y end position. - - The number of different luminance levels. Typical values are 256 for 8-bit grayscale images - or 65536 for 16-bit grayscale images. - - - - - Processes a border column of the image which is half the size of the tile width. - - The source image. - The pre-computed lookup tables to remap the grey values for each tiles. - The X index of the lookup table to use. - The source image height. - The number of vertical tiles. - The height of a tile. - X start position in the image. - X end position of the image. - - The number of different luminance levels. Typical values are 256 for 8-bit grayscale images - or 65536 for 16-bit grayscale images. - - - - - Processes a border row of the image which is half of the size of the tile height. - - The source image. - The pre-computed lookup tables to remap the grey values for each tiles. - The Y index of the lookup table to use. - The source image width. - The number of horizontal tiles. - The width of a tile. - Y start position in the image. - Y end position of the image. - - The number of different luminance levels. Typical values are 256 for 8-bit grayscale images - or 65536 for 16-bit grayscale images. - - - - - Bilinear interpolation between four adjacent tiles. - - The pixel to remap the grey value from. - The pre-computed lookup tables to remap the grey values for each tiles. - The number of tiles in the x-direction. - The number of tiles in the y-direction. - X position inside the tile. - Y position inside the tile. - X index of the top left lookup table to use. - Y index of the top left lookup table to use. - Width of one tile in pixels. - Height of one tile in pixels. - - The number of different luminance levels. Typical values are 256 for 8-bit grayscale images - or 65536 for 16-bit grayscale images. - - A re-mapped grey value. - - - - Linear interpolation between two tiles. - - The pixel to remap the grey value from. - The CDF lookup map. - X position inside the first tile. - Y position inside the first tile. - X position inside the second tile. - Y position inside the second tile. - Position inside the tile. - Width of the tile. - - The number of different luminance levels. Typical values are 256 for 8-bit grayscale images - or 65536 for 16-bit grayscale images. - - A re-mapped grey value. - - - - Bilinear interpolation between four tiles. - - The interpolation value in x direction in the range of [0, 1]. - The interpolation value in y direction in the range of [0, 1]. - Luminance from top left tile. - Luminance from right top tile. - Luminance from left bottom tile. - Luminance from right bottom tile. - Interpolated Luminance. - - - - Linear interpolation between two grey values. - - The left value. - The right value. - The interpolation value between the two values in the range of [0, 1]. - The interpolated value. - - - - - - - Contains the results of the cumulative distribution function for all tiles. - - - - - Remaps the grey value with the cdf. - - The tiles x-position. - The tiles y-position. - The original luminance. - The remapped luminance. - - - - - - - Applies an adaptive histogram equalization to the image using an sliding window approach. - - - - - Initializes a new instance of the class. - - The number of different luminance levels. Typical values are 256 for 8-bit grayscale images - or 65536 for 16-bit grayscale images. - Indicating whether to clip the histogram bins at a specific value. - The histogram clip limit. Histogram bins which exceed this limit, will be capped at this value. - The number of tiles the image is split into (horizontal and vertically). Minimum value is 2. Maximum value is 100. - - - - Gets the number of tiles the image is split into (horizontal and vertically) for the adaptive histogram equalization. - - - - - - - - Applies an adaptive histogram equalization to the image using an sliding window approach. - - The pixel format. - - - - Initializes a new instance of the class. - - The configuration which allows altering default behaviour or extending the library. - The number of different luminance levels. Typical values are 256 for 8-bit grayscale images - or 65536 for 16-bit grayscale images. - Indicating whether to clip the histogram bins at a specific value. - The histogram clip limit. Histogram bins which exceed this limit, will be capped at this value. - The number of tiles the image is split into (horizontal and vertically). Minimum value is 2. Maximum value is 100. - The source for the current processor instance. - The source area to process for the current processor instance. - - - - Gets the number of tiles the image is split into (horizontal and vertically) for the adaptive histogram equalization. - - - - - - - - Get the a pixel row at a given position with a length of the tile width. Mirrors pixels which exceeds the edges. - - The source image. - Pre-allocated pixel row span of the size of a the tile width. - The x position. - The y position. - The width in pixels of a tile. - The configuration. - - - - Get the a pixel row at a given position with a length of the tile width. - - The source image. - Pre-allocated pixel row span of the size of a the tile width. - The x position. - The y position. - The width in pixels of a tile. - The configuration. - - - - Adds a column of grey values to the histogram. - - The reference to the span of grey values to add. - The reference to the histogram span. - The number of different luminance levels. - The grey values span length. - - - - Removes a column of grey values from the histogram. - - The reference to the span of grey values to remove. - The reference to the histogram span. - The number of different luminance levels. - The grey values span length. - - - - Applies the sliding window equalization to one column of the image. The window is moved from top to bottom. - Moving the window one pixel down requires to remove one row from the top of the window from the histogram and - adding a new row at the bottom. - - - - - Initializes a new instance of the struct. - - The configuration. - The histogram processor. - The source image. - The memory allocator. - The target pixels. - about the sliding window dimensions. - The y start position. - The y end position. - if set to true the borders of the image will not be checked. - - - - Defines a global histogram equalization applicable to an . - - - - - Initializes a new instance of the class. - - The number of luminance levels. - A value indicating whether to clip the histogram bins at a specific value. - The histogram clip limit. Histogram bins which exceed this limit, will be capped at this value. - - - - - - - Applies a global histogram equalization to the image. - - The pixel format. - - - - Initializes a new instance of the class. - - The configuration which allows altering default behaviour or extending the library. - - The number of different luminance levels. Typical values are 256 for 8-bit grayscale images - or 65536 for 16-bit grayscale images. - - Indicating whether to clip the histogram bins at a specific value. - The histogram clip limit. Histogram bins which exceed this limit, will be capped at this value. - The source for the current processor instance. - The source area to process for the current processor instance. - - - - - - - A implementing the grayscale levels logic for . - - - - - - - - A implementing the cdf application levels logic for . - - - - - - - - Enumerates the different types of defined histogram equalization methods. - - - - - A global histogram equalization. - - - - - Adaptive histogram equalization using a tile interpolation approach. - - - - - Adaptive histogram equalization using sliding window. Slower then the tile interpolation mode, but can yield to better results. - - - - - Data container providing the different options for the histogram equalization. - - - - - Gets the default instance. - - - - - Gets or sets the histogram equalization method to use. Defaults to global histogram equalization. - - - - - Gets or sets the number of different luminance levels. Typical values are 256 for 8-bit grayscale images - or 65536 for 16-bit grayscale images. - Defaults to 256. - - - - - Gets or sets a value indicating whether to clip the histogram bins at a specific value. - It is recommended to use clipping when the AdaptiveTileInterpolation method is used, to suppress artifacts which can occur on the borders of the tiles. - Defaults to false. - - - - - Gets or sets the histogram clip limit. Adaptive histogram equalization may cause noise to be amplified in near constant - regions. To reduce this problem, histogram bins which exceed a given limit will be capped at this value. The exceeding values - will be redistributed equally to all other bins. The clipLimit depends on the size of the tiles the image is split into - and therefore the image size itself. - Defaults to 350. - - For more information, see also: https://en.wikipedia.org/wiki/Adaptive_histogram_equalization#Contrast_Limited_AHE - - - - Gets or sets the number of tiles the image is split into (horizontal and vertically) for the adaptive histogram equalization. - Defaults to 8. - - - - - Defines a processor that normalizes the histogram of an image. - - - - - Initializes a new instance of the class. - - The number of different luminance levels. Typical values are 256 for 8-bit grayscale images - or 65536 for 16-bit grayscale images. - Indicates, if histogram bins should be clipped. - The histogram clip limit. Histogram bins which exceed this limit, will be capped at this value. - - - - Gets the number of luminance levels. - - - - - Gets a value indicating whether to clip the histogram bins at a specific value. - - - - - Gets the histogram clip limit. Histogram bins which exceed this limit, will be capped at this value. - - - - - - - - Creates the that implements the algorithm - defined by the given . - - The . - The . - - - - Defines a processor that normalizes the histogram of an image. - - The pixel format. - - - - Initializes a new instance of the class. - - The configuration which allows altering default behaviour or extending the library. - The number of different luminance levels. Typical values are 256 for 8-bit grayscale images - or 65536 for 16-bit grayscale images. - Indicates, if histogram bins should be clipped. - The histogram clip limit. Histogram bins which exceed this limit, will be capped at this value. - The source for the current processor instance. - The source area to process for the current processor instance. - - - - Gets the number of luminance levels. - - - - - Gets a value indicating whether to clip the histogram bins at a specific value. - - - - - Gets the histogram clip limit. Histogram bins which exceed this limit, will be capped at this value. - - - - - Calculates the cumulative distribution function. - - The reference to the array holding the cdf. - The reference to the histogram of the input image. - Index of the maximum of the histogram. - The first none zero value of the cdf. - - - - AHE tends to over amplify the contrast in near-constant regions of the image, since the histogram in such regions is highly concentrated. - Clipping the histogram is meant to reduce this effect, by cutting of histogram bin's which exceed a certain amount and redistribute - the values over the clip limit to all other bins equally. - - The histogram to apply the clipping. - Histogram clip limit. Histogram bins which exceed this limit, will be capped at this value. - - - - Convert the pixel values to grayscale using ITU-R Recommendation BT.709. - - The pixel to get the luminance from - The number of luminance levels (256 for 8 bit, 65536 for 16 bit grayscale images) - - - - Defines a processing operation to replace the background color of an . - - - - - Initializes a new instance of the class. - - The options defining blending algorithm and amount. - The to set the background color to. - - - - Gets the Graphics options to alter how processor is applied. - - - - - Gets the background color value. - - - - - - - - Sets the background color of the image. - - The pixel format. - - - - Initializes a new instance of the class. - - The configuration which allows altering default behaviour or extending the library. - The defining the processor parameters. - The source for the current processor instance. - The source area to process for the current processor instance. - - - - - - - Defines a radial glow effect applicable to an . - - - - - Initializes a new instance of the class. - - The options effecting blending and composition. - The color or the glow. - - - - Initializes a new instance of the class. - - The options effecting blending and composition. - The color or the glow. - The radius of the glow. - - - - Gets the options effecting blending and composition. - - - - - Gets the glow color to apply. - - - - - Gets the the radius. - - - - - - - - An that applies a radial glow effect an . - - The pixel format. - - - - Initializes a new instance of the class. - - The configuration which allows altering default behaviour or extending the library. - The defining the processor parameters. - The source for the current processor instance. - The source area to process for the current processor instance. - - - - - - - Defines a radial vignette effect applicable to an . - - - - - Initializes a new instance of the class. - - The options effecting blending and composition. - The color of the vignette. - - - - Initializes a new instance of the class. - - The options effecting blending and composition. - The color of the vignette. - The x-radius. - The y-radius. - - - - Gets the options effecting blending and composition - - - - - Gets the vignette color to apply. - - - - - Gets the the x-radius. - - - - - Gets the the y-radius. - - - - - - - - An that applies a radial vignette effect to an . - - The pixel format. - - - - Initializes a new instance of the class. - - The configuration which allows altering default behaviour or extending the library. - The defining the processor parameters. - The source for the current processor instance. - The source area to process for the current processor instance. - - - - - - - A pixel sampling strategy that enumerates a limited amount of rows from different frames, - if the total number of pixels is over a threshold. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - The maximum number of pixels to process. - always scan at least this portion of total pixels within the image. - - - - Gets the maximum number of pixels to process. (The threshold.) - - - - - Gets a value indicating: always scan at least this portion of total pixels within the image. - The default is 0.1 (10%). - - - - - - - - Gets the closest color to the supplied color based upon the Euclidean distance. - - The pixel format. - - - - Initializes a new instance of the struct. - - The configuration. - The color palette to map from. - - - - Gets the color palette of this . - The palette memory is owned by the palette source that created it. - - - - - Returns the closest color in the palette and the index of that pixel. - The palette contents must match the one used in the constructor. - - The color to match. - The matched color. - The index. - - - - A pixel sampling strategy that enumerates all pixels. - - - - - - - - Provides an abstraction to enumerate pixel regions within a multi-framed . - - - - - Enumerates pixel regions within the image as . - - The image. - The pixel type. - An enumeration of pixel regions. - - - - Provides methods for allowing quantization of images pixels with configurable dithering. - - - - - Gets the quantizer options defining quantization rules. - - - - - Creates the generic frame quantizer. - - The to configure internal operations. - The pixel format. - The . - - - - Creates the generic frame quantizer. - - The pixel format. - The to configure internal operations. - The options to create the quantizer with. - The . - - - - Provides methods to allow the execution of the quantization process on an image frame. - - The pixel format. - - - - Gets the configuration. - - - - - Gets the quantizer options defining quantization rules. - - - - - Gets the quantized color palette. - - - The palette has not been built via . - - - - - Adds colors to the quantized palette from the given pixel source. - - The of source pixels to register. - - - - Quantizes an image frame and return the resulting output pixels. - - The source image frame to quantize. - The bounds within the frame to quantize. - - A representing a quantized version of the source frame pixels. - - - Only executes the second (quantization) step. The palette has to be built by calling . - To run both steps, use . - - - - - Returns the index and color from the quantized palette corresponding to the given color. - - The color to match. - The matched color. - The index. - - - - Allows the quantization of images pixels using Octrees. - - - - - - Initializes a new instance of the class - using the default . - - - - - Initializes a new instance of the class. - - The quantizer options defining quantization rules. - - - - - - - - - - - - - Encapsulates methods to calculate the color palette if an image using an Octree pattern. - - - The pixel format. - - - - Initializes a new instance of the struct. - - The configuration which allows altering default behaviour or extending the library. - The quantizer options defining quantization rules. - - - - - - - - - - - - - - - - - - - - - - - - - Class which does the actual quantization. - - - - - The root of the Octree - - - - - Maximum number of significant bits in the image - - - - - Store the last node quantized - - - - - Cache the previous color quantized - - - - - Initializes a new instance of the class. - - - The maximum number of significant bits in the image - - - - - Gets the mask used when getting the appropriate pixels for a given node. - - - - - Gets or sets the number of leaves in the tree - - - - - Gets the array of reducible nodes - - - - - Add a given color value to the Octree - - The color to add. - - - - Convert the nodes in the Octree to a palette with a maximum of colorCount colors - - The palette to fill. - The maximum number of colors - The palette index, used to calculate the final size of the palette. - - - - Get the palette index for the passed color - - The color to match. - - The index. - - - - - Keep track of the previous node that was quantized - - - The node last quantized - - - - - Reduce the depth of the tree - - - - - Class which encapsulates each node in the tree - - - - - Pointers to any child nodes - - - - - Flag indicating that this is a leaf node - - - - - Number of pixels in this node - - - - - Red component - - - - - Green Component - - - - - Blue component - - - - - The index of this node in the palette - - - - - Initializes a new instance of the class. - - The level in the tree = 0 - 7. - The number of significant color bits in the image. - The tree to which this node belongs. - - - - Gets the next reducible node - - - - - Add a color into the tree - - The color to add. - The number of significant color bits. - The level in the tree. - The tree to which this node belongs. - - - - Reduce this node by removing all of its children - - The number of leaves removed - - - - Traverse the tree, building up the color palette - - The palette - The current palette index - - - - Return the palette index for the passed color - - The pixel data. - The level. - - The representing the index of the pixel in the palette. - - - - - Gets the color index at the given level. - - The color. - The node level. - The index. - - - - Increment the color count and add to the color information - - The pixel to add. - - - - Allows the quantization of images pixels using color palettes. - - - - - Initializes a new instance of the class. - - The color palette. - - - - Initializes a new instance of the class. - - The color palette. - The quantizer options defining quantization rules. - - - - - - - - - - - - - Encapsulates methods to create a quantized image based upon the given palette. - - - The pixel format. - - - - Initializes a new instance of the struct. - - The configuration which allows altering default behaviour or extending the library. - The quantizer options defining quantization rules. - The pixel map for looking up color matches from a predefined palette. - - - - - - - - - - - - - - - - - - - - - - - - - Defines quantization processing for images to reduce the number of colors used in the image palette. - - - - - Initializes a new instance of the class. - - The quantizer used to reduce the color palette. - - - - Gets the quantizer. - - - - - - - - Enables the quantization of images to reduce the number of colors used in the image palette. - - The pixel format. - - - - Initializes a new instance of the class. - - The configuration which allows altering default behaviour or extending the library. - The quantizer used to reduce the color palette. - The source for the current processor instance. - The source area to process for the current processor instance. - - - - - - - Contains color quantization specific constants. - - - - - The minimum number of colors to use when quantizing an image. - - - - - The maximum number of colors to use when quantizing an image. - - - - - The minumim dithering scale used to adjust the amount of dither. - - - - - The max dithering scale used to adjust the amount of dither. - - - - - Gets the default dithering algorithm to use. - - - - - Defines options for quantization. - - - - - Gets or sets the algorithm to apply to the output image. - Defaults to ; set to for no dithering. - - - - - Gets or sets the dithering scale used to adjust the amount of dither. Range 0..1. - Defaults to . - - - - - Gets or sets the maximum number of colors to hold in the color palette. Range 0..256. - Defaults to . - - - - - Contains utility methods for instances. - - - - - Helper method for throwing an exception when a frame quantizer palette has - been requested but not built yet. - - The pixel format. - The frame quantizer palette. - - The palette has not been built via - - - - - Execute both steps of the quantization. - - The pixel specific quantizer. - The source image frame to quantize. - The bounds within the frame to quantize. - The pixel type. - - A representing a quantized version of the source frame pixels. - - - - - Quantizes an image frame and return the resulting output pixels. - - The type of frame quantizer. - The pixel format. - The pixel specific quantizer. - The source image frame to quantize. - The bounds within the frame to quantize. - - A representing a quantized version of the source frame pixels. - - - - - A palette quantizer consisting of web safe colors as defined in the CSS Color Module Level 4. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - The quantizer options defining quantization rules. - - - - A palette quantizer consisting of colors as defined in the original second edition of Werner’s Nomenclature of Colours 1821. - The hex codes were collected and defined by Nicholas Rougeux - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - The quantizer options defining quantization rules. - - - - Allows the quantization of images pixels using Xiaolin Wu's Color Quantizer - - - - - Initializes a new instance of the class - using the default . - - - - - Initializes a new instance of the class. - - The quantizer options defining quantization rules. - - - - - - - - - - - - - An implementation of Wu's color quantizer with alpha channel. - - - - Based on C Implementation of Xiaolin Wu's Color Quantizer (v. 2) - (see Graphics Gems volume II, pages 126-133) - (). - - - This adaptation is based on the excellent JeremyAnsel.ColorQuant by Jérémy Ansel - - - - Algorithm: Greedy orthogonal bipartition of RGB space for variance minimization aided by inclusion-exclusion tricks. - For speed no nearest neighbor search is done. Slightly better performance can be expected by more sophisticated - but more expensive versions. - - - The pixel format. - - - - The index bits. 6 in original code. - - - - - The index alpha bits. 3 in original code. - - - - - The index count. - - - - - The index alpha count. - - - - - The table length. Now 1185921. originally 2471625. - - - - - Initializes a new instance of the struct. - - The configuration which allows altering default behaviour or extending the library. - The quantizer options defining quantization rules. - - - - - - - - - - - - - - - - - - - - - - - - - Gets the index of the given color in the palette. - - The red value. - The green value. - The blue value. - The alpha value. - The index. - - - - Computes sum over a box of any given statistic. - - The cube. - The moment. - The result. - - - - Computes part of Volume(cube, moment) that doesn't depend on RMax, GMax, BMax, or AMax (depending on direction). - - The cube. - The direction. - The moment. - The result. - - - - Computes remainder of Volume(cube, moment), substituting position for RMax, GMax, BMax, or AMax (depending on direction). - - The cube. - The direction. - The position. - The moment. - The result. - - - - Builds a 3-D color histogram of counts, r/g/b, c^2. - - The source data. - The bounds within the source image to quantize. - - - - Converts the histogram into moments so that we can rapidly calculate the sums of the above quantities over any desired box. - - The memory allocator used for allocating buffers. - - - - Computes the weighted variance of a box cube. - - The cube. - The . - - - - We want to minimize the sum of the variances of two sub-boxes. - The sum(c^2) terms can be ignored since their sum over both sub-boxes - is the same (the sum for the whole box) no matter where we split. - The remaining terms have a minus sign in the variance formula, - so we drop the minus sign and maximize the sum of the two terms. - - The cube. - The direction. - The first position. - The last position. - The cutting point. - The whole moment. - The . - - - - Cuts a box. - - The first set. - The second set. - Returns a value indicating whether the box has been split. - - - - Marks a color space tag. - - The cube. - A label. - - - - Builds the cube. - - - - - Moment of r*P(c). - - - - - Moment of g*P(c). - - - - - Moment of b*P(c). - - - - - Moment of a*P(c). - - - - - Moment of P(c). - - - - - Moment of c^2*P(c). - - - - - Represents a box color cube. - - - - - Gets or sets the min red value, exclusive. - - - - - Gets or sets the max red value, inclusive. - - - - - Gets or sets the min green value, exclusive. - - - - - Gets or sets the max green value, inclusive. - - - - - Gets or sets the min blue value, exclusive. - - - - - Gets or sets the max blue value, inclusive. - - - - - Gets or sets the min alpha value, exclusive. - - - - - Gets or sets the max alpha value, inclusive. - - - - - Gets or sets the volume. - - - - - - - - - - - - - - Defines a crop operation on an image. - - - - - Initializes a new instance of the class. - - The target cropped rectangle. - The source image size. - - - - Gets the width. - - - - - - - - Provides methods to allow the cropping of an image. - - The pixel format. - - - - Initializes a new instance of the class. - - The configuration which allows altering default behaviour or extending the library. - The . - The source for the current processor instance. - The source area to process for the current processor instance. - - - - - - - - - - A implementing the processor logic for . - - - - - Initializes a new instance of the struct. - - The target processing bounds for the current instance. - The source for the current instance. - The destination for the current instance. - - - - - - - Represents an error that occurs during a transform operation. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class - with a specified error message. - - The message that describes the error. - - - - Initializes a new instance of the class - with a specified error message and a reference to the inner exception that is - the cause of this exception. - - The error message that explains the reason for the exception. - The exception that is the cause of the current exception, or a null reference ( in Visual Basic) if no inner exception is specified. - - - - Defines cropping operation that preserves areas of highest entropy. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - The threshold to split the image. Must be between 0 and 1. - - is less than 0 or is greater than 1. - - - - - Gets the entropy threshold value. - - - - - - - - Provides methods to allow the cropping of an image to preserve areas of highest entropy. - - The pixel format. - - - - Initializes a new instance of the class. - - The configuration which allows altering default behaviour or extending the library. - The . - The source for the current processor instance. - The source area to process for the current processor instance. - - - - - - - - - - Gets the bounding from the given points. - - - The designating the top left position. - - - The designating the bottom right position. - - - The bounding . - - - - - Finds the bounding rectangle based on the first instance of any color component other - than the given one. - - The to search within. - The color component value to remove. - The channel to test against. - - The . - - - - - Encapsulates an interpolation algorithm for resampling images. - - - - - Gets the radius in which to sample pixels. - - - - - Gets the result of the interpolation algorithm. - - The value to process. - - The - - - - - Applies a transformation upon an image. - - The pixel format. - The transforming image processor. - - - - Implements an algorithm to alter the pixels of an image via resampling transforms. - - The pixel format. - - - - Applies a resampling transform with the given sampler. - - The type of sampler. - The sampler to use. - - - - Encapsulate an algorithm to swizzle pixels in an image. - - - - - Gets the size of the image after transformation. - - - - - Applies the swizzle transformation to a given point. - - Point to transform. - The transformed point. - - - - Defines an affine transformation applicable on an . - - - - - Initializes a new instance of the class. - - The transform matrix. - The sampler to perform the transform operation. - The target dimensions. - - - - Gets the sampler to perform interpolation of the transform operation. - - - - - Gets the matrix used to supply the affine transform. - - - - - Gets the destination size to constrain the transformed image to. - - - - - - - - Provides the base methods to perform affine transforms on an image. - - The pixel format. - - - - Initializes a new instance of the class. - - The configuration which allows altering default behaviour or extending the library. - The defining the processor parameters. - The source for the current processor instance. - The source area to process for the current processor instance. - - - - - - - - - - Adjusts an image so that its orientation is suitable for viewing. Adjustments are based on EXIF metadata embedded in the image. - - - - - - - - Adjusts an image so that its orientation is suitable for viewing. Adjustments are based on EXIF metadata embedded in the image. - - The pixel format. - - - - Initializes a new instance of the class. - - The configuration which allows altering default behaviour or extending the library. - The source for the current processor instance. - The source area to process for the current processor instance. - - - - - - - - - - Returns the current EXIF orientation - - The image to auto rotate. - The - - - - Defines a flipping around the center point of the image. - - - - - Initializes a new instance of the class. - - The used to perform flipping. - - - - Gets the used to perform flipping. - - - - - - - - Provides methods that allow the flipping of an image around its center point. - - The pixel format. - - - - Initializes a new instance of the class. - - The configuration which allows altering default behaviour or extending the library. - The . - The source for the current processor instance. - The source area to process for the current processor instance. - - - - - - - Swaps the image at the X-axis, which goes horizontally through the middle at half the height of the image. - - The source image to apply the process to. - The configuration. - - - - Swaps the image at the Y-axis, which goes vertically through the middle at half of the width of the image. - - The source image to apply the process to. - The configuration. - - - - Utility methods for affine and projective transforms. - - - - - Defines a projective transformation applicable to an . - - - - - Initializes a new instance of the class. - - The transform matrix. - The sampler to perform the transform operation. - The target dimensions. - - - - Gets the sampler to perform interpolation of the transform operation. - - - - - Gets the matrix used to supply the projective transform. - - - - - Gets the destination size to constrain the transformed image to. - - - - - - - - Provides the base methods to perform non-affine transforms on an image. - - The pixel format. - - - - Initializes a new instance of the class. - - The configuration which allows altering default behaviour or extending the library. - The defining the processor parameters. - The source for the current processor instance. - The source area to process for the current processor instance. - - - - - - - - - - Defines a rotation applicable to an . - - - - - Initializes a new instance of the class. - - The angle of rotation in degrees. - The source image size - - - - Initializes a new instance of the class. - - The angle of rotation in degrees. - The sampler to perform the rotating operation. - The source image size - - - - Gets the angle of rotation in degrees. - - - - - - - - Provides methods that allow the rotating of images. - - The pixel format. - - - - Initializes a new instance of the class. - - The configuration which allows altering default behaviour or extending the library. - The defining the processor parameters. - The source for the current processor instance. - The source area to process for the current processor instance. - - - - - - - - - - Wraps a given angle in degrees so that it falls withing the 0-360 degree range - - The angle of rotation in degrees. - The . - - - - Rotates the images with an optimized method when the angle is 90, 180 or 270 degrees. - - The source image. - The destination image. - The configuration. - - The - - - - - Rotates the image 180 degrees clockwise at the centre point. - - The source image. - The destination image. - The configuration. - - - - Rotates the image 270 degrees clockwise at the centre point. - - The source image. - The destination image. - The configuration. - - - - Rotates the image 90 degrees clockwise at the centre point. - - The source image. - The destination image. - The configuration. - - - - Defines a skew transformation applicable to an . - - - - - Initializes a new instance of the class. - - The angle in degrees to perform the skew along the x-axis. - The angle in degrees to perform the skew along the y-axis. - The source image size - - - - Initializes a new instance of the class. - - The angle in degrees to perform the skew along the x-axis. - The angle in degrees to perform the skew along the y-axis. - The sampler to perform the skew operation. - The source image size - - - - Gets the angle of rotation along the x-axis in degrees. - - - - - Gets the angle of rotation along the y-axis in degrees. - - - - - The function implements the bicubic kernel algorithm W(x) as described on - Wikipedia - A commonly used algorithm within image processing that preserves sharpness better than triangle interpolation. - - - - - - - - - - - - - - The function implements the box algorithm. Similar to nearest neighbor when upscaling. - When downscaling the pixels will average, merging together. - - - - - - - - - - - - - - Cubic filters contain a collection of different filters of varying B-Spline and - Cardinal values. With these two values you can generate any smoothly fitting - (continuious first derivative) piece-wise cubic filter. - - - - - - - The Catmull-Rom filter is a well known standard Cubic Filter often used as a interpolation function. - This filter produces a reasonably sharp edge, but without a the pronounced gradient change on large - scale image enlargements that a 'Lagrange' filter can produce. - - - - - The Hermite filter is type of smoothed triangular interpolation Filter, - This filter rounds off strong edges while preserving flat 'color levels' in the original image. - - - - - The function implements the Mitchell-Netravali algorithm as described on - Wikipedia - - - - - The function implements the Robidoux algorithm. - - - - - - The function implements the Robidoux Sharp algorithm. - - - - - - The function implements the spline algorithm. - - - - The function implements the Robidoux Sharp algorithm. - - - - - - Initializes a new instance of the struct. - - The sampling radius. - The B-Spline value. - The Cardinal cubic value. - - - - - - - - - - - - - The function implements the Lanczos kernel algorithm as described on - Wikipedia. - - - - - Implements the Lanczos kernel algorithm with a radius of 2. - - - - - Implements the Lanczos kernel algorithm with a radius of 3. - - - - - Implements the Lanczos kernel algorithm with a radius of 5. - - - - - Implements the Lanczos kernel algorithm with a radius of 8. - - - - - Initializes a new instance of the struct. - - The sampling radius. - - - - - - - - - - - - - The function implements the nearest neighbor algorithm. This uses an unscaled filter - which will select the closest pixel to the new pixels position. - - - - - - - - - - - - - - The function implements the triangle (bilinear) algorithm. - Bilinear interpolation can be used where perfect image transformation with pixel matching is impossible, - so that one can calculate and assign appropriate intensity values to pixels. - - - - - - - - - - - - - - The function implements the welch algorithm. - - - - - - - - - - - - - - - Provides methods to help calculate the target rectangle when resizing using the - enumeration. - - - - - Calculates the target location and bounds to perform the resize operation against. - - The source image size. - The resize options. - - The tuple representing the location and the bounds - - - - - Points to a collection of of weights allocated in . - - - - - Initializes a new instance of the struct. - - - - - Gets the start index for the destination row. - - - - - Gets the the length of the kernel. - - - - - Gets the span representing the portion of the that this window covers. - - The . - - - - - Computes the sum of vectors in 'rowSpan' weighted by weight values, pointed by this instance. - - The input span of vectors - The weighted sum - - - - Copy the contents of altering - to the value . - - - - - Provides resize kernel values from an optimized contiguous memory region. - - - - - Gets the length of the destination row/column - - - - - Gets the maximum diameter of the kernels. - - - - - Gets a string of information to help debugging - - - - - Disposes instance releasing it's backing buffer. - - - - - Disposes the object and frees resources for the Garbage Collector. - - Whether to dispose of managed and unmanaged objects. - - - - Returns a for an index value between 0 and DestinationSize - 1. - - - - - Computes the weights to apply at each pixel when resizing. - - The type of sampler. - The - The destination size - The source size - The to use for buffer allocations - The - - - - Initializes the kernel map. - - - - - Builds a for the row (in ) - referencing the data at row within , - so the data reusable by other data rows. - - - - - Returns a referencing values of - at row . - - - - - Memory-optimized where repeating rows are stored only once. - - - - - Defines an image resizing operation with the given and dimensional parameters. - - - - - Initializes a new instance of the class. - - The resize options. - The source image size. - - - - Gets the sampler to perform the resize operation. - - - - - Gets the destination width. - - - - - Gets the destination height. - - - - - Gets the resize rectangle. - - - - - Gets a value indicating whether to compress or expand individual pixel color values on processing. - - - - - Gets a value indicating whether to premultiply the alpha (if it exists) during the resize operation. - - - - - - - - Implements resizing of images using various resamplers. - - The pixel format. - - - - - - - - - - - - - Implements the resize algorithm using a sliding window of size - maximized by . - The height of the window is a multiple of the vertical kernel's maximum diameter. - When sliding the window, the contents of the bottom window band are copied to the new top band. - For more details, and visual explanation, see "ResizeWorker.pptx". - - - - - Defines a swizzle operation on an image. - - The swizzle function type. - - - - Initializes a new instance of the class. - - The swizzler operation. - - - - Gets the swizzler operation. - - - - - - - - The base class for all transform processors. Any processor that changes the dimensions of the image should inherit from this. - - The pixel format. - - - - Initializes a new instance of the class. - - The configuration which allows altering default behaviour or extending the library. - The source for the current processor instance. - The source area to process for the current processor instance. - - - - - - - Contains helper methods for working with transforms. - - - - - Updates the dimensional metadata of a transformed image - - The pixel format. - The image to update - - - - Contains utility methods for working with transforms. - - - - - Returns a value that indicates whether the specified matrix is degenerate - containing one or more values equivalent to or a - zero determinant and therefore cannot be used for linear transforms. - - The transform matrix. - - - - Returns a value that indicates whether the specified matrix is degenerate - containing one or more values equivalent to or a - zero determinant and therefore cannot be used for linear transforms. - - The transform matrix. - - - - Returns a value that indicates whether the specified matrix contains any values - that are not a number . - - The transform matrix. - The . - - - - Returns a value that indicates whether the specified matrix contains any values - that are not a number . - - The transform matrix. - The . - - - - Applies the projective transform against the given coordinates flattened into the 2D space. - - The "x" vector coordinate. - The "y" vector coordinate. - The transform matrix. - The . - - - - Creates a centered rotation matrix using the given rotation in degrees and the source size. - - The amount of rotation, in degrees. - The source image size. - The . - - - - Creates a centered rotation matrix using the given rotation in radians and the source size. - - The amount of rotation, in radians. - The source image size. - The . - - - - Creates a centered skew matrix from the give angles in degrees and the source size. - - The X angle, in degrees. - The Y angle, in degrees. - The source image size. - The . - - - - Creates a centered skew matrix from the give angles in radians and the source size. - - The X angle, in radians. - The Y angle, in radians. - The source image size. - The . - - - - Gets the centered transform matrix based upon the source and destination rectangles. - - The source image bounds. - The transformation matrix. - The - - - - Creates a matrix that performs a tapering projective transform. - - - The rectangular size of the image being transformed. - An enumeration that indicates the side of the rectangle that tapers. - An enumeration that indicates on which corners to taper the rectangle. - The amount to taper. - The - - - - Returns the rectangle bounds relative to the source for the given transformation matrix. - - The source rectangle. - The transformation matrix. - - The . - - - - - Returns the rectangle relative to the source for the given transformation matrix. - - The source rectangle. - The transformation matrix. - - The . - - - - - Returns the size relative to the source for the given transformation matrix. - - The source size. - The transformation matrix. - - The . - - - - - Returns the rectangle relative to the source for the given transformation matrix. - - The source rectangle. - The transformation matrix. - - The . - - - - - Returns the size relative to the source for the given transformation matrix. - - The source size. - The transformation matrix. - - The . - - - - - A helper class for constructing instances for use in projective transforms. - - - - - Prepends a matrix that performs a tapering projective transform. - - An enumeration that indicates the side of the rectangle that tapers. - An enumeration that indicates on which corners to taper the rectangle. - The amount to taper. - The . - - - - Appends a matrix that performs a tapering projective transform. - - An enumeration that indicates the side of the rectangle that tapers. - An enumeration that indicates on which corners to taper the rectangle. - The amount to taper. - The . - - - - Prepends a centered rotation matrix using the given rotation in degrees. - - The amount of rotation, in degrees. - The . - - - - Prepends a centered rotation matrix using the given rotation in radians. - - The amount of rotation, in radians. - The . - - - - Prepends a centered rotation matrix using the given rotation in degrees at the given origin. - - The amount of rotation, in radians. - The rotation origin point. - The . - - - - Prepends a centered rotation matrix using the given rotation in radians at the given origin. - - The amount of rotation, in radians. - The rotation origin point. - The . - - - - Appends a centered rotation matrix using the given rotation in degrees. - - The amount of rotation, in degrees. - The . - - - - Appends a centered rotation matrix using the given rotation in radians. - - The amount of rotation, in radians. - The . - - - - Appends a centered rotation matrix using the given rotation in degrees at the given origin. - - The amount of rotation, in radians. - The rotation origin point. - The . - - - - Appends a centered rotation matrix using the given rotation in radians at the given origin. - - The amount of rotation, in radians. - The rotation origin point. - The . - - - - Prepends a scale matrix from the given uniform scale. - - The uniform scale. - The . - - - - Prepends a scale matrix from the given vector scale. - - The horizontal and vertical scale. - The . - - - - Prepends a scale matrix from the given vector scale. - - The horizontal and vertical scale. - The . - - - - Appends a scale matrix from the given uniform scale. - - The uniform scale. - The . - - - - Appends a scale matrix from the given vector scale. - - The horizontal and vertical scale. - The . - - - - Appends a scale matrix from the given vector scale. - - The horizontal and vertical scale. - The . - - - - Prepends a centered skew matrix from the give angles in degrees. - - The X angle, in degrees. - The Y angle, in degrees. - The . - - - - Prepends a centered skew matrix from the give angles in radians. - - The X angle, in radians. - The Y angle, in radians. - The . - - - - Prepends a skew matrix using the given angles in degrees at the given origin. - - The X angle, in degrees. - The Y angle, in degrees. - The skew origin point. - The . - - - - Prepends a skew matrix using the given angles in radians at the given origin. - - The X angle, in radians. - The Y angle, in radians. - The skew origin point. - The . - - - - Appends a centered skew matrix from the give angles in degrees. - - The X angle, in degrees. - The Y angle, in degrees. - The . - - - - Appends a centered skew matrix from the give angles in radians. - - The X angle, in radians. - The Y angle, in radians. - The . - - - - Appends a skew matrix using the given angles in degrees at the given origin. - - The X angle, in degrees. - The Y angle, in degrees. - The skew origin point. - The . - - - - Appends a skew matrix using the given angles in radians at the given origin. - - The X angle, in radians. - The Y angle, in radians. - The skew origin point. - The . - - - - Prepends a translation matrix from the given vector. - - The translation position. - The . - - - - Prepends a translation matrix from the given vector. - - The translation position. - The . - - - - Appends a translation matrix from the given vector. - - The translation position. - The . - - - - Appends a translation matrix from the given vector. - - The translation position. - The . - - - - Prepends a raw matrix. - - The matrix to prepend. - - The resultant matrix is degenerate containing one or more values equivalent - to or a zero determinant and therefore cannot be used - for linear transforms. - - The . - - - - Appends a raw matrix. - - The matrix to append. - - The resultant matrix is degenerate containing one or more values equivalent - to or a zero determinant and therefore cannot be used - for linear transforms. - - The . - - - - Returns the combined matrix for a given source size. - - The source image size. - The . - - - - Returns the combined matrix for a given source rectangle. - - The rectangle in the source image. - - The resultant matrix is degenerate containing one or more values equivalent - to or a zero determinant and therefore cannot be used - for linear transforms. - - The . - - - - Provides enumeration over how the image should be resized. - - - - - Crops the resized image to fit the bounds of its container. - - - - - Pads the resized image to fit the bounds of its container. - If only one dimension is passed, will maintain the original aspect ratio. - - - - - Pads the image to fit the bound of the container without resizing the - original source. - When downscaling, performs the same functionality as - - - - - Constrains the resized image to fit the bounds of its container maintaining - the original aspect ratio. - - - - - Resizes the image until the shortest side reaches the set given dimension. - Upscaling is disabled in this mode and the original image will be returned - if attempted. - - - - - Stretches the resized image to fit the bounds of its container. - - - - - The target location and size of the resized image has been manually set. - - - - - The resize options for resizing images against certain modes. - - - - - Gets or sets the resize mode. - - - - - Gets or sets the anchor position. - - - - - Gets or sets the center coordinates. - - - - - Gets or sets the target size. - - - - - Gets or sets the sampler to perform the resize operation. - - - - - Gets or sets a value indicating whether to compress - or expand individual pixel colors the value on processing. - - - - - Gets or sets the target rectangle to resize into. - - - - - Gets or sets a value indicating whether to premultiply - the alpha (if it exists) during the resize operation. - - - - - Provides enumeration over how the image should be rotated. - - - - - Do not rotate the image. - - - - - Rotate the image by 90 degrees clockwise. - - - - - Rotate the image by 180 degrees clockwise. - - - - - Rotate the image by 270 degrees clockwise. - - - - - Enumerates the various options which determine how to taper corners - - - - - Taper the left or top corner - - - - - Taper the right or bottom corner - - - - - Taper the both sets of corners - - - - - Enumerates the various options which determine which side to taper - - - - - Taper the left side - - - - - Taper the top side - - - - - Taper the right side - - - - - Taper the bottom side - - - - - Specifies the position in a stream to use for reading. - - - - - Specifies the beginning of a stream. - - - - - Specifies the current position within a stream. - - - - - Provides methods to protect against invalid parameters for a DEBUG build. - - - Provides methods to protect against invalid parameters for a DEBUG build. - - - - - Verifies whether a specific condition is met, throwing an exception if it's false. - - The condition - The error message - - - - Verifies, that the target span is of same size than the 'other' span. - - The element type of the spans - The target span. - The 'other' span to compare 'target' to. - The name of the parameter that is to be checked. - - has a different size than - - - - - Verifies, that the `target` span has the length of 'minSpan', or longer. - - The element type of the spans - The target span. - The 'minSpan' span to compare 'target' to. - The name of the parameter that is to be checked. - - has less items than - - - - - Ensures that the value is not null. - - The target object, which cannot be null. - The name of the parameter that is to be checked. - The type of the value. - is null. - - - - Ensures that the target value is not null, empty, or whitespace. - - The target string, which should be checked against being null or empty. - Name of the parameter. - is null. - is empty or contains only blanks. - - - - Ensures that the specified value is less than a maximum value. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - The type of the value. - - is greater than the maximum value. - - - - - Verifies that the specified value is less than or equal to a maximum value - and throws an exception if it is not. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - The type of the value. - - is greater than the maximum value. - - - - - Verifies that the specified value is greater than a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - The type of the value. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - The type of the value. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value and less than - or equal to a maximum value and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The maximum value. - The name of the parameter that is to be checked. - The type of the value. - - is less than the minimum value of greater than the maximum value. - - - - - Verifies, that the method parameter with specified target value is true - and throws an exception if it is found to be so. - - The target value, which cannot be false. - The name of the parameter that is to be checked. - The error message, if any to add to the exception. - - is false. - - - - - Verifies, that the method parameter with specified target value is false - and throws an exception if it is found to be so. - - The target value, which cannot be true. - The name of the parameter that is to be checked. - The error message, if any to add to the exception. - - is true. - - - - - Verifies, that the `source` span has the length of 'minLength', or longer. - - The element type of the spans. - The source span. - The minimum length. - The name of the parameter that is to be checked. - - has less than items. - - - - - Verifies, that the `source` span has the length of 'minLength', or longer. - - The element type of the spans. - The target span. - The minimum length. - The name of the parameter that is to be checked. - - has less than items. - - - - - Verifies that the 'destination' span is not shorter than 'source'. - - The source element type. - The destination element type. - The source span. - The destination span. - The name of the argument for 'destination'. - - - - Verifies that the 'destination' span is not shorter than 'source'. - - The source element type. - The destination element type. - The source span. - The destination span. - The name of the argument for 'destination'. - - - - Provides methods to protect against invalid parameters. - - - Provides methods to protect against invalid parameters. - - - - - Ensures that the value is a value type. - - The target object, which cannot be null. - The name of the parameter that is to be checked. - The type of the value. - is not a value type. - - - - Ensures that the value is not null. - - The target object, which cannot be null. - The name of the parameter that is to be checked. - The type of the value. - is null. - - - - Ensures that the target value is not null, empty, or whitespace. - - The target string, which should be checked against being null or empty. - Name of the parameter. - is null. - is empty or contains only blanks. - - - - Ensures that the specified value is less than a maximum value. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - The type of the value. - - is greater than the maximum value. - - - - - Verifies that the specified value is less than or equal to a maximum value - and throws an exception if it is not. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - The type of the value. - - is greater than the maximum value. - - - - - Verifies that the specified value is greater than a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - The type of the value. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - The type of the value. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value and less than - or equal to a maximum value and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The maximum value. - The name of the parameter that is to be checked. - The type of the value. - - is less than the minimum value of greater than the maximum value. - - - - - Verifies, that the method parameter with specified target value is true - and throws an exception if it is found to be so. - - The target value, which cannot be false. - The name of the parameter that is to be checked. - The error message, if any to add to the exception. - - is false. - - - - - Verifies, that the method parameter with specified target value is false - and throws an exception if it is found to be so. - - The target value, which cannot be true. - The name of the parameter that is to be checked. - The error message, if any to add to the exception. - - is true. - - - - - Verifies, that the `source` span has the length of 'minLength', or longer. - - The element type of the spans. - The source span. - The minimum length. - The name of the parameter that is to be checked. - - has less than items. - - - - - Verifies, that the `source` span has the length of 'minLength', or longer. - - The element type of the spans. - The target span. - The minimum length. - The name of the parameter that is to be checked. - - has less than items. - - - - - Verifies that the 'destination' span is not shorter than 'source'. - - The source element type. - The destination element type. - The source span. - The destination span. - The name of the argument for 'destination'. - - - - Verifies that the 'destination' span is not shorter than 'source'. - - The source element type. - The destination element type. - The source span. - The destination span. - The name of the argument for 'destination'. - - - - Ensures that the specified value is less than a maximum value. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - - is greater than the maximum value. - - - - - Verifies that the specified value is less than or equal to a maximum value - and throws an exception if it is not. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - - is greater than the maximum value. - - - - - Verifies that the specified value is greater than a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value and less than - or equal to a maximum value and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The maximum value. - The name of the parameter that is to be checked. - - is less than the minimum value of greater than the maximum value. - - - - - Ensures that the specified value is less than a maximum value. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - - is greater than the maximum value. - - - - - Verifies that the specified value is less than or equal to a maximum value - and throws an exception if it is not. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - - is greater than the maximum value. - - - - - Verifies that the specified value is greater than a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value and less than - or equal to a maximum value and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The maximum value. - The name of the parameter that is to be checked. - - is less than the minimum value of greater than the maximum value. - - - - - Ensures that the specified value is less than a maximum value. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - - is greater than the maximum value. - - - - - Verifies that the specified value is less than or equal to a maximum value - and throws an exception if it is not. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - - is greater than the maximum value. - - - - - Verifies that the specified value is greater than a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value and less than - or equal to a maximum value and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The maximum value. - The name of the parameter that is to be checked. - - is less than the minimum value of greater than the maximum value. - - - - - Ensures that the specified value is less than a maximum value. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - - is greater than the maximum value. - - - - - Verifies that the specified value is less than or equal to a maximum value - and throws an exception if it is not. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - - is greater than the maximum value. - - - - - Verifies that the specified value is greater than a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value and less than - or equal to a maximum value and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The maximum value. - The name of the parameter that is to be checked. - - is less than the minimum value of greater than the maximum value. - - - - - Ensures that the specified value is less than a maximum value. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - - is greater than the maximum value. - - - - - Verifies that the specified value is less than or equal to a maximum value - and throws an exception if it is not. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - - is greater than the maximum value. - - - - - Verifies that the specified value is greater than a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value and less than - or equal to a maximum value and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The maximum value. - The name of the parameter that is to be checked. - - is less than the minimum value of greater than the maximum value. - - - - - Ensures that the specified value is less than a maximum value. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - - is greater than the maximum value. - - - - - Verifies that the specified value is less than or equal to a maximum value - and throws an exception if it is not. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - - is greater than the maximum value. - - - - - Verifies that the specified value is greater than a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value and less than - or equal to a maximum value and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The maximum value. - The name of the parameter that is to be checked. - - is less than the minimum value of greater than the maximum value. - - - - - Ensures that the specified value is less than a maximum value. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - - is greater than the maximum value. - - - - - Verifies that the specified value is less than or equal to a maximum value - and throws an exception if it is not. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - - is greater than the maximum value. - - - - - Verifies that the specified value is greater than a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value and less than - or equal to a maximum value and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The maximum value. - The name of the parameter that is to be checked. - - is less than the minimum value of greater than the maximum value. - - - - - Ensures that the specified value is less than a maximum value. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - - is greater than the maximum value. - - - - - Verifies that the specified value is less than or equal to a maximum value - and throws an exception if it is not. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - - is greater than the maximum value. - - - - - Verifies that the specified value is greater than a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value and less than - or equal to a maximum value and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The maximum value. - The name of the parameter that is to be checked. - - is less than the minimum value of greater than the maximum value. - - - - - Ensures that the specified value is less than a maximum value. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - - is greater than the maximum value. - - - - - Verifies that the specified value is less than or equal to a maximum value - and throws an exception if it is not. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - - is greater than the maximum value. - - - - - Verifies that the specified value is greater than a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value and less than - or equal to a maximum value and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The maximum value. - The name of the parameter that is to be checked. - - is less than the minimum value of greater than the maximum value. - - - - - Ensures that the specified value is less than a maximum value. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - - is greater than the maximum value. - - - - - Verifies that the specified value is less than or equal to a maximum value - and throws an exception if it is not. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - - is greater than the maximum value. - - - - - Verifies that the specified value is greater than a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value and less than - or equal to a maximum value and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The maximum value. - The name of the parameter that is to be checked. - - is less than the minimum value of greater than the maximum value. - - - - - Ensures that the specified value is less than a maximum value. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - - is greater than the maximum value. - - - - - Verifies that the specified value is less than or equal to a maximum value - and throws an exception if it is not. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - - is greater than the maximum value. - - - - - Verifies that the specified value is greater than a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value and less than - or equal to a maximum value and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The maximum value. - The name of the parameter that is to be checked. - - is less than the minimum value of greater than the maximum value. - - - - - Ensures that the specified value is less than a maximum value. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - - is greater than the maximum value. - - - - - Verifies that the specified value is less than or equal to a maximum value - and throws an exception if it is not. - - The target value, which should be validated. - The maximum value. - The name of the parameter that is to be checked. - - is greater than the maximum value. - - - - - Verifies that the specified value is greater than a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value - and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The name of the parameter that is to be checked. - - is less than the minimum value. - - - - - Verifies that the specified value is greater than or equal to a minimum value and less than - or equal to a maximum value and throws an exception if it is not. - - The target value, which should be validated. - The minimum value. - The maximum value. - The name of the parameter that is to be checked. - - is less than the minimum value of greater than the maximum value. - - - - - Helper methods to throw exceptions - - - - - Throws an when fails. - - - - - Throws an when fails. - - - - - Throws an when fails. - - - - - Throws an when fails. - - - - - Throws an when fails. - - - - - Throws an when fails. - - - - - Throws an when fails. - - - - - Throws an when fails. - - - - - Throws a new . - - The message to include in the exception. - The argument name. - Thrown with and . - - - - Throws a new . - - The argument name. - The message to include in the exception. - Thrown with and . - - - - Throws a new . - - The argument name. - The message to include in the exception. - Thrown with and . - - - diff --git a/pyaedt/dlls/PDFReport/System.Runtime.dll b/pyaedt/dlls/PDFReport/System.Runtime.dll deleted file mode 100644 index ff824191c255b1e96846c19bb020bf105326635d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 120664 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 - - - System.Runtime - - - - Encapsulates a method that has no parameters and does not return a value. - - - - - - - Encapsulates a method that has a single parameter and does not return a value.To browse the .NET Framework source code for this type, see the Reference Source. - The type of the parameter of the method that this delegate encapsulates.This type parameter is contravariant. That is, you can use either the type you specified or any type that is less derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - 1 - - - - - - - Encapsulates a method that has 10 parameters and does not return a value. - The type of the first parameter of the method that this delegate encapsulates.This type parameter is contravariant. That is, you can use either the type you specified or any type that is less derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - The type of the second parameter of the method that this delegate encapsulates. - The type of the third parameter of the method that this delegate encapsulates. - The type of the fourth parameter of the method that this delegate encapsulates. - The type of the fifth parameter of the method that this delegate encapsulates. - The type of the sixth parameter of the method that this delegate encapsulates. - The type of the seventh parameter of the method that this delegate encapsulates. - The type of the eighth parameter of the method that this delegate encapsulates. - The type of the ninth parameter of the method that this delegate encapsulates. - The type of the tenth parameter of the method that this delegate encapsulates. - 2 - - - - - - - Encapsulates a method that has 11 parameters and does not return a value. - The type of the first parameter of the method that this delegate encapsulates.This type parameter is contravariant. That is, you can use either the type you specified or any type that is less derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - The type of the second parameter of the method that this delegate encapsulates. - The type of the third parameter of the method that this delegate encapsulates. - The type of the fourth parameter of the method that this delegate encapsulates. - The type of the fifth parameter of the method that this delegate encapsulates. - The type of the sixth parameter of the method that this delegate encapsulates. - The type of the seventh parameter of the method that this delegate encapsulates. - The type of the eighth parameter of the method that this delegate encapsulates. - The type of the ninth parameter of the method that this delegate encapsulates. - The type of the tenth parameter of the method that this delegate encapsulates. - The type of the eleventh parameter of the method that this delegate encapsulates. - 2 - - - - - - - Encapsulates a method that has 12 parameters and does not return a value. - The type of the first parameter of the method that this delegate encapsulates.This type parameter is contravariant. That is, you can use either the type you specified or any type that is less derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - The type of the second parameter of the method that this delegate encapsulates. - The type of the third parameter of the method that this delegate encapsulates. - The type of the fourth parameter of the method that this delegate encapsulates. - The type of the fifth parameter of the method that this delegate encapsulates. - The type of the sixth parameter of the method that this delegate encapsulates. - The type of the seventh parameter of the method that this delegate encapsulates. - The type of the eighth parameter of the method that this delegate encapsulates. - The type of the ninth parameter of the method that this delegate encapsulates. - The type of the tenth parameter of the method that this delegate encapsulates. - The type of the eleventh parameter of the method that this delegate encapsulates. - The type of the twelfth parameter of the method that this delegate encapsulates. - 2 - - - - - - - Encapsulates a method that has 13 parameters and does not return a value. - The type of the first parameter of the method that this delegate encapsulates.This type parameter is contravariant. That is, you can use either the type you specified or any type that is less derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - The type of the second parameter of the method that this delegate encapsulates. - The type of the third parameter of the method that this delegate encapsulates. - The type of the fourth parameter of the method that this delegate encapsulates. - The type of the fifth parameter of the method that this delegate encapsulates. - The type of the sixth parameter of the method that this delegate encapsulates. - The type of the seventh parameter of the method that this delegate encapsulates. - The type of the eighth parameter of the method that this delegate encapsulates. - The type of the ninth parameter of the method that this delegate encapsulates. - The type of the tenth parameter of the method that this delegate encapsulates. - The type of the eleventh parameter of the method that this delegate encapsulates. - The type of the twelfth parameter of the method that this delegate encapsulates. - The type of the thirteenth parameter of the method that this delegate encapsulates. - 2 - - - - - - - Encapsulates a method that has 14 parameters and does not return a value. - The type of the first parameter of the method that this delegate encapsulates.This type parameter is contravariant. That is, you can use either the type you specified or any type that is less derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - The type of the second parameter of the method that this delegate encapsulates. - The type of the third parameter of the method that this delegate encapsulates. - The type of the fourth parameter of the method that this delegate encapsulates. - The type of the fifth parameter of the method that this delegate encapsulates. - The type of the sixth parameter of the method that this delegate encapsulates. - The type of the seventh parameter of the method that this delegate encapsulates. - The type of the eighth parameter of the method that this delegate encapsulates. - The type of the ninth parameter of the method that this delegate encapsulates. - The type of the tenth parameter of the method that this delegate encapsulates. - The type of the eleventh parameter of the method that this delegate encapsulates. - The type of the twelfth parameter of the method that this delegate encapsulates. - The type of the thirteenth parameter of the method that this delegate encapsulates. - The type of the fourteenth parameter of the method that this delegate encapsulates. - 2 - - - - - - - Encapsulates a method that has 15 parameters and does not return a value. - The type of the first parameter of the method that this delegate encapsulates.This type parameter is contravariant. That is, you can use either the type you specified or any type that is less derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - The type of the second parameter of the method that this delegate encapsulates. - The type of the third parameter of the method that this delegate encapsulates. - The type of the fourth parameter of the method that this delegate encapsulates. - The type of the fifth parameter of the method that this delegate encapsulates. - The type of the sixth parameter of the method that this delegate encapsulates. - The type of the seventh parameter of the method that this delegate encapsulates. - The type of the eighth parameter of the method that this delegate encapsulates. - The type of the ninth parameter of the method that this delegate encapsulates. - The type of the tenth parameter of the method that this delegate encapsulates. - The type of the eleventh parameter of the method that this delegate encapsulates. - The type of the twelfth parameter of the method that this delegate encapsulates. - The type of the thirteenth parameter of the method that this delegate encapsulates. - The type of the fourteenth parameter of the method that this delegate encapsulates. - The type of the fifteenth parameter of the method that this delegate encapsulates. - 2 - - - - - - - Encapsulates a method that has 16 parameters and does not return a value. - The type of the first parameter of the method that this delegate encapsulates.This type parameter is contravariant. That is, you can use either the type you specified or any type that is less derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - The type of the second parameter of the method that this delegate encapsulates. - The type of the third parameter of the method that this delegate encapsulates. - The type of the fourth parameter of the method that this delegate encapsulates. - The type of the fifth parameter of the method that this delegate encapsulates. - The type of the sixth parameter of the method that this delegate encapsulates. - The type of the seventh parameter of the method that this delegate encapsulates. - The type of the eighth parameter of the method that this delegate encapsulates. - The type of the ninth parameter of the method that this delegate encapsulates. - The type of the tenth parameter of the method that this delegate encapsulates. - The type of the eleventh parameter of the method that this delegate encapsulates. - The type of the twelfth parameter of the method that this delegate encapsulates. - The type of the thirteenth parameter of the method that this delegate encapsulates. - The type of the fourteenth parameter of the method that this delegate encapsulates. - The type of the fifteenth parameter of the method that this delegate encapsulates. - The type of the sixteenth parameter of the method that this delegate encapsulates. - 2 - - - - - - - Encapsulates a method that has two parameters and does not return a value. - The type of the first parameter of the method that this delegate encapsulates.This type parameter is contravariant. That is, you can use either the type you specified or any type that is less derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - The type of the second parameter of the method that this delegate encapsulates. - 2 - - - - - - - Encapsulates a method that has three parameters and does not return a value. - The type of the first parameter of the method that this delegate encapsulates.This type parameter is contravariant. That is, you can use either the type you specified or any type that is less derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - The type of the second parameter of the method that this delegate encapsulates. - The type of the third parameter of the method that this delegate encapsulates. - 2 - - - - - - - Encapsulates a method that has four parameters and does not return a value. - The type of the first parameter of the method that this delegate encapsulates.This type parameter is contravariant. That is, you can use either the type you specified or any type that is less derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - The type of the second parameter of the method that this delegate encapsulates. - The type of the third parameter of the method that this delegate encapsulates. - The type of the fourth parameter of the method that this delegate encapsulates. - 2 - - - - - - - Encapsulates a method that has five parameters and does not return a value. - The type of the first parameter of the method that this delegate encapsulates.This type parameter is contravariant. That is, you can use either the type you specified or any type that is less derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - The type of the second parameter of the method that this delegate encapsulates. - The type of the third parameter of the method that this delegate encapsulates. - The type of the fourth parameter of the method that this delegate encapsulates. - The type of the fifth parameter of the method that this delegate encapsulates. - 2 - - - - - - - Encapsulates a method that has six parameters and does not return a value. - The type of the first parameter of the method that this delegate encapsulates.This type parameter is contravariant. That is, you can use either the type you specified or any type that is less derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - The type of the second parameter of the method that this delegate encapsulates. - The type of the third parameter of the method that this delegate encapsulates. - The type of the fourth parameter of the method that this delegate encapsulates. - The type of the fifth parameter of the method that this delegate encapsulates. - The type of the sixth parameter of the method that this delegate encapsulates. - 2 - - - - - - - Encapsulates a method that has seven parameters and does not return a value. - The type of the first parameter of the method that this delegate encapsulates.This type parameter is contravariant. That is, you can use either the type you specified or any type that is less derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - The type of the second parameter of the method that this delegate encapsulates. - The type of the third parameter of the method that this delegate encapsulates. - The type of the fourth parameter of the method that this delegate encapsulates. - The type of the fifth parameter of the method that this delegate encapsulates. - The type of the sixth parameter of the method that this delegate encapsulates. - The type of the seventh parameter of the method that this delegate encapsulates. - 2 - - - - - - - Encapsulates a method that has eight parameters and does not return a value. - The type of the first parameter of the method that this delegate encapsulates.This type parameter is contravariant. That is, you can use either the type you specified or any type that is less derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - The type of the second parameter of the method that this delegate encapsulates. - The type of the third parameter of the method that this delegate encapsulates. - The type of the fourth parameter of the method that this delegate encapsulates. - The type of the fifth parameter of the method that this delegate encapsulates. - The type of the sixth parameter of the method that this delegate encapsulates. - The type of the seventh parameter of the method that this delegate encapsulates. - The type of the eighth parameter of the method that this delegate encapsulates. - 2 - - - - - - - Encapsulates a method that has nine parameters and does not return a value. - The type of the first parameter of the method that this delegate encapsulates.This type parameter is contravariant. That is, you can use either the type you specified or any type that is less derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - The type of the second parameter of the method that this delegate encapsulates. - The type of the third parameter of the method that this delegate encapsulates. - The type of the fourth parameter of the method that this delegate encapsulates. - The type of the fifth parameter of the method that this delegate encapsulates. - The type of the sixth parameter of the method that this delegate encapsulates. - The type of the seventh parameter of the method that this delegate encapsulates. - The type of the eighth parameter of the method that this delegate encapsulates. - The type of the ninth parameter of the method that this delegate encapsulates. - 2 - - - - - - - Contains methods to create types of objects locally or remotely, or obtain references to existing remote objects. This class cannot be inherited. - 2 - - - Creates an instance of the type designated by the specified generic type parameter, using the parameterless constructor. - A reference to the newly created object. - The type to create. - In the .NET for Windows Store apps or the Portable Class Library, catch the base class exception, , instead.The type that is specified for does not have a parameterless constructor. - - - Creates an instance of the specified type using that type's default constructor. - A reference to the newly created object. - The type of object to create. - - is null. - - is not a RuntimeType. -or- is an open generic type (that is, the property returns true). - - cannot be a .-or- Creation of , , , and types, or arrays of those types, is not supported.-or-The assembly that contains is a dynamic assembly that was created with . - The constructor being called throws an exception. - In the .NET for Windows Store apps or the Portable Class Library, catch the base class exception, , instead.The caller does not have permission to call this constructor. - Cannot create an instance of an abstract class, or this member was invoked with a late-binding mechanism. - The COM type was not obtained through or . - In the .NET for Windows Store apps or the Portable Class Library, catch the base class exception, , instead.No matching public constructor was found. - - is a COM object but the class identifier used to obtain the type is invalid, or the identified class is not registered. - - is not a valid type. - 1 - - - - - - Creates an instance of the specified type using the constructor that best matches the specified parameters. - A reference to the newly created object. - The type of object to create. - An array of arguments that match in number, order, and type the parameters of the constructor to invoke. If is an empty array or null, the constructor that takes no parameters (the default constructor) is invoked. - - is null. - - is not a RuntimeType. -or- is an open generic type (that is, the property returns true). - - cannot be a .-or- Creation of , , , and types, or arrays of those types, is not supported. -or-The assembly that contains is a dynamic assembly that was created with .-or-The constructor that best matches has varargs arguments. - The constructor being called throws an exception. - In the .NET for Windows Store apps or the Portable Class Library, catch the base class exception, , instead.The caller does not have permission to call this constructor. - Cannot create an instance of an abstract class, or this member was invoked with a late-binding mechanism. - The COM type was not obtained through or . - In the .NET for Windows Store apps or the Portable Class Library, catch the base class exception, , instead.No matching public constructor was found. - - is a COM object but the class identifier used to obtain the type is invalid, or the identified class is not registered. - - is not a valid type. - 1 - - - - - - - - The exception that is thrown when one of the arguments provided to a method is not valid. - 1 - - - Initializes a new instance of the class. - - - Initializes a new instance of the class with a specified error message. - The error message that explains the reason for the exception. - - - Initializes a new instance of the class with a specified error message and a reference to the inner exception that is the cause of this exception. - The error message that explains the reason for the exception. - The exception that is the cause of the current exception. If the parameter is not a null reference, the current exception is raised in a catch block that handles the inner exception. - - - Initializes a new instance of the class with a specified error message and the name of the parameter that causes this exception. - The error message that explains the reason for the exception. - The name of the parameter that caused the current exception. - - - Initializes a new instance of the class with a specified error message, the parameter name, and a reference to the inner exception that is the cause of this exception. - The error message that explains the reason for the exception. - The name of the parameter that caused the current exception. - The exception that is the cause of the current exception. If the parameter is not a null reference, the current exception is raised in a catch block that handles the inner exception. - - - Gets the error message and the parameter name, or only the error message if no parameter name is set. - A text string describing the details of the exception. The value of this property takes one of two forms: Condition Value The is a null reference (Nothing in Visual Basic) or of zero length. The string passed to the constructor. The is not null reference (Nothing in Visual Basic) and it has a length greater than zero. The string appended with the name of the invalid parameter. - 1 - - - Gets the name of the parameter that causes this exception. - The parameter name. - 1 - - - The exception that is thrown when a null reference (Nothing in Visual Basic) is passed to a method that does not accept it as a valid argument. - 2 - - - Initializes a new instance of the class. - - - Initializes a new instance of the class with the name of the parameter that causes this exception. - The name of the parameter that caused the exception. - - - Initializes a new instance of the class with a specified error message and the exception that is the cause of this exception. - The error message that explains the reason for this exception. - The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. - - - Initializes an instance of the class with a specified error message and the name of the parameter that causes this exception. - The name of the parameter that caused the exception. - A message that describes the error. - - - The exception that is thrown when the value of an argument is outside the allowable range of values as defined by the invoked method. - 2 - - - Initializes a new instance of the class. - - - Initializes a new instance of the class with the name of the parameter that causes this exception. - The name of the parameter that causes this exception. - - - Initializes a new instance of the class with a specified error message and the exception that is the cause of this exception. - The error message that explains the reason for this exception. - The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. - - - Initializes a new instance of the class with the parameter name, the value of the argument, and a specified error message. - The name of the parameter that caused the exception. - The value of the argument that causes this exception. - The message that describes the error. - - - Initializes a new instance of the class with the name of the parameter that causes this exception and a specified error message. - The name of the parameter that caused the exception. - The message that describes the error. - - - Gets the argument value that causes this exception. - An Object that contains the value of the parameter that caused the current . - 2 - - - Gets the error message and the string representation of the invalid argument value, or only the error message if the argument value is null. - The text message for this exception. The value of this property takes one of two forms, as follows.Condition Value The is null. The string passed to the constructor. The is not null. The string appended with the string representation of the invalid argument value. - 2 - - - The exception that is thrown for errors in an arithmetic, casting, or conversion operation. - 2 - - - Initializes a new instance of the class. - - - Initializes a new instance of the class with a specified error message. - A that describes the error. - - - Initializes a new instance of the class with a specified error message and a reference to the inner exception that is the cause of this exception. - The error message that explains the reason for the exception. - The exception that is the cause of the current exception. If the parameter is not a null reference, the current exception is raised in a catch block that handles the inner exception. - - - Provides methods for creating, manipulating, searching, and sorting arrays, thereby serving as the base class for all arrays in the common language runtime.To browse the .NET Framework source code for this type, see the Reference Source. - 1 - - - Searches a range of elements in a one-dimensional sorted array for a value, using the interface implemented by each element of the array and by the specified value. - The index of the specified in the specified , if is found. If is not found and is less than one or more elements in , a negative number which is the bitwise complement of the index of the first element that is larger than . If is not found and is greater than any of the elements in , a negative number which is the bitwise complement of (the index of the last element plus 1). - The sorted one-dimensional to search. - The starting index of the range to search. - The length of the range to search. - The object to search for. - - is null. - - is multidimensional. - - is less than the lower bound of .-or- is less than zero. - - and do not specify a valid range in .-or- is of a type that is not compatible with the elements of . - - does not implement the interface, and the search encounters an element that does not implement the interface. - 1 - - - Searches a range of elements in a one-dimensional sorted array for a value, using the specified interface. - The index of the specified in the specified , if is found. If is not found and is less than one or more elements in , a negative number which is the bitwise complement of the index of the first element that is larger than . If is not found and is greater than any of the elements in , a negative number which is the bitwise complement of (the index of the last element plus 1). - The sorted one-dimensional to search. - The starting index of the range to search. - The length of the range to search. - The object to search for. - The implementation to use when comparing elements.-or- null to use the implementation of each element. - - is null. - - is multidimensional. - - is less than the lower bound of .-or- is less than zero. - - and do not specify a valid range in .-or- is null, and is of a type that is not compatible with the elements of . - - is null, does not implement the interface, and the search encounters an element that does not implement the interface. - 1 - - - Searches an entire one-dimensional sorted array for a specific element, using the interface implemented by each element of the array and by the specified object. - The index of the specified in the specified , if is found. If is not found and is less than one or more elements in , a negative number which is the bitwise complement of the index of the first element that is larger than . If is not found and is greater than any of the elements in , a negative number which is the bitwise complement of (the index of the last element plus 1). - The sorted one-dimensional to search. - The object to search for. - - is null. - - is multidimensional. - - is of a type that is not compatible with the elements of . - - does not implement the interface, and the search encounters an element that does not implement the interface. - 1 - - - Searches an entire one-dimensional sorted array for a value using the specified interface. - The index of the specified in the specified , if is found. If is not found and is less than one or more elements in , a negative number which is the bitwise complement of the index of the first element that is larger than . If is not found and is greater than any of the elements in , a negative number which is the bitwise complement of (the index of the last element plus 1). - The sorted one-dimensional to search. - The object to search for. - The implementation to use when comparing elements.-or- null to use the implementation of each element. - - is null. - - is multidimensional. - - is null, and is of a type that is not compatible with the elements of . - - is null, does not implement the interface, and the search encounters an element that does not implement the interface. - 1 - - - Searches a range of elements in a one-dimensional sorted array for a value, using the generic interface implemented by each element of the and by the specified value. - The index of the specified in the specified , if is found. If is not found and is less than one or more elements in , a negative number which is the bitwise complement of the index of the first element that is larger than . If is not found and is greater than any of the elements in , a negative number which is the bitwise complement of (the index of the last element plus 1). - The sorted one-dimensional, zero-based to search. - The starting index of the range to search. - The length of the range to search. - The object to search for. - The type of the elements of the array. - - is null. - - is less than the lower bound of .-or- is less than zero. - - and do not specify a valid range in .-or- is of a type that is not compatible with the elements of . - - does not implement the generic interface. - - - Searches a range of elements in a one-dimensional sorted array for a value, using the specified generic interface. - The index of the specified in the specified , if is found. If is not found and is less than one or more elements in , a negative number which is the bitwise complement of the index of the first element that is larger than . If is not found and is greater than any of the elements in , a negative number which is the bitwise complement of (the index of the last element plus 1). - The sorted one-dimensional, zero-based to search. - The starting index of the range to search. - The length of the range to search. - The object to search for. - The implementation to use when comparing elements.-or- null to use the implementation of each element. - The type of the elements of the array. - - is null. - - is less than the lower bound of .-or- is less than zero. - - and do not specify a valid range in .-or- is null, and is of a type that is not compatible with the elements of . - - is null, and does not implement the generic interface. - - - Searches an entire one-dimensional sorted array for a specific element, using the generic interface implemented by each element of the and by the specified object. - The index of the specified in the specified , if is found. If is not found and is less than one or more elements in , a negative number which is the bitwise complement of the index of the first element that is larger than . If is not found and is greater than any of the elements in , a negative number which is the bitwise complement of (the index of the last element plus 1). - The sorted one-dimensional, zero-based to search. - The object to search for. - The type of the elements of the array. - - is null. - - does not implement the generic interface. - - - Searches an entire one-dimensional sorted array for a value using the specified generic interface. - The index of the specified in the specified , if is found. If is not found and is less than one or more elements in , a negative number which is the bitwise complement of the index of the first element that is larger than . If is not found and is greater than any of the elements in , a negative number which is the bitwise complement of (the index of the last element plus 1). - The sorted one-dimensional, zero-based to search. - The object to search for. - The implementation to use when comparing elements.-or- null to use the implementation of each element. - The type of the elements of the array. - - is null. - - is null, and is of a type that is not compatible with the elements of . - - is null, and does not implement the generic interface - - - Sets a range of elements in an array to the default value of each element type. - The array whose elements need to be cleared. - The starting index of the range of elements to clear. - The number of elements to clear. - - is null. - - is less than the lower bound of .-or- is less than zero.-or-The sum of and is greater than the size of . - 1 - - - Creates a shallow copy of the . - A shallow copy of the . - 1 - - - Copies a range of elements from an starting at the specified source index and pastes them to another starting at the specified destination index. Guarantees that all changes are undone if the copy does not succeed completely. - The that contains the data to copy. - A 32-bit integer that represents the index in the at which copying begins. - The that receives the data. - A 32-bit integer that represents the index in the at which storing begins. - A 32-bit integer that represents the number of elements to copy. - - is null.-or- is null. - - and have different ranks. - The type is neither the same as nor derived from the type. - At least one element in cannot be cast to the type of . - - is less than the lower bound of the first dimension of .-or- is less than the lower bound of the first dimension of .-or- is less than zero. - - is greater than the number of elements from to the end of .-or- is greater than the number of elements from to the end of . - - - Copies a range of elements from an starting at the first element and pastes them into another starting at the first element. The length is specified as a 32-bit integer. - The that contains the data to copy. - The that receives the data. - A 32-bit integer that represents the number of elements to copy. - - is null.-or- is null. - - and have different ranks. - - and are of incompatible types. - At least one element in cannot be cast to the type of . - - is less than zero. - - is greater than the number of elements in .-or- is greater than the number of elements in . - 1 - - - Copies a range of elements from an starting at the specified source index and pastes them to another starting at the specified destination index. The length and the indexes are specified as 32-bit integers. - The that contains the data to copy. - A 32-bit integer that represents the index in the at which copying begins. - The that receives the data. - A 32-bit integer that represents the index in the at which storing begins. - A 32-bit integer that represents the number of elements to copy. - - is null.-or- is null. - - and have different ranks. - - and are of incompatible types. - At least one element in cannot be cast to the type of . - - is less than the lower bound of the first dimension of .-or- is less than the lower bound of the first dimension of .-or- is less than zero. - - is greater than the number of elements from to the end of .-or- is greater than the number of elements from to the end of . - 1 - - - Copies all the elements of the current one-dimensional array to the specified one-dimensional array starting at the specified destination array index. The index is specified as a 32-bit integer. - The one-dimensional array that is the destination of the elements copied from the current array. - A 32-bit integer that represents the index in at which copying begins. - - is null. - - is less than the lower bound of . - - is multidimensional.-or-The number of elements in the source array is greater than the available number of elements from to the end of the destination . - The type of the source cannot be cast automatically to the type of the destination . - The source array is multidimensional. - At least one element in the source cannot be cast to the type of destination . - 2 - - - Creates a one-dimensional of the specified and length, with zero-based indexing. - A new one-dimensional of the specified with the specified length, using zero-based indexing. - The of the to create. - The size of the to create. - - is null. - - is not a valid . - - is not supported. For example, is not supported.-or- is an open generic type. - - is less than zero. - 1 - - - Creates a multidimensional of the specified and dimension lengths, with zero-based indexing. The dimension lengths are specified in an array of 32-bit integers. - A new multidimensional of the specified with the specified length for each dimension, using zero-based indexing. - The of the to create. - An array of 32-bit integers that represent the size of each dimension of the to create. - - is null.-or- is null. - - is not a valid .-or-The array contains less than one element. - - is not supported. For example, is not supported. -or- is an open generic type. - Any value in is less than zero. - 1 - - - Creates a multidimensional of the specified and dimension lengths, with the specified lower bounds. - A new multidimensional of the specified with the specified length and lower bound for each dimension. - The of the to create. - A one-dimensional array that contains the size of each dimension of the to create. - A one-dimensional array that contains the lower bound (starting index) of each dimension of the to create. - - is null.-or- is null.-or- is null. - - is not a valid .-or-The array contains less than one element.-or-The and arrays do not contain the same number of elements. - - is not supported. For example, is not supported. -or- is an open generic type. - Any value in is less than zero.-or-Any value in is very large, such that the sum of a dimension's lower bound and length is greater than . - 1 - - - Returns an empty array. - Returns an empty . - The type of the elements of the array. - - - Determines whether the specified array contains elements that match the conditions defined by the specified predicate. - true if contains one or more elements that match the conditions defined by the specified predicate; otherwise, false. - The one-dimensional, zero-based to search. - The that defines the conditions of the elements to search for. - The type of the elements of the array. - - is null.-or- is null. - - - Searches for an element that matches the conditions defined by the specified predicate, and returns the first occurrence within the entire . - The first element that matches the conditions defined by the specified predicate, if found; otherwise, the default value for type . - The one-dimensional, zero-based array to search. - The predicate that defines the conditions of the element to search for. - The type of the elements of the array. - - is null.-or- is null. - - - Retrieves all the elements that match the conditions defined by the specified predicate. - An containing all the elements that match the conditions defined by the specified predicate, if found; otherwise, an empty . - The one-dimensional, zero-based to search. - The that defines the conditions of the elements to search for. - The type of the elements of the array. - - is null.-or- is null. - - - Searches for an element that matches the conditions defined by the specified predicate, and returns the zero-based index of the first occurrence within the range of elements in the that starts at the specified index and contains the specified number of elements. - The zero-based index of the first occurrence of an element that matches the conditions defined by , if found; otherwise, –1. - The one-dimensional, zero-based to search. - The zero-based starting index of the search. - The number of elements in the section to search. - The that defines the conditions of the element to search for. - The type of the elements of the array. - - is null.-or- is null. - - is outside the range of valid indexes for .-or- is less than zero.-or- and do not specify a valid section in . - - - Searches for an element that matches the conditions defined by the specified predicate, and returns the zero-based index of the first occurrence within the range of elements in the that extends from the specified index to the last element. - The zero-based index of the first occurrence of an element that matches the conditions defined by , if found; otherwise, –1. - The one-dimensional, zero-based to search. - The zero-based starting index of the search. - The that defines the conditions of the element to search for. - The type of the elements of the array. - - is null.-or- is null. - - is outside the range of valid indexes for . - - - Searches for an element that matches the conditions defined by the specified predicate, and returns the zero-based index of the first occurrence within the entire . - The zero-based index of the first occurrence of an element that matches the conditions defined by , if found; otherwise, –1. - The one-dimensional, zero-based to search. - The that defines the conditions of the element to search for. - The type of the elements of the array. - - is null.-or- is null. - - - Searches for an element that matches the conditions defined by the specified predicate, and returns the last occurrence within the entire . - The last element that matches the conditions defined by the specified predicate, if found; otherwise, the default value for type . - The one-dimensional, zero-based to search. - The that defines the conditions of the element to search for. - The type of the elements of the array. - - is null.-or- is null. - - - Searches for an element that matches the conditions defined by the specified predicate, and returns the zero-based index of the last occurrence within the range of elements in the that contains the specified number of elements and ends at the specified index. - The zero-based index of the last occurrence of an element that matches the conditions defined by , if found; otherwise, –1. - The one-dimensional, zero-based to search. - The zero-based starting index of the backward search. - The number of elements in the section to search. - The that defines the conditions of the element to search for. - The type of the elements of the array. - - is null.-or- is null. - - is outside the range of valid indexes for .-or- is less than zero.-or- and do not specify a valid section in . - - - Searches for an element that matches the conditions defined by the specified predicate, and returns the zero-based index of the last occurrence within the range of elements in the that extends from the first element to the specified index. - The zero-based index of the last occurrence of an element that matches the conditions defined by , if found; otherwise, –1. - The one-dimensional, zero-based to search. - The zero-based starting index of the backward search. - The that defines the conditions of the element to search for. - The type of the elements of the array. - - is null.-or- is null. - - is outside the range of valid indexes for . - - - Searches for an element that matches the conditions defined by the specified predicate, and returns the zero-based index of the last occurrence within the entire . - The zero-based index of the last occurrence of an element that matches the conditions defined by , if found; otherwise, –1. - The one-dimensional, zero-based to search. - The that defines the conditions of the element to search for. - The type of the elements of the array. - - is null.-or- is null. - - - Returns an for the . - An for the . - 2 - - - Gets a 32-bit integer that represents the number of elements in the specified dimension of the . - A 32-bit integer that represents the number of elements in the specified dimension. - A zero-based dimension of the whose length needs to be determined. - - is less than zero.-or- is equal to or greater than . - 1 - - - Gets the index of the first element of the specified dimension in the array. - The index of the first element of the specified dimension in the array. - A zero-based dimension of the array whose starting index needs to be determined. - - is less than zero.-or- is equal to or greater than . - 1 - - - Gets the index of the last element of the specified dimension in the array. - The index of the last element of the specified dimension in the array, or -1 if the specified dimension is empty. - A zero-based dimension of the array whose upper bound needs to be determined. - - is less than zero.-or- is equal to or greater than . - 1 - - - Gets the value at the specified position in the one-dimensional . The index is specified as a 32-bit integer. - The value at the specified position in the one-dimensional . - A 32-bit integer that represents the position of the element to get. - The current does not have exactly one dimension. - - is outside the range of valid indexes for the current . - 2 - - - Gets the value at the specified position in the multidimensional . The indexes are specified as an array of 32-bit integers. - The value at the specified position in the multidimensional . - A one-dimensional array of 32-bit integers that represent the indexes specifying the position of the element to get. - - is null. - The number of dimensions in the current is not equal to the number of elements in . - Any element in is outside the range of valid indexes for the corresponding dimension of the current . - 2 - - - Searches for the specified object and returns the index of its first occurrence in a one-dimensional array. - The index of the first occurrence of in , if found; otherwise, the lower bound of the array minus 1. - The one-dimensional array to search. - The object to locate in . - - is null. - - is multidimensional. - 1 - - - Searches for the specified object in a range of elements of a one-dimensional array, and returns the index of its first occurrence. The range extends from a specified index to the end of the array. - The index of the first occurrence of , if it’s found, within the range of elements in that extends from to the last element; otherwise, the lower bound of the array minus 1. - The one-dimensional array to search. - The object to locate in . - The starting index of the search. 0 (zero) is valid in an empty array. - - is null. - - is outside the range of valid indexes for . - - is multidimensional. - 1 - - - Searches for the specified object in a range of elements of a one-dimensional array, and returns the index of ifs first occurrence. The range extends from a specified index for a specified number of elements. - The index of the first occurrence of , if it’s found, in the from index to + - 1; otherwise, the lower bound of the array minus 1. - The one-dimensional array to search. - The object to locate in . - The starting index of the search. 0 (zero) is valid in an empty array. - The number of elements to search. - - is null. - - is outside the range of valid indexes for .-or- is less than zero.-or- and do not specify a valid section in . - - is multidimensional. - 1 - - - Searches for the specified object and returns the index of its first occurrence in a one-dimensional array. - The zero-based index of the first occurrence of in the entire , if found; otherwise, –1. - The one-dimensional, zero-based array to search. - The object to locate in . - The type of the elements of the array. - - is null. - - - Searches for the specified object in a range of elements of a one dimensional array, and returns the index of its first occurrence. The range extends from a specified index to the end of the array. - The zero-based index of the first occurrence of within the range of elements in that extends from to the last element, if found; otherwise, –1. - The one-dimensional, zero-based array to search. - The object to locate in . - The zero-based starting index of the search. 0 (zero) is valid in an empty array. - The type of the elements of the array. - - is null. - - is outside the range of valid indexes for . - - - Searches for the specified object in a range of elements of a one-dimensional array, and returns the index of its first occurrence. The range extends from a specified index for a specified number of elements. - The zero-based index of the first occurrence of within the range of elements in that starts at and contains the number of elements specified in , if found; otherwise, –1. - The one-dimensional, zero-based array to search. - The object to locate in . - The zero-based starting index of the search. 0 (zero) is valid in an empty array. - The number of elements in the section to search. - The type of the elements of the array. - - is null. - - is outside the range of valid indexes for .-or- is less than zero.-or- and do not specify a valid section in . - - - Initializes every element of the value-type by calling the default constructor of the value type. - 2 - - - Searches for the specified object and returns the index of the last occurrence within the entire one-dimensional . - The index of the last occurrence of within the entire , if found; otherwise, the lower bound of the array minus 1. - The one-dimensional to search. - The object to locate in . - - is null. - - is multidimensional. - 1 - - - Searches for the specified object and returns the index of the last occurrence within the range of elements in the one-dimensional that extends from the first element to the specified index. - The index of the last occurrence of within the range of elements in that extends from the first element to , if found; otherwise, the lower bound of the array minus 1. - The one-dimensional to search. - The object to locate in . - The starting index of the backward search. - - is null. - - is outside the range of valid indexes for . - - is multidimensional. - 1 - - - Searches for the specified object and returns the index of the last occurrence within the range of elements in the one-dimensional that contains the specified number of elements and ends at the specified index. - The index of the last occurrence of within the range of elements in that contains the number of elements specified in and ends at , if found; otherwise, the lower bound of the array minus 1. - The one-dimensional to search. - The object to locate in . - The starting index of the backward search. - The number of elements in the section to search. - - is null. - - is outside the range of valid indexes for .-or- is less than zero.-or- and do not specify a valid section in . - - is multidimensional. - 1 - - - Searches for the specified object and returns the index of the last occurrence within the entire . - The zero-based index of the last occurrence of within the entire , if found; otherwise, –1. - The one-dimensional, zero-based to search. - The object to locate in . - The type of the elements of the array. - - is null. - - - Searches for the specified object and returns the index of the last occurrence within the range of elements in the that extends from the first element to the specified index. - The zero-based index of the last occurrence of within the range of elements in that extends from the first element to , if found; otherwise, –1. - The one-dimensional, zero-based to search. - The object to locate in . - The zero-based starting index of the backward search. - The type of the elements of the array. - - is null. - - is outside the range of valid indexes for . - - - Searches for the specified object and returns the index of the last occurrence within the range of elements in the that contains the specified number of elements and ends at the specified index. - The zero-based index of the last occurrence of within the range of elements in that contains the number of elements specified in and ends at , if found; otherwise, –1. - The one-dimensional, zero-based to search. - The object to locate in . - The zero-based starting index of the backward search. - The number of elements in the section to search. - The type of the elements of the array. - - is null. - - is outside the range of valid indexes for .-or- is less than zero.-or- and do not specify a valid section in . - - - Gets a 32-bit integer that represents the total number of elements in all the dimensions of the . - A 32-bit integer that represents the total number of elements in all the dimensions of the ; zero if there are no elements in the array. - The array is multidimensional and contains more than elements. - 1 - - - Gets the rank (number of dimensions) of the . For example, a one-dimensional array returns 1, a two-dimensional array returns 2, and so on. - The rank (number of dimensions) of the . - 1 - - - Changes the number of elements of a one-dimensional array to the specified new size. - The one-dimensional, zero-based array to resize, or null to create a new array with the specified size. - The size of the new array. - The type of the elements of the array. - - is less than zero. - - - Reverses the sequence of the elements in the entire one-dimensional . - The one-dimensional to reverse. - - is null. - - is multidimensional. - 1 - - - Reverses the sequence of the elements in a range of elements in the one-dimensional . - The one-dimensional to reverse. - The starting index of the section to reverse. - The number of elements in the section to reverse. - - is null. - - is multidimensional. - - is less than the lower bound of .-or- is less than zero. - - and do not specify a valid range in . - 1 - - - Sets a value to the element at the specified position in the one-dimensional . The index is specified as a 32-bit integer. - The new value for the specified element. - A 32-bit integer that represents the position of the element to set. - The current does not have exactly one dimension. - - cannot be cast to the element type of the current . - - is outside the range of valid indexes for the current . - 1 - - - Sets a value to the element at the specified position in the multidimensional . The indexes are specified as an array of 32-bit integers. - The new value for the specified element. - A one-dimensional array of 32-bit integers that represent the indexes specifying the position of the element to set. - - is null. - The number of dimensions in the current is not equal to the number of elements in . - - cannot be cast to the element type of the current . - Any element in is outside the range of valid indexes for the corresponding dimension of the current . - 1 - - - Sorts the elements in an entire one-dimensional using the implementation of each element of the . - The one-dimensional to sort. - - is null. - - is multidimensional. - One or more elements in do not implement the interface. - 1 - - - Sorts a pair of one-dimensional objects (one contains the keys and the other contains the corresponding items) based on the keys in the first using the implementation of each key. - The one-dimensional that contains the keys to sort. - The one-dimensional that contains the items that correspond to each of the keys in the .-or-null to sort only the . - - is null. - The is multidimensional.-or-The is multidimensional. - - is not null, and the length of is greater than the length of . - One or more elements in the do not implement the interface. - 1 - - - Sorts a pair of one-dimensional objects (one contains the keys and the other contains the corresponding items) based on the keys in the first using the specified . - The one-dimensional that contains the keys to sort. - The one-dimensional that contains the items that correspond to each of the keys in the .-or-null to sort only the . - The implementation to use when comparing elements.-or-null to use the implementation of each element. - - is null. - The is multidimensional.-or-The is multidimensional. - - is not null, and the length of is greater than the length of . -or-The implementation of caused an error during the sort. For example, might not return 0 when comparing an item with itself. - - is null, and one or more elements in the do not implement the interface. - 1 - - - Sorts a range of elements in a pair of one-dimensional objects (one contains the keys and the other contains the corresponding items) based on the keys in the first using the implementation of each key. - The one-dimensional that contains the keys to sort. - The one-dimensional that contains the items that correspond to each of the keys in the .-or-null to sort only the . - The starting index of the range to sort. - The number of elements in the range to sort. - - is null. - The is multidimensional.-or-The is multidimensional. - - is less than the lower bound of .-or- is less than zero. - - is not null, and the length of is greater than the length of .-or- and do not specify a valid range in the .-or- is not null, and and do not specify a valid range in the . - One or more elements in the do not implement the interface. - 1 - - - Sorts a range of elements in a pair of one-dimensional objects (one contains the keys and the other contains the corresponding items) based on the keys in the first using the specified . - The one-dimensional that contains the keys to sort. - The one-dimensional that contains the items that correspond to each of the keys in the .-or-null to sort only the . - The starting index of the range to sort. - The number of elements in the range to sort. - The implementation to use when comparing elements.-or-null to use the implementation of each element. - - is null. - The is multidimensional.-or-The is multidimensional. - - is less than the lower bound of .-or- is less than zero. - - is not null, and the lower bound of does not match the lower bound of .-or- is not null, and the length of is greater than the length of .-or- and do not specify a valid range in the .-or- is not null, and and do not specify a valid range in the . -or-The implementation of caused an error during the sort. For example, might not return 0 when comparing an item with itself. - - is null, and one or more elements in the do not implement the interface. - 1 - - - Sorts the elements in a one-dimensional using the specified . - The one-dimensional array to sort. - The implementation to use when comparing elements.-or-null to use the implementation of each element. - - is null. - - is multidimensional. - - is null, and one or more elements in do not implement the interface. - The implementation of caused an error during the sort. For example, might not return 0 when comparing an item with itself. - 1 - - - Sorts the elements in a range of elements in a one-dimensional using the implementation of each element of the . - The one-dimensional to sort. - The starting index of the range to sort. - The number of elements in the range to sort. - - is null. - - is multidimensional. - - is less than the lower bound of .-or- is less than zero. - - and do not specify a valid range in . - One or more elements in do not implement the interface. - 1 - - - Sorts the elements in a range of elements in a one-dimensional using the specified . - The one-dimensional to sort. - The starting index of the range to sort. - The number of elements in the range to sort. - The implementation to use when comparing elements.-or-null to use the implementation of each element. - - is null. - - is multidimensional. - - is less than the lower bound of .-or- is less than zero. - - and do not specify a valid range in . -or-The implementation of caused an error during the sort. For example, might not return 0 when comparing an item with itself. - - is null, and one or more elements in do not implement the interface. - 1 - - - Sorts the elements in an entire using the generic interface implementation of each element of the . - The one-dimensional, zero-based to sort. - The type of the elements of the array. - - is null. - One or more elements in do not implement the generic interface. - - - Sorts the elements in an using the specified generic interface. - The one-dimensional, zero-base to sort - The generic interface implementation to use when comparing elements, or null to use the generic interface implementation of each element. - The type of the elements of the array. - - is null. - - is null, and one or more elements in do not implement the generic interface. - The implementation of caused an error during the sort. For example, might not return 0 when comparing an item with itself. - - - Sorts the elements in an using the specified . - The one-dimensional, zero-based to sort - The to use when comparing elements. - The type of the elements of the array. - - is null.-or- is null. - The implementation of caused an error during the sort. For example, might not return 0 when comparing an item with itself. - - - Sorts the elements in a range of elements in an using the generic interface implementation of each element of the . - The one-dimensional, zero-based to sort - The starting index of the range to sort. - The number of elements in the range to sort. - The type of the elements of the array. - - is null. - - is less than the lower bound of .-or- is less than zero. - - and do not specify a valid range in . - One or more elements in do not implement the generic interface. - - - Sorts the elements in a range of elements in an using the specified generic interface. - The one-dimensional, zero-based to sort. - The starting index of the range to sort. - The number of elements in the range to sort. - The generic interface implementation to use when comparing elements, or null to use the generic interface implementation of each element. - The type of the elements of the array. - - is null. - - is less than the lower bound of .-or- is less than zero. - - and do not specify a valid range in . -or-The implementation of caused an error during the sort. For example, might not return 0 when comparing an item with itself. - - is null, and one or more elements in do not implement the generic interface. - - - Sorts a pair of objects (one contains the keys and the other contains the corresponding items) based on the keys in the first using the generic interface implementation of each key. - The one-dimensional, zero-based that contains the keys to sort. - The one-dimensional, zero-based that contains the items that correspond to the keys in , or null to sort only . - The type of the elements of the key array. - The type of the elements of the items array. - - is null. - - is not null, and the lower bound of does not match the lower bound of .-or- is not null, and the length of is greater than the length of . - One or more elements in the do not implement the generic interface. - - - Sorts a pair of objects (one contains the keys and the other contains the corresponding items) based on the keys in the first using the specified generic interface. - The one-dimensional, zero-based that contains the keys to sort. - The one-dimensional, zero-based that contains the items that correspond to the keys in , or null to sort only . - The generic interface implementation to use when comparing elements, or null to use the generic interface implementation of each element. - The type of the elements of the key array. - The type of the elements of the items array. - - is null. - - is not null, and the lower bound of does not match the lower bound of .-or- is not null, and the length of is greater than the length of .-or-The implementation of caused an error during the sort. For example, might not return 0 when comparing an item with itself. - - is null, and one or more elements in the do not implement the generic interface. - - - Sorts a range of elements in a pair of objects (one contains the keys and the other contains the corresponding items) based on the keys in the first using the generic interface implementation of each key. - The one-dimensional, zero-based that contains the keys to sort. - The one-dimensional, zero-based that contains the items that correspond to the keys in , or null to sort only . - The starting index of the range to sort. - The number of elements in the range to sort. - The type of the elements of the key array. - The type of the elements of the items array. - - is null. - - is less than the lower bound of .-or- is less than zero. - - is not null, and the lower bound of does not match the lower bound of .-or- is not null, and the length of is greater than the length of .-or- and do not specify a valid range in the .-or- is not null, and and do not specify a valid range in the . - One or more elements in the do not implement the generic interface. - - - Sorts a range of elements in a pair of objects (one contains the keys and the other contains the corresponding items) based on the keys in the first using the specified generic interface. - The one-dimensional, zero-based that contains the keys to sort. - The one-dimensional, zero-based that contains the items that correspond to the keys in , or null to sort only . - The starting index of the range to sort. - The number of elements in the range to sort. - The generic interface implementation to use when comparing elements, or null to use the generic interface implementation of each element. - The type of the elements of the key array. - The type of the elements of the items array. - - is null. - - is less than the lower bound of .-or- is less than zero. - - is not null, and the lower bound of does not match the lower bound of .-or- is not null, and the length of is greater than the length of .-or- and do not specify a valid range in the .-or- is not null, and and do not specify a valid range in the . -or-The implementation of caused an error during the sort. For example, might not return 0 when comparing an item with itself. - - is null, and one or more elements in the do not implement the generic interface. - - - Gets the number of elements contained in the . - The number of elements contained in the collection. - - - Gets a value that indicates whether access to the is synchronized (thread safe). - true if access to the is synchronized (thread safe); otherwise, false. - - - Gets an object that can be used to synchronize access to the . - An object that can be used to synchronize access to the . - - - Calling this method always throws a exception. - Adding a value to an array is not supported. No value is returned. - The object to be added to the . - The has a fixed size. - - - Removes all items from the . - The is read-only. - - - Determines whether an element is in the . - true if is found in the ; otherwise, false. - The object to locate in the current list. The element to locate can be null for reference types. - - - Determines the index of a specific item in the . - The index of value if found in the list; otherwise, -1. - The object to locate in the current list. - - - Inserts an item to the at the specified index. - The index at which should be inserted. - The object to insert. - - is not a valid index in the . - The is read-only.-or- The has a fixed size. - - is null reference in the . - - - Gets a value that indicates whether the has a fixed size. - true if the has a fixed size; otherwise, false. - - - Gets a value that indicates whether the is read-only. - true if the is read-only; otherwise, false. - - - Gets or sets the element at the specified index. - The element at the specified index. - The index of the element to get or set. - - is less than zero.-or- is equal to or greater than . - The current does not have exactly one dimension. - - - Removes the first occurrence of a specific object from the . - The object to remove from the . - The is read-only.-or- The has a fixed size. - - - Removes the item at the specified index. - The index of the element to remove. - index is not a valid index in the . - The is read-only.-or- The has a fixed size. - - - Determines whether the current collection object precedes, occurs in the same position as, or follows another object in the sort order. - An integer that indicates the relationship of the current collection object to other, as shown in the following table.Return valueDescription-1The current instance precedes .0The current instance and are equal.1The current instance follows . - The object to compare with the current instance. - An object that compares the current object and . - - - Determines whether an object is equal to the current instance. - true if the two objects are equal; otherwise, false. - The object to compare with the current instance. - An object that determines whether the current instance and are equal. - - - Returns a hash code for the current instance. - The hash code for the current instance. - An object that computes the hash code of the current object. - - - Determines whether every element in the array matches the conditions defined by the specified predicate. - true if every element in matches the conditions defined by the specified predicate; otherwise, false. If there are no elements in the array, the return value is true. - The one-dimensional, zero-based to check against the conditions. - The predicate that defines the conditions to check against the elements. - The type of the elements of the array. - - is null.-or- is null. - - - Delimits a section of a one-dimensional array. - The type of the elements in the array segment. - 2 - - - Initializes a new instance of the structure that delimits all the elements in the specified array. - The array to wrap. - - is null. - - - Initializes a new instance of the structure that delimits the specified range of the elements in the specified array. - The array containing the range of elements to delimit. - The zero-based index of the first element in the range. - The number of elements in the range. - - is null. - - or is less than 0. - - and do not specify a valid range in . - - - Gets the original array containing the range of elements that the array segment delimits. - The original array that was passed to the constructor, and that contains the range delimited by the . - 1 - - - Gets the number of elements in the range delimited by the array segment. - The number of elements in the range delimited by the . - 1 - - - Determines whether the specified structure is equal to the current instance. - true if the specified structure is equal to the current instance; otherwise, false. - The structure to compare with the current instance. - - - Determines whether the specified object is equal to the current instance. - true if the specified object is a structure and is equal to the current instance; otherwise, false. - The object to be compared with the current instance. - - - Returns the hash code for the current instance. - A 32-bit signed integer hash code. - - - Gets the position of the first element in the range delimited by the array segment, relative to the start of the original array. - The position of the first element in the range delimited by the , relative to the start of the original array. - 1 - - - Indicates whether two structures are equal. - true if is equal to ; otherwise, false. - The structure on the left side of the equality operator. - The structure on the right side of the equality operator. - - - Indicates whether two structures are unequal. - true if is not equal to ; otherwise, false. - The structure on the left side of the inequality operator. - The structure on the right side of the inequality operator. - - - Adds an item to the array segment. - The object to add to the array segment. - The array segment is read-only. - - - Removes all items from the array segment. - The array segment is read-only. - - - Determines whether the array segment contains a specific value. - true if is found in the array segment; otherwise, false. - The object to locate in the array segment. - - - Copies the elements of the array segment to an array, starting at the specified array index. - The one-dimensional array that is the destination of the elements copied from the array segment. The array must have zero-based indexing. - The zero-based index in at which copying begins. - - is null. - - is less than 0. - - is multidimensional.-or-The number of elements in the source array segment is greater than the available space from to the end of the destination .-or-Type cannot be cast automatically to the type of the destination . - - - Gets a value that indicates whether the array segment is read-only. - true if the array segment is read-only; otherwise, false. - - - Removes the first occurrence of a specific object from the array segment. - true if was successfully removed from the array segment; otherwise, false. This method also returns false if is not found in the array segment. - The object to remove from the array segment. - The array segment is read-only. - - - Returns an enumerator that iterates through the array segment. - An enumerator that can be used to iterate through the array segment. - - - Determines the index of a specific item in the array segment. - The index of if found in the list; otherwise, -1. - The object to locate in the array segment. - - - Inserts an item into the array segment at the specified index. - The zero-based index at which should be inserted. - The object to insert into the array segment. - - is not a valid index in the array segment. - The array segment is read-only. - - - Gets or sets the element at the specified index. - The element at the specified index. - The zero-based index of the element to get or set. - - is not a valid index in the . - The property is set and the array segment is read-only. - - - Removes the array segment item at the specified index. - The zero-based index of the item to remove. - - is not a valid index in the array segment. - The array segment is read-only. - - - Gets the element at the specified index of the array segment. - The element at the specified index. - The zero-based index of the element to get. - - is not a valid index in the . - The property is set. - - - Returns an enumerator that iterates through an array segment. - An enumerator that can be used to iterate through the array segment. - - - The exception that is thrown when an attempt is made to store an element of the wrong type within an array. - 2 - - - Initializes a new instance of the class. - - - Initializes a new instance of the class with a specified error message. - A that describes the error. - - - Initializes a new instance of the class with a specified error message and a reference to the inner exception that is the cause of this exception. - The error message that explains the reason for the exception. - The exception that is the cause of the current exception. If the parameter is not a null reference, the current exception is raised in a catch block that handles the inner exception. - - - References a method to be called when a corresponding asynchronous operation completes. - 2 - - - - 2 - - - 2 - - - 2 - - - Represents the base class for custom attributes. - 1 - - - Initializes a new instance of the class. - - - Returns a value that indicates whether this instance is equal to a specified object. - true if equals the type and value of this instance; otherwise, false. - An to compare with this instance or null. - 2 - - - Returns the hash code for this instance. - A 32-bit signed integer hash code. - 2 - - - Specifies the application elements on which it is valid to apply an attribute. - 2 - - - Attribute can be applied to any application element. - - - Attribute can be applied to an assembly. - - - Attribute can be applied to a class. - - - Attribute can be applied to a constructor. - - - Attribute can be applied to a delegate. - - - Attribute can be applied to an enumeration. - - - Attribute can be applied to an event. - - - Attribute can be applied to a field. - - - Attribute can be applied to a generic parameter. - - - Attribute can be applied to an interface. - - - Attribute can be applied to a method. - - - Attribute can be applied to a module. - - - Attribute can be applied to a parameter. - - - Attribute can be applied to a property. - - - Attribute can be applied to a return value. - - - Attribute can be applied to a structure; that is, a value type. - - - Specifies the usage of another attribute class. This class cannot be inherited. - 1 - - - Initializes a new instance of the class with the specified list of , the value, and the value. - The set of values combined using a bitwise OR operation to indicate which program elements are valid. - - - Gets or sets a Boolean value indicating whether more than one instance of the indicated attribute can be specified for a single program element. - true if more than one instance is allowed to be specified; otherwise, false. The default is false. - 2 - - - Gets or sets a Boolean value indicating whether the indicated attribute can be inherited by derived classes and overriding members. - true if the attribute can be inherited by derived classes and overriding members; otherwise, false. The default is true. - 2 - - - Gets a set of values identifying which program elements that the indicated attribute can be applied to. - One or several values. The default is All. - 2 - - - The exception that is thrown when the file image of a dynamic link library (DLL) or an executable program is invalid. - 2 - - - Initializes a new instance of the class. - - - Initializes a new instance of the class with a specified error message. - The message that describes the error. - - - Initializes a new instance of the class with a specified error message and a reference to the inner exception that is the cause of this exception. - The error message that explains the reason for the exception. - The exception that is the cause of the current exception. If the parameter is not a null reference, the current exception is raised in a catch block that handles the inner exception. - - - Initializes a new instance of the class with a specified error message and file name. - A message that describes the error. - The full name of the file with the invalid image. - - - Initializes a new instance of the class with a specified error message and a reference to the inner exception that is the cause of this exception. - The error message that explains the reason for the exception. - The full name of the file with the invalid image. - The exception that is the cause of the current exception. If the parameter is not null, the current exception is raised in a catch block that handles the inner exception. - - - Gets the name of the file that causes this exception. - The name of the file with the invalid image, or a null reference if no file name was passed to the constructor for the current instance. - 2 - - - Gets the error message and the name of the file that caused this exception. - A string containing the error message and the name of the file that caused this exception. - 2 - - - Returns the fully qualified name of this exception and possibly the error message, the name of the inner exception, and the stack trace. - A string containing the fully qualified name of this exception and possibly the error message, the name of the inner exception, and the stack trace. - 2 - - - - - - Represents a Boolean (true or false) value. - 1 - - - Compares this instance to a specified object and returns an integer that indicates their relationship to one another. - A signed integer that indicates the relative values of this instance and .Return Value Condition Less than zero This instance is false and is true. Zero This instance and are equal (either both are true or both are false). Greater than zero This instance is true and is false. - A object to compare to this instance. - 2 - - - Returns a value indicating whether this instance is equal to a specified object. - true if has the same value as this instance; otherwise, false. - A value to compare to this instance. - 2 - - - Returns a value indicating whether this instance is equal to a specified object. - true if is a and has the same value as this instance; otherwise, false. - An object to compare to this instance. - 2 - - - Represents the Boolean value false as a string. This field is read-only. - 1 - - - Returns the hash code for this instance. - A hash code for the current . - 2 - - - Converts the specified string representation of a logical value to its equivalent, or throws an exception if the string is not equal to the value of or . - true if is equal to the value of the field; false if is equal to the value of the field. - A string containing the value to convert. - - is null. - - is not equal to the value of the or field. - 1 - - - Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. - A signed integer that indicates the relative order of this instance and .Return value Condition Less than zero This instance is false and is true. Zero This instance and are equal (either both are true or both are false). Greater than zero This instance is true and is false.-or- is null. - An object to compare with this instance, or null. - - - - For a description of this member, see . - true or false. - This parameter is ignored. - - - For a description of this member, see . - 1 if the value of this instance is true; otherwise, 0. - This parameter is ignored. - - - This conversion is not supported. Attempting to use this method throws an . - This conversion is not supported. No value is returned. - This parameter is ignored. - You attempt to convert a value to a value. This conversion is not supported. - - - This conversion is not supported. Attempting to use this method throws an . - This conversion is not supported. No value is returned. - This parameter is ignored. - You attempt to convert a value to a value. This conversion is not supported. - - - For a description of this member, see .. - 1 if this instance is true; otherwise, 0. - This parameter is ignored. - - - For a description of this member, see .. - 1 if this instance is true; otherwise, 0. - This parameter is ignored. - - - For a description of this member, see . - 1 if this instance is true; otherwise, 0. - This parameter is ignored. - - - For a description of this member, see . - 1 if this instance is true; otherwise, 0. - This parameter is ignored. - - - For a description of this member, see . - 1 if this instance is true; otherwise, 0. - This parameter is ignored. - - - For a description of this member, see . - 1 if this instance is true; otherwise, 0. - This parameter is ignored. - - - For a description of this member, see .. - 1 if this instance is true; otherwise, 0. - This parameter is ignored. - - - - For a description of this member, see . - An object of the specified type, with a value that is equivalent to the value of this Boolean object. - The desired type. - An implementation that supplies culture-specific information about the format of the returned value. - - is null. - The requested type conversion is not supported. - - - For a description of this member, see . - 1 if this instance is true; otherwise, 0. - This parameter is ignored. - - - For a description of this member, see . - 1 if this instance is true; otherwise, 0. - This parameter is ignored. - - - For a description of this member, see . - 1 if this instance is true; otherwise, 0. - This parameter is ignored. - - - Converts the value of this instance to its equivalent string representation (either "True" or "False"). - - if the value of this instance is true, or if the value of this instance is false. - 2 - - - Represents the Boolean value true as a string. This field is read-only. - 1 - - - Tries to convert the specified string representation of a logical value to its equivalent. A return value indicates whether the conversion succeeded or failed. - true if was converted successfully; otherwise, false. - A string containing the value to convert. - When this method returns, if the conversion succeeded, contains true if is equal to or false if is equal to . If the conversion failed, contains false. The conversion fails if is null or is not equal to the value of either the or field. - 1 - - - Manipulates arrays of primitive types. - 2 - - - Copies a specified number of bytes from a source array starting at a particular offset to a destination array starting at a particular offset. - The source buffer. - The zero-based byte offset into . - The destination buffer. - The zero-based byte offset into . - The number of bytes to copy. - - or is null. - - or is not an array of primitives.-or- The number of bytes in is less than plus .-or- The number of bytes in is less than plus . - - , , or is less than 0. - 1 - - - Returns the number of bytes in the specified array. - The number of bytes in the array. - An array. - - is null. - - is not a primitive. - - is larger than 2 gigabytes (GB). - 1 - - - Retrieves the byte at a specified location in a specified array. - Returns the byte in the array. - An array. - A location in the array. - - is not a primitive. - - is null. - - is negative or greater than the length of . - - is larger than 2 gigabytes (GB). - 1 - - - Copies a number of bytes specified as a long integer value from one address in memory to another. - The address of the bytes to copy. - The target address. - The number of bytes available in the destination memory block. - The number of bytes to copy. - - is greater than . - - - Copies a number of bytes specified as an unsigned long integer value from one address in memory to another. - The address of the bytes to copy. - The target address. - The number of bytes available in the destination memory block. - The number of bytes to copy. - - is greater than . - - - Assigns a specified value to a byte at a particular location in a specified array. - An array. - A location in the array. - A value to assign. - - is not a primitive. - - is null. - - is negative or greater than the length of . - - is larger than 2 gigabytes (GB). - 1 - - - Represents an 8-bit unsigned integer. - 1 - - - Compares this instance to a specified 8-bit unsigned integer and returns an indication of their relative values. - A signed integer that indicates the relative order of this instance and .Return Value Description Less than zero This instance is less than . Zero This instance is equal to . Greater than zero This instance is greater than . - An 8-bit unsigned integer to compare. - 2 - - - Returns a value indicating whether this instance and a specified object represent the same value. - true if is equal to this instance; otherwise, false. - An object to compare to this instance. - 2 - - - Returns a value indicating whether this instance is equal to a specified object. - true if is an instance of and equals the value of this instance; otherwise, false. - An object to compare with this instance, or null. - 2 - - - Returns the hash code for this instance. - A hash code for the current . - 2 - - - Represents the largest possible value of a . This field is constant. - 1 - - - Represents the smallest possible value of a . This field is constant. - 1 - - - Converts the string representation of a number to its equivalent. - A byte value that is equivalent to the number contained in . - A string that contains a number to convert. The string is interpreted using the style. - - is null. - - is not of the correct format. - - represents a number less than or greater than . - 1 - - - Converts the string representation of a number in a specified style to its equivalent. - A byte value that is equivalent to the number contained in . - A string that contains a number to convert. The string is interpreted using the style specified by . - A bitwise combination of enumeration values that indicates the style elements that can be present in . A typical value to specify is . - - is null. - - is not of the correct format. - - represents a number less than or greater than . -or- includes non-zero, fractional digits. - - is not a value. -or- is not a combination of and values. - 1 - - - Converts the string representation of a number in a specified style and culture-specific format to its equivalent. - A byte value that is equivalent to the number contained in . - A string that contains a number to convert. The string is interpreted using the style specified by . - A bitwise combination of enumeration values that indicates the style elements that can be present in . A typical value to specify is . - An object that supplies culture-specific information about the format of . If is null, the thread current culture is used. - - is null. - - is not of the correct format. - - represents a number less than or greater than . -or- includes non-zero, fractional digits. - - is not a value. -or- is not a combination of and values. - 1 - - - Converts the string representation of a number in a specified culture-specific format to its equivalent. - A byte value that is equivalent to the number contained in . - A string that contains a number to convert. The string is interpreted using the style. - An object that supplies culture-specific parsing information about . If is null, the thread current culture is used. - - is null. - - is not of the correct format. - - represents a number less than or greater than . - 1 - - - Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. - A signed integer that indicates the relative order of this instance and .Return value Description Less than zero This instance precedes in the sort order. Zero This instance occurs in the same position as in the sort order. Greater than zero This instance follows in the sort order.-or- is null. - An object to compare with this instance, or null. - - is not a . - - - - For a description of this member, see . - true if the value of the current instance is not zero; otherwise, false. - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, unchanged. - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - This conversion is not supported. Attempting to use this method throws an . - This conversion is not supported. No value is returned. - This parameter is ignored. - In all cases. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to an . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to an . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to an . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to an . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to . - The type to which to convert this value. - An implementation that supplies information about the format of the returned value. - - is null. - The requested type conversion is not supported. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - Converts the value of the current object to its equivalent string representation. - The string representation of the value of this object, which consists of a sequence of digits that range from 0 to 9 with no leading zeroes. - 1 - - - Converts the numeric value of the current object to its equivalent string representation using the specified culture-specific formatting information. - The string representation of the value of this object in the format specified by the parameter. - An object that supplies culture-specific formatting information. - 1 - - - Converts the value of the current object to its equivalent string representation using the specified format. - The string representation of the current object, formatted as specified by the parameter. - A numeric format string. - - includes an unsupported specifier. Supported format specifiers are listed in the Remarks section. - 1 - - - Converts the value of the current object to its equivalent string representation using the specified format and culture-specific formatting information. - The string representation of the current object, formatted as specified by the and parameters. - A standard or custom numeric format string. - An object that supplies culture-specific formatting information. - - includes an unsupported specifier. Supported format specifiers are listed in the Remarks section. - 1 - - - Tries to convert the string representation of a number to its equivalent, and returns a value that indicates whether the conversion succeeded. - true if was converted successfully; otherwise, false. - A string that contains a number to convert. The string is interpreted using the style. - When this method returns, contains the value equivalent to the number contained in if the conversion succeeded, or zero if the conversion failed. This parameter is passed uninitialized; any value originally supplied in will be overwritten. - 1 - - - Converts the string representation of a number in a specified style and culture-specific format to its equivalent. A return value indicates whether the conversion succeeded or failed. - true if was converted successfully; otherwise, false. - A string containing a number to convert. The string is interpreted using the style specified by . - A bitwise combination of enumeration values that indicates the style elements that can be present in . A typical value to specify is . - An object that supplies culture-specific formatting information about . If is null, the thread current culture is used. - When this method returns, contains the 8-bit unsigned integer value equivalent to the number contained in if the conversion succeeded, or zero if the conversion failed. The conversion fails if the parameter is null or , is not of the correct format, or represents a number less than or greater than . This parameter is passed uninitialized; any value originally supplied in will be overwritten. - - is not a value. -or- is not a combination of and values. - 1 - - - Represents a character as a UTF-16 code unit. - 1 - - - Compares this instance to a specified object and indicates whether this instance precedes, follows, or appears in the same position in the sort order as the specified object. - A signed number indicating the position of this instance in the sort order in relation to the parameter.Return Value Description Less than zero This instance precedes . Zero This instance has the same position in the sort order as . Greater than zero This instance follows . - A object to compare. - 2 - - - Converts the specified Unicode code point into a UTF-16 encoded string. - A string consisting of one object or a surrogate pair of objects equivalent to the code point specified by the parameter. - A 21-bit Unicode code point. - - is not a valid 21-bit Unicode code point ranging from U+0 through U+10FFFF, excluding the surrogate pair range from U+D800 through U+DFFF. - 1 - - - Converts the value of a UTF-16 encoded surrogate pair into a Unicode code point. - The 21-bit Unicode code point represented by the and parameters. - A high surrogate code unit (that is, a code unit ranging from U+D800 through U+DBFF). - A low surrogate code unit (that is, a code unit ranging from U+DC00 through U+DFFF). - - is not in the range U+D800 through U+DBFF, or is not in the range U+DC00 through U+DFFF. - 1 - - - Converts the value of a UTF-16 encoded character or surrogate pair at a specified position in a string into a Unicode code point. - The 21-bit Unicode code point represented by the character or surrogate pair at the position in the parameter specified by the parameter. - A string that contains a character or surrogate pair. - The index position of the character or surrogate pair in . - - is null. - - is not a position within . - The specified index position contains a surrogate pair, and either the first character in the pair is not a valid high surrogate or the second character in the pair is not a valid low surrogate. - 1 - - - Returns a value that indicates whether this instance is equal to the specified object. - true if the parameter equals the value of this instance; otherwise, false. - An object to compare to this instance. - 2 - - - Returns a value that indicates whether this instance is equal to a specified object. - true if is an instance of and equals the value of this instance; otherwise, false. - An object to compare with this instance or null. - 2 - - - Returns the hash code for this instance. - A 32-bit signed integer hash code. - 2 - - - Converts the specified numeric Unicode character to a double-precision floating point number. - The numeric value of if that character represents a number; otherwise, -1.0. - The Unicode character to convert. - 1 - - - Converts the numeric Unicode character at the specified position in a specified string to a double-precision floating point number. - The numeric value of the character at position in if that character represents a number; otherwise, -1. - A . - The character position in . - - is null. - - is less than zero or greater than the last position in . - 1 - - - Indicates whether the specified Unicode character is categorized as a control character. - true if is a control character; otherwise, false. - The Unicode character to evaluate. - 1 - - - Indicates whether the character at the specified position in a specified string is categorized as a control character. - true if the character at position in is a control character; otherwise, false. - A string. - The position of the character to evaluate in . - - is null. - - is less than zero or greater than the last position in . - 1 - - - Indicates whether the specified Unicode character is categorized as a decimal digit. - true if is a decimal digit; otherwise, false. - The Unicode character to evaluate. - 1 - - - Indicates whether the character at the specified position in a specified string is categorized as a decimal digit. - true if the character at position in is a decimal digit; otherwise, false. - A string. - The position of the character to evaluate in . - - is null. - - is less than zero or greater than the last position in . - 1 - - - Indicates whether the specified object is a high surrogate. - true if the numeric value of the parameter ranges from U+D800 through U+DBFF; otherwise, false. - The Unicode character to evaluate. - 1 - - - Indicates whether the object at the specified position in a string is a high surrogate. - true if the numeric value of the specified character in the parameter ranges from U+D800 through U+DBFF; otherwise, false. - A string. - The position of the character to evaluate in . - - is null. - - is not a position within . - 1 - - - Indicates whether the specified Unicode character is categorized as a Unicode letter. - true if is a letter; otherwise, false. - The Unicode character to evaluate. - 1 - - - Indicates whether the character at the specified position in a specified string is categorized as a Unicode letter. - true if the character at position in is a letter; otherwise, false. - A string. - The position of the character to evaluate in . - - is null. - - is less than zero or greater than the last position in . - 1 - - - Indicates whether the specified Unicode character is categorized as a letter or a decimal digit. - true if is a letter or a decimal digit; otherwise, false. - The Unicode character to evaluate. - 1 - - - Indicates whether the character at the specified position in a specified string is categorized as a letter or a decimal digit. - true if the character at position in is a letter or a decimal digit; otherwise, false. - A string. - The position of the character to evaluate in . - - is null. - - is less than zero or greater than the last position in . - 1 - - - Indicates whether the specified Unicode character is categorized as a lowercase letter. - true if is a lowercase letter; otherwise, false. - The Unicode character to evaluate. - 1 - - - Indicates whether the character at the specified position in a specified string is categorized as a lowercase letter. - true if the character at position in is a lowercase letter; otherwise, false. - A string. - The position of the character to evaluate in . - - is null. - - is less than zero or greater than the last position in . - 1 - - - Indicates whether the specified object is a low surrogate. - true if the numeric value of the parameter ranges from U+DC00 through U+DFFF; otherwise, false. - The character to evaluate. - 1 - - - Indicates whether the object at the specified position in a string is a low surrogate. - true if the numeric value of the specified character in the parameter ranges from U+DC00 through U+DFFF; otherwise, false. - A string. - The position of the character to evaluate in . - - is null. - - is not a position within . - 1 - - - Indicates whether the specified Unicode character is categorized as a number. - true if is a number; otherwise, false. - The Unicode character to evaluate. - 1 - - - Indicates whether the character at the specified position in a specified string is categorized as a number. - true if the character at position in is a number; otherwise, false. - A string. - The position of the character to evaluate in . - - is null. - - is less than zero or greater than the last position in . - 1 - - - Indicates whether the specified Unicode character is categorized as a punctuation mark. - true if is a punctuation mark; otherwise, false. - The Unicode character to evaluate. - 1 - - - Indicates whether the character at the specified position in a specified string is categorized as a punctuation mark. - true if the character at position in is a punctuation mark; otherwise, false. - A string. - The position of the character to evaluate in . - - is null. - - is less than zero or greater than the last position in . - 1 - - - Indicates whether the specified Unicode character is categorized as a separator character. - true if is a separator character; otherwise, false. - The Unicode character to evaluate. - 1 - - - Indicates whether the character at the specified position in a specified string is categorized as a separator character. - true if the character at position in is a separator character; otherwise, false. - A string. - The position of the character to evaluate in . - - is null. - - is less than zero or greater than the last position in . - 1 - - - Indicates whether the specified character has a surrogate code unit. - true if is either a high surrogate or a low surrogate; otherwise, false. - The Unicode character to evaluate. - 1 - - - Indicates whether the character at the specified position in a specified string has a surrogate code unit. - true if the character at position in is a either a high surrogate or a low surrogate; otherwise, false. - A string. - The position of the character to evaluate in . - - is null. - - is less than zero or greater than the last position in . - 1 - - - Indicates whether the two specified objects form a surrogate pair. - true if the numeric value of the parameter ranges from U+D800 through U+DBFF, and the numeric value of the parameter ranges from U+DC00 through U+DFFF; otherwise, false. - The character to evaluate as the high surrogate of a surrogate pair. - The character to evaluate as the low surrogate of a surrogate pair. - 1 - - - Indicates whether two adjacent objects at a specified position in a string form a surrogate pair. - true if the parameter includes adjacent characters at positions and + 1, and the numeric value of the character at position ranges from U+D800 through U+DBFF, and the numeric value of the character at position +1 ranges from U+DC00 through U+DFFF; otherwise, false. - A string. - The starting position of the pair of characters to evaluate within . - - is null. - - is not a position within . - 1 - - - Indicates whether the specified Unicode character is categorized as a symbol character. - true if is a symbol character; otherwise, false. - The Unicode character to evaluate. - 1 - - - Indicates whether the character at the specified position in a specified string is categorized as a symbol character. - true if the character at position in is a symbol character; otherwise, false. - A string. - The position of the character to evaluate in . - - is null. - - is less than zero or greater than the last position in . - 1 - - - Indicates whether the specified Unicode character is categorized as an uppercase letter. - true if is an uppercase letter; otherwise, false. - The Unicode character to evaluate. - 1 - - - Indicates whether the character at the specified position in a specified string is categorized as an uppercase letter. - true if the character at position in is an uppercase letter; otherwise, false. - A string. - The position of the character to evaluate in . - - is null. - - is less than zero or greater than the last position in . - 1 - - - Indicates whether the specified Unicode character is categorized as white space. - true if is white space; otherwise, false. - The Unicode character to evaluate. - 1 - - - Indicates whether the character at the specified position in a specified string is categorized as white space. - true if the character at position in is white space; otherwise, false. - A string. - The position of the character to evaluate in . - - is null. - - is less than zero or greater than the last position in . - 1 - - - Represents the largest possible value of a . This field is constant. - 1 - - - Represents the smallest possible value of a . This field is constant. - 1 - - - Converts the value of the specified string to its equivalent Unicode character. - A Unicode character equivalent to the sole character in . - A string that contains a single character, or null. - - is null. - The length of is not 1. - 1 - - - Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. - A signed integer that indicates the position of this instance in the sort order in relation to the parameter.Return value Description Less than zero This instance precedes in the sort order. Zero This instance has the same position in the sort order as . Greater than zero This instance follows in the sort order.-or- is null. - An object to compare this instance to, or null. - - is not a object. - - - - Note   This conversion is not supported. Attempting to do so throws an . - This conversion is not supported. No value is returned. - This parameter is ignored. - This conversion is not supported. - - - For a description of this member, see . - The converted value of the current object. - This parameter is ignored. - - - For a description of this member, see . - The value of the current object unchanged. - This parameter is ignored. - - - Note   This conversion is not supported. Attempting to do so throws an . - No value is returned. - This parameter is ignored. - This conversion is not supported. - - - Note   This conversion is not supported. Attempting to do so throws an . - No value is returned. - This parameter is ignored. - This conversion is not supported. - - - Note   This conversion is not supported. Attempting to do so throws an . - No value is returned. - This parameter is ignored. - This conversion is not supported. - - - For a description of this member, see . - The converted value of the current object. - This parameter is ignored. - - - For a description of this member, see . - The converted value of the current object. - This parameter is ignored. - - - For a description of this member, see . - The converted value of the current object. - This parameter is ignored. - - - For a description of this member, see . - The converted value of the current object. - This parameter is ignored. - - - Note   This conversion is not supported. Attempting to do so throws an . - No value is returned. - This parameter is ignored. - This conversion is not supported. - - - - For a description of this member, see . - An object of the specified type. - A object. - An object. - - is null. - The value of the current object cannot be converted to the type specified by the parameter. - - - For a description of this member, see . - The converted value of the current object. - An object. (Specify null because the parameter is ignored.) - - - For a description of this member, see . - The converted value of the current object. - An object. (Specify null because the parameter is ignored.) - - - For a description of this member, see . - The converted value of the current object. - An object. (Specify null because the parameter is ignored.) - - - Converts the value of a Unicode character to its lowercase equivalent. - The lowercase equivalent of , or the unchanged value of , if is already lowercase or not alphabetic. - The Unicode character to convert. - 1 - - - Converts the value of a Unicode character to its lowercase equivalent using the casing rules of the invariant culture. - The lowercase equivalent of the parameter, or the unchanged value of , if is already lowercase or not alphabetic. - The Unicode character to convert. - 1 - - - Converts the value of this instance to its equivalent string representation. - The string representation of the value of this instance. - 1 - - - Converts the specified Unicode character to its equivalent string representation. - The string representation of the value of . - The Unicode character to convert. - 1 - - - Converts the value of a Unicode character to its uppercase equivalent. - The uppercase equivalent of , or the unchanged value of if is already uppercase, has no uppercase equivalent, or is not alphabetic. - The Unicode character to convert. - 1 - - - Converts the value of a Unicode character to its uppercase equivalent using the casing rules of the invariant culture. - The uppercase equivalent of the parameter, or the unchanged value of , if is already uppercase or not alphabetic. - The Unicode character to convert. - 1 - - - Converts the value of the specified string to its equivalent Unicode character. A return code indicates whether the conversion succeeded or failed. - true if the parameter was converted successfully; otherwise, false. - A string that contains a single character, or null. - When this method returns, contains a Unicode character equivalent to the sole character in , if the conversion succeeded, or an undefined value if the conversion failed. The conversion fails if the parameter is null or the length of is not 1. This parameter is passed uninitialized. - 1 - - - Indicates whether a program element is compliant with the Common Language Specification (CLS). This class cannot be inherited. - 1 - - - Initializes an instance of the class with a Boolean value indicating whether the indicated program element is CLS-compliant. - true if CLS-compliant; otherwise, false. - - - Gets the Boolean value indicating whether the indicated program element is CLS-compliant. - true if the program element is CLS-compliant; otherwise, false. - 2 - - - Represents the method that compares two objects of the same type. - The type of the objects to compare.This type parameter is contravariant. That is, you can use either the type you specified or any type that is less derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - 1 - - - - - - - Represents an instant in time, typically expressed as a date and time of day. To browse the .NET Framework source code for this type, see the Reference Source. - 1 - - - Initializes a new instance of the structure to the specified year, month, and day. - The year (1 through 9999). - The month (1 through 12). - The day (1 through the number of days in ). - - is less than 1 or greater than 9999.-or- is less than 1 or greater than 12.-or- is less than 1 or greater than the number of days in . - - - Initializes a new instance of the structure to the specified year, month, day, hour, minute, and second. - The year (1 through 9999). - The month (1 through 12). - The day (1 through the number of days in ). - The hours (0 through 23). - The minutes (0 through 59). - The seconds (0 through 59). - - is less than 1 or greater than 9999. -or- is less than 1 or greater than 12. -or- is less than 1 or greater than the number of days in .-or- is less than 0 or greater than 23. -or- is less than 0 or greater than 59. -or- is less than 0 or greater than 59. - - - Initializes a new instance of the structure to the specified year, month, day, hour, minute, second, and Coordinated Universal Time (UTC) or local time. - The year (1 through 9999). - The month (1 through 12). - The day (1 through the number of days in ). - The hours (0 through 23). - The minutes (0 through 59). - The seconds (0 through 59). - One of the enumeration values that indicates whether , , , , and specify a local time, Coordinated Universal Time (UTC), or neither. - - is less than 1 or greater than 9999. -or- is less than 1 or greater than 12. -or- is less than 1 or greater than the number of days in .-or- is less than 0 or greater than 23. -or- is less than 0 or greater than 59. -or- is less than 0 or greater than 59. - - is not one of the values. - - - Initializes a new instance of the structure to the specified year, month, day, hour, minute, second, and millisecond. - The year (1 through 9999). - The month (1 through 12). - The day (1 through the number of days in ). - The hours (0 through 23). - The minutes (0 through 59). - The seconds (0 through 59). - The milliseconds (0 through 999). - - is less than 1 or greater than 9999.-or- is less than 1 or greater than 12.-or- is less than 1 or greater than the number of days in .-or- is less than 0 or greater than 23.-or- is less than 0 or greater than 59.-or- is less than 0 or greater than 59.-or- is less than 0 or greater than 999. - - - Initializes a new instance of the structure to the specified year, month, day, hour, minute, second, millisecond, and Coordinated Universal Time (UTC) or local time. - The year (1 through 9999). - The month (1 through 12). - The day (1 through the number of days in ). - The hours (0 through 23). - The minutes (0 through 59). - The seconds (0 through 59). - The milliseconds (0 through 999). - One of the enumeration values that indicates whether , , , , , , and specify a local time, Coordinated Universal Time (UTC), or neither. - - is less than 1 or greater than 9999.-or- is less than 1 or greater than 12.-or- is less than 1 or greater than the number of days in .-or- is less than 0 or greater than 23.-or- is less than 0 or greater than 59.-or- is less than 0 or greater than 59.-or- is less than 0 or greater than 999. - - is not one of the values. - - - Initializes a new instance of the structure to a specified number of ticks. - A date and time expressed in the number of 100-nanosecond intervals that have elapsed since January 1, 0001 at 00:00:00.000 in the Gregorian calendar. - - is less than or greater than . - - - Initializes a new instance of the structure to a specified number of ticks and to Coordinated Universal Time (UTC) or local time. - A date and time expressed in the number of 100-nanosecond intervals that have elapsed since January 1, 0001 at 00:00:00.000 in the Gregorian calendar. - One of the enumeration values that indicates whether specifies a local time, Coordinated Universal Time (UTC), or neither. - - is less than or greater than . - - is not one of the values. - - - Returns a new that adds the value of the specified to the value of this instance. - An object whose value is the sum of the date and time represented by this instance and the time interval represented by . - A positive or negative time interval. - The resulting is less than or greater than . - 2 - - - Returns a new that adds the specified number of days to the value of this instance. - An object whose value is the sum of the date and time represented by this instance and the number of days represented by . - A number of whole and fractional days. The parameter can be negative or positive. - The resulting is less than or greater than . - 2 - - - Returns a new that adds the specified number of hours to the value of this instance. - An object whose value is the sum of the date and time represented by this instance and the number of hours represented by . - A number of whole and fractional hours. The parameter can be negative or positive. - The resulting is less than or greater than . - 2 - - - Returns a new that adds the specified number of milliseconds to the value of this instance. - An object whose value is the sum of the date and time represented by this instance and the number of milliseconds represented by . - A number of whole and fractional milliseconds. The parameter can be negative or positive. Note that this value is rounded to the nearest integer. - The resulting is less than or greater than . - 2 - - - Returns a new that adds the specified number of minutes to the value of this instance. - An object whose value is the sum of the date and time represented by this instance and the number of minutes represented by . - A number of whole and fractional minutes. The parameter can be negative or positive. - The resulting is less than or greater than . - 2 - - - Returns a new that adds the specified number of months to the value of this instance. - An object whose value is the sum of the date and time represented by this instance and . - A number of months. The parameter can be negative or positive. - The resulting is less than or greater than .-or- is less than -120,000 or greater than 120,000. - 2 - - - Returns a new that adds the specified number of seconds to the value of this instance. - An object whose value is the sum of the date and time represented by this instance and the number of seconds represented by . - A number of whole and fractional seconds. The parameter can be negative or positive. - The resulting is less than or greater than . - 2 - - - Returns a new that adds the specified number of ticks to the value of this instance. - An object whose value is the sum of the date and time represented by this instance and the time represented by . - A number of 100-nanosecond ticks. The parameter can be positive or negative. - The resulting is less than or greater than . - 2 - - - Returns a new that adds the specified number of years to the value of this instance. - An object whose value is the sum of the date and time represented by this instance and the number of years represented by . - A number of years. The parameter can be negative or positive. - - or the resulting is less than or greater than . - 2 - - - Compares two instances of and returns an integer that indicates whether the first instance is earlier than, the same as, or later than the second instance. - A signed number indicating the relative values of and .Value Type Condition Less than zero is earlier than . Zero is the same as . Greater than zero is later than . - The first object to compare. - The second object to compare. - 1 - - - Compares the value of this instance to a specified value and returns an integer that indicates whether this instance is earlier than, the same as, or later than the specified value. - A signed number indicating the relative values of this instance and the parameter.Value Description Less than zero This instance is earlier than . Zero This instance is the same as . Greater than zero This instance is later than . - The object to compare to the current instance. - 2 - - - Gets the date component of this instance. - A new object with the same date as this instance, and the time value set to 12:00:00 midnight (00:00:00). - 1 - - - Gets the day of the month represented by this instance. - The day component, expressed as a value between 1 and 31. - 1 - - - Gets the day of the week represented by this instance. - An enumerated constant that indicates the day of the week of this value. - 1 - - - Gets the day of the year represented by this instance. - The day of the year, expressed as a value between 1 and 366. - 1 - - - Returns the number of days in the specified month and year. - The number of days in for the specified .For example, if equals 2 for February, the return value is 28 or 29 depending upon whether is a leap year. - The year. - The month (a number ranging from 1 to 12). - - is less than 1 or greater than 12.-or- is less than 1 or greater than 9999. - 1 - - - Returns a value indicating whether the value of this instance is equal to the value of the specified instance. - true if the parameter equals the value of this instance; otherwise, false. - The object to compare to this instance. - 2 - - - Returns a value indicating whether two instances have the same date and time value. - true if the two values are equal; otherwise, false. - The first object to compare. - The second object to compare. - 1 - - - Returns a value indicating whether this instance is equal to a specified object. - true if is an instance of and equals the value of this instance; otherwise, false. - The object to compare to this instance. - 2 - - - Deserializes a 64-bit binary value and recreates an original serialized object. - An object that is equivalent to the object that was serialized by the method. - A 64-bit signed integer that encodes the property in a 2-bit field and the property in a 62-bit field. - - is less than or greater than . - 1 - - - Converts the specified Windows file time to an equivalent local time. - An object that represents the local time equivalent of the date and time represented by the parameter. - A Windows file time expressed in ticks. - - is less than 0 or represents a time greater than . - 1 - - - Converts the specified Windows file time to an equivalent UTC time. - An object that represents the UTC time equivalent of the date and time represented by the parameter. - A Windows file time expressed in ticks. - - is less than 0 or represents a time greater than . - 1 - - - Converts the value of this instance to all the string representations supported by the standard date and time format specifiers. - A string array where each element is the representation of the value of this instance formatted with one of the standard date and time format specifiers. - 2 - - - Converts the value of this instance to all the string representations supported by the specified standard date and time format specifier. - A string array where each element is the representation of the value of this instance formatted with the standard date and time format specifier. - A standard date and time format string (see Remarks). - - is not a valid standard date and time format specifier character. - 2 - - - Converts the value of this instance to all the string representations supported by the specified standard date and time format specifier and culture-specific formatting information. - A string array where each element is the representation of the value of this instance formatted with one of the standard date and time format specifiers. - A date and time format string (see Remarks). - An object that supplies culture-specific formatting information about this instance. - - is not a valid standard date and time format specifier character. - 2 - - - Converts the value of this instance to all the string representations supported by the standard date and time format specifiers and the specified culture-specific formatting information. - A string array where each element is the representation of the value of this instance formatted with one of the standard date and time format specifiers. - An object that supplies culture-specific formatting information about this instance. - 2 - - - Returns the hash code for this instance. - A 32-bit signed integer hash code. - 2 - - - Gets the hour component of the date represented by this instance. - The hour component, expressed as a value between 0 and 23. - 1 - - - Indicates whether this instance of is within the daylight saving time range for the current time zone. - true if the value of the property is or and the value of this instance of is within the daylight saving time range for the local time zone; false if is . - 2 - - - Returns an indication whether the specified year is a leap year. - true if is a leap year; otherwise, false. - A 4-digit year. - - is less than 1 or greater than 9999. - 1 - - - Gets a value that indicates whether the time represented by this instance is based on local time, Coordinated Universal Time (UTC), or neither. - One of the enumeration values that indicates what the current time represents. The default is . - 1 - - - Represents the largest possible value of . This field is read-only. - 1 - - - Gets the milliseconds component of the date represented by this instance. - The milliseconds component, expressed as a value between 0 and 999. - 1 - - - Gets the minute component of the date represented by this instance. - The minute component, expressed as a value between 0 and 59. - 1 - - - Represents the smallest possible value of . This field is read-only. - 1 - - - Gets the month component of the date represented by this instance. - The month component, expressed as a value between 1 and 12. - 1 - - - Gets a object that is set to the current date and time on this computer, expressed as the local time. - An object whose value is the current local date and time. - 1 - - - Adds a specified time interval to a specified date and time, yielding a new date and time. - An object that is the sum of the values of and . - The date and time value to add. - The time interval to add. - The resulting is less than or greater than . - 3 - - - Determines whether two specified instances of are equal. - true if and represent the same date and time; otherwise, false. - The first object to compare. - The second object to compare. - 3 - - - Determines whether one specified is later than another specified . - true if is later than ; otherwise, false. - The first object to compare. - The second object to compare. - 3 - - - Determines whether one specified represents a date and time that is the same as or later than another specified . - true if is the same as or later than ; otherwise, false. - The first object to compare. - The second object to compare. - 3 - - - Determines whether two specified instances of are not equal. - true if and do not represent the same date and time; otherwise, false. - The first object to compare. - The second object to compare. - 3 - - - Determines whether one specified is earlier than another specified . - true if is earlier than ; otherwise, false. - The first object to compare. - The second object to compare. - 3 - - - Determines whether one specified represents a date and time that is the same as or earlier than another specified . - true if is the same as or later than ; otherwise, false. - The first object to compare. - The second object to compare. - 3 - - - Subtracts a specified date and time from another specified date and time and returns a time interval. - The time interval between and ; that is, minus . - The date and time value to subtract from (the minuend). - The date and time value to subtract (the subtrahend). - 3 - - - Subtracts a specified time interval from a specified date and time and returns a new date and time. - An object whose value is the value of minus the value of . - The date and time value to subtract from. - The time interval to subtract. - The resulting is less than or greater than . - 3 - - - Converts the string representation of a date and time to its equivalent. - An object that is equivalent to the date and time contained in . - A string that contains a date and time to convert. - - is null. - - does not contain a valid string representation of a date and time. - 1 - - - Converts the string representation of a date and time to its equivalent by using culture-specific format information. - An object that is equivalent to the date and time contained in as specified by . - A string that contains a date and time to convert. - An object that supplies culture-specific format information about . - - is null. - - does not contain a valid string representation of a date and time. - 1 - - - Converts the string representation of a date and time to its equivalent by using culture-specific format information and formatting style. - An object that is equivalent to the date and time contained in , as specified by and . - A string that contains a date and time to convert. - An object that supplies culture-specific formatting information about . - A bitwise combination of the enumeration values that indicates the style elements that can be present in for the parse operation to succeed, and that defines how to interpret the parsed date in relation to the current time zone or the current date. A typical value to specify is . - - is null. - - does not contain a valid string representation of a date and time. - - contains an invalid combination of values. For example, both and . - 1 - - - Converts the specified string representation of a date and time to its equivalent using the specified format and culture-specific format information. The format of the string representation must match the specified format exactly. - An object that is equivalent to the date and time contained in , as specified by and . - A string that contains a date and time to convert. - A format specifier that defines the required format of . For more information, see the Remarks section. - An object that supplies culture-specific format information about . - - or is null. - - or is an empty string. -or- does not contain a date and time that corresponds to the pattern specified in . -or-The hour component and the AM/PM designator in do not agree. - 2 - - - Converts the specified string representation of a date and time to its equivalent using the specified format, culture-specific format information, and style. The format of the string representation must match the specified format exactly or an exception is thrown. - An object that is equivalent to the date and time contained in , as specified by , , and . - A string containing a date and time to convert. - A format specifier that defines the required format of . For more information, see the Remarks section. - An object that supplies culture-specific formatting information about . - A bitwise combination of the enumeration values that provides additional information about , about style elements that may be present in , or about the conversion from to a value. A typical value to specify is . - - or is null. - - or is an empty string. -or- does not contain a date and time that corresponds to the pattern specified in . -or-The hour component and the AM/PM designator in do not agree. - - contains an invalid combination of values. For example, both and . - 2 - - - Converts the specified string representation of a date and time to its equivalent using the specified array of formats, culture-specific format information, and style. The format of the string representation must match at least one of the specified formats exactly or an exception is thrown. - An object that is equivalent to the date and time contained in , as specified by , , and . - A string that contains a date and time to convert. - An array of allowable formats of . For more information, see the Remarks section. - An object that supplies culture-specific format information about . - A bitwise combination of enumeration values that indicates the permitted format of . A typical value to specify is . - - or is null. - - is an empty string. -or- an element of is an empty string. -or- does not contain a date and time that corresponds to any element of . -or-The hour component and the AM/PM designator in do not agree. - - contains an invalid combination of values. For example, both and . - 2 - - - Gets the seconds component of the date represented by this instance. - The seconds component, expressed as a value between 0 and 59. - 1 - - - Creates a new object that has the same number of ticks as the specified , but is designated as either local time, Coordinated Universal Time (UTC), or neither, as indicated by the specified value. - A new object that has the same number of ticks as the object represented by the parameter and the value specified by the parameter. - A date and time. - One of the enumeration values that indicates whether the new object represents local time, UTC, or neither. - 2 - - - Subtracts the specified date and time from this instance. - A time interval that is equal to the date and time represented by this instance minus the date and time represented by . - The date and time value to subtract. - The result is less than or greater than . - 2 - - - Subtracts the specified duration from this instance. - An object that is equal to the date and time represented by this instance minus the time interval represented by . - The time interval to subtract. - The result is less than or greater than . - 2 - - - Compares the current instance with another object of the same type and returns an integer that indicates whether this instance precedes, follows, or occurs in the same position in the sort order as the other object. - A signed number indicating the relative order of this instance and .Value Description Less than zero This instance precedes in the sort order. Zero This instance occurs in the same position as in the sort order. Greater than zero This instance follows in the sort order, or is null. - An object to compare with this instance, or null. - - is not a . - - - - This conversion is not supported. Attempting to use this method throws an . - The return value for this member is not used. - An object that implements the interface. (This parameter is not used; specify null.) - In all cases. - - - This conversion is not supported. Attempting to use this method throws an . - The return value for this member is not used. - An object that implements the interface. (This parameter is not used; specify null.) - In all cases. - - - This conversion is not supported. Attempting to use this method throws an . - The return value for this member is not used. - An object that implements the interface. (This parameter is not used; specify null.) - In all cases. - - - Returns the current object. - The current object. - An object that implements the interface. (This parameter is not used; specify null.) - - - This conversion is not supported. Attempting to use this method throws an . - The return value for this member is not used. - An object that implements the interface. (This parameter is not used; specify null.) - In all cases. - - - This conversion is not supported. Attempting to use this method throws an . - The return value for this member is not used. - An object that implements the interface. (This parameter is not used; specify null.) - In all cases. - - - This conversion is not supported. Attempting to use this method throws an . - The return value for this member is not used. - An object that implements the interface. (This parameter is not used; specify null.) - In all cases. - - - This conversion is not supported. Attempting to use this method throws an . - The return value for this member is not used. - An object that implements the interface. (This parameter is not used; specify null.) - In all cases. - - - This conversion is not supported. Attempting to use this method throws an . - The return value for this member is not used. - An object that implements the interface. (This parameter is not used; specify null.) - In all cases. - - - This conversion is not supported. Attempting to use this method throws an . - The return value for this member is not used. - An object that implements the interface. (This parameter is not used; specify null.) - In all cases. - - - This conversion is not supported. Attempting to use this method throws an . - The return value for this member is not used. - An object that implements the interface. (This parameter is not used; specify null.) - In all cases. - - - Converts the current object to an object of a specified type. - An object of the type specified by the parameter, with a value equivalent to the current object. - The desired type. - An object that implements the interface. (This parameter is not used; specify null.) - - is null. - This conversion is not supported for the type. - - - This conversion is not supported. Attempting to use this method throws an . - The return value for this member is not used. - An object that implements the interface. (This parameter is not used; specify null.) - In all cases. - - - This conversion is not supported. Attempting to use this method throws an . - The return value for this member is not used. - An object that implements the interface. (This parameter is not used; specify null.) - In all cases. - - - This conversion is not supported. Attempting to use this method throws an . - The return value for this member is not used. - An object that implements the interface. (This parameter is not used; specify null.) - In all cases. - - - Gets the number of ticks that represent the date and time of this instance. - The number of ticks that represent the date and time of this instance. The value is between DateTime.MinValue.Ticks and DateTime.MaxValue.Ticks. - 1 - - - Gets the time of day for this instance. - A time interval that represents the fraction of the day that has elapsed since midnight. - 1 - - - Serializes the current object to a 64-bit binary value that subsequently can be used to recreate the object. - A 64-bit signed integer that encodes the and properties. - 2 - - - Gets the current date. - An object that is set to today's date, with the time component set to 00:00:00. - 1 - - - Converts the value of the current object to a Windows file time. - The value of the current object expressed as a Windows file time. - The resulting file time would represent a date and time before 12:00 midnight January 1, 1601 C.E. UTC. - 2 - - - Converts the value of the current object to a Windows file time. - The value of the current object expressed as a Windows file time. - The resulting file time would represent a date and time before 12:00 midnight January 1, 1601 C.E. UTC. - 2 - - - Converts the value of the current object to local time. - An object whose property is , and whose value is the local time equivalent to the value of the current object, or if the converted value is too large to be represented by a object, or if the converted value is too small to be represented as a object. - 2 - - - Converts the value of the current object to its equivalent string representation. - A string representation of the value of the current object. - The date and time is outside the range of dates supported by the calendar used by the current culture. - 1 - - - Converts the value of the current object to its equivalent string representation using the specified culture-specific format information. - A string representation of value of the current object as specified by . - An object that supplies culture-specific formatting information. - The date and time is outside the range of dates supported by the calendar used by . - 1 - - - Converts the value of the current object to its equivalent string representation using the specified format. - A string representation of value of the current object as specified by . - A standard or custom date and time format string (see Remarks). - The length of is 1, and it is not one of the format specifier characters defined for .-or- does not contain a valid custom format pattern. - The date and time is outside the range of dates supported by the calendar used by the current culture. - 1 - - - Converts the value of the current object to its equivalent string representation using the specified format and culture-specific format information. - A string representation of value of the current object as specified by and . - A standard or custom date and time format string. - An object that supplies culture-specific formatting information. - The length of is 1, and it is not one of the format specifier characters defined for .-or- does not contain a valid custom format pattern. - The date and time is outside the range of dates supported by the calendar used by . - 1 - - - Converts the value of the current object to Coordinated Universal Time (UTC). - An object whose property is , and whose value is the UTC equivalent to the value of the current object, or if the converted value is too large to be represented by a object, or if the converted value is too small to be represented by a object. - 2 - - - Converts the specified string representation of a date and time to its equivalent and returns a value that indicates whether the conversion succeeded. - true if the parameter was converted successfully; otherwise, false. - A string containing a date and time to convert. - When this method returns, contains the value equivalent to the date and time contained in , if the conversion succeeded, or if the conversion failed. The conversion fails if the parameter is null, is an empty string (""), or does not contain a valid string representation of a date and time. This parameter is passed uninitialized. - 1 - - - Converts the specified string representation of a date and time to its equivalent using the specified culture-specific format information and formatting style, and returns a value that indicates whether the conversion succeeded. - true if the parameter was converted successfully; otherwise, false. - A string containing a date and time to convert. - An object that supplies culture-specific formatting information about . - A bitwise combination of enumeration values that defines how to interpret the parsed date in relation to the current time zone or the current date. A typical value to specify is . - When this method returns, contains the value equivalent to the date and time contained in , if the conversion succeeded, or if the conversion failed. The conversion fails if the parameter is null, is an empty string (""), or does not contain a valid string representation of a date and time. This parameter is passed uninitialized. - - is not a valid value.-or- contains an invalid combination of values (for example, both and ). - - is a neutral culture and cannot be used in a parsing operation. - 1 - - - Converts the specified string representation of a date and time to its equivalent using the specified format, culture-specific format information, and style. The format of the string representation must match the specified format exactly. The method returns a value that indicates whether the conversion succeeded. - true if was converted successfully; otherwise, false. - A string containing a date and time to convert. - The required format of . See the Remarks section for more information. - An object that supplies culture-specific formatting information about . - A bitwise combination of one or more enumeration values that indicate the permitted format of . - When this method returns, contains the value equivalent to the date and time contained in , if the conversion succeeded, or if the conversion failed. The conversion fails if either the or parameter is null, is an empty string, or does not contain a date and time that correspond to the pattern specified in . This parameter is passed uninitialized. - - is not a valid value.-or- contains an invalid combination of values (for example, both and ). - 1 - - - Converts the specified string representation of a date and time to its equivalent using the specified array of formats, culture-specific format information, and style. The format of the string representation must match at least one of the specified formats exactly. The method returns a value that indicates whether the conversion succeeded. - true if the parameter was converted successfully; otherwise, false. - A string that contains a date and time to convert. - An array of allowable formats of . See the Remarks section for more information. - An object that supplies culture-specific format information about . - A bitwise combination of enumeration values that indicates the permitted format of . A typical value to specify is . - When this method returns, contains the value equivalent to the date and time contained in , if the conversion succeeded, or if the conversion failed. The conversion fails if or is null, or an element of is an empty string, or the format of is not exactly as specified by at least one of the format patterns in . This parameter is passed uninitialized. - - is not a valid value.-or- contains an invalid combination of values (for example, both and ). - 1 - - - Gets a object that is set to the current date and time on this computer, expressed as the Coordinated Universal Time (UTC). - An object whose value is the current UTC date and time. - 1 - - - Gets the year component of the date represented by this instance. - The year, between 1 and 9999. - 1 - - - Specifies whether a object represents a local time, a Coordinated Universal Time (UTC), or is not specified as either local time or UTC. - 2 - - - The time represented is local time. - - - The time represented is not specified as either local time or Coordinated Universal Time (UTC). - - - The time represented is UTC. - - - Represents a point in time, typically expressed as a date and time of day, relative to Coordinated Universal Time (UTC). - 2 - - - Initializes a new instance of the structure using the specified value. - A date and time. - The Coordinated Universal Time (UTC) date and time that results from applying the offset is earlier than .-or-The UTC date and time that results from applying the offset is later than . - - - Initializes a new instance of the structure using the specified value and offset. - A date and time. - The time's offset from Coordinated Universal Time (UTC). - - equals and does not equal zero.-or- equals and does not equal the offset of the system's local time zone.-or- is not specified in whole minutes. - - is less than -14 hours or greater than 14 hours.-or- is less than or greater than . - - - Initializes a new instance of the structure using the specified year, month, day, hour, minute, second, millisecond, and offset. - The year (1 through 9999). - The month (1 through 12). - The day (1 through the number of days in ). - The hours (0 through 23). - The minutes (0 through 59). - The seconds (0 through 59). - The milliseconds (0 through 999). - The time's offset from Coordinated Universal Time (UTC). - - does not represent whole minutes. - - is less than one or greater than 9999.-or- is less than one or greater than 12.-or- is less than one or greater than the number of days in .-or- is less than zero or greater than 23.-or- is less than 0 or greater than 59.-or- is less than 0 or greater than 59.-or- is less than 0 or greater than 999.-or- is less than -14 or greater than 14.-or-The property is earlier than or later than . - - - Initializes a new instance of the structure using the specified year, month, day, hour, minute, second, and offset. - The year (1 through 9999). - The month (1 through 12). - The day (1 through the number of days in ). - The hours (0 through 23). - The minutes (0 through 59). - The seconds (0 through 59). - The time's offset from Coordinated Universal Time (UTC). - - does not represent whole minutes. - - is less than one or greater than 9999.-or- is less than one or greater than 12.-or- is less than one or greater than the number of days in .-or- is less than zero or greater than 23.-or- is less than 0 or greater than 59.-or- is less than 0 or greater than 59.-or- is less than -14 hours or greater than 14 hours.-or-The property is earlier than or later than . - - - Initializes a new instance of the structure using the specified number of ticks and offset. - A date and time expressed as the number of 100-nanosecond intervals that have elapsed since 12:00:00 midnight on January 1, 0001. - The time's offset from Coordinated Universal Time (UTC). - - is not specified in whole minutes. - The property is earlier than or later than .-or- is less than DateTimeOffset.MinValue.Ticks or greater than DateTimeOffset.MaxValue.Ticks.-or- s less than -14 hours or greater than 14 hours. - - - Returns a new object that adds a specified time interval to the value of this instance. - An object whose value is the sum of the date and time represented by the current object and the time interval represented by . - A object that represents a positive or a negative time interval. - The resulting value is less than .-or- The resulting value is greater than . - - - Returns a new object that adds a specified number of whole and fractional days to the value of this instance. - An object whose value is the sum of the date and time represented by the current object and the number of days represented by . - A number of whole and fractional days. The number can be negative or positive. - The resulting value is less than .-or- The resulting value is greater than . - - - Returns a new object that adds a specified number of whole and fractional hours to the value of this instance. - An object whose value is the sum of the date and time represented by the current object and the number of hours represented by . - A number of whole and fractional hours. The number can be negative or positive. - The resulting value is less than .-or- The resulting value is greater than . - - - Returns a new object that adds a specified number of milliseconds to the value of this instance. - An object whose value is the sum of the date and time represented by the current object and the number of whole milliseconds represented by . - A number of whole and fractional milliseconds. The number can be negative or positive. - The resulting value is less than .-or- The resulting value is greater than . - - - Returns a new object that adds a specified number of whole and fractional minutes to the value of this instance. - An object whose value is the sum of the date and time represented by the current object and the number of minutes represented by . - A number of whole and fractional minutes. The number can be negative or positive. - The resulting value is less than .-or- The resulting value is greater than . - - - Returns a new object that adds a specified number of months to the value of this instance. - An object whose value is the sum of the date and time represented by the current object and the number of months represented by . - A number of whole months. The number can be negative or positive. - The resulting value is less than .-or- The resulting value is greater than . - - - Returns a new object that adds a specified number of whole and fractional seconds to the value of this instance. - An object whose value is the sum of the date and time represented by the current object and the number of seconds represented by . - A number of whole and fractional seconds. The number can be negative or positive. - The resulting value is less than .-or- The resulting value is greater than . - - - Returns a new object that adds a specified number of ticks to the value of this instance. - An object whose value is the sum of the date and time represented by the current object and the number of ticks represented by . - A number of 100-nanosecond ticks. The number can be negative or positive. - The resulting value is less than .-or- The resulting value is greater than . - - - Returns a new object that adds a specified number of years to the value of this instance. - An object whose value is the sum of the date and time represented by the current object and the number of years represented by . - A number of years. The number can be negative or positive. - The resulting value is less than .-or- The resulting value is greater than . - - - Compares two objects and indicates whether the first is earlier than the second, equal to the second, or later than the second. - A signed integer that indicates whether the value of the parameter is earlier than, later than, or the same time as the value of the parameter, as the following table shows.Return valueMeaningLess than zero is earlier than .Zero is equal to .Greater than zero is later than . - The first object to compare. - The second object to compare. - - - Compares the current object to a specified object and indicates whether the current object is earlier than, the same as, or later than the second object. - A signed integer that indicates the relationship between the current object and , as the following table shows.Return ValueDescriptionLess than zeroThe current object is earlier than .ZeroThe current object is the same as .Greater than zero.The current object is later than . - An object to compare with the current object. - - - Gets a value that represents the date component of the current object. - A value that represents the date component of the current object. - - - Gets a value that represents the date and time of the current object. - The date and time of the current object. - - - Gets the day of the month represented by the current object. - The day component of the current object, expressed as a value between 1 and 31. - - - Gets the day of the week represented by the current object. - One of the enumeration values that indicates the day of the week of the current object. - - - Gets the day of the year represented by the current object. - The day of the year of the current object, expressed as a value between 1 and 366. - - - Determines whether the current object represents the same point in time as a specified object. - true if both objects have the same value; otherwise, false. - An object to compare to the current object. - - - Determines whether two specified objects represent the same point in time. - true if the two objects have the same value; otherwise, false. - The first object to compare. - The second object to compare. - - - Determines whether a object represents the same point in time as a specified object. - true if the parameter is a object and represents the same point in time as the current object; otherwise, false. - The object to compare to the current object. - - - Determines whether the current object represents the same time and has the same offset as a specified object. - true if the current object and have the same date and time value and the same value; otherwise, false. - The object to compare to the current object. - - - Converts the specified Windows file time to an equivalent local time. - An object that represents the date and time of with the offset set to the local time offset. - A Windows file time, expressed in ticks. - - is less than zero.-or- is greater than DateTimeOffset.MaxValue.Ticks. - - - Converts a Unix time expressed as the number of milliseconds that have elapsed since 1970-01-01T00:00:00Z to a value. - A date and time value that represents the same moment in time as the Unix time. - A Unix time, expressed as the number of milliseconds that have elapsed since 1970-01-01T00:00:00Z (January 1, 1970, at 12:00 AM UTC). For Unix times before this date, its value is negative. - - is less than -62,135,596,800,000. -or- is greater than 253,402,300,799,999. - - - Converts a Unix time expressed as the number of seconds that have elapsed since 1970-01-01T00:00:00Z to a value. - A date and time value that represents the same moment in time as the Unix time. - A Unix time, expressed as the number of seconds that have elapsed since 1970-01-01T00:00:00Z (January 1, 1970, at 12:00 AM UTC). For Unix times before this date, its value is negative. - - is less than -62,135,596,800. -or- is greater than 253,402,300,799. - - - Returns the hash code for the current object. - A 32-bit signed integer hash code. - - - Gets the hour component of the time represented by the current object. - The hour component of the current object. This property uses a 24-hour clock; the value ranges from 0 to 23. - - - Gets a value that represents the local date and time of the current object. - The local date and time of the current object. - - - Represents the greatest possible value of . This field is read-only. - - is outside the range of the current or specified culture's default calendar. - - - Gets the millisecond component of the time represented by the current object. - The millisecond component of the current object, expressed as an integer between 0 and 999. - - - Gets the minute component of the time represented by the current object. - The minute component of the current object, expressed as an integer between 0 and 59. - - - Represents the earliest possible value. This field is read-only. - - - Gets the month component of the date represented by the current object. - The month component of the current object, expressed as an integer between 1 and 12. - - - Gets a object that is set to the current date and time on the current computer, with the offset set to the local time's offset from Coordinated Universal Time (UTC). - A object whose date and time is the current local time and whose offset is the local time zone's offset from Coordinated Universal Time (UTC). - - - Gets the time's offset from Coordinated Universal Time (UTC). - The difference between the current object's time value and Coordinated Universal Time (UTC). - - - Adds a specified time interval to a object that has a specified date and time, and yields a object that has new a date and time. - An object whose value is the sum of the values of and . - The object to add the time interval to. - The time interval to add. - The resulting value is less than .-or- The resulting value is greater than . - - - Determines whether two specified objects represent the same point in time. - true if both objects have the same value; otherwise, false. - The first object to compare. - The second object to compare. - - - Determines whether one specified object is greater than (or later than) a second specified object. - true if the value of is later than the value of ; otherwise, false. - The first object to compare. - The second object to compare. - - - Determines whether one specified object is greater than or equal to a second specified object. - true if the value of is the same as or later than the value of ; otherwise, false. - The first object to compare. - The second object to compare. - - - Defines an implicit conversion of a object to a object. - The converted object. - The object to convert. - The Coordinated Universal Time (UTC) date and time that results from applying the offset is earlier than .-or-The UTC date and time that results from applying the offset is later than . - - - Determines whether two specified objects refer to different points in time. - true if and do not have the same value; otherwise, false. - The first object to compare. - The second object to compare. - - - Determines whether one specified object is less than a second specified object. - true if the value of is earlier than the value of ; otherwise, false. - The first object to compare. - The second object to compare. - - - Determines whether one specified object is less than a second specified object. - true if the value of is earlier than the value of ; otherwise, false. - The first object to compare. - The second object to compare. - - - Subtracts one object from another and yields a time interval. - An object that represents the difference between and . - The minuend. - The subtrahend. - - - Subtracts a specified time interval from a specified date and time, and yields a new date and time. - An object that is equal to the value of minus . - The date and time object to subtract from. - The time interval to subtract. - The resulting value is less than or greater than . - - - Converts the specified string representation of a date, time, and offset to its equivalent. - An object that is equivalent to the date and time that is contained in . - A string that contains a date and time to convert. - The offset is greater than 14 hours or less than -14 hours. - - is null. - - does not contain a valid string representation of a date and time.-or- contains the string representation of an offset value without a date or time. - - - Converts the specified string representation of a date and time to its equivalent using the specified culture-specific format information. - An object that is equivalent to the date and time that is contained in , as specified by . - A string that contains a date and time to convert. - An object that provides culture-specific format information about . - The offset is greater than 14 hours or less than -14 hours. - - is null. - - does not contain a valid string representation of a date and time.-or- contains the string representation of an offset value without a date or time. - - - Converts the specified string representation of a date and time to its equivalent using the specified culture-specific format information and formatting style. - An object that is equivalent to the date and time that is contained in as specified by and . - A string that contains a date and time to convert. - An object that provides culture-specific format information about . - A bitwise combination of enumeration values that indicates the permitted format of . A typical value to specify is . - The offset is greater than 14 hours or less than -14 hours.-or- is not a valid value.-or- includes an unsupported value.-or- includes values that cannot be used together. - - is null. - - does not contain a valid string representation of a date and time.-or- contains the string representation of an offset value without a date or time. - - - Converts the specified string representation of a date and time to its equivalent using the specified format and culture-specific format information. The format of the string representation must match the specified format exactly. - An object that is equivalent to the date and time that is contained in as specified by and . - A string that contains a date and time to convert. - A format specifier that defines the expected format of . - An object that supplies culture-specific formatting information about . - The offset is greater than 14 hours or less than -14 hours. - - is null.-or- is null. - - is an empty string ("").-or- does not contain a valid string representation of a date and time.-or- is an empty string.-or-The hour component and the AM/PM designator in do not agree. - - - Converts the specified string representation of a date and time to its equivalent using the specified format, culture-specific format information, and style. The format of the string representation must match the specified format exactly. - An object that is equivalent to the date and time that is contained in the parameter, as specified by the , , and parameters. - A string that contains a date and time to convert. - A format specifier that defines the expected format of . - An object that supplies culture-specific formatting information about . - A bitwise combination of enumeration values that indicates the permitted format of . - The offset is greater than 14 hours or less than -14 hours.-or-The parameter includes an unsupported value.-or-The parameter contains values that cannot be used together. - - is null.-or- is null. - - is an empty string ("").-or- does not contain a valid string representation of a date and time.-or- is an empty string.-or-The hour component and the AM/PM designator in do not agree. - - - Converts the specified string representation of a date and time to its equivalent using the specified formats, culture-specific format information, and style. The format of the string representation must match one of the specified formats exactly. - An object that is equivalent to the date and time that is contained in the parameter, as specified by the , , and parameters. - A string that contains a date and time to convert. - An array of format specifiers that define the expected formats of . - An object that supplies culture-specific formatting information about . - A bitwise combination of enumeration values that indicates the permitted format of . - The offset is greater than 14 hours or less than -14 hours.-or- includes an unsupported value.-or-The parameter contains values that cannot be used together. - - is null. - - is an empty string ("").-or- does not contain a valid string representation of a date and time.-or-No element of contains a valid format specifier.-or-The hour component and the AM/PM designator in do not agree. - - - Gets the second component of the clock time represented by the current object. - The second component of the object, expressed as an integer value between 0 and 59. - - - Subtracts a value that represents a specific date and time from the current object. - An object that specifies the interval between the two objects. - An object that represents the value to subtract. - - - Subtracts a specified time interval from the current object. - An object that is equal to the date and time represented by the current object, minus the time interval represented by . - The time interval to subtract. - The resulting value is less than .-or- The resulting value is greater than . - - - Compares the value of the current object with another object of the same type. - A 32-bit signed integer that indicates whether the current object is less than, equal to, or greater than . The return values of the method are interpreted as follows:Return ValueDescriptionLess than zeroThe current object is less than (earlier than) .ZeroThe current object is equal to (the same point in time as) .Greater than zeroThe current object is greater than (later than) . - The object to compare with the current object. - - - Gets the number of ticks that represents the date and time of the current object in clock time. - The number of ticks in the object's clock time. - - - Gets the time of day for the current object. - The time interval of the current date that has elapsed since midnight. - - - Converts the value of the current object to a Windows file time. - The value of the current object, expressed as a Windows file time. - The resulting file time would represent a date and time before midnight on January 1, 1601 C.E. Coordinated Universal Time (UTC). - - - Converts the current object to a object that represents the local time. - An object that represents the date and time of the current object converted to local time. - - - Converts the value of the current object to the date and time specified by an offset value. - An object that is equal to the original object (that is, their methods return identical points in time) but whose property is set to . - The offset to convert the value to. - The resulting object has a value earlier than .-or-The resulting object has a value later than . - - is less than -14 hours.-or- is greater than 14 hours. - - - Converts the value of the current object to its equivalent string representation. - A string representation of a object that includes the offset appended at the end of the string. - The date and time is outside the range of dates supported by the calendar used by the current culture. - - - Converts the value of the current object to its equivalent string representation using the specified culture-specific formatting information. - A string representation of the value of the current object, as specified by . - An object that supplies culture-specific formatting information. - The date and time is outside the range of dates supported by the calendar used by . - - - Converts the value of the current object to its equivalent string representation using the specified format. - A string representation of the value of the current object, as specified by . - A format string. - The length of is one, and it is not one of the standard format specifier characters defined for . -or- does not contain a valid custom format pattern. - The date and time is outside the range of dates supported by the calendar used by the current culture. - - - Converts the value of the current object to its equivalent string representation using the specified format and culture-specific format information. - A string representation of the value of the current object, as specified by and . - A format string. - An object that supplies culture-specific formatting information. - The length of is one, and it is not one of the standard format specifier characters defined for .-or- does not contain a valid custom format pattern. - The date and time is outside the range of dates supported by the calendar used by . - - - Converts the current object to a value that represents the Coordinated Universal Time (UTC). - An object that represents the date and time of the current object converted to Coordinated Universal Time (UTC). - - - Returns the number of milliseconds that have elapsed since 1970-01-01T00:00:00.000Z. - The number of milliseconds that have elapsed since 1970-01-01T00:00:00.000Z. - - - Returns the number of seconds that have elapsed since 1970-01-01T00:00:00Z. - The number of seconds that have elapsed since 1970-01-01T00:00:00Z. - - - Tries to converts a specified string representation of a date and time to its equivalent, and returns a value that indicates whether the conversion succeeded. - true if the parameter is successfully converted; otherwise, false. - A string that contains a date and time to convert. - When the method returns, contains the equivalent to the date and time of , if the conversion succeeded, or , if the conversion failed. The conversion fails if the parameter is null or does not contain a valid string representation of a date and time. This parameter is passed uninitialized. - - - Tries to convert a specified string representation of a date and time to its equivalent, and returns a value that indicates whether the conversion succeeded. - true if the parameter is successfully converted; otherwise, false. - A string that contains a date and time to convert. - An object that provides culture-specific formatting information about . - A bitwise combination of enumeration values that indicates the permitted format of . - When the method returns, contains the value equivalent to the date and time of , if the conversion succeeded, or , if the conversion failed. The conversion fails if the parameter is null or does not contain a valid string representation of a date and time. This parameter is passed uninitialized. - - includes an undefined value.-or- is not supported.-or- includes mutually exclusive values. - - - Converts the specified string representation of a date and time to its equivalent using the specified format, culture-specific format information, and style. The format of the string representation must match the specified format exactly. - true if the parameter is successfully converted; otherwise, false. - A string that contains a date and time to convert. - A format specifier that defines the required format of . - An object that supplies culture-specific formatting information about . - A bitwise combination of enumeration values that indicates the permitted format of input. A typical value to specify is None. - When the method returns, contains the equivalent to the date and time of , if the conversion succeeded, or , if the conversion failed. The conversion fails if the parameter is null, or does not contain a valid string representation of a date and time in the expected format defined by and . This parameter is passed uninitialized. - - includes an undefined value.-or- is not supported.-or- includes mutually exclusive values. - - - Converts the specified string representation of a date and time to its equivalent using the specified array of formats, culture-specific format information, and style. The format of the string representation must match one of the specified formats exactly. - true if the parameter is successfully converted; otherwise, false. - A string that contains a date and time to convert. - An array that defines the expected formats of . - An object that supplies culture-specific formatting information about . - A bitwise combination of enumeration values that indicates the permitted format of input. A typical value to specify is None. - When the method returns, contains the equivalent to the date and time of , if the conversion succeeded, or , if the conversion failed. The conversion fails if the does not contain a valid string representation of a date and time, or does not contain the date and time in the expected format defined by , or if is null. This parameter is passed uninitialized. - - includes an undefined value.-or- is not supported.-or- includes mutually exclusive values. - - - Gets a value that represents the Coordinated Universal Time (UTC) date and time of the current object. - The Coordinated Universal Time (UTC) date and time of the current object. - - - Gets a object whose date and time are set to the current Coordinated Universal Time (UTC) date and time and whose offset is . - An object whose date and time is the current Coordinated Universal Time (UTC) and whose offset is . - - - Gets the number of ticks that represents the date and time of the current object in Coordinated Universal Time (UTC). - The number of ticks in the object's Coordinated Universal Time (UTC). - - - Gets the year component of the date represented by the current object. - The year component of the current object, expressed as an integer value between 0 and 9999. - - - Specifies the day of the week. - 2 - - - Indicates Friday. - - - Indicates Monday. - - - Indicates Saturday. - - - Indicates Sunday. - - - Indicates Thursday. - - - Indicates Tuesday. - - - Indicates Wednesday. - - - Represents a decimal number. - 1 - - - Initializes a new instance of to the value of the specified double-precision floating-point number. - The value to represent as a . - - is greater than or less than .-or- is , , or . - - - Initializes a new instance of to the value of the specified 32-bit signed integer. - The value to represent as a . - - - Initializes a new instance of from parameters specifying the instance's constituent parts. - The low 32 bits of a 96-bit integer. - The middle 32 bits of a 96-bit integer. - The high 32 bits of a 96-bit integer. - true to indicate a negative number; false to indicate a positive number. - A power of 10 ranging from 0 to 28. - - is greater than 28. - - - Initializes a new instance of to a decimal value represented in binary and contained in a specified array. - An array of 32-bit signed integers containing a representation of a decimal value. - - is null. - The length of the is not 4.-or- The representation of the decimal value in is not valid. - - - Initializes a new instance of to the value of the specified 64-bit signed integer. - The value to represent as a . - - - Initializes a new instance of to the value of the specified single-precision floating-point number. - The value to represent as a . - - is greater than or less than .-or- is , , or . - - - Initializes a new instance of to the value of the specified 32-bit unsigned integer. - The value to represent as a . - - - Initializes a new instance of to the value of the specified 64-bit unsigned integer. - The value to represent as a . - - - Adds two specified values. - The sum of and . - The first value to add. - The second value to add. - The sum of and is less than or greater than . - 1 - - - Returns the smallest integral value that is greater than or equal to the specified decimal number. - The smallest integral value that is greater than or equal to the parameter. Note that this method returns a instead of an integral type. - A decimal number. - 1 - - - Compares two specified values. - A signed number indicating the relative values of and .Return value Meaning Less than zero is less than . Zero and are equal. Greater than zero is greater than . - The first value to compare. - The second value to compare. - 1 - - - Compares this instance to a specified object and returns a comparison of their relative values. - A signed number indicating the relative values of this instance and .Return value Meaning Less than zero This instance is less than . Zero This instance is equal to . Greater than zero This instance is greater than . - The object to compare with this instance. - 2 - - - Divides two specified values. - The result of dividing by . - The dividend. - The divisor. - - is zero. - The return value (that is, the quotient) is less than or greater than . - 1 - - - Returns a value indicating whether this instance and a specified object represent the same value. - true if is equal to this instance; otherwise, false. - An object to compare to this instance. - 2 - - - Returns a value indicating whether two specified instances of represent the same value. - true if and are equal; otherwise, false. - The first value to compare. - The second value to compare. - 1 - - - Returns a value indicating whether this instance and a specified represent the same type and value. - true if is a and equal to this instance; otherwise, false. - The object to compare with this instance. - 2 - - - Rounds a specified number to the closest integer toward negative infinity. - If has a fractional part, the next whole number toward negative infinity that is less than .-or- If doesn't have a fractional part, is returned unchanged. Note that the method returns an integral value of type . - The value to round. - 1 - - - Converts the value of a specified instance of to its equivalent binary representation. - A 32-bit signed integer array with four elements that contain the binary representation of . - The value to convert. - 1 - - - Returns the hash code for this instance. - A 32-bit signed integer hash code. - 2 - - - Represents the largest possible value of . This field is constant and read-only. - 1 - - - Represents the number negative one (-1). - 1 - - - Represents the smallest possible value of . This field is constant and read-only. - 1 - - - Multiplies two specified values. - The result of multiplying and . - The multiplicand. - The multiplier. - The return value is less than or greater than . - 1 - - - Returns the result of multiplying the specified value by negative one. - A decimal number with the value of , but the opposite sign.-or- Zero, if is zero. - The value to negate. - 1 - - - Represents the number one (1). - 1 - - - Adds two specified values. - The result of adding and . - The first value to add. - The second value to add. - The return value is less than or greater than . - 3 - - - Decrements the operand by one. - The value of decremented by 1. - The value to decrement. - The return value is less than or greater than . - 3 - - - Divides two specified values. - The result of dividing by . - The dividend. - The divisor. - - is zero. - The return value is less than or greater than . - 3 - - - Returns a value that indicates whether two values are equal. - true if and are equal; otherwise, false. - The first value to compare. - The second value to compare. - 3 - - - Defines an explicit conversion of a to an 8-bit signed integer. - An 8-bit signed integer that represents the converted . - The value to convert. - - is less than or greater than . - 3 - - - Defines an explicit conversion of a to a 64-bit signed integer. - A 64-bit signed integer that represents the converted . - The value to convert. - - is less than or greater than . - 3 - - - Defines an explicit conversion of a to a 16-bit unsigned integer. - A 16-bit unsigned integer that represents the converted . - The value to convert. - - is greater than or less than . - 3 - - - Defines an explicit conversion of a to a 64-bit unsigned integer. - A 64-bit unsigned integer that represents the converted . - The value to convert. - - is negative or greater than . - 3 - - - Defines an explicit conversion of a to a 32-bit unsigned integer. - A 32-bit unsigned integer that represents the converted . - The value to convert. - - is negative or greater than . - 3 - - - Defines an explicit conversion of a to a 32-bit signed integer. - A 32-bit signed integer that represents the converted . - The value to convert. - - is less than or greater than . - 3 - - - Defines an explicit conversion of a to a Unicode character. - A Unicode character that represents the converted . - The value to convert. - - is less than or greater than . - 3 - - - Defines an explicit conversion of a to an 8-bit unsigned integer. - An 8-bit unsigned integer that represents the converted . - The value to convert. - - is less than or greater than . - 3 - - - Defines an explicit conversion of a to a single-precision floating-point number. - A single-precision floating-point number that represents the converted . - The value to convert. - 3 - - - Defines an explicit conversion of a to a 16-bit signed integer. - A 16-bit signed integer that represents the converted . - The value to convert. - - is less than or greater than . - 3 - - - Defines an explicit conversion of a to a double-precision floating-point number. - A double-precision floating-point number that represents the converted . - The value to convert. - 3 - - - Defines an explicit conversion of a double-precision floating-point number to a . - The converted double-precision floating point number. - The double-precision floating-point number to convert. - - is less than or greater than .-or- is , , or . - 3 - - - Defines an explicit conversion of a single-precision floating-point number to a . - The converted single-precision floating point number. - The single-precision floating-point number to convert. - - is less than or greater than .-or- is , , or . - 3 - - - Returns a value indicating whether a specified is greater than another specified . - true if is greater than ; otherwise, false. - The first value to compare. - The second value to compare. - 3 - - - Returns a value indicating whether a specified is greater than or equal to another specified . - true if is greater than or equal to ; otherwise, false. - The first value to compare. - The second value to compare. - 3 - - - Defines an explicit conversion of an 8-bit unsigned integer to a . - The converted 8-bit unsigned integer. - The 8-bit unsigned integer to convert. - 3 - - - Defines an explicit conversion of a Unicode character to a . - The converted Unicode character. - The Unicode character to convert. - 3 - - - Defines an explicit conversion of a 16-bit signed integer to a . - The converted 16-bit signed integer. - The16-bit signed integer to convert. - 3 - - - Defines an explicit conversion of a 32-bit signed integer to a . - The converted 32-bit signed integer. - The 32-bit signed integer to convert. - 3 - - - Defines an explicit conversion of a 64-bit signed integer to a . - The converted 64-bit signed integer. - The 64-bit signed integer to convert. - 3 - - - Defines an explicit conversion of an 8-bit signed integer to a . - The converted 8-bit signed integer. - The 8-bit signed integer to convert. - 3 - - - Defines an explicit conversion of a 16-bit unsigned integer to a . - The converted 16-bit unsigned integer. - The 16-bit unsigned integer to convert. - 3 - - - Defines an explicit conversion of a 32-bit unsigned integer to a . - The converted 32-bit unsigned integer. - The 32-bit unsigned integer to convert. - 3 - - - Defines an explicit conversion of a 64-bit unsigned integer to a . - The converted 64-bit unsigned integer. - The 64-bit unsigned integer to convert. - 3 - - - Increments the operand by 1. - The value of incremented by 1. - The value to increment. - The return value is less than or greater than . - 3 - - - Returns a value that indicates whether two objects have different values. - true if and are not equal; otherwise, false. - The first value to compare. - The second value to compare. - 3 - - - Returns a value indicating whether a specified is less than another specified . - true if is less than ; otherwise, false. - The first value to compare. - The second value to compare. - 3 - - - Returns a value indicating whether a specified is less than or equal to another specified . - true if is less than or equal to ; otherwise, false. - The first value to compare. - The second value to compare. - 3 - - - Returns the remainder resulting from dividing two specified values. - The remainder resulting from dividing by . - The dividend. - The divisor. - - is zero. - The return value is less than or greater than . - 3 - - - Multiplies two specified values. - The result of multiplying by . - The first value to multiply. - The second value to multiply. - The return value is less than or greater than . - 3 - - - Subtracts two specified values. - The result of subtracting from . - The minuend. - The subtrahend. - The return value is less than or greater than . - 3 - - - Negates the value of the specified operand. - The result of multiplied by negative one (-1). - The value to negate. - 3 - - - Returns the value of the operand (the sign of the operand is unchanged). - The value of the operand, . - The operand to return. - 3 - - - Converts the string representation of a number to its equivalent. - The equivalent to the number contained in . - The string representation of the number to convert. - - is null. - - is not in the correct format. - - represents a number less than or greater than . - 1 - - - Converts the string representation of a number in a specified style to its equivalent. - The number equivalent to the number contained in as specified by . - The string representation of the number to convert. - A bitwise combination of values that indicates the style elements that can be present in . A typical value to specify is . - - is null. - - is not a value. -or- is the value. - - is not in the correct format. - - represents a number less than or greater than - 1 - - - Converts the string representation of a number to its equivalent using the specified style and culture-specific format. - The number equivalent to the number contained in as specified by and . - The string representation of the number to convert. - A bitwise combination of values that indicates the style elements that can be present in . A typical value to specify is . - An object that supplies culture-specific information about the format of . - - is not in the correct format. - - represents a number less than or greater than . - - is null. - - is not a value. -or- is the value. - 1 - - - Converts the string representation of a number to its equivalent using the specified culture-specific format information. - The number equivalent to the number contained in as specified by . - The string representation of the number to convert. - An that supplies culture-specific parsing information about . - - is null. - - is not of the correct format - - represents a number less than or greater than - 1 - - - Computes the remainder after dividing two values. - The remainder after dividing by . - The dividend. - The divisor. - - is zero. - The return value is less than or greater than . - 1 - - - Subtracts one specified value from another. - The result of subtracting from . - The minuend. - The subtrahend. - The return value is less than or greater than . - 1 - - - Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. - A signed integer that indicates the relative order of this instance and .Return value Meaning Less than zero This instance precedes in the sort order.Zero This instance occurs in the same position as in the sort order.Greater than zero This instance follows in the sort order.-or- is null. - The object to compare with this instance, or null. - - is not a . - - - - For a description of this member, see . - true if the value of the current instance is not zero; otherwise, false. - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - The resulting integer value is less than or greater than . - - - This conversion is not supported. Attempting to use this method throws an . - None. This conversion is not supported. - This parameter is ignored. - In all cases. - - - This conversion is not supported. Attempting to use this method throws an . - None. This conversion is not supported. - This parameter is ignored. - In all cases. - - - For a description of this member, see . - The value of the current instance, unchanged. - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - The resulting integer value is less than or greater than . - - - For a description of this member, see . - The value of the current instance, converted to a . - The parameter is ignored. - The resulting integer value is less than or greater than . - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - The resulting integer value is less than or greater than . - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - The resulting integer value is less than or greater than . - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to a . - The type to which to convert the value of this instance. - An implementation that supplies culture-specific information about the format of the returned value. - - is null. - The requested type conversion is not supported. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - The resulting integer value is less than or greater than . - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - The resulting integer value is less than or greater than . - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - The resulting integer value is less than or greater than . - - - Converts the value of the specified to the equivalent 8-bit unsigned integer. - An 8-bit unsigned integer equivalent to . - The decimal number to convert. - - is less than or greater than . - 1 - - - Converts the value of the specified to the equivalent double-precision floating-point number. - A double-precision floating-point number equivalent to . - The decimal number to convert. - 1 - - - Converts the value of the specified to the equivalent 16-bit signed integer. - A 16-bit signed integer equivalent to . - The decimal number to convert. - - is less than or greater than . - 1 - - - Converts the value of the specified to the equivalent 32-bit signed integer. - A 32-bit signed integer equivalent to the value of . - The decimal number to convert. - - is less than or greater than . - 1 - - - Converts the value of the specified to the equivalent 64-bit signed integer. - A 64-bit signed integer equivalent to the value of . - The decimal number to convert. - - is less than or greater than . - 1 - - - Converts the value of the specified to the equivalent 8-bit signed integer. - An 8-bit signed integer equivalent to . - The decimal number to convert. - - is less than or greater than . - 1 - - - Converts the value of the specified to the equivalent single-precision floating-point number. - A single-precision floating-point number equivalent to the value of . - The decimal number to convert. - 1 - - - Converts the numeric value of this instance to its equivalent string representation. - A string that represents the value of this instance. - 1 - - - Converts the numeric value of this instance to its equivalent string representation using the specified culture-specific format information. - The string representation of the value of this instance as specified by . - An object that supplies culture-specific formatting information. - 1 - - - Converts the numeric value of this instance to its equivalent string representation, using the specified format. - The string representation of the value of this instance as specified by . - A standard or custom numeric format string (see Remarks). - - is invalid. - 1 - - - Converts the numeric value of this instance to its equivalent string representation using the specified format and culture-specific format information. - The string representation of the value of this instance as specified by and . - A numeric format string (see Remarks). - An object that supplies culture-specific formatting information. - - is invalid. - 1 - - - Converts the value of the specified to the equivalent 16-bit unsigned integer. - A 16-bit unsigned integer equivalent to the value of . - The decimal number to convert. - - is greater than or less than . - 1 - - - Converts the value of the specified to the equivalent 32-bit unsigned integer. - A 32-bit unsigned integer equivalent to the value of . - The decimal number to convert. - - is negative or greater than . - 1 - - - Converts the value of the specified to the equivalent 64-bit unsigned integer. - A 64-bit unsigned integer equivalent to the value of . - The decimal number to convert. - - is negative or greater than . - 1 - - - Returns the integral digits of the specified ; any fractional digits are discarded. - The result of rounded toward zero, to the nearest whole number. - The decimal number to truncate. - 1 - - - Converts the string representation of a number to its equivalent. A return value indicates whether the conversion succeeded or failed. - true if was converted successfully; otherwise, false. - The string representation of the number to convert. - When this method returns, contains the number that is equivalent to the numeric value contained in , if the conversion succeeded, or is zero if the conversion failed. The conversion fails if the parameter is null or , is not a number in a valid format, or represents a number less than or greater than . This parameter is passed uninitialized; any value originally supplied in will be overwritten. - 1 - - - Converts the string representation of a number to its equivalent using the specified style and culture-specific format. A return value indicates whether the conversion succeeded or failed. - true if was converted successfully; otherwise, false. - The string representation of the number to convert. - A bitwise combination of enumeration values that indicates the permitted format of . A typical value to specify is . - An object that supplies culture-specific parsing information about . - When this method returns, contains the number that is equivalent to the numeric value contained in , if the conversion succeeded, or is zero if the conversion failed. The conversion fails if the parameter is null or , is not in a format compliant with , or represents a number less than or greater than . This parameter is passed uninitialized; any value originally supplied in will be overwritten. - - is not a value. -or- is the value. - 1 - - - Represents the number zero (0). - 1 - - - Represents a delegate, which is a data structure that refers to a static method or to a class instance and an instance method of that class. - 2 - - - Concatenates the invocation lists of two delegates. - A new delegate with an invocation list that concatenates the invocation lists of and in that order. Returns if is null, returns if is a null reference, and returns a null reference if both and are null references. - The delegate whose invocation list comes first. - The delegate whose invocation list comes last. - Both and are not null, and and are not instances of the same delegate type. - 1 - - - Concatenates the invocation lists of an array of delegates. - A new delegate with an invocation list that concatenates the invocation lists of the delegates in the array. Returns null if is null, if contains zero elements, or if every entry in is null. - The array of delegates to combine. - Not all the non-null entries in are instances of the same delegate type. - 1 - - - Dynamically invokes (late-bound) the method represented by the current delegate. - The object returned by the method represented by the delegate. - An array of objects that are the arguments to pass to the method represented by the current delegate.-or- null, if the method represented by the current delegate does not require arguments. - The caller does not have access to the method represented by the delegate (for example, if the method is private).-or- The number, order, or type of parameters listed in is invalid. - The method represented by the delegate is invoked on an object or a class that does not support it. - The method represented by the delegate is an instance method and the target object is null.-or- One of the encapsulated methods throws an exception. - 2 - - - Determines whether the specified object and the current delegate are of the same type and share the same targets, methods, and invocation list. - true if and the current delegate have the same targets, methods, and invocation list; otherwise, false. - The object to compare with the current delegate. - The caller does not have access to the method represented by the delegate (for example, if the method is private). - 2 - - - Returns a hash code for the delegate. - A hash code for the delegate. - 2 - - - Returns the invocation list of the delegate. - An array of delegates representing the invocation list of the current delegate. - 2 - - - Determines whether the specified delegates are equal. - true if is equal to ; otherwise, false. - The first delegate to compare. - The second delegate to compare. - 3 - - - Determines whether the specified delegates are not equal. - true if is not equal to ; otherwise, false. - The first delegate to compare. - The second delegate to compare. - 3 - - - Removes the last occurrence of the invocation list of a delegate from the invocation list of another delegate. - A new delegate with an invocation list formed by taking the invocation list of and removing the last occurrence of the invocation list of , if the invocation list of is found within the invocation list of . Returns if is null or if the invocation list of is not found within the invocation list of . Returns a null reference if the invocation list of is equal to the invocation list of or if is a null reference. - The delegate from which to remove the invocation list of . - The delegate that supplies the invocation list to remove from the invocation list of . - The caller does not have access to the method represented by the delegate (for example, if the method is private). - The delegate types do not match. - 1 - - - Removes all occurrences of the invocation list of a delegate from the invocation list of another delegate. - A new delegate with an invocation list formed by taking the invocation list of and removing all occurrences of the invocation list of , if the invocation list of is found within the invocation list of . Returns if is null or if the invocation list of is not found within the invocation list of . Returns a null reference if the invocation list of is equal to the invocation list of , if contains only a series of invocation lists that are equal to the invocation list of , or if is a null reference. - The delegate from which to remove the invocation list of . - The delegate that supplies the invocation list to remove from the invocation list of . - The caller does not have access to the method represented by the delegate (for example, if the method is private). - The delegate types do not match. - 1 - - - Gets the class instance on which the current delegate invokes the instance method. - The object on which the current delegate invokes the instance method, if the delegate represents an instance method; null if the delegate represents a static method. - 2 - - - The exception that is thrown when there is an attempt to divide an integral or decimal value by zero. - 2 - - - Initializes a new instance of the class. - - - Initializes a new instance of the class with a specified error message. - A that describes the error. - - - Initializes a new instance of the class with a specified error message and a reference to the inner exception that is the cause of this exception. - The error message that explains the reason for the exception. - The exception that is the cause of the current exception. If the parameter is not null, the current exception is raised in a catch block that handles the inner exception. - - - Represents a double-precision floating-point number. - 1 - - - Compares this instance to a specified double-precision floating-point number and returns an integer that indicates whether the value of this instance is less than, equal to, or greater than the value of the specified double-precision floating-point number. - A signed number indicating the relative values of this instance and .Return Value Description Less than zero This instance is less than .-or- This instance is not a number () and is a number. Zero This instance is equal to .-or- Both this instance and are not a number (), , or . Greater than zero This instance is greater than .-or- This instance is a number and is not a number (). - A double-precision floating-point number to compare. - 2 - - - Represents the smallest positive value that is greater than zero. This field is constant. - 1 - - - Returns a value indicating whether this instance and a specified object represent the same value. - true if is equal to this instance; otherwise, false. - A object to compare to this instance. - 2 - - - Returns a value indicating whether this instance is equal to a specified object. - true if is an instance of and equals the value of this instance; otherwise, false. - An object to compare with this instance. - 2 - - - Returns the hash code for this instance. - A 32-bit signed integer hash code. - 2 - - - Returns a value indicating whether the specified number evaluates to negative or positive infinity - true if evaluates to or ; otherwise, false. - A double-precision floating-point number. - 1 - - - Returns a value that indicates whether the specified value is not a number (). - true if evaluates to ; otherwise, false. - A double-precision floating-point number. - 1 - - - Returns a value indicating whether the specified number evaluates to negative infinity. - true if evaluates to ; otherwise, false. - A double-precision floating-point number. - 1 - - - Returns a value indicating whether the specified number evaluates to positive infinity. - true if evaluates to ; otherwise, false. - A double-precision floating-point number. - 1 - - - Represents the largest possible value of a . This field is constant. - 1 - - - Represents the smallest possible value of a . This field is constant. - 1 - - - Represents a value that is not a number (NaN). This field is constant. - 1 - - - Represents negative infinity. This field is constant. - 1 - - - Returns a value that indicates whether two specified values are equal. - true if and are equal; otherwise, false. - The first value to compare. - The second value to compare. - - - Returns a value that indicates whether a specified value is greater than another specified value. - true if is greater than ; otherwise, false. - The first value to compare. - The second value to compare. - - - Returns a value that indicates whether a specified value is greater than or equal to another specified value. - true if is greater than or equal to ; otherwise, false. - The first value to compare. - The second value to compare. - - - Returns a value that indicates whether two specified values are not equal. - true if and are not equal; otherwise, false. - The first value to compare. - The second value to compare. - - - Returns a value that indicates whether a specified value is less than another specified value. - true if is less than ; otherwise, false. - The first value to compare. - The second value to compare. - - - Returns a value that indicates whether a specified value is less than or equal to another specified value. - true if is less than or equal to ; otherwise, false. - The first value to compare. - The second value to compare. - - - Converts the string representation of a number to its double-precision floating-point number equivalent. - A double-precision floating-point number that is equivalent to the numeric value or symbol specified in . - A string that contains a number to convert. - - is null. - - does not represent a number in a valid format. - - represents a number that is less than or greater than . - 1 - - - Converts the string representation of a number in a specified style to its double-precision floating-point number equivalent. - A double-precision floating-point number that is equivalent to the numeric value or symbol specified in . - A string that contains a number to convert. - A bitwise combination of enumeration values that indicate the style elements that can be present in . A typical value to specify is a combination of combined with . - - is null. - - does not represent a number in a valid format. - - represents a number that is less than or greater than . - - is not a value. -or- includes the value. - 1 - - - Converts the string representation of a number in a specified style and culture-specific format to its double-precision floating-point number equivalent. - A double-precision floating-point number that is equivalent to the numeric value or symbol specified in . - A string that contains a number to convert. - A bitwise combination of enumeration values that indicate the style elements that can be present in . A typical value to specify is combined with . - An object that supplies culture-specific formatting information about . - - is null. - - does not represent a numeric value. - - is not a value. -or- is the value. - - represents a number that is less than or greater than . - 1 - - - Converts the string representation of a number in a specified culture-specific format to its double-precision floating-point number equivalent. - A double-precision floating-point number that is equivalent to the numeric value or symbol specified in . - A string that contains a number to convert. - An object that supplies culture-specific formatting information about . - - is null. - - does not represent a number in a valid format. - - represents a number that is less than or greater than . - 1 - - - Represents positive infinity. This field is constant. - 1 - - - Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. - A signed integer that indicates the relative order of this instance and .Return value Meaning Less than zero This instance precedes in the sort order.Zero This instance occurs in the same position as in the sort order.Greater than zero This instance follows in the sort order.-or- is null. - An object to compare with this instance, or null. - - is not a . - - - - For a description of this member, see . - true if the value of the current instance is not zero; otherwise, false. - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - This conversion is not supported. Attempting to use this method throws an . - This conversion is not supported. No value is returned. - This parameter is ignored. - In all cases. - - - This conversion is not supported. Attempting to use this method throws an - This conversion is not supported. No value is returned. - This parameter is ignored. - In all cases. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, unchanged. - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to an . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to an . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to an . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to an . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to . - The type to which to convert this value. - An implementation that supplies culture-specific information about the format of the returned value. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - Converts the numeric value of this instance to its equivalent string representation. - The string representation of the value of this instance. - 1 - - - Converts the numeric value of this instance to its equivalent string representation using the specified culture-specific format information. - The string representation of the value of this instance as specified by . - An object that supplies culture-specific formatting information. - 1 - - - Converts the numeric value of this instance to its equivalent string representation, using the specified format. - The string representation of the value of this instance as specified by . - A numeric format string. - - is invalid. - 1 - - - Converts the numeric value of this instance to its equivalent string representation using the specified format and culture-specific format information. - The string representation of the value of this instance as specified by and . - A numeric format string. - An object that supplies culture-specific formatting information. - 1 - - - Converts the string representation of a number to its double-precision floating-point number equivalent. A return value indicates whether the conversion succeeded or failed. - true if was converted successfully; otherwise, false. - A string containing a number to convert. - When this method returns, contains the double-precision floating-point number equivalent of the parameter, if the conversion succeeded, or zero if the conversion failed. The conversion fails if the parameter is null or , is not a number in a valid format, or represents a number less than or greater than . This parameter is passed uninitialized; any value originally supplied in will be overwritten. - 1 - - - Converts the string representation of a number in a specified style and culture-specific format to its double-precision floating-point number equivalent. A return value indicates whether the conversion succeeded or failed. - true if was converted successfully; otherwise, false. - A string containing a number to convert. - A bitwise combination of values that indicates the permitted format of . A typical value to specify is combined with . - An that supplies culture-specific formatting information about . - When this method returns, contains a double-precision floating-point number equivalent of the numeric value or symbol contained in , if the conversion succeeded, or zero if the conversion failed. The conversion fails if the parameter is null or , is not in a format compliant with , represents a number less than or greater than , or if is not a valid combination of enumerated constants. This parameter is passed uninitialized; any value originally supplied in will be overwritten. - - is not a value. -or- includes the value. - 1 - - - Provides the base class for enumerations. - 2 - - - Initializes a new instance of the class. - - - Compares this instance to a specified object and returns an indication of their relative values. - A signed number that indicates the relative values of this instance and .Value Meaning Less than zero The value of this instance is less than the value of . Zero The value of this instance is equal to the value of . Greater than zero The value of this instance is greater than the value of .-or- is null. - An object to compare, or null. - - and this instance are not the same type. - This instance is not type , , , , , , , or . - 2 - - - Returns a value indicating whether this instance is equal to a specified object. - true if is an enumeration value of the same type and with the same underlying value as this instance; otherwise, false. - An object to compare with this instance, or null. - 2 - - - Converts the specified value of a specified enumerated type to its equivalent string representation according to the specified format. - A string representation of . - The enumeration type of the value to convert. - The value to convert. - The output format to use. - The , , or parameter is null. - The parameter is not an type.-or- The is from an enumeration that differs in type from .-or- The type of is not an underlying type of . - The parameter contains an invalid value. - - equals "X", but the enumeration type is unknown. - 1 - - - Returns the hash code for the value of this instance. - A 32-bit signed integer hash code. - 2 - - - Retrieves the name of the constant in the specified enumeration that has the specified value. - A string containing the name of the enumerated constant in whose value is ; or null if no such constant is found. - An enumeration type. - The value of a particular enumerated constant in terms of its underlying type. - - or is null. - - is not an .-or- is neither of type nor does it have the same underlying type as . - 1 - - - Retrieves an array of the names of the constants in a specified enumeration. - A string array of the names of the constants in . - An enumeration type. - - is null. - - parameter is not an . - 1 - - - Returns the underlying type of the specified enumeration. - The underlying type of . - The enumeration whose underlying type will be retrieved. - - is null. - - is not an . - 1 - - - Retrieves an array of the values of the constants in a specified enumeration. - An array that contains the values of the constants in . - An enumeration type. - - is null. - - is not an . - The method is invoked by reflection in a reflection-only context, -or- is a type from an assembly loaded in a reflection-only context. - 1 - - - Determines whether one or more bit fields are set in the current instance. - true if the bit field or bit fields that are set in are also set in the current instance; otherwise, false. - An enumeration value. - - is a different type than the current instance. - - - Returns an indication whether a constant with a specified value exists in a specified enumeration. - true if a constant in has a value equal to ; otherwise, false. - An enumeration type. - The value or name of a constant in . - - or is null. - - is not an Enum.-or- The type of is an enumeration, but it is not an enumeration of type .-or- The type of is not an underlying type of . - - is not type , , , , , , , or , or . - 1 - - - Converts the string representation of the name or numeric value of one or more enumerated constants to an equivalent enumerated object. - An object of type whose value is represented by . - An enumeration type. - A string containing the name or value to convert. - - or is null. - - is not an .-or- is either an empty string or only contains white space.-or- is a name, but not one of the named constants defined for the enumeration. - - is outside the range of the underlying type of . - 1 - - - Converts the string representation of the name or numeric value of one or more enumerated constants to an equivalent enumerated object. A parameter specifies whether the operation is case-insensitive. - An object of type whose value is represented by . - An enumeration type. - A string containing the name or value to convert. - true to ignore case; false to regard case. - - or is null. - - is not an .-or- is either an empty string ("") or only contains white space.-or- is a name, but not one of the named constants defined for the enumeration. - - is outside the range of the underlying type of . - 1 - - - - Converts the current value to a Boolean value based on the underlying type. - This member always throws an exception. - An object that supplies culture-specific formatting information. - In all cases. - - - Converts the current value to an 8-bit unsigned integer based on the underlying type. - The converted value. - An object that supplies culture-specific formatting information. - - - Converts the current value to a Unicode character based on the underlying type. - This member always throws an exception. - An object that supplies culture-specific formatting information. - In all cases. - - - Converts the current value to a based on the underlying type. - This member always throws an exception. - An object that supplies culture-specific formatting information. - In all cases. - - - Converts the current value to a based on the underlying type. - This member always throws an exception. - An object that supplies culture-specific formatting information. - In all cases. - - - Converts the current value to a double-precision floating point number based on the underlying type. - This member always throws an exception. - An object that supplies culture-specific formatting information. - In all cases. - - - Converts the current value to a 16-bit signed integer based on the underlying type. - The converted value. - An object that supplies culture-specific formatting information. - - - Converts the current value to a 32-bit signed integer based on the underlying type. - The converted value. - An object that supplies culture-specific formatting information. - - - Converts the current value to a 64-bit signed integer based on the underlying type. - The converted value. - An object that supplies culture-specific formatting information. - - - Converts the current value to an 8-bit signed integer based on the underlying type. - The converted value. - An object that supplies culture-specific formatting information. - - - Converts the current value to a single-precision floating-point number based on the underlying type. - This member always throws an exception. - An object that supplies culture-specific formatting information. - In all cases. - - - Converts the current value to a string based on the underlying type. - The converted value. - An object that supplies culture-specific formatting information. - - - Converts the current value to a specified type based on the underlying type. - The converted value. - The type to convert to. - An object that supplies culture-specific formatting information. - - - Converts the current value to a 16-bit unsigned integer based on the underlying type. - The converted value. - An object that supplies culture-specific formatting information. - - - Converts the current value to a 32-bit unsigned integer based on the underlying type. - The converted value. - An object that supplies culture-specific formatting information. - - - Converts the current value to a 64-bit unsigned integer based on the underlying type. - The converted value. - An object that supplies culture-specific formatting information. - - - This method overload is obsolete; use . - The string representation of the value of this instance, as specified by . - A format specification. - - does not contain a valid format specification. - - equals "X", but the enumeration type is unknown. - - - Converts the specified object with an integer value to an enumeration member. - An enumeration object whose value is . - The enumeration type to return. - The value convert to an enumeration member. - - or is null. - - is not an .-or- is not type , , , , , , , or . - 1 - - - Converts the value of this instance to its equivalent string representation. - The string representation of the value of this instance. - 2 - - - Converts the value of this instance to its equivalent string representation using the specified format. - The string representation of the value of this instance as specified by . - A format string. - - contains an invalid specification. - - equals "X", but the enumeration type is unknown. - 2 - - - Converts the string representation of the name or numeric value of one or more enumerated constants to an equivalent enumerated object. A parameter specifies whether the operation is case-sensitive. The return value indicates whether the conversion succeeded. - true if the parameter was converted successfully; otherwise, false. - The string representation of the enumeration name or underlying value to convert. - true to ignore case; false to consider case. - When this method returns, contains an object of type whose value is represented by if the parse operation succeeds. If the parse operation fails, contains the default value of the underlying type of . Note that this value need not be a member of the enumeration. This parameter is passed uninitialized. - The enumeration type to which to convert . - - is not an enumeration type. - - - Converts the string representation of the name or numeric value of one or more enumerated constants to an equivalent enumerated object. The return value indicates whether the conversion succeeded. - true if the parameter was converted successfully; otherwise, false. - The string representation of the enumeration name or underlying value to convert. - When this method returns, contains an object of type whose value is represented by if the parse operation succeeds. If the parse operation fails, contains the default value of the underlying type of . Note that this value need not be a member of the enumeration. This parameter is passed uninitialized. - The enumeration type to which to convert . - - is not an enumeration type. - - - Represents the base class for classes that contain event data, and provides a value to use for events that do not include event data. - 1 - - - Initializes a new instance of the class. - - - Provides a value to use with events that do not have event data. - 1 - - - Represents the method that will handle an event that has no event data. - 1 - - - - 2 - - - 2 - - - 2 - - - Represents the method that will handle an event when the event provides data. - The type of the event data generated by the event. - 1 - - - - - - - Represents errors that occur during application execution.To browse the .NET Framework source code for this type, see the Reference Source. - 1 - - - Initializes a new instance of the class. - - - Initializes a new instance of the class with a specified error message. - The message that describes the error. - - - Initializes a new instance of the class with a specified error message and a reference to the inner exception that is the cause of this exception. - The error message that explains the reason for the exception. - The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. - - - Gets a collection of key/value pairs that provide additional user-defined information about the exception. - An object that implements the interface and contains a collection of user-defined key/value pairs. The default is an empty collection. - 2 - - - When overridden in a derived class, returns the that is the root cause of one or more subsequent exceptions. - The first exception thrown in a chain of exceptions. If the property of the current exception is a null reference (Nothing in Visual Basic), this property returns the current exception. - 2 - - - Gets or sets a link to the help file associated with this exception. - The Uniform Resource Name (URN) or Uniform Resource Locator (URL). - 2 - - - Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception. - The HRESULT value. - - - Gets the instance that caused the current exception. - An object that describes the error that caused the current exception. The property returns the same value as was passed into the constructor, or null if the inner exception value was not supplied to the constructor. This property is read-only. - 1 - - - Gets a message that describes the current exception. - The error message that explains the reason for the exception, or an empty string (""). - 1 - - - Gets or sets the name of the application or the object that causes the error. - The name of the application or the object that causes the error. - The object must be a runtime object - 2 - - - Gets a string representation of the immediate frames on the call stack. - A string that describes the immediate frames of the call stack. - 2 - - - - - - Creates and returns a string representation of the current exception. - A string representation of the current exception. - 1 - - - - - - The exception that is thrown when there is an invalid attempt to access a private or protected field inside a class. - 2 - - - Initializes a new instance of the class. - - - Initializes a new instance of the class with a specified error message. - The error message that explains the reason for the exception. - - - Initializes a new instance of the class with a specified error message and a reference to the inner exception that is the cause of this exception. - The error message that explains the reason for the exception. - The exception that is the cause of the current exception. If the parameter is not null, the current exception is raised in a catch block that handles the inner exception. - - - Indicates that an enumeration can be treated as a bit field; that is, a set of flags. - 1 - - - Initializes a new instance of the class. - - - The exception that is thrown when the format of an argument is invalid, or when a composite format string is not well formed. - 2 - - - Initializes a new instance of the class. - - - Initializes a new instance of the class with a specified error message. - The message that describes the error. - - - Initializes a new instance of the class with a specified error message and a reference to the inner exception that is the cause of this exception. - The error message that explains the reason for the exception. - The exception that is the cause of the current exception. If the parameter is not a null reference (Nothing in Visual Basic), the current exception is raised in a catch block that handles the inner exception. - - - Represents a composite format string, along with the arguments to be formatted. - - - Instantiates a new instance of the class. - - - Gets the number of arguments to be formatted. - The number of arguments to be formatted. - - - Returns the composite format string. - The composite format string. - - - Returns the argument at the specified index position. - The argument. - The index of the argument. Its value can range from zero to one less than the value of . - - - Returns an object array that contains one or more objects to format. - An object array that contains one or more objects to format. - - - Returns a result string in which arguments are formatted by using the conventions of the invariant culture. - The string that results from formatting the current instance by using the conventions of the invariant culture. - The object to convert to a result string. - - is null. - - - Returns the string that results from formatting the format string along with its arguments by using the formatting conventions of a specified culture. - A string formatted using the conventions of the parameter. - A string. This argument is ignored. - An object that provides culture-specific formatting information. - - - Returns the string that results from formatting the composite format string along with its arguments by using the formatting conventions of the current culture. - A result string formatted by using the conventions of the current culture. - - - Returns the string that results from formatting the composite format string along with its arguments by using the formatting conventions of a specified culture. - A result string formatted by using the conventions of . - An object that provides culture-specific formatting information. - - - Encapsulates a method that has no parameters and returns a value of the type specified by the parameter. - The type of the return value of the method that this delegate encapsulates.This type parameter is covariant. That is, you can use either the type you specified or any type that is more derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - 1 - - - - - - - Encapsulates a method that has nine parameters and returns a value of the type specified by the parameter. - The type of the first parameter of the method that this delegate encapsulates.This type parameter is contravariant. That is, you can use either the type you specified or any type that is less derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - The type of the second parameter of the method that this delegate encapsulates. - The type of the third parameter of the method that this delegate encapsulates. - The type of the fourth parameter of the method that this delegate encapsulates. - The type of the fifth parameter of the method that this delegate encapsulates. - The type of the sixth parameter of the method that this delegate encapsulates. - The type of the seventh parameter of the method that this delegate encapsulates. - The type of the eighth parameter of the method that this delegate encapsulates. - The type of the ninth parameter of the method that this delegate encapsulates. - The type of the return value of the method that this delegate encapsulates.This type parameter is covariant. That is, you can use either the type you specified or any type that is more derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - 2 - - - - - - - Encapsulates a method that has 10 parameters and returns a value of the type specified by the parameter. - The type of the first parameter of the method that this delegate encapsulates.This type parameter is contravariant. That is, you can use either the type you specified or any type that is less derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - The type of the second parameter of the method that this delegate encapsulates. - The type of the third parameter of the method that this delegate encapsulates. - The type of the fourth parameter of the method that this delegate encapsulates. - The type of the fifth parameter of the method that this delegate encapsulates. - The type of the sixth parameter of the method that this delegate encapsulates. - The type of the seventh parameter of the method that this delegate encapsulates. - The type of the eighth parameter of the method that this delegate encapsulates. - The type of the ninth parameter of the method that this delegate encapsulates. - The type of the tenth parameter of the method that this delegate encapsulates. - The type of the return value of the method that this delegate encapsulates.This type parameter is covariant. That is, you can use either the type you specified or any type that is more derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - 2 - - - - - - - Encapsulates a method that has 11 parameters and returns a value of the type specified by the parameter. - The type of the first parameter of the method that this delegate encapsulates.This type parameter is contravariant. That is, you can use either the type you specified or any type that is less derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - The type of the second parameter of the method that this delegate encapsulates. - The type of the third parameter of the method that this delegate encapsulates. - The type of the fourth parameter of the method that this delegate encapsulates. - The type of the fifth parameter of the method that this delegate encapsulates. - The type of the sixth parameter of the method that this delegate encapsulates. - The type of the seventh parameter of the method that this delegate encapsulates. - The type of the eighth parameter of the method that this delegate encapsulates. - The type of the ninth parameter of the method that this delegate encapsulates. - The type of the tenth parameter of the method that this delegate encapsulates. - The type of the eleventh parameter of the method that this delegate encapsulates. - The type of the return value of the method that this delegate encapsulates.This type parameter is covariant. That is, you can use either the type you specified or any type that is more derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - 2 - - - - - - - Encapsulates a method that has 12 parameters and returns a value of the type specified by the parameter. - The type of the first parameter of the method that this delegate encapsulates.This type parameter is contravariant. That is, you can use either the type you specified or any type that is less derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - The type of the second parameter of the method that this delegate encapsulates. - The type of the third parameter of the method that this delegate encapsulates. - The type of the fourth parameter of the method that this delegate encapsulates. - The type of the fifth parameter of the method that this delegate encapsulates. - The type of the sixth parameter of the method that this delegate encapsulates. - The type of the seventh parameter of the method that this delegate encapsulates. - The type of the eighth parameter of the method that this delegate encapsulates. - The type of the ninth parameter of the method that this delegate encapsulates. - The type of the tenth parameter of the method that this delegate encapsulates. - The type of the eleventh parameter of the method that this delegate encapsulates. - The type of the twelfth parameter of the method that this delegate encapsulates. - The type of the return value of the method that this delegate encapsulates.This type parameter is covariant. That is, you can use either the type you specified or any type that is more derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - 2 - - - - - - - Encapsulates a method that has 13 parameters and returns a value of the type specified by the parameter. - The type of the first parameter of the method that this delegate encapsulates.This type parameter is contravariant. That is, you can use either the type you specified or any type that is less derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - The type of the second parameter of the method that this delegate encapsulates. - The type of the third parameter of the method that this delegate encapsulates. - The type of the fourth parameter of the method that this delegate encapsulates. - The type of the fifth parameter of the method that this delegate encapsulates. - The type of the sixth parameter of the method that this delegate encapsulates. - The type of the seventh parameter of the method that this delegate encapsulates. - The type of the eighth parameter of the method that this delegate encapsulates. - The type of the ninth parameter of the method that this delegate encapsulates. - The type of the tenth parameter of the method that this delegate encapsulates. - The type of the eleventh parameter of the method that this delegate encapsulates. - The type of the twelfth parameter of the method that this delegate encapsulates. - The type of the thirteenth parameter of the method that this delegate encapsulates. - The type of the return value of the method that this delegate encapsulates.This type parameter is covariant. That is, you can use either the type you specified or any type that is more derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - 2 - - - - - - - Encapsulates a method that has 14 parameters and returns a value of the type specified by the parameter. - The type of the first parameter of the method that this delegate encapsulates.This type parameter is contravariant. That is, you can use either the type you specified or any type that is less derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - The type of the second parameter of the method that this delegate encapsulates. - The type of the third parameter of the method that this delegate encapsulates. - The type of the fourth parameter of the method that this delegate encapsulates. - The type of the fifth parameter of the method that this delegate encapsulates. - The type of the sixth parameter of the method that this delegate encapsulates. - The type of the seventh parameter of the method that this delegate encapsulates. - The type of the eighth parameter of the method that this delegate encapsulates. - The type of the ninth parameter of the method that this delegate encapsulates. - The type of the tenth parameter of the method that this delegate encapsulates. - The type of the eleventh parameter of the method that this delegate encapsulates. - The type of the twelfth parameter of the method that this delegate encapsulates. - The type of the thirteenth parameter of the method that this delegate encapsulates. - The type of the fourteenth parameter of the method that this delegate encapsulates. - The type of the return value of the method that this delegate encapsulates.This type parameter is covariant. That is, you can use either the type you specified or any type that is more derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - 2 - - - - - - - Encapsulates a method that has 15 parameters and returns a value of the type specified by the parameter. - The type of the first parameter of the method that this delegate encapsulates.This type parameter is contravariant. That is, you can use either the type you specified or any type that is less derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - The type of the second parameter of the method that this delegate encapsulates. - The type of the third parameter of the method that this delegate encapsulates. - The type of the fourth parameter of the method that this delegate encapsulates. - The type of the fifth parameter of the method that this delegate encapsulates. - The type of the sixth parameter of the method that this delegate encapsulates. - The type of the seventh parameter of the method that this delegate encapsulates. - The type of the eighth parameter of the method that this delegate encapsulates. - The type of the ninth parameter of the method that this delegate encapsulates. - The type of the tenth parameter of the method that this delegate encapsulates. - The type of the eleventh parameter of the method that this delegate encapsulates. - The type of the twelfth parameter of the method that this delegate encapsulates. - The type of the thirteenth parameter of the method that this delegate encapsulates. - The type of the fourteenth parameter of the method that this delegate encapsulates. - The type of the fifteenth parameter of the method that this delegate encapsulates. - The type of the return value of the method that this delegate encapsulates.This type parameter is covariant. That is, you can use either the type you specified or any type that is more derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - 2 - - - - - - - Encapsulates a method that has 16 parameters and returns a value of the type specified by the parameter. - The type of the first parameter of the method that this delegate encapsulates.This type parameter is contravariant. That is, you can use either the type you specified or any type that is less derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - The type of the second parameter of the method that this delegate encapsulates. - The type of the third parameter of the method that this delegate encapsulates. - The type of the fourth parameter of the method that this delegate encapsulates. - The type of the fifth parameter of the method that this delegate encapsulates. - The type of the sixth parameter of the method that this delegate encapsulates. - The type of the seventh parameter of the method that this delegate encapsulates. - The type of the eighth parameter of the method that this delegate encapsulates. - The type of the ninth parameter of the method that this delegate encapsulates. - The type of the tenth parameter of the method that this delegate encapsulates. - The type of the eleventh parameter of the method that this delegate encapsulates. - The type of the twelfth parameter of the method that this delegate encapsulates. - The type of the thirteenth parameter of the method that this delegate encapsulates. - The type of the fourteenth parameter of the method that this delegate encapsulates. - The type of the fifteenth parameter of the method that this delegate encapsulates. - The type of the sixteenth parameter of the method that this delegate encapsulates. - The type of the return value of the method that this delegate encapsulates.This type parameter is covariant. That is, you can use either the type you specified or any type that is more derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - 2 - - - - - - - Encapsulates a method that has one parameter and returns a value of the type specified by the parameter.To browse the .NET Framework source code for this type, see the Reference Source. - The type of the parameter of the method that this delegate encapsulates.This type parameter is contravariant. That is, you can use either the type you specified or any type that is less derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - The type of the return value of the method that this delegate encapsulates.This type parameter is covariant. That is, you can use either the type you specified or any type that is more derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - 2 - - - - - - - Encapsulates a method that has two parameters and returns a value of the type specified by the parameter. - The type of the first parameter of the method that this delegate encapsulates.This type parameter is contravariant. That is, you can use either the type you specified or any type that is less derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - The type of the second parameter of the method that this delegate encapsulates. - The type of the return value of the method that this delegate encapsulates.This type parameter is covariant. That is, you can use either the type you specified or any type that is more derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - 2 - - - - - - - Encapsulates a method that has three parameters and returns a value of the type specified by the parameter. - The type of the first parameter of the method that this delegate encapsulates.This type parameter is contravariant. That is, you can use either the type you specified or any type that is less derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - The type of the second parameter of the method that this delegate encapsulates. - The type of the third parameter of the method that this delegate encapsulates. - The type of the return value of the method that this delegate encapsulates.This type parameter is covariant. That is, you can use either the type you specified or any type that is more derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - 2 - - - - - - - Encapsulates a method that has four parameters and returns a value of the type specified by the parameter. - The type of the first parameter of the method that this delegate encapsulates.This type parameter is contravariant. That is, you can use either the type you specified or any type that is less derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - The type of the second parameter of the method that this delegate encapsulates. - The type of the third parameter of the method that this delegate encapsulates. - The type of the fourth parameter of the method that this delegate encapsulates. - The type of the return value of the method that this delegate encapsulates.This type parameter is covariant. That is, you can use either the type you specified or any type that is more derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - 2 - - - - - - - Encapsulates a method that has five parameters and returns a value of the type specified by the parameter. - The type of the first parameter of the method that this delegate encapsulates.This type parameter is contravariant. That is, you can use either the type you specified or any type that is less derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - The type of the second parameter of the method that this delegate encapsulates. - The type of the third parameter of the method that this delegate encapsulates. - The type of the fourth parameter of the method that this delegate encapsulates. - The type of the fifth parameter of the method that this delegate encapsulates. - The type of the return value of the method that this delegate encapsulates.This type parameter is covariant. That is, you can use either the type you specified or any type that is more derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - 2 - - - - - - - Encapsulates a method that has six parameters and returns a value of the type specified by the parameter. - The type of the first parameter of the method that this delegate encapsulates.This type parameter is contravariant. That is, you can use either the type you specified or any type that is less derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - The type of the second parameter of the method that this delegate encapsulates. - The type of the third parameter of the method that this delegate encapsulates. - The type of the fourth parameter of the method that this delegate encapsulates. - The type of the fifth parameter of the method that this delegate encapsulates. - The type of the sixth parameter of the method that this delegate encapsulates. - The type of the return value of the method that this delegate encapsulates.This type parameter is covariant. That is, you can use either the type you specified or any type that is more derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - 2 - - - - - - - Encapsulates a method that has seven parameters and returns a value of the type specified by the parameter. - The type of the first parameter of the method that this delegate encapsulates.This type parameter is contravariant. That is, you can use either the type you specified or any type that is less derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - The type of the second parameter of the method that this delegate encapsulates. - The type of the third parameter of the method that this delegate encapsulates. - The type of the fourth parameter of the method that this delegate encapsulates. - The type of the fifth parameter of the method that this delegate encapsulates. - The type of the sixth parameter of the method that this delegate encapsulates. - The type of the seventh parameter of the method that this delegate encapsulates. - The type of the return value of the method that this delegate encapsulates.This type parameter is covariant. That is, you can use either the type you specified or any type that is more derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - 2 - - - - - - - Encapsulates a method that has eight parameters and returns a value of the type specified by the parameter. - The type of the first parameter of the method that this delegate encapsulates.This type parameter is contravariant. That is, you can use either the type you specified or any type that is less derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - The type of the second parameter of the method that this delegate encapsulates. - The type of the third parameter of the method that this delegate encapsulates. - The type of the fourth parameter of the method that this delegate encapsulates. - The type of the fifth parameter of the method that this delegate encapsulates. - The type of the sixth parameter of the method that this delegate encapsulates. - The type of the seventh parameter of the method that this delegate encapsulates. - The type of the eighth parameter of the method that this delegate encapsulates. - The type of the return value of the method that this delegate encapsulates.This type parameter is covariant. That is, you can use either the type you specified or any type that is more derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - 2 - - - - - - - Controls the system garbage collector, a service that automatically reclaims unused memory. - 2 - - - Informs the runtime of a large allocation of unmanaged memory that should be taken into account when scheduling garbage collection. - The incremental amount of unmanaged memory that has been allocated. - - is less than or equal to 0.-or-On a 32-bit computer, is larger than . - 1 - - - - - - Forces an immediate garbage collection of all generations. - 1 - - - Forces an immediate garbage collection from generation 0 through a specified generation. - The number of the oldest generation to be garbage collected. - - is not valid. - 1 - - - Forces a garbage collection from generation 0 through a specified generation, at a time specified by a value. - The number of the oldest generation to be garbage collected. - An enumeration value that specifies whether the garbage collection is forced ( or ) or optimized (). - - is not valid.-or- is not one of the values. - - - Forces a garbage collection from generation 0 through a specified generation, at a time specified by a value, with a value specifying whether the collection should be blocking. - The number of the oldest generation to be garbage collected. - An enumeration value that specifies whether the garbage collection is forced ( or ) or optimized (). - true to perform a blocking garbage collection; false to perform a background garbage collection where possible. - - is not valid.-or- is not one of the values. - - - Returns the number of times garbage collection has occurred for the specified generation of objects. - The number of times garbage collection has occurred for the specified generation since the process was started. - The generation of objects for which the garbage collection count is to be determined. - - is less than 0. - 1 - - - Returns the current generation number of the specified object. - The current generation number of . - The object that generation information is retrieved for. - 1 - - - Retrieves the number of bytes currently thought to be allocated. A parameter indicates whether this method can wait a short interval before returning, to allow the system to collect garbage and finalize objects. - A number that is the best available approximation of the number of bytes currently allocated in managed memory. - true to indicate that this method can wait for garbage collection to occur before returning; otherwise, false. - 1 - - - References the specified object, which makes it ineligible for garbage collection from the start of the current routine to the point where this method is called. - The object to reference. - 1 - - - Gets the maximum number of generations that the system currently supports. - A value that ranges from zero to the maximum number of supported generations. - 1 - - - Informs the runtime that unmanaged memory has been released and no longer needs to be taken into account when scheduling garbage collection. - The amount of unmanaged memory that has been released. - - is less than or equal to 0. -or- On a 32-bit computer, is larger than . - 1 - - - - - - Requests that the system call the finalizer for the specified object for which has previously been called. - The object that a finalizer must be called for. - - is null. - 1 - - - Requests that the common language runtime not call the finalizer for the specified object. - The object whose finalizer must not be executed. - - is null. - 1 - - - Suspends the current thread until the thread that is processing the queue of finalizers has emptied that queue. - 1 - - - Specifies the behavior for a forced garbage collection. - 2 - - - The default setting for this enumeration, which is currently . - - - Forces the garbage collection to occur immediately. - - - Allows the garbage collector to determine whether the current time is optimal to reclaim objects. - - - Represents a globally unique identifier (GUID).To browse the .NET Framework source code for this type, see the Reference Source. - 1 - - - Initializes a new instance of the structure by using the specified array of bytes. - A 16-element byte array containing values with which to initialize the GUID. - - is null. - - is not 16 bytes long. - - - Initializes a new instance of the structure by using the specified integers and bytes. - The first 4 bytes of the GUID. - The next 2 bytes of the GUID. - The next 2 bytes of the GUID. - The next byte of the GUID. - The next byte of the GUID. - The next byte of the GUID. - The next byte of the GUID. - The next byte of the GUID. - The next byte of the GUID. - The next byte of the GUID. - The next byte of the GUID. - - - Initializes a new instance of the structure by using the specified integers and byte array. - The first 4 bytes of the GUID. - The next 2 bytes of the GUID. - The next 2 bytes of the GUID. - The remaining 8 bytes of the GUID. - - is null. - - is not 8 bytes long. - - - Initializes a new instance of the structure by using the value represented by the specified string. - A string that contains a GUID in one of the following formats ("d" represents a hexadecimal digit whose case is ignored): 32 contiguous digits: dddddddddddddddddddddddddddddddd -or- Groups of 8, 4, 4, 4, and 12 digits with hyphens between the groups. The entire GUID can optionally be enclosed in matching braces or parentheses: dddddddd-dddd-dddd-dddd-dddddddddddd -or- {dddddddd-dddd-dddd-dddd-dddddddddddd} -or- (dddddddd-dddd-dddd-dddd-dddddddddddd) -or- Groups of 8, 4, and 4 digits, and a subset of eight groups of 2 digits, with each group prefixed by "0x" or "0X", and separated by commas. The entire GUID, as well as the subset, is enclosed in matching braces: {0xdddddddd, 0xdddd, 0xdddd,{0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd}} All braces, commas, and "0x" prefixes are required. All embedded spaces are ignored. All leading zeros in a group are ignored.The digits shown in a group are the maximum number of meaningful digits that can appear in that group. You can specify from 1 to the number of digits shown for a group. The specified digits are assumed to be the low-order digits of the group. - - is null. - The format of is invalid. - The format of is invalid. - - - Initializes a new instance of the structure by using the specified unsigned integers and bytes. - The first 4 bytes of the GUID. - The next 2 bytes of the GUID. - The next 2 bytes of the GUID. - The next byte of the GUID. - The next byte of the GUID. - The next byte of the GUID. - The next byte of the GUID. - The next byte of the GUID. - The next byte of the GUID. - The next byte of the GUID. - The next byte of the GUID. - - - Compares this instance to a specified object and returns an indication of their relative values. - A signed number indicating the relative values of this instance and .Return value Description A negative integer This instance is less than . Zero This instance is equal to . A positive integer This instance is greater than . - An object to compare to this instance. - 2 - - - A read-only instance of the structure whose value is all zeros. - 1 - - - Returns a value indicating whether this instance and a specified object represent the same value. - true if is equal to this instance; otherwise, false. - An object to compare to this instance. - 2 - - - Returns a value that indicates whether this instance is equal to a specified object. - true if is a that has the same value as this instance; otherwise, false. - The object to compare with this instance. - 2 - - - Returns the hash code for this instance. - The hash code for this instance. - 2 - - - Initializes a new instance of the structure. - A new GUID object. - 1 - - - Indicates whether the values of two specified objects are equal. - true if and are equal; otherwise, false. - The first object to compare. - The second object to compare. - 3 - - - Indicates whether the values of two specified objects are not equal. - true if and are not equal; otherwise, false. - The first object to compare. - The second object to compare. - 3 - - - Converts the string representation of a GUID to the equivalent structure. - A structure that contains the value that was parsed. - The string to convert. - - is null. - - is not in a recognized format. - - - Converts the string representation of a GUID to the equivalent structure, provided that the string is in the specified format. - A structure that contains the value that was parsed. - The GUID to convert. - One of the following specifiers that indicates the exact format to use when interpreting : "N", "D", "B", "P", or "X". - - or is null. - - is not in the format specified by . - - - Compares this instance to a specified object and returns an indication of their relative values. - A signed number indicating the relative values of this instance and .Return value Description A negative integer This instance is less than . Zero This instance is equal to . A positive integer This instance is greater than , or is null. - An object to compare, or null. - - is not a . - - - Returns a string representation of the value of this instance, according to the provided format specifier. - The value of this represented as a series of lowercase hexadecimal digits in the specified format. - A single format specifier that indicates how to format the value of the . The parameter can be "N", "D", "B", "P", or "X". If is null or an empty string (""), "D" is used. - (Reserved) An object that supplies culture-specific formatting information. - The value of is not null, an empty string (""), or one of the following single format specifiers:"N", "D", "B", "P", or "X". - - - Returns a 16-element byte array that contains the value of this instance. - A 16-element byte array. - 2 - - - Returns a string representation of the value of this instance in registry format. - The value of this , formatted by using the "D" format specifier as follows: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx where the value of the GUID is represented as a series of lowercase hexadecimal digits in groups of 8, 4, 4, 4, and 12 digits and separated by hyphens. An example of a return value is "382c74c3-721d-4f34-80e5-57657b6cbc27". To convert the hexadecimal digits from a through f to uppercase, call the method on the returned string. - 1 - - - Returns a string representation of the value of this instance, according to the provided format specifier. - The value of this , represented as a series of lowercase hexadecimal digits in the specified format. - A single format specifier that indicates how to format the value of this . The parameter can be "N", "D", "B", "P", or "X". If is null or an empty string (""), "D" is used. - The value of is not null, an empty string (""), "N", "D", "B", "P", or "X". - 1 - - - Converts the string representation of a GUID to the equivalent structure. - true if the parse operation was successful; otherwise, false. - The GUID to convert. - The structure that will contain the parsed value. If the method returns true, contains a valid . If the method returns false, equals . - - - Converts the string representation of a GUID to the equivalent structure, provided that the string is in the specified format. - true if the parse operation was successful; otherwise, false. - The GUID to convert. - One of the following specifiers that indicates the exact format to use when interpreting : "N", "D", "B", "P", or "X". - The structure that will contain the parsed value. If the method returns true, contains a valid . If the method returns false, equals . - - - Represents the status of an asynchronous operation. - 2 - - - Gets a user-defined object that qualifies or contains information about an asynchronous operation. - A user-defined object that qualifies or contains information about an asynchronous operation. - 2 - - - Gets a that is used to wait for an asynchronous operation to complete. - A that is used to wait for an asynchronous operation to complete. - 2 - - - Gets a value that indicates whether the asynchronous operation completed synchronously. - true if the asynchronous operation completed synchronously; otherwise, false. - 2 - - - Gets a value that indicates whether the asynchronous operation has completed. - true if the operation is complete; otherwise, false. - 2 - - - Defines a generalized type-specific comparison method that a value type or class implements to order or sort its instances. - 1 - - - Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. - A value that indicates the relative order of the objects being compared. The return value has these meanings: Value Meaning Less than zero This instance precedes in the sort order. Zero This instance occurs in the same position in the sort order as . Greater than zero This instance follows in the sort order. - An object to compare with this instance. - - is not the same type as this instance. - 2 - - - Defines a generalized comparison method that a value type or class implements to create a type-specific comparison method for ordering or sorting its instances. - The type of object to compare. This type parameter is contravariant. That is, you can use either the type you specified or any type that is less derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - 1 - - - Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. - A value that indicates the relative order of the objects being compared. The return value has these meanings: Value Meaning Less than zero This instance precedes in the sort order. Zero This instance occurs in the same position in the sort order as . Greater than zero This instance follows in the sort order. - An object to compare with this instance. - - - Defines methods that convert the value of the implementing reference or value type to a common language runtime type that has an equivalent value. - 2 - - - Returns the for this instance. - The enumerated constant that is the of the class or value type that implements this interface. - 2 - - - Converts the value of this instance to an equivalent Boolean value using the specified culture-specific formatting information. - A Boolean value equivalent to the value of this instance. - An interface implementation that supplies culture-specific formatting information. - 2 - - - Converts the value of this instance to an equivalent 8-bit unsigned integer using the specified culture-specific formatting information. - An 8-bit unsigned integer equivalent to the value of this instance. - An interface implementation that supplies culture-specific formatting information. - 2 - - - Converts the value of this instance to an equivalent Unicode character using the specified culture-specific formatting information. - A Unicode character equivalent to the value of this instance. - An interface implementation that supplies culture-specific formatting information. - 2 - - - Converts the value of this instance to an equivalent using the specified culture-specific formatting information. - A instance equivalent to the value of this instance. - An interface implementation that supplies culture-specific formatting information. - 2 - - - Converts the value of this instance to an equivalent number using the specified culture-specific formatting information. - A number equivalent to the value of this instance. - An interface implementation that supplies culture-specific formatting information. - 2 - - - Converts the value of this instance to an equivalent double-precision floating-point number using the specified culture-specific formatting information. - A double-precision floating-point number equivalent to the value of this instance. - An interface implementation that supplies culture-specific formatting information. - 2 - - - Converts the value of this instance to an equivalent 16-bit signed integer using the specified culture-specific formatting information. - An 16-bit signed integer equivalent to the value of this instance. - An interface implementation that supplies culture-specific formatting information. - 2 - - - Converts the value of this instance to an equivalent 32-bit signed integer using the specified culture-specific formatting information. - An 32-bit signed integer equivalent to the value of this instance. - An interface implementation that supplies culture-specific formatting information. - 2 - - - Converts the value of this instance to an equivalent 64-bit signed integer using the specified culture-specific formatting information. - An 64-bit signed integer equivalent to the value of this instance. - An interface implementation that supplies culture-specific formatting information. - 2 - - - Converts the value of this instance to an equivalent 8-bit signed integer using the specified culture-specific formatting information. - An 8-bit signed integer equivalent to the value of this instance. - An interface implementation that supplies culture-specific formatting information. - 2 - - - Converts the value of this instance to an equivalent single-precision floating-point number using the specified culture-specific formatting information. - A single-precision floating-point number equivalent to the value of this instance. - An interface implementation that supplies culture-specific formatting information. - 2 - - - Converts the value of this instance to an equivalent using the specified culture-specific formatting information. - A instance equivalent to the value of this instance. - An interface implementation that supplies culture-specific formatting information. - 2 - - - Converts the value of this instance to an of the specified that has an equivalent value, using the specified culture-specific formatting information. - An instance of type whose value is equivalent to the value of this instance. - The to which the value of this instance is converted. - An interface implementation that supplies culture-specific formatting information. - 2 - - - Converts the value of this instance to an equivalent 16-bit unsigned integer using the specified culture-specific formatting information. - An 16-bit unsigned integer equivalent to the value of this instance. - An interface implementation that supplies culture-specific formatting information. - 2 - - - Converts the value of this instance to an equivalent 32-bit unsigned integer using the specified culture-specific formatting information. - An 32-bit unsigned integer equivalent to the value of this instance. - An interface implementation that supplies culture-specific formatting information. - 2 - - - Converts the value of this instance to an equivalent 64-bit unsigned integer using the specified culture-specific formatting information. - An 64-bit unsigned integer equivalent to the value of this instance. - An interface implementation that supplies culture-specific formatting information. - 2 - - - Defines a method that supports custom formatting of the value of an object. - 2 - - - Converts the value of a specified object to an equivalent string representation using specified format and culture-specific formatting information. - The string representation of the value of , formatted as specified by and . - A format string containing formatting specifications. - An object to format. - An object that supplies format information about the current instance. - 2 - - - Provides a mechanism for releasing unmanaged resources.To browse the .NET Framework source code for this type, see the Reference Source. - 2 - - - Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. - 2 - - - Defines a generalized method that a value type or class implements to create a type-specific method for determining equality of instances. - The type of objects to compare. - - - Indicates whether the current object is equal to another object of the same type. - true if the current object is equal to the parameter; otherwise, false. - An object to compare with this object. - - - Provides a mechanism for retrieving an object to control formatting. - 2 - - - Returns an object that provides formatting services for the specified type. - An instance of the object specified by , if the implementation can supply that type of object; otherwise, null. - An object that specifies the type of format object to return. - 1 - - - Provides functionality to format the value of an object into a string representation. - 2 - - - Formats the value of the current instance using the specified format. - The value of the current instance in the specified format. - The format to use.-or- A null reference (Nothing in Visual Basic) to use the default format defined for the type of the implementation. - The provider to use to format the value.-or- A null reference (Nothing in Visual Basic) to obtain the numeric format information from the current locale setting of the operating system. - 2 - - - The exception that is thrown when an attempt is made to access an element of an array or collection with an index that is outside its bounds. - 2 - - - Initializes a new instance of the class. - - - Initializes a new instance of the class with a specified error message. - The message that describes the error. - - - Initializes a new instance of the class with a specified error message and a reference to the inner exception that is the cause of this exception. - The error message that explains the reason for the exception. - The exception that is the cause of the current exception. If the parameter is not a null reference (Nothing in Visual Basic), the current exception is raised in a catch block that handles the inner exception. - - - The exception that is thrown when there is insufficient execution stack available to allow most methods to execute. - - - Initializes a new instance of the class. - - - Initializes a new instance of the class with a specified error message. - The error message that explains the reason for the exception. - - - Initializes a new instance of the class with a specified error message and a reference to the inner exception that is the cause of this exception. - The error message that explains the reason for the exception. - The exception that is the cause of the current exception. If the parameter is not null, the current exception is raised in a catch block that handles the inner exception. - - - Represents a 16-bit signed integer. - 1 - - - Compares this instance to a specified 16-bit signed integer and returns an integer that indicates whether the value of this instance is less than, equal to, or greater than the value of the specified 16-bit signed integer. - A signed number indicating the relative values of this instance and .Return Value Description Less than zero This instance is less than . Zero This instance is equal to . Greater than zero This instance is greater than . - An integer to compare. - 2 - - - Returns a value indicating whether this instance is equal to a specified value. - true if has the same value as this instance; otherwise, false. - An value to compare to this instance. - 2 - - - Returns a value indicating whether this instance is equal to a specified object. - true if is an instance of and equals the value of this instance; otherwise, false. - An object to compare to this instance. - 2 - - - Returns the hash code for this instance. - A 32-bit signed integer hash code. - 2 - - - Represents the largest possible value of an . This field is constant. - 1 - - - Represents the smallest possible value of . This field is constant. - 1 - - - Converts the string representation of a number to its 16-bit signed integer equivalent. - A 16-bit signed integer equivalent to the number contained in . - A string containing a number to convert. - - is null. - - is not in the correct format. - - represents a number less than or greater than . - 1 - - - Converts the string representation of a number in a specified style to its 16-bit signed integer equivalent. - A 16-bit signed integer equivalent to the number specified in . - A string containing a number to convert. - A bitwise combination of the enumeration values that indicates the style elements that can be present in . A typical value to specify is . - - is null. - - is not a value. -or- is not a combination of and values. - - is not in a format compliant with . - - represents a number less than or greater than . -or- includes non-zero fractional digits. - 1 - - - Converts the string representation of a number in a specified style and culture-specific format to its 16-bit signed integer equivalent. - A 16-bit signed integer equivalent to the number specified in . - A string containing a number to convert. - A bitwise combination of enumeration values that indicates the style elements that can be present in . A typical value to specify is . - An that supplies culture-specific formatting information about . - - is null. - - is not a value. -or- is not a combination of and values. - - is not in a format compliant with . - - represents a number less than or greater than . -or- includes non-zero fractional digits. - 1 - - - Converts the string representation of a number in a specified culture-specific format to its 16-bit signed integer equivalent. - A 16-bit signed integer equivalent to the number specified in . - A string containing a number to convert. - An that supplies culture-specific formatting information about . - - is null. - - is not in the correct format. - - represents a number less than or greater than . - 1 - - - Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. - A signed integer that indicates the relative order of this instance and .Return value Meaning Less than zero This instance precedes in the sort order.Zero This instance occurs in the same position as in the sort order.Greater than zero This instance follows in the sort order.-or- is null. - An object to compare with this instance, or null. - - is not a . - - - - For a description of this member, see . - true if the value of the current instance is not zero; otherwise, false. - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - This conversion is not supported. Attempting to use this method throws an . - This conversion is not supported. No value is returned. - This parameter is ignored. - In all cases. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, unchanged. - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to an . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to an . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to an . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to . - The type to which to convert this value. - An implementation that supplies information about the format of the returned value. - - - For a description of this member, see . - The value of the current instance, unchanged. - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - Converts the numeric value of this instance to its equivalent string representation. - The string representation of the value of this instance, consisting of a minus sign if the value is negative, and a sequence of digits ranging from 0 to 9 with no leading zeroes. - 1 - - - Converts the numeric value of this instance to its equivalent string representation using the specified culture-specific format information. - The string representation of the value of this instance as specified by . - An that supplies culture-specific formatting information. - 1 - - - Converts the numeric value of this instance to its equivalent string representation, using the specified format. - The string representation of the value of this instance as specified by . - A numeric format string. - 1 - - - Converts the numeric value of this instance to its equivalent string representation using the specified format and culture-specific formatting information. - The string representation of the value of this instance as specified by and . - A numeric format string. - An object that supplies culture-specific formatting information. - 1 - - - Converts the string representation of a number in a specified style and culture-specific format to its 16-bit signed integer equivalent. A return value indicates whether the conversion succeeded or failed. - true if was converted successfully; otherwise, false. - A string containing a number to convert. The string is interpreted using the style specified by . - A bitwise combination of enumeration values that indicates the style elements that can be present in . A typical value to specify is . - An object that supplies culture-specific formatting information about . - When this method returns, contains the 16-bit signed integer value equivalent to the number contained in , if the conversion succeeded, or zero if the conversion failed. The conversion fails if the parameter is null or , is not in a format compliant with , or represents a number less than or greater than . This parameter is passed uninitialized; any value originally supplied in will be overwritten. - - is not a value. -or- is not a combination of and values. - 1 - - - Converts the string representation of a number to its 16-bit signed integer equivalent. A return value indicates whether the conversion succeeded or failed. - true if was converted successfully; otherwise, false. - A string containing a number to convert. - When this method returns, contains the 16-bit signed integer value equivalent to the number contained in , if the conversion succeeded, or zero if the conversion failed. The conversion fails if the parameter is null or , is not of the correct format, or represents a number less than or greater than . This parameter is passed uninitialized; any value originally supplied in will be overwritten. - 1 - - - Represents a 32-bit signed integer.To browse the .NET Framework source code for this type, see the Reference Source. - 1 - - - Compares this instance to a specified 32-bit signed integer and returns an indication of their relative values. - A signed number indicating the relative values of this instance and .Return Value Description Less than zero This instance is less than . Zero This instance is equal to . Greater than zero This instance is greater than . - An integer to compare. - 2 - - - Returns a value indicating whether this instance is equal to a specified value. - true if has the same value as this instance; otherwise, false. - An value to compare to this instance. - 2 - - - Returns a value indicating whether this instance is equal to a specified object. - true if is an instance of and equals the value of this instance; otherwise, false. - An object to compare with this instance. - 2 - - - Returns the hash code for this instance. - A 32-bit signed integer hash code. - 2 - - - Represents the largest possible value of an . This field is constant. - 1 - - - Represents the smallest possible value of . This field is constant. - 1 - - - Converts the string representation of a number to its 32-bit signed integer equivalent. - A 32-bit signed integer equivalent to the number contained in . - A string containing a number to convert. - - is null. - - is not in the correct format. - - represents a number less than or greater than . - 1 - - - Converts the string representation of a number in a specified style to its 32-bit signed integer equivalent. - A 32-bit signed integer equivalent to the number specified in . - A string containing a number to convert. - A bitwise combination of the enumeration values that indicates the style elements that can be present in . A typical value to specify is . - - is null. - - is not a value. -or- is not a combination of and values. - - is not in a format compliant with . - - represents a number less than or greater than . -or- includes non-zero, fractional digits. - 1 - - - Converts the string representation of a number in a specified style and culture-specific format to its 32-bit signed integer equivalent. - A 32-bit signed integer equivalent to the number specified in . - A string containing a number to convert. - A bitwise combination of enumeration values that indicates the style elements that can be present in . A typical value to specify is . - An object that supplies culture-specific information about the format of . - - is null. - - is not a value. -or- is not a combination of and values. - - is not in a format compliant with . - - represents a number less than or greater than . -or- includes non-zero, fractional digits. - 1 - - - Converts the string representation of a number in a specified culture-specific format to its 32-bit signed integer equivalent. - A 32-bit signed integer equivalent to the number specified in . - A string containing a number to convert. - An object that supplies culture-specific formatting information about . - - is null. - - is not of the correct format. - - represents a number less than or greater than . - 1 - - - Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. - A signed integer that indicates the relative order of this instance and .Return value Meaning Less than zero This instance precedes in the sort order.Zero This instance occurs in the same position as in the sort order.Greater than zero This instance follows in the sort order.-or- is null. - An object to compare with this instance, or null. - - is not an . - - - - For a description of this member, see . - true if the value of the current instance is not zero; otherwise, false. - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - This conversion is not supported. Attempting to use this method throws an . - This conversion is not supported. No value is returned. - This parameter is ignored. - In all cases. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to an . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, unchanged. - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to an . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to an . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to . - The type to which to convert this value. - An object that provides information about the format of the returned value. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - Converts the numeric value of this instance to its equivalent string representation. - The string representation of the value of this instance, consisting of a negative sign if the value is negative, and a sequence of digits ranging from 0 to 9 with no leading zeroes. - 1 - - - Converts the numeric value of this instance to its equivalent string representation using the specified culture-specific format information. - The string representation of the value of this instance as specified by . - An object that supplies culture-specific formatting information. - 1 - - - Converts the numeric value of this instance to its equivalent string representation, using the specified format. - The string representation of the value of this instance as specified by . - A standard or custom numeric format string. - - is invalid or not supported. - 1 - - - Converts the numeric value of this instance to its equivalent string representation using the specified format and culture-specific format information. - The string representation of the value of this instance as specified by and . - A standard or custom numeric format string. - An object that supplies culture-specific formatting information. - - is invalid or not supported. - 1 - - - Converts the string representation of a number in a specified style and culture-specific format to its 32-bit signed integer equivalent. A return value indicates whether the conversion succeeded. - true if was converted successfully; otherwise, false. - A string containing a number to convert. The string is interpreted using the style specified by . - A bitwise combination of enumeration values that indicates the style elements that can be present in . A typical value to specify is . - An object that supplies culture-specific formatting information about . - When this method returns, contains the 32-bit signed integer value equivalent of the number contained in , if the conversion succeeded, or zero if the conversion failed. The conversion fails if the parameter is null or , is not in a format compliant with , or represents a number less than or greater than . This parameter is passed uninitialized; any value originally supplied in will be overwritten. - - is not a value. -or- is not a combination of and values. - 1 - - - Converts the string representation of a number to its 32-bit signed integer equivalent. A return value indicates whether the conversion succeeded. - true if was converted successfully; otherwise, false. - A string containing a number to convert. - When this method returns, contains the 32-bit signed integer value equivalent of the number contained in , if the conversion succeeded, or zero if the conversion failed. The conversion fails if the parameter is null or , is not of the correct format, or represents a number less than or greater than . This parameter is passed uninitialized; any value originally supplied in will be overwritten. - 1 - - - Represents a 64-bit signed integer. - 1 - - - Compares this instance to a specified 64-bit signed integer and returns an indication of their relative values. - A signed number indicating the relative values of this instance and .Return Value Description Less than zero This instance is less than . Zero This instance is equal to . Greater than zero This instance is greater than . - An integer to compare. - 2 - - - Returns a value indicating whether this instance is equal to a specified value. - true if has the same value as this instance; otherwise, false. - An value to compare to this instance. - 2 - - - Returns a value indicating whether this instance is equal to a specified object. - true if is an instance of an and equals the value of this instance; otherwise, false. - An object to compare with this instance. - 2 - - - Returns the hash code for this instance. - A 32-bit signed integer hash code. - 2 - - - Represents the largest possible value of an Int64. This field is constant. - 1 - - - Represents the smallest possible value of an Int64. This field is constant. - 1 - - - Converts the string representation of a number to its 64-bit signed integer equivalent. - A 64-bit signed integer equivalent to the number contained in . - A string containing a number to convert. - - is null. - - is not in the correct format. - - represents a number less than or greater than . - 1 - - - Converts the string representation of a number in a specified style to its 64-bit signed integer equivalent. - A 64-bit signed integer equivalent to the number specified in . - A string containing a number to convert. - A bitwise combination of values that indicates the permitted format of . A typical value to specify is . - - is null. - - is not a value. -or- is not a combination of and values. - - is not in a format compliant with . - - represents a number less than or greater than .-or- supports fractional digits but includes non-zero fractional digits. - 1 - - - Converts the string representation of a number in a specified style and culture-specific format to its 64-bit signed integer equivalent. - A 64-bit signed integer equivalent to the number specified in . - A string containing a number to convert. - A bitwise combination of enumeration values that indicates the style elements that can be present in . A typical value to specify is . - An that supplies culture-specific formatting information about . - - is null. - - is not a value. -or- is not a combination of and values. - - is not in a format compliant with . - - represents a number less than or greater than . -or- supports fractional digits, but includes non-zero fractional digits. - 1 - - - Converts the string representation of a number in a specified culture-specific format to its 64-bit signed integer equivalent. - A 64-bit signed integer equivalent to the number specified in . - A string containing a number to convert. - An object that supplies culture-specific formatting information about . - - is null. - - is not in the correct format. - - represents a number less than or greater than . - 1 - - - Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. - A signed integer that indicates the relative order of this instance and .Return value Meaning Less than zero This instance precedes in the sort order.Zero This instance occurs in the same position as in the sort order.Greater than zero This instance follows in the sort order.-or- is null. - An object to compare with this instance, or null. - - is not an . - - - - For a description of this member, see . - true if the value of the current instance is not zero; otherwise, false. - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - This conversion is not supported. Attempting to use this method throws an . - This conversion is not supported. No value is returned. - This parameter is ignored. - In all cases. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to an . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to an . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, unchanged. - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to an . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to . - The type to which to convert this value. - An implementation that provides information about the format of the returned value. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - Converts the numeric value of this instance to its equivalent string representation. - The string representation of the value of this instance, consisting of a minus sign if the value is negative, and a sequence of digits ranging from 0 to 9 with no leading zeroes. - 1 - - - Converts the numeric value of this instance to its equivalent string representation using the specified culture-specific format information. - The string representation of the value of this instance as specified by . - An that supplies culture-specific formatting information. - 1 - - - Converts the numeric value of this instance to its equivalent string representation, using the specified format. - The string representation of the value of this instance as specified by . - A numeric format string. - - is invalid or not supported. - 1 - - - Converts the numeric value of this instance to its equivalent string representation using the specified format and culture-specific format information. - The string representation of the value of this instance as specified by and . - A numeric format string. - An object that supplies culture-specific formatting information about this instance. - - is invalid or not supported. - 1 - - - Converts the string representation of a number in a specified style and culture-specific format to its 64-bit signed integer equivalent. A return value indicates whether the conversion succeeded or failed. - true if was converted successfully; otherwise, false. - A string containing a number to convert. The string is interpreted using the style specified by . - A bitwise combination of enumeration values that indicates the style elements that can be present in . A typical value to specify is . - An object that supplies culture-specific formatting information about . - When this method returns, contains the 64-bit signed integer value equivalent of the number contained in , if the conversion succeeded, or zero if the conversion failed. The conversion fails if the parameter is null or , is not in a format compliant with , or represents a number less than or greater than . This parameter is passed uninitialized; any value originally supplied in will be overwritten. - - is not a value. -or- is not a combination of and values. - 1 - - - Converts the string representation of a number to its 64-bit signed integer equivalent. A return value indicates whether the conversion succeeded or failed. - true if was converted successfully; otherwise, false. - A string containing a number to convert. - When this method returns, contains the 64-bit signed integer value equivalent of the number contained in , if the conversion succeeded, or zero if the conversion failed. The conversion fails if the parameter is null or , is not of the correct format, or represents a number less than or greater than . This parameter is passed uninitialized; any value originally supplied in will be overwritten. - 1 - - - A platform-specific type that is used to represent a pointer or a handle. - 1 - - - Initializes a new instance of using the specified 32-bit pointer or handle. - A pointer or handle contained in a 32-bit signed integer. - - - Initializes a new instance of using the specified 64-bit pointer. - A pointer or handle contained in a 64-bit signed integer. - On a 32-bit platform, is too large or too small to represent as an . - - - Initializes a new instance of using the specified pointer to an unspecified type. - A pointer to an unspecified type. - - - Adds an offset to the value of a pointer. - A new pointer that reflects the addition of to . - The pointer to add the offset to. - The offset to add. - - - Returns a value indicating whether this instance is equal to a specified object. - true if is an instance of and equals the value of this instance; otherwise, false. - An object to compare with this instance or null. - 2 - - - Returns the hash code for this instance. - A 32-bit signed integer hash code. - 2 - - - Adds an offset to the value of a pointer. - A new pointer that reflects the addition of to . - The pointer to add the offset to. - The offset to add. - - - Determines whether two specified instances of are equal. - true if equals ; otherwise, false. - The first pointer or handle to compare. - The second pointer or handle to compare. - 3 - - - Converts the value of a 32-bit signed integer to an . - A new instance of initialized to . - A 32-bit signed integer. - 3 - - - Converts the value of a 64-bit signed integer to an . - A new instance of initialized to . - A 64-bit signed integer. - On a 32-bit platform, is too large to represent as an . - 3 - - - Converts the value of the specified to a 64-bit signed integer. - The contents of . - The pointer or handle to convert. - 3 - - - Converts the value of the specified to a pointer to an unspecified type. - The contents of . - The pointer or handle to convert. - 3 - - - Converts the value of the specified to a 32-bit signed integer. - The contents of . - The pointer or handle to convert. - On a 64-bit platform, the value of is too large to represent as a 32-bit signed integer. - 3 - - - Converts the specified pointer to an unspecified type to an . - A new instance of initialized to . - A pointer to an unspecified type. - 3 - - - Determines whether two specified instances of are not equal. - true if does not equal ; otherwise, false. - The first pointer or handle to compare. - The second pointer or handle to compare. - 3 - - - Subtracts an offset from the value of a pointer. - A new pointer that reflects the subtraction of from . - The pointer to subtract the offset from. - The offset to subtract. - - - Gets the size of this instance. - The size of a pointer or handle in this process, measured in bytes. The value of this property is 4 in a 32-bit process, and 8 in a 64-bit process. You can define the process type by setting the /platform switch when you compile your code with the C# and Visual Basic compilers. - 1 - - - Subtracts an offset from the value of a pointer. - A new pointer that reflects the subtraction of from . - The pointer to subtract the offset from. - The offset to subtract. - - - Converts the value of this instance to a 32-bit signed integer. - A 32-bit signed integer equal to the value of this instance. - On a 64-bit platform, the value of this instance is too large or too small to represent as a 32-bit signed integer. - 1 - - - Converts the value of this instance to a 64-bit signed integer. - A 64-bit signed integer equal to the value of this instance. - 1 - - - Converts the value of this instance to a pointer to an unspecified type. - A pointer to ; that is, a pointer to memory containing data of an unspecified type. - 1 - - - Converts the numeric value of the current object to its equivalent string representation. - The string representation of the value of this instance. - 1 - - - Converts the numeric value of the current object to its equivalent string representation. - The string representation of the value of the current object. - A format specification that governs how the current object is converted. - 1 - - - A read-only field that represents a pointer or handle that has been initialized to zero. - 1 - - - The exception that is thrown for invalid casting or explicit conversion. - 1 - - - Initializes a new instance of the class. - - - Initializes a new instance of the class with a specified error message. - The message that describes the error. - - - Initializes a new instance of the class with a specified error message and a reference to the inner exception that is the cause of this exception. - The error message that explains the reason for the exception. - The exception that is the cause of the current exception. If the parameter is not null, the current exception is raised in a catch block that handles the inner exception. - - - Initializes a new instance of the class with a specified message and error code. - The message that indicates the reason the exception occurred. - The error code (HRESULT) value associated with the exception. - - - The exception that is thrown when a method call is invalid for the object's current state. - 2 - - - Initializes a new instance of the class. - - - Initializes a new instance of the class with a specified error message. - The message that describes the error. - - - Initializes a new instance of the class with a specified error message and a reference to the inner exception that is the cause of this exception. - The error message that explains the reason for the exception. - The exception that is the cause of the current exception. If the parameter is not a null reference (Nothing in Visual Basic), the current exception is raised in a catch block that handles the inner exception. - - - The exception that is thrown when a program contains invalid Microsoft intermediate language (MSIL) or metadata. Generally this indicates a bug in the compiler that generated the program. - 2 - - - Initializes a new instance of the class with default properties. - - - Initializes a new instance of the class with a specified error message. - The error message that explains the reason for the exception. - - - Initializes a new instance of the class with a specified error message and a reference to the inner exception that is the cause of this exception. - The error message that explains the reason for the exception. - The exception that is the cause of the current exception. If the parameter is not a null reference (Nothing in Visual Basic), the current exception is raised in a catch block that handles the inner exception. - - - The exception that is thrown when time zone information is invalid. - - - Initializes a new instance of the class with a system-supplied message. - - - Initializes a new instance of the class with the specified message string. - A string that describes the exception. - - - Initializes a new instance of the class with a specified error message and a reference to the inner exception that is the cause of this exception. - A string that describes the exception. - The exception that is the cause of the current exception. - - - Defines a provider for push-based notification. - The object that provides notification information.This type parameter is covariant. That is, you can use either the type you specified or any type that is more derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - - - Notifies the provider that an observer is to receive notifications. - A reference to an interface that allows observers to stop receiving notifications before the provider has finished sending them. - The object that is to receive notifications. - - - Provides a mechanism for receiving push-based notifications. - The object that provides notification information.This type parameter is contravariant. That is, you can use either the type you specified or any type that is less derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - - - Notifies the observer that the provider has finished sending push-based notifications. - - - Notifies the observer that the provider has experienced an error condition. - An object that provides additional information about the error. - - - Provides the observer with new data. - The current notification information. - - - Defines a provider for progress updates. - The type of progress update value.This type parameter is contravariant. That is, you can use either the type you specified or any type that is less derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - - - Reports a progress update. - The value of the updated progress. - - - Provides support for lazy initialization. - The type of object that is being lazily initialized. - - - Initializes a new instance of the class. When lazy initialization occurs, the default constructor of the target type is used. - - - Initializes a new instance of the class. When lazy initialization occurs, the default constructor of the target type and the specified initialization mode are used. - true to make this instance usable concurrently by multiple threads; false to make the instance usable by only one thread at a time. - - - Initializes a new instance of the class. When lazy initialization occurs, the specified initialization function is used. - The delegate that is invoked to produce the lazily initialized value when it is needed. - - is null. - - - Initializes a new instance of the class. When lazy initialization occurs, the specified initialization function and initialization mode are used. - The delegate that is invoked to produce the lazily initialized value when it is needed. - true to make this instance usable concurrently by multiple threads; false to make this instance usable by only one thread at a time. - - is null. - - - Initializes a new instance of the class that uses the specified initialization function and thread-safety mode. - The delegate that is invoked to produce the lazily initialized value when it is needed. - One of the enumeration values that specifies the thread safety mode. - - contains an invalid value. - - is null. - - - Initializes a new instance of the class that uses the default constructor of and the specified thread-safety mode. - One of the enumeration values that specifies the thread safety mode. - - contains an invalid value. - - - Gets a value that indicates whether a value has been created for this instance. - true if a value has been created for this instance; otherwise, false. - - - Creates and returns a string representation of the property for this instance. - The result of calling the method on the property for this instance, if the value has been created (that is, if the property returns true). Otherwise, a string indicating that the value has not been created. - The property is null. - - - Gets the lazily initialized value of the current instance. - The lazily initialized value of the current instance. - The instance is initialized to use the default constructor of the type that is being lazily initialized, and permissions to access the constructor are missing. - The instance is initialized to use the default constructor of the type that is being lazily initialized, and that type does not have a public, parameterless constructor. - The initialization function tries to access on this instance. - - - Provides a lazy indirect reference to an object and its associated metadata for use by the Managed Extensibility Framework. - The type of the object referenced. - The type of the metadata. - - - Initializes a new instance of the class with the specified metadata that uses the specified function to get the referenced object. - A function that returns the referenced object. - The metadata associated with the referenced object. - - - Initializes a new instance of the class with the specified metadata and thread safety value that uses the specified function to get the referenced object. - A function that returns the referenced object. - The metadata associated with the referenced object. - Indicates whether the object that is created will be thread-safe. - - - Initializes a new instance of the class with the specified metadata and thread synchronization mode that uses the specified function to get the referenced object. - A function that returns the referenced object - The metadata associated with the referenced object. - The thread synchronization mode - - - Initializes a new instance of the class with the specified metadata. - The metadata associated with the referenced object. - - - Initializes a new instance of the class with the specified metadata and thread safety value. - The metadata associated with the referenced object. - Indicates whether the object that is created will be thread-safe. - - - Initializes a new instance of the class with the specified metadata and thread synchronization mode. - The metadata associated with the referenced object. - The thread synchronization mode. - - - Gets the metadata associated with the referenced object. - The metadata associated with the referenced object. - - - The exception that is thrown when an attempt to access a class member fails. - 2 - - - Initializes a new instance of the class. - - - Initializes a new instance of the class with a specified error message. - The message that describes the error. - - - Initializes a new instance of the class with a specified error message and a reference to the inner exception that is the cause of this exception. - The error message that explains the reason for the exception. - The exception that is the cause of the current exception. If the parameter is not a null reference (Nothing in Visual Basic), the current exception is raised in a catch block that handles the inner exception. - - - The exception that is thrown when there is an invalid attempt to access a method, such as accessing a private method from partially trusted code. - 2 - - - Initializes a new instance of the class, setting the property of the new instance to a system-supplied message that describes the error, such as "Attempt to access the method failed." This message takes into account the current system culture. - - - Initializes a new instance of the class with a specified error message. - A that describes the error. - - - Initializes a new instance of the class with a specified error message and a reference to the inner exception that is the cause of this exception. - The error message that explains the reason for the exception. - The exception that is the cause of the current exception. If the parameter is not a null reference (Nothing in Visual Basic), the current exception is raised in a catch block that handles the inner exception. - - - The exception that is thrown when there is an attempt to dynamically access a field that does not exist. - 2 - - - Initializes a new instance of the class. - - - Initializes a new instance of the class with a specified error message. - A that describes the error. - - - Initializes a new instance of the class with a specified error message and a reference to the inner exception that is the cause of this exception. - The error message that explains the reason for the exception. - The exception that is the cause of the current exception. If the parameter is not a null reference (Nothing in Visual Basic), the current exception is raised in a catch block that handles the inner exception. - - - Gets the text string showing the signature of the missing field, the class name, and the field name. This property is read-only. - The error message string. - 2 - - - The exception that is thrown when there is an attempt to dynamically access a class member that does not exist. - 2 - - - Initializes a new instance of the class. - - - Initializes a new instance of the class with a specified error message. - The message that describes the error. - - - Initializes a new instance of the class with a specified error message and a reference to the inner exception that is the root cause of this exception. - The error message that explains the reason for the exception. - An instance of that is the cause of the current Exception. If is not a null reference (Nothing in Visual Basic), then the current Exception is raised in a catch block handling . - - - Gets the text string showing the class name, the member name, and the signature of the missing member. - The error message string. - 2 - - - The exception that is thrown when there is an attempt to dynamically access a method that does not exist. - 2 - - - Initializes a new instance of the class. - - - Initializes a new instance of the class with a specified error message. - A that describes the error. - - - Initializes a new instance of the class with a specified error message and a reference to the inner exception that is the cause of this exception. - The error message that explains the reason for the exception. - The exception that is the cause of the current exception. If the parameter is not a null reference (Nothing in Visual Basic), the current exception is raised in a catch block that handles the inner exception. - - - Gets the text string showing the class name, the method name, and the signature of the missing method. This property is read-only. - The error message string. - 2 - - - Indicates that the COM threading model for an application is multithreaded apartment (MTA). - 1 - - - Initializes a new instance of the class. - - - Represents a multicast delegate; that is, a delegate that can have more than one element in its invocation list. - 2 - - - Determines whether this multicast delegate and the specified object are equal. - true if and this instance have the same invocation lists; otherwise, false. - The object to compare with this instance. - Cannot create an instance of an abstract class, or this member was invoked with a late-binding mechanism. - 2 - - - Returns the hash code for this instance. - A 32-bit signed integer hash code. - Cannot create an instance of an abstract class, or this member was invoked with a late-binding mechanism. - 2 - - - Returns the invocation list of this multicast delegate, in invocation order. - An array of delegates whose invocation lists collectively match the invocation list of this instance. - Cannot create an instance of an abstract class, or this member was invoked with a late-binding mechanism. - 2 - - - Determines whether two objects are equal. - true if and have the same invocation lists; otherwise, false. - The left operand. - The right operand. - Cannot create an instance of an abstract class, or this member was invoked with a late-binding mechanism. - 3 - - - Determines whether two objects are not equal. - true if and do not have the same invocation lists; otherwise, false. - The left operand. - The right operand. - Cannot create an instance of an abstract class, or this member was invoked with a late-binding mechanism. - 3 - - - The exception that is thrown when a requested method or operation is not implemented. - 2 - - - Initializes a new instance of the class with default properties. - - - Initializes a new instance of the class with a specified error message. - The error message that explains the reason for the exception. - - - Initializes a new instance of the class with a specified error message and a reference to the inner exception that is the cause of this exception. - The error message that explains the reason for the exception. - The exception that is the cause of the current exception. If the parameter is not null, the current exception is raised in a catch block that handles the inner exception. - - - The exception that is thrown when an invoked method is not supported, or when there is an attempt to read, seek, or write to a stream that does not support the invoked functionality. - 2 - - - Initializes a new instance of the class, setting the property of the new instance to a system-supplied message that describes the error. This message takes into account the current system culture. - - - Initializes a new instance of the class with a specified error message. - A that describes the error. The content of is intended to be understood by humans. The caller of this constructor is required to ensure that this string has been localized for the current system culture. - - - Initializes a new instance of the class with a specified error message and a reference to the inner exception that is the cause of this exception. - The error message that explains the reason for the exception. - The exception that is the cause of the current exception. If the parameter is not a null reference, the current exception is raised in a catch block that handles the inner exception. - - - Supports a value type that can be assigned null. This class cannot be inherited. - 1 - - - Compares the relative values of two objects. - An integer that indicates the relative values of the and parameters.Return ValueDescriptionLess than zeroThe property for is false, and the property for is true.-or-The properties for and are true, and the value of the property for is less than the value of the property for .ZeroThe properties for and are false.-or-The properties for and are true, and the value of the property for is equal to the value of the property for .Greater than zeroThe property for is true, and the property for is false.-or-The properties for and are true, and the value of the property for is greater than the value of the property for . - A object. - A object. - The underlying value type of the and parameters. - - - Indicates whether two specified objects are equal. - true if the parameter is equal to the parameter; otherwise, false. The return value depends on the and properties of the two parameters that are compared.Return ValueDescriptiontrueThe properties for and are false. -or-The properties for and are true, and the properties of the parameters are equal.falseThe property is true for one parameter and false for the other parameter.-or-The properties for and are true, and the properties of the parameters are unequal. - A object. - A object. - The underlying value type of the and parameters. - - - Returns the underlying type argument of the specified nullable type. - The type argument of the parameter, if the parameter is a closed generic nullable type; otherwise, null. - A object that describes a closed generic nullable type. - - is null. - - - Represents a value type that can be assigned null. - The underlying value type of the generic type. - 1 - - - Initializes a new instance of the structure to the specified value. - A value type. - - - Indicates whether the current object is equal to a specified object. - true if the parameter is equal to the current object; otherwise, false. This table describes how equality is defined for the compared values: Return ValueDescriptiontrueThe property is false, and the parameter is null. That is, two null values are equal by definition.-or-The property is true, and the value returned by the property is equal to the parameter.falseThe property for the current structure is true, and the parameter is null.-or-The property for the current structure is false, and the parameter is not null.-or-The property for the current structure is true, and the value returned by the property is not equal to the parameter. - An object. - 1 - - - Retrieves the hash code of the object returned by the property. - The hash code of the object returned by the property if the property is true, or zero if the property is false. - 1 - - - Retrieves the value of the current object, or the object's default value. - The value of the property if the property is true; otherwise, the default value of the current object. The type of the default value is the type argument of the current object, and the value of the default value consists solely of binary zeroes. - - - Retrieves the value of the current object, or the specified default value. - The value of the property if the property is true; otherwise, the parameter. - A value to return if the property is false. - - - Gets a value indicating whether the current object has a valid value of its underlying type. - true if the current object has a value; false if the current object has no value. - - - Defines an explicit conversion of a instance to its underlying value. - The value of the property for the parameter. - A nullable value. - - - Creates a new object initialized to a specified value. - A object whose property is initialized with the parameter. - A value type. - - - Returns the text representation of the value of the current object. - The text representation of the value of the current object if the property is true, or an empty string ("") if the property is false. - 1 - - - Gets the value of the current object if it has been assigned a valid underlying value. - The value of the current object if the property is true. An exception is thrown if the property is false. - The property is false. - - - The exception that is thrown when there is an attempt to dereference a null object reference. - 1 - - - Initializes a new instance of the class, setting the property of the new instance to a system-supplied message that describes the error, such as "The value 'null' was found where an instance of an object was required." This message takes into account the current system culture. - - - Initializes a new instance of the class with a specified error message. - A that describes the error. The content of is intended to be understood by humans. The caller of this constructor is required to ensure that this string has been localized for the current system culture. - - - Initializes a new instance of the class with a specified error message and a reference to the inner exception that is the cause of this exception. - The error message that explains the reason for the exception. - The exception that is the cause of the current exception. If the parameter is not null, the current exception is raised in a catch block that handles the inner exception. - - - Supports all classes in the .NET Framework class hierarchy and provides low-level services to derived classes. This is the ultimate base class of all classes in the .NET Framework; it is the root of the type hierarchy.To browse the .NET Framework source code for this type, see the Reference Source. - 1 - - - Initializes a new instance of the class. - - - Determines whether the specified object is equal to the current object. - true if the specified object is equal to the current object; otherwise, false. - The object to compare with the current object. - 2 - - - Determines whether the specified object instances are considered equal. - true if the objects are considered equal; otherwise, false. If both and are null, the method returns true. - The first object to compare. - The second object to compare. - 2 - - - Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. - - - Serves as the default hash function. - A hash code for the current object. - 2 - - - Gets the of the current instance. - The exact runtime type of the current instance. - 2 - - - Creates a shallow copy of the current . - A shallow copy of the current . - - - Determines whether the specified instances are the same instance. - true if is the same instance as or if both are null; otherwise, false. - The first object to compare. - The second object to compare. - 2 - - - Returns a string that represents the current object. - A string that represents the current object. - 2 - - - The exception that is thrown when an operation is performed on a disposed object. - 2 - - - Initializes a new instance of the class with a string containing the name of the disposed object. - A string containing the name of the disposed object. - - - Initializes a new instance of the class with a specified error message and a reference to the inner exception that is the cause of this exception. - The error message that explains the reason for the exception. - The exception that is the cause of the current exception. If is not null, the current exception is raised in a catch block that handles the inner exception. - - - Initializes a new instance of the class with the specified object name and message. - The name of the disposed object. - The error message that explains the reason for the exception. - - - Gets the message that describes the error. - A string that describes the error. - 1 - - - Gets the name of the disposed object. - A string containing the name of the disposed object. - 1 - - - Marks the program elements that are no longer in use. This class cannot be inherited. - 1 - - - Initializes a new instance of the class with default properties. - - - Initializes a new instance of the class with a specified workaround message. - The text string that describes alternative workarounds. - - - Initializes a new instance of the class with a workaround message and a Boolean value indicating whether the obsolete element usage is considered an error. - The text string that describes alternative workarounds. - The Boolean value that indicates whether the obsolete element usage is considered an error. - - - Gets a Boolean value indicating whether the compiler will treat usage of the obsolete program element as an error. - true if the obsolete element usage is considered an error; otherwise, false. The default is false. - 2 - - - Gets the workaround message, including a description of the alternative program elements. - The workaround text string. - 2 - - - The exception that is thrown when there is not enough memory to continue the execution of a program. - 2 - - - Initializes a new instance of the class. - - - Initializes a new instance of the class with a specified error message. - The message that describes the error. - - - Initializes a new instance of the class with a specified error message and a reference to the inner exception that is the cause of this exception. - The error message that explains the reason for the exception. - The exception that is the cause of the current exception. If the parameter is not a null reference (Nothing in Visual Basic), the current exception is raised in a catch block that handles the inner exception. - - - The exception that is thrown when an arithmetic, casting, or conversion operation in a checked context results in an overflow. - 2 - - - Initializes a new instance of the class. - - - Initializes a new instance of the class with a specified error message. - The message that describes the error. - - - Initializes a new instance of the class with a specified error message and a reference to the inner exception that is the cause of this exception. - The error message that explains the reason for the exception. - The exception that is the cause of the current exception. If the parameter is not a null reference (Nothing in Visual Basic), the current exception is raised in a catch block that handles the inner exception. - - - Indicates that a method will allow a variable number of arguments in its invocation. This class cannot be inherited. - 1 - - - Initializes a new instance of the class with default properties. - - - The exception that is thrown when a feature does not run on a particular platform. - 2 - - - Initializes a new instance of the class with default properties. - - - Initializes a new instance of the class with a specified error message. - The text message that explains the reason for the exception. - - - Initializes a new instance of the class with a specified error message and a reference to the inner exception that is the cause of this exception. - The error message that explains the reason for the exception. - The exception that is the cause of the current exception. If the parameter is not null, the current exception is raised in a catch block that handles the inner exception. - - - Represents the method that defines a set of criteria and determines whether the specified object meets those criteria. - The type of the object to compare.This type parameter is contravariant. That is, you can use either the type you specified or any type that is less derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - 2 - - - - - - - The exception that is thrown when an array with the wrong number of dimensions is passed to a method. - 2 - - - Initializes a new instance of the class. - - - Initializes a new instance of the class with a specified error message. - A that describes the error. - - - Initializes a new instance of the class with a specified error message and a reference to the inner exception that is the cause of this exception. - The error message that explains the reason for the exception. - The exception that is the cause of the current exception. If the parameter is not a null reference (Nothing in Visual Basic), the current exception is raised in a catch block that handles the inner exception. - - - Represents a field using an internal metadata token. - 2 - - - Indicates whether the current instance is equal to the specified object. - true if is a and equal to the value of the current instance; otherwise, false. - The object to compare to the current instance. - 2 - - - Indicates whether the current instance is equal to the specified . - true if the value of is equal to the value of the current instance; otherwise, false. - The to compare to the current instance. - 2 - - - 2 - - - Indicates whether two structures are equal. - true if is equal to ; otherwise, false. - The to compare to . - The to compare to . - 3 - - - Indicates whether two structures are not equal. - true if is not equal to ; otherwise, false. - The to compare to . - The to compare to . - 3 - - - - is a handle to the internal metadata representation of a method. - 2 - - - Indicates whether this instance is equal to a specified object. - true if is a and equal to the value of this instance; otherwise, false. - A to compare to this instance. - 2 - - - Indicates whether this instance is equal to a specified . - true if is equal to the value of this instance; otherwise, false. - A to compare to this instance. - 2 - - - Returns the hash code for this instance. - A 32-bit signed integer hash code. - 2 - - - Indicates whether two instances of are equal. - true if the value of is equal to the value of ; otherwise, false. - A to compare to . - A to compare to . - 3 - - - Indicates whether two instances of are not equal. - true if the value of is unequal to the value of ; otherwise, false. - A to compare to . - A to compare to . - 3 - - - Represents a type using an internal metadata token. - 2 - - - Indicates whether the specified object is equal to the current structure. - true if is a structure and is equal to the value of this instance; otherwise, false. - An object to compare to the current instance. - 2 - - - Indicates whether the specified structure is equal to the current structure. - true if the value of is equal to the value of this instance; otherwise, false. - The structure to compare to the current instance. - 2 - - - Returns the hash code for the current instance. - A 32-bit signed integer hash code. - 2 - - - Indicates whether an object and a structure are equal. - true if is a structure and is equal to ; otherwise, false. - An object to compare to . - A structure to compare to . - 3 - - - Indicates whether a structure is equal to an object. - true if is a and is equal to ; otherwise, false. - A structure to compare to . - An object to compare to . - 3 - - - Indicates whether an object and a structure are not equal. - true if is a and is not equal to ; otherwise, false. - An object to compare to . - A structure to compare to . - 3 - - - Indicates whether a structure is not equal to an object. - true if is a structure and is not equal to ; otherwise, false. - A structure to compare to . - An object to compare to . - 3 - - - Represents an 8-bit signed integer. - 1 - - - Compares this instance to a specified 8-bit signed integer and returns an indication of their relative values. - A signed integer that indicates the relative order of this instance and .Return Value Description Less than zero This instance is less than . Zero This instance is equal to . Greater than zero This instance is greater than . - An 8-bit signed integer to compare. - 2 - - - Returns a value indicating whether this instance is equal to a specified object. - true if is an instance of and equals the value of this instance; otherwise, false. - An object to compare with this instance. - 2 - - - Returns a value indicating whether this instance is equal to a specified value. - true if has the same value as this instance; otherwise, false. - An value to compare to this instance. - 2 - - - Returns the hash code for this instance. - A 32-bit signed integer hash code. - 2 - - - Represents the largest possible value of . This field is constant. - 1 - - - Represents the smallest possible value of . This field is constant. - 1 - - - Converts the string representation of a number to its 8-bit signed integer equivalent. - An 8-bit signed integer that is equivalent to the number contained in the parameter. - A string that represents a number to convert. The string is interpreted using the style. - - is null. - - does not consist of an optional sign followed by a sequence of digits (zero through nine). - - represents a number less than or greater than . - 1 - - - Converts the string representation of a number in a specified style to its 8-bit signed integer equivalent. - An 8-bit signed integer that is equivalent to the number specified in . - A string that contains a number to convert. The string is interpreted using the style specified by . - A bitwise combination of the enumeration values that indicates the style elements that can be present in . A typical value to specify is . - - is null. - - is not in a format that is compliant with . - - represents a number less than or greater than . -or- includes non-zero, fractional digits. - - is not a value. -or- is not a combination of and values. - 1 - - - Converts the string representation of a number that is in a specified style and culture-specific format to its 8-bit signed equivalent. - An 8-bit signed byte value that is equivalent to the number specified in the parameter. - A string that contains the number to convert. The string is interpreted by using the style specified by . - A bitwise combination of the enumeration values that indicates the style elements that can be present in . A typical value to specify is . - An object that supplies culture-specific formatting information about . If is null, the thread current culture is used. - - is not a value.-or- is not a combination of and . - - is null. - - is not in a format that is compliant with . - - represents a number that is less than or greater than .-or- includes non-zero, fractional digits. - 1 - - - Converts the string representation of a number in a specified culture-specific format to its 8-bit signed integer equivalent. - An 8-bit signed integer that is equivalent to the number specified in . - A string that represents a number to convert. The string is interpreted using the style. - An object that supplies culture-specific formatting information about . If is null, the thread current culture is used. - - is null. - - is not in the correct format. - - represents a number less than or greater than . - 1 - - - Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. - A signed integer that indicates the relative order of this instance and .Return value Meaning Less than zero This instance precedes in the sort order.Zero This instance occurs in the same position as in the sort order.Greater than zero This instance follows in the sort order.-or- is null. - An object to compare with this instance, or null. - - is not an . - - - - For a description of this member, see . - true if the value of the current instance is not zero; otherwise, false. - This parameter is unused. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is unused. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - This conversion is not supported. Attempting to do so throws an . - None. This conversion is not supported. - This parameter is ignored. - In all cases. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is unused. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to an . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to an . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to an . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, unchanged. - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to an object of type . - The to which to convert this value. - A implementation that provides information about the format of the returned value. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - Converts the numeric value of this instance to its equivalent string representation. - The string representation of the value of this instance, consisting of a negative sign if the value is negative, and a sequence of digits ranging from 0 to 9 with no leading zeroes. - 1 - - - Converts the numeric value of this instance to its equivalent string representation using the specified culture-specific format information. - The string representation of the value of this instance, as specified by . - An object that supplies culture-specific formatting information. - 1 - - - Converts the numeric value of this instance to its equivalent string representation, using the specified format. - The string representation of the value of this instance as specified by . - A standard or custom numeric format string. - - is invalid. - 1 - - - Converts the numeric value of this instance to its equivalent string representation using the specified format and culture-specific format information. - The string representation of the value of this instance as specified by and . - A standard or custom numeric format string. - An object that supplies culture-specific formatting information. - - is invalid. - 1 - - - Tries to convert the string representation of a number in a specified style and culture-specific format to its equivalent, and returns a value that indicates whether the conversion succeeded. - true if was converted successfully; otherwise, false. - A string representing a number to convert. - A bitwise combination of enumeration values that indicates the permitted format of . A typical value to specify is . - An object that supplies culture-specific formatting information about . - When this method returns, contains the 8-bit signed integer value equivalent to the number contained in , if the conversion succeeded, or zero if the conversion failed. The conversion fails if the parameter is null or , is not in a format compliant with , or represents a number less than or greater than . This parameter is passed uninitialized; any value originally supplied in will be overwritten. - - is not a value. -or- is not a combination of and values. - 1 - - - Tries to convert the string representation of a number to its equivalent, and returns a value that indicates whether the conversion succeeded. - true if was converted successfully; otherwise, false. - A string that contains a number to convert. - When this method returns, contains the 8-bit signed integer value that is equivalent to the number contained in if the conversion succeeded, or zero if the conversion failed. The conversion fails if the parameter is null or , is not in the correct format, or represents a number that is less than or greater than . This parameter is passed uninitialized; any value originally supplied in will be overwritten. - 1 - - - Represents a single-precision floating-point number. - 1 - - - Compares this instance to a specified single-precision floating-point number and returns an integer that indicates whether the value of this instance is less than, equal to, or greater than the value of the specified single-precision floating-point number. - A signed number indicating the relative values of this instance and .Return Value Description Less than zero This instance is less than .-or- This instance is not a number () and is a number. Zero This instance is equal to .-or- Both this instance and are not a number (), , or . Greater than zero This instance is greater than .-or- This instance is a number and is not a number (). - A single-precision floating-point number to compare. - 2 - - - Represents the smallest positive value that is greater than zero. This field is constant. - 1 - - - Returns a value indicating whether this instance is equal to a specified object. - true if is an instance of and equals the value of this instance; otherwise, false. - An object to compare with this instance. - 2 - - - Returns a value indicating whether this instance and a specified object represent the same value. - true if is equal to this instance; otherwise, false. - An object to compare with this instance. - 2 - - - Returns the hash code for this instance. - A 32-bit signed integer hash code. - 2 - - - Returns a value indicating whether the specified number evaluates to negative or positive infinity. - true if evaluates to or ; otherwise, false. - A single-precision floating-point number. - 1 - - - Returns a value that indicates whether the specified value is not a number (). - true if evaluates to not a number (); otherwise, false. - A single-precision floating-point number. - 1 - - - Returns a value indicating whether the specified number evaluates to negative infinity. - true if evaluates to ; otherwise, false. - A single-precision floating-point number. - 1 - - - Returns a value indicating whether the specified number evaluates to positive infinity. - true if evaluates to ; otherwise, false. - A single-precision floating-point number. - 1 - - - Represents the largest possible value of . This field is constant. - 1 - - - Represents the smallest possible value of . This field is constant. - 1 - - - Represents not a number (NaN). This field is constant. - 1 - - - Represents negative infinity. This field is constant. - 1 - - - Returns a value that indicates whether two specified values are equal. - true if and are equal; otherwise, false. - The first value to compare. - The second value to compare. - - - Returns a value that indicates whether a specified value is greater than another specified value. - true if is greater than ; otherwise, false. - The first value to compare. - The second value to compare. - - - Returns a value that indicates whether a specified value is greater than or equal to another specified value. - true if is greater than or equal to ; otherwise, false. - The first value to compare. - The second value to compare. - - - Returns a value that indicates whether two specified values are not equal. - true if and are not equal; otherwise, false. - The first value to compare. - The second value to compare. - - - Returns a value that indicates whether a specified value is less than another specified value. - true if is less than ; otherwise, false. - The first value to compare. - The second value to compare. - - - Returns a value that indicates whether a specified value is less than or equal to another specified value. - true if is less than or equal to ; otherwise, false. - The first value to compare. - The second value to compare. - - - Converts the string representation of a number to its single-precision floating-point number equivalent. - A single-precision floating-point number equivalent to the numeric value or symbol specified in . - A string that contains a number to convert. - - is null. - - does not represent a number in a valid format. - - represents a number less than or greater than . - 1 - - - Converts the string representation of a number in a specified style to its single-precision floating-point number equivalent. - A single-precision floating-point number that is equivalent to the numeric value or symbol specified in . - A string that contains a number to convert. - A bitwise combination of enumeration values that indicates the style elements that can be present in . A typical value to specify is combined with . - - is null. - - is not a number in a valid format. - - represents a number that is less than or greater than . - - is not a value. -or- includes the value. - 1 - - - Converts the string representation of a number in a specified style and culture-specific format to its single-precision floating-point number equivalent. - A single-precision floating-point number equivalent to the numeric value or symbol specified in . - A string that contains a number to convert. - A bitwise combination of enumeration values that indicates the style elements that can be present in . A typical value to specify is combined with . - An object that supplies culture-specific formatting information about . - - is null. - - does not represent a numeric value. - - is not a value. -or- is the value. - - represents a number that is less than or greater than . - 1 - - - Converts the string representation of a number in a specified culture-specific format to its single-precision floating-point number equivalent. - A single-precision floating-point number equivalent to the numeric value or symbol specified in . - A string that contains a number to convert. - An object that supplies culture-specific formatting information about . - - is null. - - does not represent a number in a valid format. - - represents a number less than or greater than . - 1 - - - Represents positive infinity. This field is constant. - 1 - - - Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. - A signed integer that indicates the relative order of this instance and .Return value Meaning Less than zero This instance precedes in the sort order.Zero This instance occurs in the same position as in the sort order.Greater than zero This instance follows in the sort order.-or- is null. - An object to compare with this instance, or null. - - is not a . - - - - For a description of this member, see . - true if the value of the current instance is not zero; otherwise, false. - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - This conversion is not supported. Attempting to use this method throws an . - This conversion is not supported. No value is returned. - This parameter is ignored. - In all cases. - - - This conversion is not supported. Attempting to use this method throws an . - This conversion is not supported. No value is returned. - This parameter is ignored. - In all cases. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to an . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to an . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to an . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to an . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, unchanged. - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to . - The type to which to convert this value. - An object that supplies information about the format of the returned value. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - Converts the numeric value of this instance to its equivalent string representation. - The string representation of the value of this instance. - 1 - - - Converts the numeric value of this instance to its equivalent string representation using the specified culture-specific format information. - The string representation of the value of this instance as specified by . - An object that supplies culture-specific formatting information. - 1 - - - Converts the numeric value of this instance to its equivalent string representation, using the specified format. - The string representation of the value of this instance as specified by . - A numeric format string. - - is invalid. - 1 - - - Converts the numeric value of this instance to its equivalent string representation using the specified format and culture-specific format information. - The string representation of the value of this instance as specified by and . - A numeric format string. - An object that supplies culture-specific formatting information. - 1 - - - Converts the string representation of a number in a specified style and culture-specific format to its single-precision floating-point number equivalent. A return value indicates whether the conversion succeeded or failed. - true if was converted successfully; otherwise, false. - A string representing a number to convert. - A bitwise combination of enumeration values that indicates the permitted format of . A typical value to specify is combined with . - An object that supplies culture-specific formatting information about . - When this method returns, contains the single-precision floating-point number equivalent to the numeric value or symbol contained in , if the conversion succeeded, or zero if the conversion failed. The conversion fails if the parameter is null or , is not in a format compliant with , represents a number less than or greater than , or if is not a valid combination of enumerated constants. This parameter is passed uninitialized; any value originally supplied in will be overwritten. - - is not a value. -or- is the value. - 1 - - - Converts the string representation of a number to its single-precision floating-point number equivalent. A return value indicates whether the conversion succeeded or failed. - true if was converted successfully; otherwise, false. - A string representing a number to convert. - When this method returns, contains single-precision floating-point number equivalent to the numeric value or symbol contained in , if the conversion succeeded, or zero if the conversion failed. The conversion fails if the parameter is null or , is not a number in a valid format, or represents a number less than or greater than . This parameter is passed uninitialized; any value originally supplied in will be overwritten. - 1 - - - Indicates that the COM threading model for an application is single-threaded apartment (STA). - 1 - - - Initializes a new instance of the class. - - - Represents text as a series of Unicode characters.To browse the .NET Framework source code for this type, see the Reference Source. - 1 - - - Initializes a new instance of the class to the value indicated by a specified pointer to an array of Unicode characters. - A pointer to a null-terminated array of Unicode characters. - The current process does not have read access to all the addressed characters. - - specifies an array that contains an invalid Unicode character, or specifies an address less than 64000. - - - Initializes a new instance of the class to the value indicated by a specified pointer to an array of Unicode characters, a starting character position within that array, and a length. - A pointer to an array of Unicode characters. - The starting position within . - The number of characters within to use. - - or is less than zero, + cause a pointer overflow, or the current process does not have read access to all the addressed characters. - - specifies an array that contains an invalid Unicode character, or + specifies an address less than 64000. - - - Initializes a new instance of the class to the value indicated by a specified Unicode character repeated a specified number of times. - A Unicode character. - The number of times occurs. - - is less than zero. - - - Initializes a new instance of the class to the value indicated by an array of Unicode characters. - An array of Unicode characters. - - - Initializes a new instance of the class to the value indicated by an array of Unicode characters, a starting character position within that array, and a length. - An array of Unicode characters. - The starting position within . - The number of characters within to use. - - is null. - - or is less than zero.-or- The sum of and is greater than the number of elements in . - - - Gets the object at a specified position in the current object. - The object at position . - A position in the current string. - - is greater than or equal to the length of this object or less than zero. - 2 - - - Compares substrings of two specified objects and returns an integer that indicates their relative position in the sort order. - A 32-bit signed integer indicating the lexical relationship between the two comparands.Value Condition Less than zero The substring in precedes the substring in in the sort order. Zero The substrings occur in the same position in the sort order, or is zero. Greater than zero The substring in follows the substring in in the sort order. - The first string to use in the comparison. - The position of the substring within . - The second string to use in the comparison. - The position of the substring within . - The maximum number of characters in the substrings to compare. - - is greater than ..-or- is greater than ..-or- , , or is negative. -or-Either or is null, and is greater than zero. - 1 - - - Compares substrings of two specified objects using the specified rules, and returns an integer that indicates their relative position in the sort order. - A 32-bit signed integer that indicates the lexical relationship between the two comparands.Value Condition Less than zero The substring in precedes the substring in in the sort order.Zero The substrings occur in the same position in the sort order, or the parameter is zero. Greater than zero The substring in follllows the substring in in the sort order. - The first string to use in the comparison. - The position of the substring within . - The second string to use in the comparison. - The position of the substring within . - The maximum number of characters in the substrings to compare. - One of the enumeration values that specifies the rules to use in the comparison. - - is greater than ..-or- is greater than ..-or- , , or is negative. -or-Either or is null, and is greater than zero. - - is not a value. - 1 - - - Compares two specified objects and returns an integer that indicates their relative position in the sort order. - A 32-bit signed integer that indicates the lexical relationship between the two comparands.Value Condition Less than zero precedes in the sort order. Zero occurs in the same position as in the sort order. Greater than zero follows in the sort order. - The first string to compare. - The second string to compare. - 1 - - - Compares two specified objects, ignoring or honoring their case, and returns an integer that indicates their relative position in the sort order. - A 32-bit signed integer that indicates the lexical relationship between the two comparands.Value Condition Less than zero precedes in the sort order. Zero occurs in the same position as in the sort order. Greater than zero follows in the sort order. - The first string to compare. - The second string to compare. - true to ignore case during the comparison; otherwise, false. - 1 - - - Compares two specified objects using the specified rules, and returns an integer that indicates their relative position in the sort order. - A 32-bit signed integer that indicates the lexical relationship between the two comparands.Value Condition Less than zero precedes in the sort order. Zero is in the same position as in the sort order. Greater than zero follows in the sort order. - The first string to compare. - The second string to compare. - One of the enumeration values that specifies the rules to use in the comparison. - - is not a value. - - is not supported. - 1 - - - Compares substrings of two specified objects by evaluating the numeric values of the corresponding objects in each substring. - A 32-bit signed integer that indicates the lexical relationship between the two comparands.ValueCondition Less than zero The substring in is less than the substring in . Zero The substrings are equal, or is zero. Greater than zero The substring in is greater than the substring in . - The first string to use in the comparison. - The starting index of the substring in . - The second string to use in the comparison. - The starting index of the substring in . - The maximum number of characters in the substrings to compare. - - is not null and is greater than ..-or- is not null and is greater than ..-or- , , or is negative. - 2 - - - Compares two specified objects by evaluating the numeric values of the corresponding objects in each string. - An integer that indicates the lexical relationship between the two comparands.ValueCondition Less than zero is less than . Zero and are equal. Greater than zero is greater than . - The first string to compare. - The second string to compare. - 2 - - - Compares this instance with a specified object and indicates whether this instance precedes, follows, or appears in the same position in the sort order as the specified string. - A 32-bit signed integer that indicates whether this instance precedes, follows, or appears in the same position in the sort order as the parameter.Value Condition Less than zero This instance precedes . Zero This instance has the same position in the sort order as . Greater than zero This instance follows .-or- is null. - The string to compare with this instance. - 2 - - - Concatenates the members of a constructed collection of type . - The concatenated strings in . - A collection object that implements and whose generic type argument is . - - is null. - - - Concatenates the members of an implementation. - The concatenated members in . - A collection object that implements the interface. - The type of the members of . - - is null. - - - Creates the string representation of a specified object. - The string representation of the value of , or if is null. - The object to represent, or null. - 1 - - - Concatenates the string representations of two specified objects. - The concatenated string representations of the values of and . - The first object to concatenate. - The second object to concatenate. - 1 - - - Concatenates the string representations of three specified objects. - The concatenated string representations of the values of , , and . - The first object to concatenate. - The second object to concatenate. - The third object to concatenate. - 1 - - - Concatenates the string representations of the elements in a specified array. - The concatenated string representations of the values of the elements in . - An object array that contains the elements to concatenate. - - is null. - Out of memory. - 1 - - - Concatenates two specified instances of . - The concatenation of and . - The first string to concatenate. - The second string to concatenate. - 1 - - - Concatenates three specified instances of . - The concatenation of , , and . - The first string to concatenate. - The second string to concatenate. - The third string to concatenate. - 1 - - - Concatenates four specified instances of . - The concatenation of , , , and . - The first string to concatenate. - The second string to concatenate. - The third string to concatenate. - The fourth string to concatenate. - 1 - - - Concatenates the elements of a specified array. - The concatenated elements of . - An array of string instances. - - is null. - Out of memory. - 1 - - - Returns a value indicating whether a specified substring occurs within this string. - true if the parameter occurs within this string, or if is the empty string (""); otherwise, false. - The string to seek. - - is null. - 1 - - - Copies a specified number of characters from a specified position in this instance to a specified position in an array of Unicode characters. - The index of the first character in this instance to copy. - An array of Unicode characters to which characters in this instance are copied. - The index in at which the copy operation begins. - The number of characters in this instance to copy to . - - is null. - - , , or is negative -or- does not identify a position in the current instance. -or- does not identify a valid index in the array. -or- is greater than the length of the substring from to the end of this instance -or- is greater than the length of the subarray from to the end of the array. - 2 - - - Represents the empty string. This field is read-only. - 1 - - - Determines whether the end of this string instance matches the specified string. - true if matches the end of this instance; otherwise, false. - The string to compare to the substring at the end of this instance. - - is null. - 1 - - - Determines whether the end of this string instance matches the specified string when compared using the specified comparison option. - true if the parameter matches the end of this string; otherwise, false. - The string to compare to the substring at the end of this instance. - One of the enumeration values that determines how this string and are compared. - - is null. - - is not a value. - - - Determines whether this instance and a specified object, which must also be a object, have the same value. - true if is a and its value is the same as this instance; otherwise, false. If is null, the method returns false. - The string to compare to this instance. - 2 - - - Determines whether this instance and another specified object have the same value. - true if the value of the parameter is the same as the value of this instance; otherwise, false. If is null, the method returns false. - The string to compare to this instance. - 2 - - - Determines whether two specified objects have the same value. - true if the value of is the same as the value of ; otherwise, false. If both and are null, the method returns true. - The first string to compare, or null. - The second string to compare, or null. - 1 - - - Determines whether two specified objects have the same value. A parameter specifies the culture, case, and sort rules used in the comparison. - true if the value of the parameter is equal to the value of the parameter; otherwise, false. - The first string to compare, or null. - The second string to compare, or null. - One of the enumeration values that specifies the rules for the comparison. - - is not a value. - 1 - - - Determines whether this string and a specified object have the same value. A parameter specifies the culture, case, and sort rules used in the comparison. - true if the value of the parameter is the same as this string; otherwise, false. - The string to compare to this instance. - One of the enumeration values that specifies how the strings will be compared. - - is not a value. - 2 - - - Replaces the format item or items in a specified string with the string representation of the corresponding object. A parameter supplies culture-specific formatting information. - A copy of in which the format item or items have been replaced by the string representation of . - An object that supplies culture-specific formatting information. - A composite format string. - The object to format. - - or is null. - - is invalid.-or- The index of a format item is less than zero, or greater than or equal to one. - - - Replaces the format items in a specified string with the string representation of two specified objects. A parameter supplies culture-specific formatting information. - A copy of in which format items are replaced by the string representations of and . - An object that supplies culture-specific formatting information. - A composite format string. - The first object to format. - The second object to format. - - , , or is null. - - is invalid.-or- The index of a format item is less than zero, or greater than or equal to two. - - - Replaces the format items in a specified string with the string representation of three specified objects. An parameter supplies culture-specific formatting information. - A copy of in which the format items have been replaced by the string representations of , , and . - An object that supplies culture-specific formatting information. - A composite format string. - The first object to format. - The second object to format. - The third object to format. - - , , , or is null. - - is invalid.-or- The index of a format item is less than zero, or greater than or equal to three. - - - Replaces the format items in a specified string with the string representations of corresponding objects in a specified array. A parameter supplies culture-specific formatting information. - A copy of in which the format items have been replaced by the string representation of the corresponding objects in . - An object that supplies culture-specific formatting information. - A composite format string. - An object array that contains zero or more objects to format. - - or is null. - - is invalid.-or- The index of a format item is less than zero, or greater than or equal to the length of the array. - 1 - - - Replaces one or more format items in a specified string with the string representation of a specified object. - A copy of in which any format items are replaced by the string representation of . - A composite format string. - The object to format. - - is null. - The format item in is invalid.-or- The index of a format item is not zero. - 1 - - - Replaces the format items in a specified string with the string representation of two specified objects. - A copy of in which format items are replaced by the string representations of and . - A composite format string. - The first object to format. - The second object to format. - - is null. - - is invalid.-or- The index of a format item is not zero or one. - 1 - - - Replaces the format items in a specified string with the string representation of three specified objects. - A copy of in which the format items have been replaced by the string representations of , , and . - A composite format string. - The first object to format. - The second object to format. - The third object to format. - - is null. - - is invalid.-or- The index of a format item is less than zero, or greater than two. - 1 - - - Replaces the format item in a specified string with the string representation of a corresponding object in a specified array. - A copy of in which the format items have been replaced by the string representation of the corresponding objects in . - A composite format string. - An object array that contains zero or more objects to format. - - or is null. - - is invalid.-or- The index of a format item is less than zero, or greater than or equal to the length of the array. - 1 - - - Returns the hash code for this string. - A 32-bit signed integer hash code. - 2 - - - Reports the zero-based index of the first occurrence of the specified Unicode character in this string. - The zero-based index position of if that character is found, or -1 if it is not. - A Unicode character to seek. - 1 - - - Reports the zero-based index of the first occurrence of the specified Unicode character in this string. The search starts at a specified character position. - The zero-based index position of if that character is found, or -1 if it is not. - A Unicode character to seek. - The search starting position. - - is less than 0 (zero) or greater than the length of the string. - 1 - - - Reports the zero-based index of the first occurrence of the specified character in this instance. The search starts at a specified character position and examines a specified number of character positions. - The zero-based index position of if that character is found, or -1 if it is not. - A Unicode character to seek. - The search starting position. - The number of character positions to examine. - - or is negative.-or- is greater than the length of this string.-or- is greater than the length of this string minus . - 1 - - - Reports the zero-based index of the first occurrence of the specified string in this instance. - The zero-based index position of if that string is found, or -1 if it is not. If is , the return value is 0. - The string to seek. - - is null. - 1 - - - Reports the zero-based index of the first occurrence of the specified string in this instance. The search starts at a specified character position. - The zero-based index position of if that string is found, or -1 if it is not. If is , the return value is . - The string to seek. - The search starting position. - - is null. - - is less than 0 (zero) or greater than the length of this string. - 1 - - - Reports the zero-based index of the first occurrence of the specified string in this instance. The search starts at a specified character position and examines a specified number of character positions. - The zero-based index position of if that string is found, or -1 if it is not. If is , the return value is . - The string to seek. - The search starting position. - The number of character positions to examine. - - is null. - - or is negative.-or- is greater than the length of this string.-or- is greater than the length of this string minus . - 1 - - - Reports the zero-based index of the first occurrence of the specified string in the current object. Parameters specify the starting search position in the current string, the number of characters in the current string to search, and the type of search to use for the specified string. - The zero-based index position of the parameter if that string is found, or -1 if it is not. If is , the return value is . - The string to seek. - The search starting position. - The number of character positions to examine. - One of the enumeration values that specifies the rules for the search. - - is null. - - or is negative.-or- is greater than the length of this instance.-or- is greater than the length of this string minus . - - is not a valid value. - - - Reports the zero-based index of the first occurrence of the specified string in the current object. Parameters specify the starting search position in the current string and the type of search to use for the specified string. - The zero-based index position of the parameter if that string is found, or -1 if it is not. If is , the return value is . - The string to seek. - The search starting position. - One of the enumeration values that specifies the rules for the search. - - is null. - - is less than 0 (zero) or greater than the length of this string. - - is not a valid value. - - - Reports the zero-based index of the first occurrence of the specified string in the current object. A parameter specifies the type of search to use for the specified string. - The index position of the parameter if that string is found, or -1 if it is not. If is , the return value is 0. - The string to seek. - One of the enumeration values that specifies the rules for the search. - - is null. - - is not a valid value. - - - Reports the zero-based index of the first occurrence in this instance of any character in a specified array of Unicode characters. - The zero-based index position of the first occurrence in this instance where any character in was found; -1 if no character in was found. - A Unicode character array containing one or more characters to seek. - - is null. - 2 - - - Reports the zero-based index of the first occurrence in this instance of any character in a specified array of Unicode characters. The search starts at a specified character position. - The zero-based index position of the first occurrence in this instance where any character in was found; -1 if no character in was found. - A Unicode character array containing one or more characters to seek. - The search starting position. - - is null. - - is negative.-or- is greater than the number of characters in this instance. - 2 - - - Reports the zero-based index of the first occurrence in this instance of any character in a specified array of Unicode characters. The search starts at a specified character position and examines a specified number of character positions. - The zero-based index position of the first occurrence in this instance where any character in was found; -1 if no character in was found. - A Unicode character array containing one or more characters to seek. - The search starting position. - The number of character positions to examine. - - is null. - - or is negative.-or- + is greater than the number of characters in this instance. - 2 - - - Returns a new string in which a specified string is inserted at a specified index position in this instance. - A new string that is equivalent to this instance, but with inserted at position . - The zero-based index position of the insertion. - The string to insert. - - is null. - - is negative or greater than the length of this instance. - 1 - - - Indicates whether the specified string is null or an string. - true if the parameter is null or an empty string (""); otherwise, false. - The string to test. - 1 - - - Indicates whether a specified string is null, empty, or consists only of white-space characters. - true if the parameter is null or , or if consists exclusively of white-space characters. - The string to test. - - - Concatenates the members of a constructed collection of type , using the specified separator between each member. - A string that consists of the members of delimited by the string. If has no members, the method returns . - The string to use as a separator. is included in the returned string only if has more than one element. - A collection that contains the strings to concatenate. - - is null. - - - Concatenates the members of a collection, using the specified separator between each member. - A string that consists of the members of delimited by the string. If has no members, the method returns . - The string to use as a separator. is included in the returned string only if has more than one element. - A collection that contains the objects to concatenate. - The type of the members of . - - is null. - - - Concatenates the elements of an object array, using the specified separator between each element. - A string that consists of the elements of delimited by the string. If is an empty array, the method returns . - The string to use as a separator. is included in the returned string only if has more than one element. - An array that contains the elements to concatenate. - - is null. - - - Concatenates all the elements of a string array, using the specified separator between each element. - A string that consists of the elements in delimited by the string. If is an empty array, the method returns . - The string to use as a separator. is included in the returned string only if has more than one element. - An array that contains the elements to concatenate. - - is null. - 1 - - - Concatenates the specified elements of a string array, using the specified separator between each element. - A string that consists of the strings in delimited by the string. -or- if is zero, has no elements, or and all the elements of are . - The string to use as a separator. is included in the returned string only if has more than one element. - An array that contains the elements to concatenate. - The first element in to use. - The number of elements of to use. - - is null. - - or is less than 0.-or- plus is greater than the number of elements in . - Out of memory. - 1 - - - Reports the zero-based index position of the last occurrence of a specified Unicode character within this instance. - The zero-based index position of if that character is found, or -1 if it is not. - The Unicode character to seek. - 1 - - - Reports the zero-based index position of the last occurrence of a specified Unicode character within this instance. The search starts at a specified character position and proceeds backward toward the beginning of the string. - The zero-based index position of if that character is found, or -1 if it is not found or if the current instance equals . - The Unicode character to seek. - The starting position of the search. The search proceeds from toward the beginning of this instance. - The current instance does not equal , and is less than zero or greater than or equal to the length of this instance. - 1 - - - Reports the zero-based index position of the last occurrence of the specified Unicode character in a substring within this instance. The search starts at a specified character position and proceeds backward toward the beginning of the string for a specified number of character positions. - The zero-based index position of if that character is found, or -1 if it is not found or if the current instance equals . - The Unicode character to seek. - The starting position of the search. The search proceeds from toward the beginning of this instance. - The number of character positions to examine. - The current instance does not equal , and is less than zero or greater than or equal to the length of this instance.-or-The current instance does not equal , and - + 1 is less than zero. - 1 - - - Reports the zero-based index position of the last occurrence of a specified string within this instance. - The zero-based starting index position of if that string is found, or -1 if it is not. If is , the return value is the last index position in this instance. - The string to seek. - - is null. - 1 - - - Reports the zero-based index position of the last occurrence of a specified string within this instance. The search starts at a specified character position and proceeds backward toward the beginning of the string. - The zero-based starting index position of if that string is found, or -1 if it is not found or if the current instance equals . If is , the return value is the smaller of and the last index position in this instance. - The string to seek. - The search starting position. The search proceeds from toward the beginning of this instance. - - is null. - The current instance does not equal , and is less than zero or greater than the length of the current instance. -or-The current instance equals , and is less than -1 or greater than zero. - 1 - - - Reports the zero-based index position of the last occurrence of a specified string within this instance. The search starts at a specified character position and proceeds backward toward the beginning of the string for a specified number of character positions. - The zero-based starting index position of if that string is found, or -1 if it is not found or if the current instance equals . If is , the return value is the smaller of and the last index position in this instance. - The string to seek. - The search starting position. The search proceeds from toward the beginning of this instance. - The number of character positions to examine. - - is null. - - is negative.-or-The current instance does not equal , and is negative.-or- The current instance does not equal , and is greater than the length of this instance.-or-The current instance does not equal , and - + 1 specifies a position that is not within this instance. -or-The current instance equals and is less than -1 or greater than zero. -or-The current instance equals and is greater than 1. - 1 - - - Reports the zero-based index position of the last occurrence of a specified string within this instance. The search starts at a specified character position and proceeds backward toward the beginning of the string for the specified number of character positions. A parameter specifies the type of comparison to perform when searching for the specified string. - The zero-based starting index position of the parameter if that string is found, or -1 if it is not found or if the current instance equals . If is , the return value is the smaller of and the last index position in this instance. - The string to seek. - The search starting position. The search proceeds from toward the beginning of this instance. - The number of character positions to examine. - One of the enumeration values that specifies the rules for the search. - - is null. - - is negative.-or-The current instance does not equal , and is negative.-or- The current instance does not equal , and is greater than the length of this instance.-or-The current instance does not equal , and + 1 - specifies a position that is not within this instance. -or-The current instance equals and is less than -1 or greater than zero. -or-The current instance equals and is greater than 1. - - is not a valid value. - - - Reports the zero-based index of the last occurrence of a specified string within the current object. The search starts at a specified character position and proceeds backward toward the beginning of the string. A parameter specifies the type of comparison to perform when searching for the specified string. - The zero-based starting index position of the parameter if that string is found, or -1 if it is not found or if the current instance equals . If is , the return value is the smaller of and the last index position in this instance. - The string to seek. - The search starting position. The search proceeds from toward the beginning of this instance. - One of the enumeration values that specifies the rules for the search. - - is null. - The current instance does not equal , and is less than zero or greater than the length of the current instance. -or-The current instance equals , and is less than -1 or greater than zero. - - is not a valid value. - - - Reports the zero-based index of the last occurrence of a specified string within the current object. A parameter specifies the type of search to use for the specified string. - The zero-based starting index position of the parameter if that string is found, or -1 if it is not. If is , the return value is the last index position in this instance. - The string to seek. - One of the enumeration values that specifies the rules for the search. - - is null. - - is not a valid value. - - - Reports the zero-based index position of the last occurrence in this instance of one or more characters specified in a Unicode array. - The index position of the last occurrence in this instance where any character in was found; -1 if no character in was found. - A Unicode character array containing one or more characters to seek. - - is null. - 2 - - - Reports the zero-based index position of the last occurrence in this instance of one or more characters specified in a Unicode array. The search starts at a specified character position and proceeds backward toward the beginning of the string. - The index position of the last occurrence in this instance where any character in was found; -1 if no character in was found or if the current instance equals . - A Unicode character array containing one or more characters to seek. - The search starting position. The search proceeds from toward the beginning of this instance. - - is null. - The current instance does not equal , and specifies a position that is not within this instance. - 2 - - - Reports the zero-based index position of the last occurrence in this instance of one or more characters specified in a Unicode array. The search starts at a specified character position and proceeds backward toward the beginning of the string for a specified number of character positions. - The index position of the last occurrence in this instance where any character in was found; -1 if no character in was found or if the current instance equals . - A Unicode character array containing one or more characters to seek. - The search starting position. The search proceeds from toward the beginning of this instance. - The number of character positions to examine. - - is null. - The current instance does not equal , and or is negative.-or- The current instance does not equal , and minus + 1 is less than zero. - 2 - - - Gets the number of characters in the current object. - The number of characters in the current string. - 1 - - - Determines whether two specified strings have the same value. - true if the value of is the same as the value of ; otherwise, false. - The first string to compare, or null. - The second string to compare, or null. - 3 - - - Determines whether two specified strings have different values. - true if the value of is different from the value of ; otherwise, false. - The first string to compare, or null. - The second string to compare, or null. - 3 - - - Returns a new string that right-aligns the characters in this instance by padding them with spaces on the left, for a specified total length. - A new string that is equivalent to this instance, but right-aligned and padded on the left with as many spaces as needed to create a length of . However, if is less than the length of this instance, the method returns a reference to the existing instance. If is equal to the length of this instance, the method returns a new string that is identical to this instance. - The number of characters in the resulting string, equal to the number of original characters plus any additional padding characters. - - is less than zero. - 2 - - - Returns a new string that right-aligns the characters in this instance by padding them on the left with a specified Unicode character, for a specified total length. - A new string that is equivalent to this instance, but right-aligned and padded on the left with as many characters as needed to create a length of . However, if is less than the length of this instance, the method returns a reference to the existing instance. If is equal to the length of this instance, the method returns a new string that is identical to this instance. - The number of characters in the resulting string, equal to the number of original characters plus any additional padding characters. - A Unicode padding character. - - is less than zero. - 2 - - - Returns a new string that left-aligns the characters in this string by padding them with spaces on the right, for a specified total length. - A new string that is equivalent to this instance, but left-aligned and padded on the right with as many spaces as needed to create a length of . However, if is less than the length of this instance, the method returns a reference to the existing instance. If is equal to the length of this instance, the method returns a new string that is identical to this instance. - The number of characters in the resulting string, equal to the number of original characters plus any additional padding characters. - - is less than zero. - 2 - - - Returns a new string that left-aligns the characters in this string by padding them on the right with a specified Unicode character, for a specified total length. - A new string that is equivalent to this instance, but left-aligned and padded on the right with as many characters as needed to create a length of . However, if is less than the length of this instance, the method returns a reference to the existing instance. If is equal to the length of this instance, the method returns a new string that is identical to this instance. - The number of characters in the resulting string, equal to the number of original characters plus any additional padding characters. - A Unicode padding character. - - is less than zero. - 2 - - - Returns a new string in which all the characters in the current instance, beginning at a specified position and continuing through the last position, have been deleted. - A new string that is equivalent to this string except for the removed characters. - The zero-based position to begin deleting characters. - - is less than zero.-or- specifies a position that is not within this string. - 1 - - - Returns a new string in which a specified number of characters in the current instance beginning at a specified position have been deleted. - A new string that is equivalent to this instance except for the removed characters. - The zero-based position to begin deleting characters. - The number of characters to delete. - Either or is less than zero.-or- plus specify a position outside this instance. - 1 - - - Returns a new string in which all occurrences of a specified Unicode character in this instance are replaced with another specified Unicode character. - A string that is equivalent to this instance except that all instances of are replaced with . If is not found in the current instance, the method returns the current instance unchanged. - The Unicode character to be replaced. - The Unicode character to replace all occurrences of . - 1 - - - Returns a new string in which all occurrences of a specified string in the current instance are replaced with another specified string. - A string that is equivalent to the current string except that all instances of are replaced with . If is not found in the current instance, the method returns the current instance unchanged. - The string to be replaced. - The string to replace all occurrences of . - - is null. - - is the empty string (""). - 1 - - - Returns a string array that contains the substrings in this instance that are delimited by elements of a specified Unicode character array. - An array whose elements contain the substrings in this instance that are delimited by one or more characters in . For more information, see the Remarks section. - An array of Unicode characters that delimit the substrings in this instance, an empty array that contains no delimiters, or null. - 1 - - - Returns a string array that contains the substrings in this instance that are delimited by elements of a specified Unicode character array. A parameter specifies the maximum number of substrings to return. - An array whose elements contain the substrings in this instance that are delimited by one or more characters in . For more information, see the Remarks section. - An array of Unicode characters that delimit the substrings in this instance, an empty array that contains no delimiters, or null. - The maximum number of substrings to return. - - is negative. - 1 - - - Returns a string array that contains the substrings in this string that are delimited by elements of a specified Unicode character array. Parameters specify the maximum number of substrings to return and whether to return empty array elements. - An array whose elements contain the substrings in this string that are delimited by one or more characters in . For more information, see the Remarks section. - An array of Unicode characters that delimit the substrings in this string, an empty array that contains no delimiters, or null. - The maximum number of substrings to return. - - to omit empty array elements from the array returned; or to include empty array elements in the array returned. - - is negative. - - is not one of the values. - 1 - - - Returns a string array that contains the substrings in this string that are delimited by elements of a specified Unicode character array. A parameter specifies whether to return empty array elements. - An array whose elements contain the substrings in this string that are delimited by one or more characters in . For more information, see the Remarks section. - An array of Unicode characters that delimit the substrings in this string, an empty array that contains no delimiters, or null. - - to omit empty array elements from the array returned; or to include empty array elements in the array returned. - - is not one of the values. - 1 - - - Returns a string array that contains the substrings in this string that are delimited by elements of a specified string array. Parameters specify the maximum number of substrings to return and whether to return empty array elements. - An array whose elements contain the substrings in this string that are delimited by one or more strings in . For more information, see the Remarks section. - A string array that delimits the substrings in this string, an empty array that contains no delimiters, or null. - The maximum number of substrings to return. - - to omit empty array elements from the array returned; or to include empty array elements in the array returned. - - is negative. - - is not one of the values. - 1 - - - Returns a string array that contains the substrings in this string that are delimited by elements of a specified string array. A parameter specifies whether to return empty array elements. - An array whose elements contain the substrings in this string that are delimited by one or more strings in . For more information, see the Remarks section. - A string array that delimits the substrings in this string, an empty array that contains no delimiters, or null. - - to omit empty array elements from the array returned; or to include empty array elements in the array returned. - - is not one of the values. - 1 - - - Determines whether the beginning of this string instance matches the specified string. - true if matches the beginning of this string; otherwise, false. - The string to compare. - - is null. - 1 - - - Determines whether the beginning of this string instance matches the specified string when compared using the specified comparison option. - true if this instance begins with ; otherwise, false. - The string to compare. - One of the enumeration values that determines how this string and are compared. - - is null. - - is not a value. - - - Retrieves a substring from this instance. The substring starts at a specified character position and continues to the end of the string. - A string that is equivalent to the substring that begins at in this instance, or if is equal to the length of this instance. - The zero-based starting character position of a substring in this instance. - - is less than zero or greater than the length of this instance. - 1 - - - Retrieves a substring from this instance. The substring starts at a specified character position and has a specified length. - A string that is equivalent to the substring of length that begins at in this instance, or if is equal to the length of this instance and is zero. - The zero-based starting character position of a substring in this instance. - The number of characters in the substring. - - plus indicates a position not within this instance.-or- or is less than zero. - 1 - - - Returns an enumerator that iterates through the current object. - A of type that can be used to iterate through the current object. - - - Returns an enumerator that iterates through the current object. - An enumerator that can be used to iterate through the current string. - - - Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. - A signed integer that indicates the relative order of this instance and .Return value Meaning Less than zero This instance precedes in the sort order.Zero This instance occurs in the same position as in the sort order.Greater than zero This instance follows in the sort order.-or- is null. - An object to compare with this instance, or null. - - is not a . - - - - For a description of this member, see . - true if the value of the current string is ; false if the value of the current string is . - This parameter is ignored. - The value of the current string is not or . - - - For a description of this member, see . - The converted value of the current object. - An object that provides culture-specific formatting information. - The value of the current object cannot be parsed. - The value of the current object is a number greater than or less than . - - - For a description of this member, see . - The character at index 0 in the current object. - An object that provides culture-specific formatting information. - - - For a description of this member, see . - The converted value of the current object. - An object that provides culture-specific formatting information. - - - For a description of this member, see . - The converted value of the current object. - An object that provides culture-specific formatting information. - The value of the current object cannot be parsed. - The value of the current object is a number less than or than greater. - - - For a description of this member, see . - The converted value of the current object. - An object that provides culture-specific formatting information. - The value of the current object cannot be parsed. - The value of the current object is a number less than or greater than . - - - For a description of this member, see . - The converted value of the current object. - An object that provides culture-specific formatting information. - The value of the current object cannot be parsed. - The value of the current object is a number greater than or less than . - - - For a description of this member, see . - The converted value of the current object. - An object that provides culture-specific formatting information. - - - For a description of this member, see . - The converted value of the current object. - An object that provides culture-specific formatting information. - - - For a description of this member, see . - The converted value of the current object. - An object that provides culture-specific formatting information. - The value of the current object cannot be parsed. - The value of the current object is a number greater than or less than . - - - For a description of this member, see . - The converted value of the current object. - An object that provides culture-specific formatting information. - - - - For a description of this member, see . - The converted value of the current object. - The type of the returned object. - An object that provides culture-specific formatting information. - - is null. - The value of the current object cannot be converted to the type specified by the parameter. - - - For a description of this member, see . - The converted value of the current object. - An object that provides culture-specific formatting information. - The value of the current object cannot be parsed. - The value of the current object is a number greater than or less than . - - - For a description of this member, see . - The converted value of the current object. - An object that provides culture-specific formatting information. - The value of the current object cannot be parsed. - The value of the current object is a number greater or less than - - - For a description of this member, see . - The converted value of the current object. - An object that provides culture-specific formatting information. - - - Copies the characters in this instance to a Unicode character array. - A Unicode character array whose elements are the individual characters of this instance. If this instance is an empty string, the returned array is empty and has a zero length. - 1 - - - Copies the characters in a specified substring in this instance to a Unicode character array. - A Unicode character array whose elements are the number of characters in this instance starting from character position . - The starting position of a substring in this instance. - The length of the substring in this instance. - - or is less than zero.-or- plus is greater than the length of this instance. - 1 - - - Returns a copy of this string converted to lowercase. - A string in lowercase. - 1 - - - - - - Returns a copy of this object converted to lowercase using the casing rules of the invariant culture. - The lowercase equivalent of the current string. - 2 - - - - - - Returns this instance of ; no actual conversion is performed. - The current string. - 1 - - - Returns a copy of this string converted to uppercase. - The uppercase equivalent of the current string. - 1 - - - - - - Returns a copy of this object converted to uppercase using the casing rules of the invariant culture. - The uppercase equivalent of the current string. - 2 - - - - - - Removes all leading and trailing white-space characters from the current object. - The string that remains after all white-space characters are removed from the start and end of the current string. If no characters can be trimmed from the current instance, the method returns the current instance unchanged. - 1 - - - Removes all leading and trailing occurrences of a set of characters specified in an array from the current object. - The string that remains after all occurrences of the characters in the parameter are removed from the start and end of the current string. If is null or an empty array, white-space characters are removed instead. If no characters can be trimmed from the current instance, the method returns the current instance unchanged. - An array of Unicode characters to remove, or null. - 1 - - - Removes all trailing occurrences of a set of characters specified in an array from the current object. - The string that remains after all occurrences of the characters in the parameter are removed from the end of the current string. If is null or an empty array, Unicode white-space characters are removed instead. If no characters can be trimmed from the current instance, the method returns the current instance unchanged. - An array of Unicode characters to remove, or null. - 2 - - - Removes all leading occurrences of a set of characters specified in an array from the current object. - The string that remains after all occurrences of characters in the parameter are removed from the start of the current string. If is null or an empty array, white-space characters are removed instead. - An array of Unicode characters to remove, or null. - 2 - - - Specifies the culture, case, and sort rules to be used by certain overloads of the and methods. - 2 - - - Compare strings using culture-sensitive sort rules and the current culture. - - - Compare strings using culture-sensitive sort rules, the current culture, and ignoring the case of the strings being compared. - - - Compare strings using ordinal sort rules. - - - Compare strings using ordinal sort rules and ignoring the case of the strings being compared. - - - Specifies whether applicable method overloads include or omit empty substrings from the return value. - 1 - - - The return value includes array elements that contain an empty string - - - The return value does not include array elements that contain an empty string - - - Indicates that the value of a static field is unique for each thread. - 1 - - - Initializes a new instance of the class. - - - The exception that is thrown when the time allotted for a process or operation has expired. - 2 - - - Initializes a new instance of the class. - - - Initializes a new instance of the class with the specified error message. - The message that describes the error. - - - Initializes a new instance of the class with the specified error message and inner exception. - The message that describes the error. - The exception that is the cause of the current exception. If the parameter is not null, the current exception is raised in a catch block that handles the inner exception. - - - Represents a time interval.To browse the .NET Framework source code for this type, see the Reference Source. - 1 - - - Initializes a new instance of the structure to a specified number of hours, minutes, and seconds. - Number of hours. - Number of minutes. - Number of seconds. - The parameters specify a value less than or greater than . - - - Initializes a new instance of the structure to a specified number of days, hours, minutes, and seconds. - Number of days. - Number of hours. - Number of minutes. - Number of seconds. - The parameters specify a value less than or greater than . - - - Initializes a new instance of the structure to a specified number of days, hours, minutes, seconds, and milliseconds. - Number of days. - Number of hours. - Number of minutes. - Number of seconds. - Number of milliseconds. - The parameters specify a value less than or greater than . - - - Initializes a new instance of the structure to the specified number of ticks. - A time period expressed in 100-nanosecond units. - - - Returns a new object whose value is the sum of the specified object and this instance. - A new object that represents the value of this instance plus the value of . - The time interval to add. - The resulting is less than or greater than . - 1 - - - Compares two values and returns an integer that indicates whether the first value is shorter than, equal to, or longer than the second value. - One of the following values.Value Description -1 is shorter than . 0 is equal to . 1 is longer than . - The first time interval to compare. - The second time interval to compare. - 1 - - - Compares this instance to a specified object and returns an integer that indicates whether this instance is shorter than, equal to, or longer than the object. - A signed number indicating the relative values of this instance and .Value Description A negative integer This instance is shorter than . Zero This instance is equal to . A positive integer This instance is longer than . - An object to compare to this instance. - 1 - - - Gets the days component of the time interval represented by the current structure. - The day component of this instance. The return value can be positive or negative. - 1 - - - Returns a new object whose value is the absolute value of the current object. - A new object whose value is the absolute value of the current object. - The value of this instance is . - 1 - - - Returns a value indicating whether this instance is equal to a specified object. - true if is a object that represents the same time interval as the current structure; otherwise, false. - An object to compare with this instance. - 1 - - - Returns a value indicating whether this instance is equal to a specified object. - true if represents the same time interval as this instance; otherwise, false. - An object to compare with this instance. - 1 - - - Returns a value that indicates whether two specified instances of are equal. - true if the values of and are equal; otherwise, false. - The first time interval to compare. - The second time interval to compare. - 1 - - - Returns a that represents a specified number of days, where the specification is accurate to the nearest millisecond. - An object that represents . - A number of days, accurate to the nearest millisecond. - - is less than or greater than . -or- is .-or- is . - - is equal to . - 1 - - - Returns a that represents a specified number of hours, where the specification is accurate to the nearest millisecond. - An object that represents . - A number of hours accurate to the nearest millisecond. - - is less than or greater than . -or- is .-or- is . - - is equal to . - 1 - - - Returns a that represents a specified number of milliseconds. - An object that represents . - A number of milliseconds. - - is less than or greater than .-or- is .-or- is . - - is equal to . - 1 - - - Returns a that represents a specified number of minutes, where the specification is accurate to the nearest millisecond. - An object that represents . - A number of minutes, accurate to the nearest millisecond. - - is less than or greater than .-or- is .-or- is . - - is equal to . - 1 - - - Returns a that represents a specified number of seconds, where the specification is accurate to the nearest millisecond. - An object that represents . - A number of seconds, accurate to the nearest millisecond. - - is less than or greater than .-or- is .-or- is . - - is equal to . - 1 - - - Returns a that represents a specified time, where the specification is in units of ticks. - An object that represents . - A number of ticks that represent a time. - 1 - - - Returns a hash code for this instance. - A 32-bit signed integer hash code. - 2 - - - Gets the hours component of the time interval represented by the current structure. - The hour component of the current structure. The return value ranges from -23 through 23. - 1 - - - Represents the maximum value. This field is read-only. - 1 - - - Gets the milliseconds component of the time interval represented by the current structure. - The millisecond component of the current structure. The return value ranges from -999 through 999. - 1 - - - Gets the minutes component of the time interval represented by the current structure. - The minute component of the current structure. The return value ranges from -59 through 59. - 1 - - - Represents the minimum value. This field is read-only. - 1 - - - Returns a new object whose value is the negated value of this instance. - A new object with the same numeric value as this instance, but with the opposite sign. - The negated value of this instance cannot be represented by a ; that is, the value of this instance is . - 1 - - - Adds two specified instances. - An object whose value is the sum of the values of and . - The first time interval to add. - The second time interval to add. - The resulting is less than or greater than . - 3 - - - Indicates whether two instances are equal. - true if the values of and are equal; otherwise, false. - The first time interval to compare. - The second time interval to compare. - 3 - - - Indicates whether a specified is greater than another specified . - true if the value of is greater than the value of ; otherwise, false. - The first time interval to compare. - The second time interval to compare. - 3 - - - Indicates whether a specified is greater than or equal to another specified . - true if the value of is greater than or equal to the value of ; otherwise, false. - The first time interval to compare. - The second time interval to compare. - 3 - - - Indicates whether two instances are not equal. - true if the values of and are not equal; otherwise, false. - The first time interval to compare. - The second time interval to compare. - 3 - - - Indicates whether a specified is less than another specified . - true if the value of is less than the value of ; otherwise, false. - The first time interval to compare. - The second time interval to compare. - 3 - - - Indicates whether a specified is less than or equal to another specified . - true if the value of is less than or equal to the value of ; otherwise, false. - The first time interval to compare. - The second time interval to compare. - 3 - - - Subtracts a specified from another specified . - An object whose value is the result of the value of minus the value of . - The minuend. - The subtrahend. - The return value is less than or greater than . - 3 - - - Returns a whose value is the negated value of the specified instance. - An object that has the same numeric value as this instance, but the opposite sign. - The time interval to be negated. - The negated value of this instance cannot be represented by a ; that is, the value of this instance is . - 3 - - - Returns the specified instance of . - The time interval specified by . - The time interval to return. - 3 - - - Converts the string representation of a time interval to its equivalent. - A time interval that corresponds to . - A string that specifies the time interval to convert. - - is null. - - has an invalid format. - - represents a number that is less than or greater than .-or- At least one of the days, hours, minutes, or seconds components is outside its valid range. - 1 - - - Converts the string representation of a time interval to its equivalent by using the specified culture-specific format information. - A time interval that corresponds to , as specified by . - A string that specifies the time interval to convert. - An object that supplies culture-specific formatting information. - - is null. - - has an invalid format. - - represents a number that is less than or greater than .-or- At least one of the days, hours, minutes, or seconds components in is outside its valid range. - - - Converts the string representation of a time interval to its equivalent by using the specified format and culture-specific format information. The format of the string representation must match the specified format exactly. - A time interval that corresponds to , as specified by and . - A string that specifies the time interval to convert. - A standard or custom format string that defines the required format of . - An object that provides culture-specific formatting information. - - is null. - - has an invalid format. - - represents a number that is less than or greater than .-or- At least one of the days, hours, minutes, or seconds components in is outside its valid range. - - - Converts the string representation of a time interval to its equivalent by using the specified format, culture-specific format information, and styles. The format of the string representation must match the specified format exactly. - A time interval that corresponds to , as specified by , , and . - A string that specifies the time interval to convert. - A standard or custom format string that defines the required format of . - An object that provides culture-specific formatting information. - A bitwise combination of enumeration values that defines the style elements that may be present in . - - is an invalid value. - - is null. - - has an invalid format. - - represents a number that is less than or greater than .-or- At least one of the days, hours, minutes, or seconds components in is outside its valid range. - - - Converts the string representation of a time interval to its equivalent by using the specified array of format strings and culture-specific format information. The format of the string representation must match one of the specified formats exactly. - A time interval that corresponds to , as specified by and . - A string that specifies the time interval to convert. - A array of standard or custom format strings that defines the required format of . - An object that provides culture-specific formatting information. - - is null. - - has an invalid format. - - represents a number that is less than or greater than .-or- At least one of the days, hours, minutes, or seconds components in is outside its valid range. - - - Converts the string representation of a time interval to its equivalent by using the specified formats, culture-specific format information, and styles. The format of the string representation must match one of the specified formats exactly. - A time interval that corresponds to , as specified by , , and . - A string that specifies the time interval to convert. - A array of standard or custom format strings that define the required format of . - An object that provides culture-specific formatting information. - A bitwise combination of enumeration values that defines the style elements that may be present in input. - - is an invalid value. - - is null. - - has an invalid format. - - represents a number that is less than or greater than .-or- At least one of the days, hours, minutes, or seconds components in is outside its valid range. - - - Gets the seconds component of the time interval represented by the current structure. - The second component of the current structure. The return value ranges from -59 through 59. - 1 - - - Returns a new object whose value is the difference between the specified object and this instance. - A new time interval whose value is the result of the value of this instance minus the value of . - The time interval to be subtracted. - The return value is less than or greater than . - 1 - - - Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. - A signed integer that indicates the relative order of this instance and .Return value Meaning Less than zero This instance precedes in the sort order.Zero This instance occurs in the same position as in the sort order.Greater than zero This instance follows in the sort order.-or- is null. - An object to compare with this instance, or null. - - is not a object. - - - Gets the number of ticks that represent the value of the current structure. - The number of ticks contained in this instance. - 1 - - - Represents the number of ticks in 1 day. This field is constant. - 1 - - - Represents the number of ticks in 1 hour. This field is constant. - 1 - - - Represents the number of ticks in 1 millisecond. This field is constant. - 1 - - - Represents the number of ticks in 1 minute. This field is constant. - 1 - - - Represents the number of ticks in 1 second. - 1 - - - Converts the value of the current object to its equivalent string representation. - The string representation of the current value. - 1 - - - Converts the value of the current object to its equivalent string representation by using the specified format. - The string representation of the current value in the format specified by the parameter. - A standard or custom format string. - The parameter is not recognized or is not supported. - - - Converts the value of the current object to its equivalent string representation by using the specified format and culture-specific formatting information. - The string representation of the current value, as specified by and . - A standard or custom format string. - An object that supplies culture-specific formatting information. - The parameter is not recognized or is not supported. - - - Gets the value of the current structure expressed in whole and fractional days. - The total number of days represented by this instance. - 1 - - - Gets the value of the current structure expressed in whole and fractional hours. - The total number of hours represented by this instance. - 1 - - - Gets the value of the current structure expressed in whole and fractional milliseconds. - The total number of milliseconds represented by this instance. - 1 - - - Gets the value of the current structure expressed in whole and fractional minutes. - The total number of minutes represented by this instance. - 1 - - - Gets the value of the current structure expressed in whole and fractional seconds. - The total number of seconds represented by this instance. - 1 - - - Converts the string representation of a time interval to its equivalent by using the specified culture-specific formatting information, and returns a value that indicates whether the conversion succeeded. - true if was converted successfully; otherwise, false. This operation returns false if the parameter is null or , has an invalid format, represents a time interval that is less than or greater than , or has at least one days, hours, minutes, or seconds component outside its valid range. - A string that specifies the time interval to convert. - An object that supplies culture-specific formatting information. - When this method returns, contains an object that represents the time interval specified by , or if the conversion failed. This parameter is passed uninitialized. - - - Converts the string representation of a time interval to its equivalent and returns a value that indicates whether the conversion succeeded. - true if was converted successfully; otherwise, false. This operation returns false if the parameter is null or , has an invalid format, represents a time interval that is less than or greater than , or has at least one days, hours, minutes, or seconds component outside its valid range. - A string that specifies the time interval to convert. - When this method returns, contains an object that represents the time interval specified by , or if the conversion failed. This parameter is passed uninitialized. - 1 - - - Converts the string representation of a time interval to its equivalent by using the specified format, culture-specific format information, and styles, and returns a value that indicates whether the conversion succeeded. The format of the string representation must match the specified format exactly. - true if was converted successfully; otherwise, false. - A string that specifies the time interval to convert. - A standard or custom format string that defines the required format of . - An object that provides culture-specific formatting information. - One or more enumeration values that indicate the style of . - When this method returns, contains an object that represents the time interval specified by , or if the conversion failed. This parameter is passed uninitialized. - - - Converts the string representation of a time interval to its equivalent by using the specified format and culture-specific format information, and returns a value that indicates whether the conversion succeeded. The format of the string representation must match the specified format exactly. - true if was converted successfully; otherwise, false. - A string that specifies the time interval to convert. - A standard or custom format string that defines the required format of . - An object that supplies culture-specific formatting information. - When this method returns, contains an object that represents the time interval specified by , or if the conversion failed. This parameter is passed uninitialized. - - - Converts the specified string representation of a time interval to its equivalent by using the specified formats, culture-specific format information, and styles, and returns a value that indicates whether the conversion succeeded. The format of the string representation must match one of the specified formats exactly. - true if was converted successfully; otherwise, false. - A string that specifies the time interval to convert. - A array of standard or custom format strings that define the acceptable formats of . - An object that supplies culture-specific formatting information. - One or more enumeration values that indicate the style of . - When this method returns, contains an object that represents the time interval specified by , or if the conversion failed. This parameter is passed uninitialized. - - - Converts the specified string representation of a time interval to its equivalent by using the specified formats and culture-specific format information, and returns a value that indicates whether the conversion succeeded. The format of the string representation must match one of the specified formats exactly. - true if was converted successfully; otherwise, false. - A string that specifies the time interval to convert. - A array of standard or custom format strings that define the acceptable formats of . - An object that provides culture-specific formatting information. - When this method returns, contains an object that represents the time interval specified by , or if the conversion failed. This parameter is passed uninitialized. - - - Represents the zero value. This field is read-only. - 1 - - - Represents any time zone in the world. - - - Gets the time difference between the current time zone's standard time and Coordinated Universal Time (UTC). - An object that indicates the time difference between the current time zone's standard time and Coordinated Universal Time (UTC). - - - Converts a time to the time in a particular time zone. - The date and time in the destination time zone. - The date and time to convert. - The time zone to convert to. - The value of the parameter represents an invalid time. - The value of the parameter is null. - - - Converts a time from one time zone to another. - The date and time in the destination time zone that corresponds to the parameter in the source time zone. - The date and time to convert. - The time zone of . - The time zone to convert to. - The property of the parameter is , but the parameter does not equal . For more information, see the Remarks section. -or-The property of the parameter is , but the parameter does not equal .-or-The parameter is an invalid time (that is, it represents a time that does not exist because of a time zone's adjustment rules). - The parameter is null.-or-The parameter is null. - - - Converts a time to the time in a particular time zone. - The date and time in the destination time zone. - The date and time to convert. - The time zone to convert to. - The value of the parameter is null. - - - Gets the display name for the current time zone's daylight saving time. - The display name for the time zone's daylight saving time. - - - Gets the general display name that represents the time zone. - The time zone's general display name. - - - Determines whether the current object and another object are equal. - true if the two objects are equal; otherwise, false. - A second object to compare with the current object. - 2 - - - Retrieves a object from the registry based on its identifier. - An object whose identifier is the value of the parameter. - The time zone identifier, which corresponds to the property. - The system does not have enough memory to hold information about the time zone. - The parameter is null. - The time zone identifier specified by was not found. This means that a registry key whose name matches does not exist, or that the key exists but does not contain any time zone data. - The process does not have the permissions required to read from the registry key that contains the time zone information. - The time zone identifier was found, but the registry data is corrupted. - - - Returns information about the possible dates and times that an ambiguous date and time can be mapped to. - An array of objects that represents possible Coordinated Universal Time (UTC) offsets that a particular date and time can be mapped to. - A date and time. - - is not an ambiguous time. - 2 - - - Returns information about the possible dates and times that an ambiguous date and time can be mapped to. - An array of objects that represents possible Coordinated Universal Time (UTC) offsets that a particular date and time can be mapped to. - A date and time. - - is not an ambiguous time. - 2 - - - Serves as a hash function for hashing algorithms and data structures such as hash tables. - A 32-bit signed integer that serves as the hash code for this object. - 2 - - - Returns a sorted collection of all the time zones about which information is available on the local system. - A read-only collection of objects. - There is insufficient memory to store all time zone information. - The user does not have permission to read from the registry keys that contain time zone information. - - - Calculates the offset or difference between the time in this time zone and Coordinated Universal Time (UTC) for a particular date and time. - An object that indicates the time difference between the two time zones. - The date and time to determine the offset for. - - - Calculates the offset or difference between the time in this time zone and Coordinated Universal Time (UTC) for a particular date and time. - An object that indicates the time difference between Coordinated Universal Time (UTC) and the current time zone. - The date and time to determine the offset for. - - - Gets the time zone identifier. - The time zone identifier. - - - Determines whether a particular date and time in a particular time zone is ambiguous and can be mapped to two or more Coordinated Universal Time (UTC) times. - true if the parameter is ambiguous; otherwise, false. - A date and time value. - The property of the value is and is an invalid time. - 2 - - - Determines whether a particular date and time in a particular time zone is ambiguous and can be mapped to two or more Coordinated Universal Time (UTC) times. - true if the parameter is ambiguous in the current time zone; otherwise, false. - A date and time. - 2 - - - Indicates whether a specified date and time falls in the range of daylight saving time for the time zone of the current object. - true if the parameter is a daylight saving time; otherwise, false. - A date and time value. - The property of the value is and is an invalid time. - - - Indicates whether a specified date and time falls in the range of daylight saving time for the time zone of the current object. - true if the parameter is a daylight saving time; otherwise, false. - A date and time value. - - - Indicates whether a particular date and time is invalid. - true if is invalid; otherwise, false. - A date and time value. - 2 - - - Gets a object that represents the local time zone. - An object that represents the local time zone. - - - Gets the display name for the time zone's standard time. - The display name of the time zone's standard time. - - - Gets a value indicating whether the time zone has any daylight saving time rules. - true if the time zone supports daylight saving time; otherwise, false. - - - Returns the current object's display name. - The value of the property of the current object. - - - Gets a object that represents the Coordinated Universal Time (UTC) zone. - An object that represents the Coordinated Universal Time (UTC) zone. - - - Provides static methods for creating tuple objects. To browse the .NET Framework source code for this type, see the Reference Source. - - - Creates a new 1-tuple, or singleton. - A tuple whose value is (). - The value of the only component of the tuple. - The type of the only component of the tuple. - - - Creates a new 2-tuple, or pair. - A 2-tuple whose value is (, ). - The value of the first component of the tuple. - The value of the second component of the tuple. - The type of the first component of the tuple. - The type of the second component of the tuple. - - - Creates a new 3-tuple, or triple. - A 3-tuple whose value is (, , ). - The value of the first component of the tuple. - The value of the second component of the tuple. - The value of the third component of the tuple. - The type of the first component of the tuple. - The type of the second component of the tuple. - The type of the third component of the tuple. - - - Creates a new 4-tuple, or quadruple. - A 4-tuple whose value is (, , , ). - The value of the first component of the tuple. - The value of the second component of the tuple. - The value of the third component of the tuple. - The value of the fourth component of the tuple. - The type of the first component of the tuple. - The type of the second component of the tuple. - The type of the third component of the tuple. - The type of the fourth component of the tuple. - - - Creates a new 5-tuple, or quintuple. - A 5-tuple whose value is (, , , , ). - The value of the first component of the tuple. - The value of the second component of the tuple. - The value of the third component of the tuple. - The value of the fourth component of the tuple. - The value of the fifth component of the tuple. - The type of the first component of the tuple. - The type of the second component of the tuple. - The type of the third component of the tuple. - The type of the fourth component of the tuple. - The type of the fifth component of the tuple. - - - Creates a new 6-tuple, or sextuple. - A 6-tuple whose value is (, , , , , ). - The value of the first component of the tuple. - The value of the second component of the tuple. - The value of the third component of the tuple. - The value of the fourth component of the tuple. - The value of the fifth component of the tuple. - The value of the sixth component of the tuple. - The type of the first component of the tuple. - The type of the second component of the tuple. - The type of the third component of the tuple. - The type of the fourth component of the tuple. - The type of the fifth component of the tuple. - The type of the sixth component of the tuple. - - - Creates a new 7-tuple, or septuple. - A 7-tuple whose value is (, , , , , , ). - The value of the first component of the tuple. - The value of the second component of the tuple. - The value of the third component of the tuple. - The value of the fourth component of the tuple. - The value of the fifth component of the tuple. - The value of the sixth component of the tuple. - The value of the seventh component of the tuple. - The type of the first component of the tuple. - The type of the second component of the tuple. - The type of the third component of the tuple. - The type of the fourth component of the tuple. - The type of the fifth component of the tuple. - The type of the sixth component of the tuple. - The type of the seventh component of the tuple. - - - Creates a new 8-tuple, or octuple. - An 8-tuple (octuple) whose value is (, , , , , , , ). - The value of the first component of the tuple. - The value of the second component of the tuple. - The value of the third component of the tuple. - The value of the fourth component of the tuple. - The value of the fifth component of the tuple. - The value of the sixth component of the tuple. - The value of the seventh component of the tuple. - The value of the eighth component of the tuple. - The type of the first component of the tuple. - The type of the second component of the tuple. - The type of the third component of the tuple. - The type of the fourth component of the tuple. - The type of the fifth component of the tuple. - The type of the sixth component of the tuple. - The type of the seventh component of the tuple. - The type of the eighth component of the tuple. - - - Represents a 1-tuple, or singleton. - The type of the tuple's only component. - 1 - - - Initializes a new instance of the class. - The value of the tuple's only component. - - - Returns a value that indicates whether the current object is equal to a specified object. - true if the current instance is equal to the specified object; otherwise, false. - The object to compare with this instance. - - - Returns the hash code for the current object. - A 32-bit signed integer hash code. - - - Gets the value of the object's single component. - The value of the current object's single component. - - - Compares the current object to a specified object by using a specified comparer, and returns an integer that indicates whether the current object is before, after, or in the same position as the specified object in the sort order. - A signed integer that indicates the relative position of this instance and in the sort order, as shown in the following table.ValueDescriptionA negative integerThis instance precedes .ZeroThis instance and have the same position in the sort order.A positive integerThis instance follows . - An object to compare with the current instance. - An object that provides custom rules for comparison. - - is not a object. - - - Returns a value that indicates whether the current object is equal to a specified object based on a specified comparison method. - true if the current instance is equal to the specified object; otherwise, false. - The object to compare with this instance. - An object that defines the method to use to evaluate whether the two objects are equal. - - - Calculates the hash code for the current object by using a specified computation method. - A 32-bit signed integer hash code. - An object whose method calculates the hash code of the current object. - - - Compares the current object to a specified object, and returns an integer that indicates whether the current object is before, after, or in the same position as the specified object in the sort order. - A signed integer that indicates the relative position of this instance and in the sort order, as shown in the following table.ValueDescriptionA negative integerThis instance precedes .ZeroThis instance and have the same position in the sort order.A positive integerThis instance follows . - An object to compare with the current instance. - - is not a object. - - - Returns a string that represents the value of this instance. - The string representation of this object. - - - Represents a 2-tuple, or pair. - The type of the tuple's first component. - The type of the tuple's second component. - 2 - - - Initializes a new instance of the class. - The value of the tuple's first component. - The value of the tuple's second component. - - - Returns a value that indicates whether the current object is equal to a specified object. - true if the current instance is equal to the specified object; otherwise, false. - The object to compare with this instance. - - - Returns the hash code for the current object. - A 32-bit signed integer hash code. - - - Gets the value of the current object's first component. - The value of the current object's first component. - - - Gets the value of the current object's second component. - The value of the current object's second component. - - - Compares the current object to a specified object by using a specified comparer, and returns an integer that indicates whether the current object is before, after, or in the same position as the specified object in the sort order. - A signed integer that indicates the relative position of this instance and in the sort order, as shown in the following table.ValueDescriptionA negative integerThis instance precedes .ZeroThis instance and have the same position in the sort order.A positive integerThis instance follows . - An object to compare with the current instance. - An object that provides custom rules for comparison. - - is not a object. - - - Returns a value that indicates whether the current object is equal to a specified object based on a specified comparison method. - true if the current instance is equal to the specified object; otherwise, false. - The object to compare with this instance. - An object that defines the method to use to evaluate whether the two objects are equal. - - - Calculates the hash code for the current object by using a specified computation method. - A 32-bit signed integer hash code. - An object whose method calculates the hash code of the current object. - - - Compares the current object to a specified object and returns an integer that indicates whether the current object is before, after, or in the same position as the specified object in the sort order. - A signed integer that indicates the relative position of this instance and in the sort order, as shown in the following table.ValueDescriptionA negative integerThis instance precedes .ZeroThis instance and have the same position in the sort order.A positive integerThis instance follows . - An object to compare with the current instance. - - is not a object. - - - Returns a string that represents the value of this instance. - The string representation of this object. - - - Represents a 3-tuple, or triple. - The type of the tuple's first component. - The type of the tuple's second component. - The type of the tuple's third component. - 2 - - - Initializes a new instance of the class. - The value of the tuple's first component. - The value of the tuple's second component. - The value of the tuple's third component. - - - Returns a value that indicates whether the current object is equal to a specified object. - true if the current instance is equal to the specified object; otherwise, false. - The object to compare with this instance. - - - Returns the hash code for the current object. - A 32-bit signed integer hash code. - - - Gets the value of the current object's first component. - The value of the current object's first component. - - - Gets the value of the current object's second component. - The value of the current object's second component. - - - Gets the value of the current object's third component. - The value of the current object's third component. - - - Compares the current object to a specified object by using a specified comparer, and returns an integer that indicates whether the current object is before, after, or in the same position as the specified object in the sort order. - A signed integer that indicates the relative position of this instance and in the sort order, as shown in the following table.ValueDescriptionA negative integerThis instance precedes .ZeroThis instance and have the same position in the sort order.A positive integerThis instance follows . - An object to compare with the current instance. - An object that provides custom rules for comparison. - - is not a object. - - - Returns a value that indicates whether the current object is equal to a specified object based on a specified comparison method. - true if the current instance is equal to the specified object; otherwise, false. - The object to compare with this instance. - An object that defines the method to use to evaluate whether the two objects are equal. - - - Calculates the hash code for the current object by using a specified computation method. - A 32-bit signed integer hash code. - An object whose method calculates the hash code of the current object. - - - Compares the current object to a specified object and returns an integer that indicates whether the current object is before, after, or in the same position as the specified object in the sort order. - A signed integer that indicates the relative position of this instance and in the sort order, as shown in the following table.ValueDescriptionA negative integerThis instance precedes .ZeroThis instance and have the same position in the sort order.A positive integerThis instance follows . - An object to compare with the current instance. - - is not a object. - - - Returns a string that represents the value of this instance. - The string representation of this object. - - - Represents a 4-tuple, or quadruple. - The type of the tuple's first component. - The type of the tuple's second component. - The type of the tuple's third component. - The type of the tuple's fourth component. - 2 - - - Initializes a new instance of the class. - The value of the tuple's first component. - The value of the tuple's second component. - The value of the tuple's third component. - The value of the tuple's fourth component - - - Returns a value that indicates whether the current object is equal to a specified object. - true if the current instance is equal to the specified object; otherwise, false. - The object to compare with this instance. - - - Returns the hash code for the current object. - A 32-bit signed integer hash code. - - - Gets the value of the current object's first component. - The value of the current object's first component. - - - Gets the value of the current object's second component. - The value of the current object's second component. - - - Gets the value of the current object's third component. - The value of the current object's third component. - - - Gets the value of the current object's fourth component. - The value of the current object's fourth component. - - - Compares the current object to a specified object by using a specified comparer and returns an integer that indicates whether the current object is before, after, or in the same position as the specified object in the sort order. - A signed integer that indicates the relative position of this instance and in the sort order, as shown in the following table.ValueDescriptionA negative integerThis instance precedes .ZeroThis instance and have the same position in the sort order.A positive integerThis instance follows . - An object to compare with the current instance. - An object that provides custom rules for comparison. - - is not a object. - - - Returns a value that indicates whether the current object is equal to a specified object based on a specified comparison method. - true if the current instance is equal to the specified object; otherwise, false. - The object to compare with this instance. - An object that defines the method to use to evaluate whether the two objects are equal. - - - Calculates the hash code for the current object by using a specified computation method. - A 32-bit signed integer hash code. - An object whose method calculates the hash code of the current object. - - - Compares the current object to a specified object and returns an integer that indicates whether the current object is before, after, or in the same position as the specified object in the sort order. - A signed integer that indicates the relative position of this instance and in the sort order, as shown in the following table.ValueDescriptionA negative integerThis instance precedes .ZeroThis instance and have the same position in the sort order.A positive integerThis instance follows . - An object to compare with the current instance. - - is not a object. - - - Returns a string that represents the value of this instance. - The string representation of this object. - - - Represents a 5-tuple, or quintuple. - The type of the tuple's first component. - The type of the tuple's second component. - The type of the tuple's third component. - The type of the tuple's fourth component. - The type of the tuple's fifth component. - 2 - - - Initializes a new instance of the class. - The value of the tuple's first component. - The value of the tuple's second component. - The value of the tuple's third component. - The value of the tuple's fourth component - The value of the tuple's fifth component. - - - Returns a value that indicates whether the current object is equal to a specified object. - true if the current instance is equal to the specified object; otherwise, false. - The object to compare with this instance. - - - Returns the hash code for the current object. - A 32-bit signed integer hash code. - - - Gets the value of the current object's first component. - The value of the current object's first component. - - - Gets the value of the current object's second component. - The value of the current object's second component. - - - Gets the value of the current object's third component. - The value of the current object's third component. - - - Gets the value of the current object's fourth component. - The value of the current object's fourth component. - - - Gets the value of the current object's fifth component. - The value of the current object's fifth component. - - - Compares the current object to a specified object by using a specified comparer and returns an integer that indicates whether the current object is before, after, or in the same position as the specified object in the sort order. - A signed integer that indicates the relative position of this instance and in the sort order, as shown in the following table.ValueDescriptionA negative integerThis instance precedes .ZeroThis instance and have the same position in the sort order.A positive integerThis instance follows . - An object to compare with the current instance. - An object that provides custom rules for comparison. - - is not a object. - - - Returns a value that indicates whether the current object is equal to a specified object based on a specified comparison method. - true if the current instance is equal to the specified object; otherwise, false. - The object to compare with this instance. - An object that defines the method to use to evaluate whether the two objects are equal. - - - Calculates the hash code for the current object by using a specified computation method. - A 32-bit signed integer hash code. - An object whose method calculates the hash code of the current object. - - - Compares the current object to a specified object and returns an integer that indicates whether the current object is before, after, or in the same position as the specified object in the sort order. - A signed integer that indicates the relative position of this instance and in the sort order, as shown in the following table.ValueDescriptionA negative integerThis instance precedes .ZeroThis instance and have the same position in the sort order.A positive integerThis instance follows . - An object to compare with the current instance. - - is not a object. - - - Returns a string that represents the value of this instance. - The string representation of this object. - - - Represents a 6-tuple, or sextuple. - The type of the tuple's first component. - The type of the tuple's second component. - The type of the tuple's third component. - The type of the tuple's fourth component. - The type of the tuple's fifth component. - The type of the tuple's sixth component. - 2 - - - Initializes a new instance of the class. - The value of the tuple's first component. - The value of the tuple's second component. - The value of the tuple's third component. - The value of the tuple's fourth component - The value of the tuple's fifth component. - The value of the tuple's sixth component. - - - Returns a value that indicates whether the current object is equal to a specified object. - true if the current instance is equal to the specified object; otherwise, false. - The object to compare with this instance. - - - Returns the hash code for the current object. - A 32-bit signed integer hash code. - - - Gets the value of the current object's first component. - The value of the current object's first component. - - - Gets the value of the current object's second component. - The value of the current object's second component. - - - Gets the value of the current object's third component. - The value of the current object's third component. - - - Gets the value of the current object's fourth component. - The value of the current object's fourth component. - - - Gets the value of the current object's fifth component. - The value of the current object's fifth component. - - - Gets the value of the current object's sixth component. - The value of the current object's sixth component. - - - Compares the current object to a specified object by using a specified comparer and returns an integer that indicates whether the current object is before, after, or in the same position as the specified object in the sort order. - A signed integer that indicates the relative position of this instance and in the sort order, as shown in the following table.ValueDescriptionA negative integerThis instance precedes .ZeroThis instance and have the same position in the sort order.A positive integerThis instance follows . - An object to compare with the current instance. - An object that provides custom rules for comparison. - - is not a object. - - - Returns a value that indicates whether the current object is equal to a specified object based on a specified comparison method. - true if the current instance is equal to the specified object; otherwise, false. - The object to compare with this instance. - An object that defines the method to use to evaluate whether the two objects are equal. - - - Calculates the hash code for the current object by using a specified computation method. - A 32-bit signed integer hash code. - An object whose method calculates the hash code of the current object. - - - Compares the current object to a specified object and returns an integer that indicates whether the current object is before, after, or in the same position as the specified object in the sort order. - A signed integer that indicates the relative position of this instance and in the sort order, as shown in the following table.ValueDescriptionA negative integerThis instance precedes .ZeroThis instance and have the same position in the sort order.A positive integerThis instance follows . - An object to compare with the current instance. - - is not a object. - - - Returns a string that represents the value of this instance. - The string representation of this object. - - - Represents a 7-tuple, or septuple. - The type of the tuple's first component. - The type of the tuple's second component. - The type of the tuple's third component. - The type of the tuple's fourth component. - The type of the tuple's fifth component. - The type of the tuple's sixth component. - The type of the tuple's seventh component. - 2 - - - Initializes a new instance of the class. - The value of the tuple's first component. - The value of the tuple's second component. - The value of the tuple's third component. - The value of the tuple's fourth component - The value of the tuple's fifth component. - The value of the tuple's sixth component. - The value of the tuple's seventh component. - - - Returns a value that indicates whether the current object is equal to a specified object. - true if the current instance is equal to the specified object; otherwise, false. - The object to compare with this instance. - - - Returns the hash code for the current object. - A 32-bit signed integer hash code. - - - Gets the value of the current object's first component. - The value of the current object's first component. - - - Gets the value of the current object's second component. - The value of the current object's second component. - - - Gets the value of the current object's third component. - The value of the current object's third component. - - - Gets the value of the current object's fourth component. - The value of the current object's fourth component. - - - Gets the value of the current object's fifth component. - The value of the current object's fifth component. - - - Gets the value of the current object's sixth component. - The value of the current object's sixth component. - - - Gets the value of the current object's seventh component. - The value of the current object's seventh component. - - - Compares the current object to a specified object by using a specified comparer, and returns an integer that indicates whether the current object is before, after, or in the same position as the specified object in the sort order. - A signed integer that indicates the relative position of this instance and in the sort order, as shown in the following table.ValueDescriptionA negative integerThis instance precedes .ZeroThis instance and have the same position in the sort order.A positive integerThis instance follows . - An object to compare with the current instance. - An object that provides custom rules for comparison. - - is not a object. - - - Returns a value that indicates whether the current object is equal to a specified object based on a specified comparison method. - true if the current instance is equal to the specified object; otherwise, false. - The object to compare with this instance. - An object that defines the method to use to evaluate whether the two objects are equal. - - - Calculates the hash code for the current object by using a specified computation method. - A 32-bit signed integer hash code. - An object whose method calculates the hash code of the current object. - - - Compares the current object to a specified object and returns an integer that indicates whether the current object is before, after, or in the same position as the specified object in the sort order. - A signed integer that indicates the relative position of this instance and in the sort order, as shown in the following table.ValueDescriptionA negative integerThis instance precedes .ZeroThis instance and have the same position in the sort order.A positive integerThis instance follows . - An object to compare with the current instance. - - is not a object. - - - Returns a string that represents the value of this instance. - The string representation of this object. - - - Represents an n-tuple, where n is 8 or greater. - The type of the tuple's first component. - The type of the tuple's second component. - The type of the tuple's third component. - The type of the tuple's fourth component. - The type of the tuple's fifth component. - The type of the tuple's sixth component. - The type of the tuple's seventh component. - Any generic Tuple object that defines the types of the tuple's remaining components. - 2 - - - Initializes a new instance of the class. - The value of the tuple's first component. - The value of the tuple's second component. - The value of the tuple's third component. - The value of the tuple's fourth component - The value of the tuple's fifth component. - The value of the tuple's sixth component. - The value of the tuple's seventh component. - Any generic Tuple object that contains the values of the tuple's remaining components. - - is not a generic Tuple object. - - - Returns a value that indicates whether the current object is equal to a specified object. - true if the current instance is equal to the specified object; otherwise, false. - The object to compare with this instance. - - - Calculates the hash code for the current object. - A 32-bit signed integer hash code. - - - Gets the value of the current object's first component. - The value of the current object's first component. - - - Gets the value of the current object's second component. - The value of the current object's second component. - - - Gets the value of the current object's third component. - The value of the current object's third component. - - - Gets the value of the current object's fourth component. - The value of the current object's fourth component. - - - Gets the value of the current object's fifth component. - The value of the current object's fifth component. - - - Gets the value of the current object's sixth component. - The value of the current object's sixth component. - - - Gets the value of the current object's seventh component. - The value of the current object's seventh component. - - - Gets the current object's remaining components. - The value of the current object's remaining components. - - - Compares the current object to a specified object by using a specified comparer and returns an integer that indicates whether the current object is before, after, or in the same position as the specified object in the sort order. - A signed integer that indicates the relative position of this instance and in the sort order, as shown in the following table.ValueDescriptionA negative integerThis instance precedes .ZeroThis instance and have the same position in the sort order.A positive integerThis instance follows . - An object to compare with the current instance. - An object that provides custom rules for comparison. - - is not a object. - - - Returns a value that indicates whether the current object is equal to a specified object based on a specified comparison method. - true if the current instance is equal to the specified object; otherwise, false. - The object to compare with this instance. - An object that defines the method to use to evaluate whether the two objects are equal. - - - Calculates the hash code for the current object by using a specified computation method. - A 32-bit signed integer hash code. - An object whose method calculates the hash code of the current object. - - - Compares the current object to a specified object and returns an integer that indicates whether the current object is before, after, or in the same position as the specified object in the sort order. - A signed integer that indicates the relative position of this instance and in the sort order, as shown in the following table.ValueDescriptionA negative integerThis instance precedes .ZeroThis instance and have the same position in the sort order.A positive integerThis instance follows . - An object to compare with the current instance. - - is not a object. - - - Returns a string that represents the value of this instance. - The string representation of this object. - - - Represents type declarations: class types, interface types, array types, value types, enumeration types, type parameters, generic type definitions, and open or closed constructed generic types.To browse the .NET Framework source code for this type, see the Reference Source. - 1 - - - Gets the assembly-qualified name of the type, which includes the name of the assembly from which this object was loaded. - The assembly-qualified name of the , which includes the name of the assembly from which the was loaded, or null if the current instance represents a generic type parameter. - 2 - - - Gets the type that declares the current nested type or generic type parameter. - A object representing the enclosing type, if the current type is a nested type; or the generic type definition, if the current type is a type parameter of a generic type; or the type that declares the generic method, if the current type is a type parameter of a generic method; otherwise, null. - 1 - - - Represents an empty array of type . This field is read-only. - 1 - - - Determines if the underlying system type of the current is the same as the underlying system type of the specified . - true if the underlying system type of is the same as the underlying system type of the current ; otherwise, false. This method also returns false if the object specified by the parameter is not a Type. - The object whose underlying system type is to be compared with the underlying system type of the current . - 2 - - - Determines if the underlying system type of the current is the same as the underlying system type of the specified . - true if the underlying system type of is the same as the underlying system type of the current ; otherwise, false. - The object whose underlying system type is to be compared with the underlying system type of the current . - 2 - - - Gets the fully qualified name of the type, including its namespace but not its assembly. - The fully qualified name of the type, including its namespace but not its assembly; or null if the current instance represents a generic type parameter, an array type, pointer type, or byref type based on a type parameter, or a generic type that is not a generic type definition but contains unresolved type parameters. - 1 - - - Gets the position of the type parameter in the type parameter list of the generic type or method that declared the parameter, when the object represents a type parameter of a generic type or a generic method. - The position of a type parameter in the type parameter list of the generic type or method that defines the parameter. Position numbers begin at 0. - The current type does not represent a type parameter. That is, returns false. - 2 - - - Gets an array of the generic type arguments for this type. - An array of the generic type arguments for this type. - - - Gets the number of dimensions in an array. - An integer that contains the number of dimensions in the current type. - The functionality of this method is unsupported in the base class and must be implemented in a derived class instead. - The current type is not an array. - 2 - - - When overridden in a derived class, returns the of the object encompassed or referred to by the current array, pointer or reference type. - The of the object encompassed or referred to by the current array, pointer, or reference type, or null if the current is not an array or a pointer, or is not passed by reference, or represents a generic type or a type parameter in the definition of a generic type or generic method. - 2 - - - Returns a object that represents a generic type definition from which the current generic type can be constructed. - A object representing a generic type from which the current type can be constructed. - The current type is not a generic type. That is, returns false. - The invoked method is not supported in the base class. Derived classes must provide an implementation. - 2 - - - Returns the hash code for this instance. - The hash code for this instance. - 2 - - - Gets the with the specified name, performing a case-sensitive search. - The type with the specified name, if found; otherwise, null. - The assembly-qualified name of the type to get. See . If the type is in the currently executing assembly or in Mscorlib.dll, it is sufficient to supply the type name qualified by its namespace. - - is null. - A class initializer is invoked and throws an exception. - - represents a generic type that has a pointer type, a ByRef type, or as one of its type arguments.-or- represents a generic type that has an incorrect number of type arguments.-or- represents a generic type, and one of its type arguments does not satisfy the constraints for the corresponding type parameter. - - represents an array of . - In the .NET for Windows Store apps or the Portable Class Library, catch the base class exception, , instead.The assembly or one of its dependencies was found, but could not be loaded. - The assembly or one of its dependencies is not valid. -or-Version 2.0 or later of the common language runtime is currently loaded, and the assembly was compiled with a later version. - 1 - - - Gets the with the specified name, performing a case-sensitive search and specifying whether to throw an exception if the type is not found. - The type with the specified name. If the type is not found, the parameter specifies whether null is returned or an exception is thrown. In some cases, an exception is thrown regardless of the value of . See the Exceptions section. - The assembly-qualified name of the type to get. See . If the type is in the currently executing assembly or in Mscorlib.dll, it is sufficient to supply the type name qualified by its namespace. - true to throw an exception if the type cannot be found; false to return null. Specifying false also suppresses some other exception conditions, but not all of them. See the Exceptions section. - - is null. - A class initializer is invoked and throws an exception. - - is true and the type is not found. -or- is true and contains invalid characters, such as an embedded tab.-or- is true and is an empty string.-or- is true and represents an array type with an invalid size. -or- represents an array of . - - is true and contains invalid syntax. For example, "MyType[,*,]".-or- represents a generic type that has a pointer type, a ByRef type, or as one of its type arguments.-or- represents a generic type that has an incorrect number of type arguments.-or- represents a generic type, and one of its type arguments does not satisfy the constraints for the corresponding type parameter. - - is true and the assembly or one of its dependencies was not found. - In the .NET for Windows Store apps or the Portable Class Library, catch the base class exception, , instead.The assembly or one of its dependencies was found, but could not be loaded. - The assembly or one of its dependencies is not valid. -or-Version 2.0 or later of the common language runtime is currently loaded, and the assembly was compiled with a later version. - 1 - - - Gets the with the specified name, specifying whether to throw an exception if the type is not found and whether to perform a case-sensitive search. - The type with the specified name. If the type is not found, the parameter specifies whether null is returned or an exception is thrown. In some cases, an exception is thrown regardless of the value of . See the Exceptions section. - The assembly-qualified name of the type to get. See . If the type is in the currently executing assembly or in Mscorlib.dll, it is sufficient to supply the type name qualified by its namespace. - true to throw an exception if the type cannot be found; false to return null.Specifying false also suppresses some other exception conditions, but not all of them. See the Exceptions section. - true to perform a case-insensitive search for , false to perform a case-sensitive search for . - - is null. - A class initializer is invoked and throws an exception. - - is true and the type is not found. -or- is true and contains invalid characters, such as an embedded tab.-or- is true and is an empty string.-or- is true and represents an array type with an invalid size. -or- represents an array of . - - is true and contains invalid syntax. For example, "MyType[,*,]".-or- represents a generic type that has a pointer type, a ByRef type, or as one of its type arguments.-or- represents a generic type that has an incorrect number of type arguments.-or- represents a generic type, and one of its type arguments does not satisfy the constraints for the corresponding type parameter. - - is true and the assembly or one of its dependencies was not found. - The assembly or one of its dependencies was found, but could not be loaded. - The assembly or one of its dependencies is not valid. -or-Version 2.0 or later of the common language runtime is currently loaded, and the assembly was compiled with a later version. - 1 - - - Gets the type referenced by the specified type handle. - The type referenced by the specified , or null if the property of is null. - The object that refers to the type. - A class initializer is invoked and throws an exception. - 1 - - - Gets a value indicating whether the current encompasses or refers to another type; that is, whether the current is an array, a pointer, or is passed by reference. - true if the is an array, a pointer, or is passed by reference; otherwise, false. - 2 - - - Gets a value that indicates whether the type is an array. - true if the current type is an array; otherwise, false. - 2 - - - Gets a value indicating whether the is passed by reference. - true if the is passed by reference; otherwise, false. - 2 - - - Gets a value that indicates whether this object represents a constructed generic type. You can create instances of a constructed generic type. - true if this object represents a constructed generic type; otherwise, false. - - - Gets a value indicating whether the current represents a type parameter in the definition of a generic type or method. - true if the object represents a type parameter of a generic type definition or generic method definition; otherwise, false. - 2 - - - Gets a value indicating whether the current object represents a type whose definition is nested inside the definition of another type. - true if the is nested inside another type; otherwise, false. - 2 - - - Gets a value indicating whether the is a pointer. - true if the is a pointer; otherwise, false. - 2 - - - Returns a object representing a one-dimensional array of the current type, with a lower bound of zero. - A object representing a one-dimensional array of the current type, with a lower bound of zero. - The invoked method is not supported in the base class. Derived classes must provide an implementation. - The current type is .-or-The current type is a ByRef type. That is, returns true. - 2 - - - Returns a object representing an array of the current type, with the specified number of dimensions. - An object representing an array of the current type, with the specified number of dimensions. - The number of dimensions for the array. This number must be less than or equal to 32. - - is invalid. For example, 0 or negative. - The invoked method is not supported in the base class. - The current type is .-or-The current type is a ByRef type. That is, returns true. -or- is greater than 32. - 2 - - - Returns a object that represents the current type when passed as a ref parameter (ByRef parameter in Visual Basic). - A object that represents the current type when passed as a ref parameter (ByRef parameter in Visual Basic). - The invoked method is not supported in the base class. - The current type is .-or-The current type is a ByRef type. That is, returns true. - 2 - - - Substitutes the elements of an array of types for the type parameters of the current generic type definition and returns a object representing the resulting constructed type. - A representing the constructed type formed by substituting the elements of for the type parameters of the current generic type. - An array of types to be substituted for the type parameters of the current generic type. - The current type does not represent a generic type definition. That is, returns false. - - is null.-or- Any element of is null. - The number of elements in is not the same as the number of type parameters in the current generic type definition.-or- Any element of does not satisfy the constraints specified for the corresponding type parameter of the current generic type. -or- contains an element that is a pointer type ( returns true), a by-ref type ( returns true), or . - The invoked method is not supported in the base class. Derived classes must provide an implementation. - - - Returns a object that represents a pointer to the current type. - A object that represents a pointer to the current type. - The invoked method is not supported in the base class. - The current type is .-or-The current type is a ByRef type. That is, returns true. - 2 - - - Represents a missing value in the information. This field is read-only. - 1 - - - - Gets the namespace of the . - The namespace of the ; null if the current instance has no namespace or represents a generic parameter. - 2 - - - Returns a String representing the name of the current Type. - A representing the name of the current . - 2 - - - Gets the handle for the current . - The handle for the current . - The .NET Compact Framework does not currently support this property. - 1 - - - The exception that is thrown when a method attempts to use a type that it does not have access to. - - - Initializes a new instance of the class with a system-supplied message that describes the error. - - - Initializes a new instance of the class with a specified message that describes the error. - The message that describes the exception. The caller of this constructor must ensure that this string has been localized for the current system culture. - - - Initializes a new instance of the class with a specified error message and a reference to the inner exception that is the cause of this exception. - The message that describes the exception. The caller of this constructor must ensure that this string has been localized for the current system culture. - The exception that is the cause of the current exception. If the parameter is not null, the current exception is raised in a catch block that handles the inner exception. - - - Specifies the type of an object. - 2 - - - A simple type representing Boolean values of true or false. - - - An integral type representing unsigned 8-bit integers with values between 0 and 255. - - - An integral type representing unsigned 16-bit integers with values between 0 and 65535. The set of possible values for the type corresponds to the Unicode character set. - - - A type representing a date and time value. - - - A simple type representing values ranging from 1.0 x 10 -28 to approximately 7.9 x 10 28 with 28-29 significant digits. - - - A floating point type representing values ranging from approximately 5.0 x 10 -324 to 1.7 x 10 308 with a precision of 15-16 digits. - - - A null reference. - - - An integral type representing signed 16-bit integers with values between -32768 and 32767. - - - An integral type representing signed 32-bit integers with values between -2147483648 and 2147483647. - - - An integral type representing signed 64-bit integers with values between -9223372036854775808 and 9223372036854775807. - - - A general type representing any reference or value type not explicitly represented by another TypeCode. - - - An integral type representing signed 8-bit integers with values between -128 and 127. - - - A floating point type representing values ranging from approximately 1.5 x 10 -45 to 3.4 x 10 38 with a precision of 7 digits. - - - A sealed class type representing Unicode character strings. - - - An integral type representing unsigned 16-bit integers with values between 0 and 65535. - - - An integral type representing unsigned 32-bit integers with values between 0 and 4294967295. - - - An integral type representing unsigned 64-bit integers with values between 0 and 18446744073709551615. - - - The exception that is thrown as a wrapper around the exception thrown by the class initializer. This class cannot be inherited. - 2 - - - Initializes a new instance of the class with the default error message, the specified type name, and a reference to the inner exception that is the root cause of this exception. - The fully qualified name of the type that fails to initialize. - The exception that is the cause of the current exception. If the parameter is not a null reference (Nothing in Visual Basic), the current exception is raised in a catch block that handles the inner exception. - - - Gets the fully qualified name of the type that fails to initialize. - The fully qualified name of the type that fails to initialize. - 2 - - - The exception that is thrown when type-loading failures occur. - 2 - - - Initializes a new instance of the class. - - - Initializes a new instance of the class with a specified error message. - The message that describes the error. - - - Initializes a new instance of the class with a specified error message and a reference to the inner exception that is the cause of this exception. - The error message that explains the reason for the exception. - The exception that is the cause of the current exception. If the parameter is not null, the current exception is raised in a catch block that handles the inner exception. - - - Gets the error message for this exception. - The error message string. - 2 - - - Gets the fully qualified name of the type that causes the exception. - The fully qualified type name. - 2 - - - Represents a 16-bit unsigned integer. - 1 - - - Compares this instance to a specified 16-bit unsigned integer and returns an indication of their relative values. - A signed number indicating the relative values of this instance and .Return Value Description Less than zero This instance is less than . Zero This instance is equal to . Greater than zero This instance is greater than . - An unsigned integer to compare. - 2 - - - Returns a value indicating whether this instance is equal to a specified object. - true if is an instance of and equals the value of this instance; otherwise, false. - An object to compare to this instance. - 2 - - - Returns a value indicating whether this instance is equal to a specified value. - true if has the same value as this instance; otherwise, false. - A 16-bit unsigned integer to compare to this instance. - 2 - - - Returns the hash code for this instance. - A 32-bit signed integer hash code. - 2 - - - Represents the largest possible value of . This field is constant. - 1 - - - Represents the smallest possible value of . This field is constant. - 1 - - - Converts the string representation of a number to its 16-bit unsigned integer equivalent. - A 16-bit unsigned integer equivalent to the number contained in . - A string that represents the number to convert. - - is null. - - is not in the correct format. - - represents a number less than or greater than . - 1 - - - Converts the string representation of a number in a specified style to its 16-bit unsigned integer equivalent. - A 16-bit unsigned integer equivalent to the number specified in . - A string that represents the number to convert. The string is interpreted by using the style specified by the parameter. - A bitwise combination of the enumeration values that specify the permitted format of . A typical value to specify is . - - is null. - - is not a value. -or- is not a combination of and values. - - is not in a format compliant with . - - represents a number less than or greater than . -or- includes non-zero, fractional digits. - 1 - - - Converts the string representation of a number in a specified style and culture-specific format to its 16-bit unsigned integer equivalent. - A 16-bit unsigned integer equivalent to the number specified in . - A string that represents the number to convert. The string is interpreted by using the style specified by the parameter. - A bitwise combination of enumeration values that indicate the style elements that can be present in . A typical value to specify is . - An object that supplies culture-specific formatting information about . - - is null. - - is not a value. -or- is not a combination of and values. - - is not in a format compliant with . - - represents a number that is less than or greater than . -or- includes non-zero, fractional digits. - 1 - - - Converts the string representation of a number in a specified culture-specific format to its 16-bit unsigned integer equivalent. - A 16-bit unsigned integer equivalent to the number specified in . - A string that represents the number to convert. - An object that supplies culture-specific formatting information about . - - is null. - - is not in the correct format. - - represents a number less than or greater than . - 1 - - - Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. - A signed integer that indicates the relative order of this instance and .Return value Meaning Less than zero This instance precedes in the sort order.Zero This instance occurs in the same position as in the sort order.Greater than zero This instance follows in the sort order.-or- is null. - An object to compare with this instance, or null. - - is not a object. - - - - For a description of this member, see . - true if the value of the current instance is not zero; otherwise, false. - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - This conversion is not supported. Attempting to use this method throws an . - This conversion is not supported. No value is returned. - This parameter is ignored. - In all cases. - - - For a description of this member, see . - The current value of this instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The current value of this instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The current value of this instance, converted to an . - This parameter is ignored. - - - For a description of this member, see . - The value of this instance, converted to an . - This parameter is ignored. - - - For a description of this member, see . - The current value of this instance, converted to an . - This parameter is ignored. - - - For a description of this member, see . - The current value of this instance, converted to an . - This parameter is ignored. - - - For a description of this member, see . - The current value pf this instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The current value of this instance, converted to . - The type to which to convert this value. - An implementation that supplies information about the format of the returned value. - - - For a description of this member, see . - The current value of this instance, unchanged. - This parameter is ignored. - - - For a description of this member, see . - The current value of this instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The current value of this instance, converted to a . - This parameter is ignored. - - - Converts the numeric value of this instance to its equivalent string representation. - The string representation of the value of this instance, which consists of a sequence of digits ranging from 0 to 9, without a sign or leading zeros. - 1 - - - Converts the numeric value of this instance to its equivalent string representation using the specified culture-specific format information. - The string representation of the value of this instance, which consists of a sequence of digits ranging from 0 to 9, without a sign or leading zeros. - An object that supplies culture-specific formatting information. - 1 - - - Converts the numeric value of this instance to its equivalent string representation using the specified format. - The string representation of the value of this instance as specified by . - A numeric format string. - The parameter is invalid. - 1 - - - Converts the numeric value of this instance to its equivalent string representation using the specified format and culture-specific format information. - The string representation of the value of this instance, as specified by and . - A numeric format string. - An object that supplies culture-specific formatting information. - - is invalid. - 1 - - - Tries to convert the string representation of a number in a specified style and culture-specific format to its 16-bit unsigned integer equivalent. A return value indicates whether the conversion succeeded or failed. - true if was converted successfully; otherwise, false. - A string that represents the number to convert. The string is interpreted by using the style specified by the parameter. - A bitwise combination of enumeration values that indicates the permitted format of . A typical value to specify is . - An object that supplies culture-specific formatting information about . - When this method returns, contains the 16-bit unsigned integer value equivalent to the number contained in , if the conversion succeeded, or zero if the conversion failed. The conversion fails if the parameter is null or , is not in a format compliant with , or represents a number less than or greater than . This parameter is passed uninitialized; any value originally supplied in will be overwritten. - - is not a value. -or- is not a combination of and values. - 1 - - - Tries to convert the string representation of a number to its 16-bit unsigned integer equivalent. A return value indicates whether the conversion succeeded or failed. - true if was converted successfully; otherwise, false. - A string that represents the number to convert. - When this method returns, contains the 16-bit unsigned integer value that is equivalent to the number contained in , if the conversion succeeded, or zero if the conversion failed. The conversion fails if the parameter is null or , is not in the correct format. , or represents a number less than or greater than . This parameter is passed uninitialized; any value originally supplied in will be overwritten. - 1 - - - Represents a 32-bit unsigned integer. - 1 - - - Compares this instance to a specified 32-bit unsigned integer and returns an indication of their relative values. - A signed number indicating the relative values of this instance and .Return value Description Less than zero This instance is less than . Zero This instance is equal to . Greater than zero This instance is greater than . - An unsigned integer to compare. - 2 - - - Returns a value indicating whether this instance is equal to a specified object. - true if is an instance of and equals the value of this instance; otherwise, false. - An object to compare with this instance. - 2 - - - Returns a value indicating whether this instance is equal to a specified . - true if has the same value as this instance; otherwise, false. - A value to compare to this instance. - 2 - - - Returns the hash code for this instance. - A 32-bit signed integer hash code. - 2 - - - Represents the largest possible value of . This field is constant. - 1 - - - Represents the smallest possible value of . This field is constant. - 1 - - - Converts the string representation of a number to its 32-bit unsigned integer equivalent. - A 32-bit unsigned integer equivalent to the number contained in . - A string representing the number to convert. - The parameter is null. - The parameter is not of the correct format. - The parameter represents a number that is less than or greater than . - 1 - - - Converts the string representation of a number in a specified style to its 32-bit unsigned integer equivalent. - A 32-bit unsigned integer equivalent to the number specified in . - A string representing the number to convert. The string is interpreted by using the style specified by the parameter. - A bitwise combination of the enumeration values that specify the permitted format of . A typical value to specify is . - - is null. - - is not a value. -or- is not a combination of and values. - - is not in a format compliant with . - - represents a number that is less than or greater than . -or- includes non-zero, fractional digits. - 1 - - - Converts the string representation of a number in a specified style and culture-specific format to its 32-bit unsigned integer equivalent. - A 32-bit unsigned integer equivalent to the number specified in . - A string representing the number to convert. The string is interpreted by using the style specified by the parameter. - A bitwise combination of enumeration values that indicates the style elements that can be present in . A typical value to specify is . - An object that supplies culture-specific formatting information about . - - is null. - - is not a value. -or- is not a combination of and values. - - is not in a format compliant with . - - represents a number that is less than or greater than . -or- includes non-zero, fractional digits. - 1 - - - Converts the string representation of a number in a specified culture-specific format to its 32-bit unsigned integer equivalent. - A 32-bit unsigned integer equivalent to the number specified in . - A string that represents the number to convert. - An object that supplies culture-specific formatting information about . - - is null. - - is not in the correct style. - - represents a number that is less than or greater than . - 1 - - - Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. - A signed integer that indicates the relative order of this instance and .Return value Meaning Less than zero This instance precedes in the sort order.Zero This instance occurs in the same position as in the sort order.Greater than zero This instance follows in the sort order.-or- is null. - An object to compare with this instance, or null. - - is not a object. - - - - For a description of this member, see . - true if the value of the current instance is not zero; otherwise, false. - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - This conversion is not supported. Attempting to use this method throws an . - This conversion is not supported. No value is returned. - This parameter is ignored. - In all cases. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to an . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to an . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to an . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to an . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to . - The type to which to convert this value. - An implementation that supplies culture-specific information about the format of the returned value. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, unchanged. - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - Converts the numeric value of this instance to its equivalent string representation. - The string representation of the value of this instance, consisting of a sequence of digits ranging from 0 to 9, without a sign or leading zeroes. - 1 - - - Converts the numeric value of this instance to its equivalent string representation using the specified culture-specific format information. - The string representation of the value of this instance, which consists of a sequence of digits ranging from 0 to 9, without a sign or leading zeros. - An object that supplies culture-specific formatting information. - 1 - - - Converts the numeric value of this instance to its equivalent string representation using the specified format. - The string representation of the value of this instance as specified by . - A numeric format string. - The parameter is invalid. - 1 - - - Converts the numeric value of this instance to its equivalent string representation using the specified format and culture-specific format information. - The string representation of the value of this instance as specified by and . - A numeric format string. - An object that supplies culture-specific formatting information about this instance. - The parameter is invalid. - 1 - - - Tries to convert the string representation of a number in a specified style and culture-specific format to its 32-bit unsigned integer equivalent. A return value indicates whether the conversion succeeded or failed. - true if was converted successfully; otherwise, false. - A string that represents the number to convert. The string is interpreted by using the style specified by the parameter. - A bitwise combination of enumeration values that indicates the permitted format of . A typical value to specify is . - An object that supplies culture-specific formatting information about . - When this method returns, contains the 32-bit unsigned integer value equivalent to the number contained in , if the conversion succeeded, or zero if the conversion failed. The conversion fails if the parameter is null or , is not in a format compliant with , or represents a number that is less than or greater than . This parameter is passed uninitialized; any value originally supplied in will be overwritten. - - is not a value. -or- is not a combination of and values. - 1 - - - Tries to convert the string representation of a number to its 32-bit unsigned integer equivalent. A return value indicates whether the conversion succeeded or failed. - true if was converted successfully; otherwise, false. - A string that represents the number to convert. - When this method returns, contains the 32-bit unsigned integer value that is equivalent to the number contained in , if the conversion succeeded, or zero if the conversion failed. The conversion fails if the parameter is null or , is not of the correct format, or represents a number that is less than or greater than . This parameter is passed uninitialized; any value originally supplied in will be overwritten. - 1 - - - Represents a 64-bit unsigned integer. - 1 - - - Compares this instance to a specified 64-bit unsigned integer and returns an indication of their relative values. - A signed number indicating the relative values of this instance and .Return Value Description Less than zero This instance is less than . Zero This instance is equal to . Greater than zero This instance is greater than . - An unsigned integer to compare. - 2 - - - Returns a value indicating whether this instance is equal to a specified object. - true if is an instance of and equals the value of this instance; otherwise, false. - An object to compare to this instance. - 2 - - - Returns a value indicating whether this instance is equal to a specified value. - true if has the same value as this instance; otherwise, false. - A value to compare to this instance. - 2 - - - Returns the hash code for this instance. - A 32-bit signed integer hash code. - 2 - - - Represents the largest possible value of . This field is constant. - 1 - - - Represents the smallest possible value of . This field is constant. - 1 - - - Converts the string representation of a number to its 64-bit unsigned integer equivalent. - A 64-bit unsigned integer equivalent to the number contained in . - A string that represents the number to convert. - The parameter is null. - The parameter is not in the correct format. - The parameter represents a number less than or greater than . - 1 - - - Converts the string representation of a number in a specified style to its 64-bit unsigned integer equivalent. - A 64-bit unsigned integer equivalent to the number specified in . - A string that represents the number to convert. The string is interpreted by using the style specified by the parameter. - A bitwise combination of the enumeration values that specifies the permitted format of . A typical value to specify is . - The parameter is null. - - is not a value. -or- is not a combination of and values. - The parameter is not in a format compliant with . - The parameter represents a number less than or greater than . -or- includes non-zero, fractional digits. - 1 - - - Converts the string representation of a number in a specified style and culture-specific format to its 64-bit unsigned integer equivalent. - A 64-bit unsigned integer equivalent to the number specified in . - A string that represents the number to convert. The string is interpreted by using the style specified by the parameter. - A bitwise combination of enumeration values that indicates the style elements that can be present in . A typical value to specify is . - An object that supplies culture-specific formatting information about . - The parameter is null. - - is not a value. -or- is not a combination of and values. - The parameter is not in a format compliant with . - The parameter represents a number less than or greater than . -or- includes non-zero, fractional digits. - 1 - - - Converts the string representation of a number in a specified culture-specific format to its 64-bit unsigned integer equivalent. - A 64-bit unsigned integer equivalent to the number specified in . - A string that represents the number to convert. - An object that supplies culture-specific formatting information about . - The parameter is null. - The parameter is not in the correct style. - The parameter represents a number less than or greater than . - 1 - - - Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. - A signed integer that indicates the relative order of this instance and .Return value Meaning Less than zero This instance precedes in the sort order.Zero This instance occurs in the same position as in the sort order.Greater than zero This instance follows in the sort order.-or- is null. - An object to compare with this instance, or null. - - is not a object. - - - - For a description of this member, see . - true if the value of the current instance is not zero; otherwise, false. - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - This conversion is not supported. Attempting to use this method throws an . - This conversion is not supported. No value is returned. - This parameter is ignored. - In all cases. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to an . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to an . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to an . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to an . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to . - The type to which to convert this value. - An implementation that supplies information about the format of the returned value. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, converted to a . - This parameter is ignored. - - - For a description of this member, see . - The value of the current instance, unchanged. - This parameter is ignored. - - - Converts the numeric value of this instance to its equivalent string representation. - The string representation of the value of this instance, consisting of a sequence of digits ranging from 0 to 9, without a sign or leading zeroes. - 1 - - - Converts the numeric value of this instance to its equivalent string representation using the specified culture-specific format information. - The string representation of the value of this instance, consisting of a sequence of digits ranging from 0 to 9, without a sign or leading zeros. - An object that supplies culture-specific formatting information. - 1 - - - Converts the numeric value of this instance to its equivalent string representation using the specified format. - The string representation of the value of this instance as specified by . - A numeric format string. - The parameter is invalid. - 1 - - - Converts the numeric value of this instance to its equivalent string representation using the specified format and culture-specific format information. - The string representation of the value of this instance as specified by and . - A numeric format string. - An object that supplies culture-specific formatting information about this instance. - The parameter is invalid. - 1 - - - Tries to convert the string representation of a number in a specified style and culture-specific format to its 64-bit unsigned integer equivalent. A return value indicates whether the conversion succeeded or failed. - true if was converted successfully; otherwise, false. - A string that represents the number to convert. The string is interpreted by using the style specified by the parameter. - A bitwise combination of enumeration values that indicates the permitted format of . A typical value to specify is . - An object that supplies culture-specific formatting information about . - When this method returns, contains the 64-bit unsigned integer value equivalent to the number contained in , if the conversion succeeded, or zero if the conversion failed. The conversion fails if the parameter is null or , is not in a format compliant with , or represents a number less than or greater than . This parameter is passed uninitialized; any value originally supplied in will be overwritten. - - is not a value. -or- is not a combination of and values. - 1 - - - Tries to convert the string representation of a number to its 64-bit unsigned integer equivalent. A return value indicates whether the conversion succeeded or failed. - true if was converted successfully; otherwise, false. - A string that represents the number to convert. - When this method returns, contains the 64-bit unsigned integer value that is equivalent to the number contained in , if the conversion succeeded, or zero if the conversion failed. The conversion fails if the parameter is null or , is not of the correct format, or represents a number less than or greater than . This parameter is passed uninitialized; any value originally supplied in will be overwritten. - 1 - - - A platform-specific type that is used to represent a pointer or a handle. - 1 - - - Initializes a new instance of the structure using the specified 32-bit pointer or handle. - A pointer or handle contained in a 32-bit unsigned integer. - - - Initializes a new instance of using the specified 64-bit pointer or handle. - A pointer or handle contained in a 64-bit unsigned integer. - On a 32-bit platform, is too large to represent as an . - - - Initializes a new instance of using the specified pointer to an unspecified type. - A pointer to an unspecified type. - - - Adds an offset to the value of an unsigned pointer. - A new unsigned pointer that reflects the addition of to . - The unsigned pointer to add the offset to. - The offset to add. - - - Returns a value indicating whether this instance is equal to a specified object. - true if is an instance of and equals the value of this instance; otherwise, false. - An object to compare with this instance or null. - 2 - - - Returns the hash code for this instance. - A 32-bit signed integer hash code. - 2 - - - Adds an offset to the value of an unsigned pointer. - A new unsigned pointer that reflects the addition of to . - The unsigned pointer to add the offset to. - The offset to add. - - - Determines whether two specified instances of are equal. - true if equals ; otherwise, false. - The first pointer or handle to compare. - The second pointer or handle to compare. - 3 - - - Converts the value of a 32-bit unsigned integer to an . - A new instance of initialized to . - A 32-bit unsigned integer. - 3 - - - Converts the value of a 64-bit unsigned integer to an . - A new instance of initialized to . - A 64-bit unsigned integer. - On a 32-bit platform, is too large to represent as an . - 3 - - - Converts the value of the specified to a 64-bit unsigned integer. - The contents of . - The pointer or handle to convert. - 3 - - - Converts the value of the specified to a pointer to an unspecified type. - The contents of . - The pointer or handle to convert. - 3 - - - Converts the value of the specified to a 32-bit unsigned integer. - The contents of . - The pointer or handle to convert. - On a 64-bit platform, the value of is too large to represent as a 32-bit unsigned integer. - 3 - - - Converts the specified pointer to an unspecified type to a . - A new instance of initialized to . - A pointer to an unspecified type. - 3 - - - Determines whether two specified instances of are not equal. - true if does not equal ; otherwise, false. - The first pointer or handle to compare. - The second pointer or handle to compare. - 3 - - - Subtracts an offset from the value of an unsigned pointer. - A new unsigned pointer that reflects the subtraction of from . - The unsigned pointer to subtract the offset from. - The offset to subtract. - - - Gets the size of this instance. - The size of a pointer or handle on this platform, measured in bytes. The value of this property is 4 on a 32-bit platform, and 8 on a 64-bit platform. - 1 - - - Subtracts an offset from the value of an unsigned pointer. - A new unsigned pointer that reflects the subtraction of from . - The unsigned pointer to subtract the offset from. - The offset to subtract. - - - Converts the value of this instance to a pointer to an unspecified type. - A pointer to ; that is, a pointer to memory containing data of an unspecified type. - 1 - - - Converts the numeric value of this instance to its equivalent string representation. - The string representation of the value of this instance. - 1 - - - Converts the value of this instance to a 32-bit unsigned integer. - A 32-bit unsigned integer equal to the value of this instance. - On a 64-bit platform, the value of this instance is too large to represent as a 32-bit unsigned integer. - 1 - - - Converts the value of this instance to a 64-bit unsigned integer. - A 64-bit unsigned integer equal to the value of this instance. - 1 - - - A read-only field that represents a pointer or handle that has been initialized to zero. - 1 - - - The exception that is thrown when the operating system denies access because of an I/O error or a specific type of security error. - 2 - - - Initializes a new instance of the class. - - - Initializes a new instance of the class with a specified error message. - The message that describes the error. - - - Initializes a new instance of the class with a specified error message and a reference to the inner exception that is the cause of this exception. - The error message that explains the reason for the exception. - The exception that is the cause of the current exception. If the parameter is not a null reference (Nothing in Visual Basic), the current exception is raised in a catch block that handles the inner exception. - - - Provides an object representation of a uniform resource identifier (URI) and easy access to the parts of the URI. - 1 - - - Initializes a new instance of the class with the specified URI. - A URI. - - is null. - In the .NET for Windows Store apps or the Portable Class Library, catch the base class exception, , instead. is empty.-or- The scheme specified in is not correctly formed. See .-or- contains too many slashes.-or- The password specified in is not valid.-or- The host name specified in is not valid.-or- The file name specified in is not valid. -or- The user name specified in is not valid.-or- The host or authority name specified in cannot be terminated by backslashes.-or- The port number specified in is not valid or cannot be parsed.-or- The length of exceeds 65519 characters.-or- The length of the scheme specified in exceeds 1023 characters.-or- There is an invalid character sequence in .-or- The MS-DOS path specified in must start with c:\\. - - - Initializes a new instance of the class with the specified URI. This constructor allows you to specify if the URI string is a relative URI, absolute URI, or is indeterminate. - A string that identifies the resource to be represented by the instance. - Specifies whether the URI string is a relative URI, absolute URI, or is indeterminate. - - is invalid. - - is null. - In the .NET for Windows Store apps or the Portable Class Library, catch the base class exception, , instead. contains a relative URI and is .or contains an absolute URI and is .or is empty.-or- The scheme specified in is not correctly formed. See .-or- contains too many slashes.-or- The password specified in is not valid.-or- The host name specified in is not valid.-or- The file name specified in is not valid. -or- The user name specified in is not valid.-or- The host or authority name specified in cannot be terminated by backslashes.-or- The port number specified in is not valid or cannot be parsed.-or- The length of exceeds 65519 characters.-or- The length of the scheme specified in exceeds 1023 characters.-or- There is an invalid character sequence in .-or- The MS-DOS path specified in must start with c:\\. - - - Initializes a new instance of the class based on the specified base URI and relative URI string. - The base URI. - The relative URI to add to the base URI. - - is null. - - is not an absolute instance. - In the .NET for Windows Store apps or the Portable Class Library, catch the base class exception, , instead.The URI formed by combining and is empty or contains only spaces.-or- The scheme specified in the URI formed by combining and is not valid.-or- The URI formed by combining and contains too many slashes.-or- The password specified in the URI formed by combining and is not valid.-or- The host name specified in the URI formed by combining and is not valid.-or- The file name specified in the URI formed by combining and is not valid. -or- The user name specified in the URI formed by combining and is not valid.-or- The host or authority name specified in the URI formed by combining and cannot be terminated by backslashes.-or- The port number specified in the URI formed by combining and is not valid or cannot be parsed.-or- The length of the URI formed by combining and exceeds 65519 characters.-or- The length of the scheme specified in the URI formed by combining and exceeds 1023 characters.-or- There is an invalid character sequence in the URI formed by combining and .-or- The MS-DOS path specified in must start with c:\\. - - - Initializes a new instance of the class based on the combination of a specified base instance and a relative instance. - An absolute that is the base for the new instance. - A relative instance that is combined with . - - is not an absolute instance. - - is null. - - is not an absolute instance. - In the .NET for Windows Store apps or the Portable Class Library, catch the base class exception, , instead.The URI formed by combining and is empty or contains only spaces.-or- The scheme specified in the URI formed by combining and is not valid.-or- The URI formed by combining and contains too many slashes.-or- The password specified in the URI formed by combining and is not valid.-or- The host name specified in the URI formed by combining and is not valid.-or- The file name specified in the URI formed by combining and is not valid. -or- The user name specified in the URI formed by combining and is not valid.-or- The host or authority name specified in the URI formed by combining and cannot be terminated by backslashes.-or- The port number specified in the URI formed by combining and is not valid or cannot be parsed.-or- The length of the URI formed by combining and exceeds 65519 characters.-or- The length of the scheme specified in the URI formed by combining and exceeds 1023 characters.-or- There is an invalid character sequence in the URI formed by combining and .-or- The MS-DOS path specified in must start with c:\\. - - - Gets the absolute path of the URI. - A containing the absolute path to the resource. - This instance represents a relative URI, and this property is valid only for absolute URIs. - 1 - - - - - - Gets the absolute URI. - A containing the entire URI. - This instance represents a relative URI, and this property is valid only for absolute URIs. - 1 - - - - - - Gets the Domain Name System (DNS) host name or IP address and the port number for a server. - A containing the authority component of the URI represented by this instance. - This instance represents a relative URI, and this property is valid only for absolute URIs. - 1 - - - - - - Determines whether the specified host name is a valid DNS name. - A that indicates the type of the host name. If the type of the host name cannot be determined or if the host name is null or a zero-length string, this method returns . - The host name to validate. This can be an IPv4 or IPv6 address or an Internet host name. - 1 - - - Determines whether the specified scheme name is valid. - A value that is true if the scheme name is valid; otherwise, false. - The scheme name to validate. - 1 - - - Compares the specified parts of two URIs using the specified comparison rules. - An value that indicates the lexical relationship between the compared components.ValueMeaningLess than zero is less than .Zero equals .Greater than zero is greater than . - The first . - The second . - A bitwise combination of the values that specifies the parts of and to compare. - One of the values that specifies the character escaping used when the URI components are compared. - One of the values. - - is not a valid value. - 1 - - - Gets an unescaped host name that is safe to use for DNS resolution. - A that contains the unescaped host part of the URI that is suitable for DNS resolution; or the original unescaped host string, if it is already suitable for resolution. - This instance represents a relative URI, and this property is valid only for absolute URIs. - 2 - - - - - - Compares two instances for equality. - A value that is true if the two instances represent the same URI; otherwise, false. - The instance or a URI identifier to compare with the current instance. - 2 - - - Converts a string to its escaped representation. - A that contains the escaped representation of . - The string to escape. - - is null. - In the .NET for Windows Store apps or the Portable Class Library, catch the base class exception, , instead.The length of exceeds 32766 characters. - - - Converts a URI string to its escaped representation. - A that contains the escaped representation of . - The string to escape. - - is null. - In the .NET for Windows Store apps or the Portable Class Library, catch the base class exception, , instead.The length of exceeds 32766 characters. - - - Gets the escaped URI fragment. - A that contains any URI fragment information. - This instance represents a relative URI, and this property is valid only for absolute URIs. - 2 - - - - - - Gets the specified components of the current instance using the specified escaping for special characters. - A that contains the components. - A bitwise combination of the values that specifies which parts of the current instance to return to the caller. - One of the values that controls how special characters are escaped. - - is not a combination of valid values. - The current is not an absolute URI. Relative URIs cannot be used with this method. - 1 - - - Gets the hash code for the URI. - An containing the hash value generated for this URI. - 2 - - - - - - Gets the host component of this instance. - A that contains the host name. This is usually the DNS host name or IP address of the server. - This instance represents a relative URI, and this property is valid only for absolute URIs. - 1 - - - - - - Gets the type of the host name specified in the URI. - A member of the enumeration. - This instance represents a relative URI, and this property is valid only for absolute URIs. - 1 - - - - - - The RFC 3490 compliant International Domain Name of the host, using Punycode as appropriate. - Returns the hostname, formatted with Punycode according to the IDN standard.. - - - Gets whether the instance is absolute. - A value that is true if the instance is absolute; otherwise, false. - 1 - - - Determines whether the current instance is a base of the specified instance. - true if the current instance is a base of ; otherwise, false. - The specified instance to test. - - is null. - 2 - - - - - - Gets whether the port value of the URI is the default for this scheme. - A value that is true if the value in the property is the default port for this scheme; otherwise, false. - This instance represents a relative URI, and this property is valid only for absolute URIs. - 1 - - - - - - Gets a value indicating whether the specified is a file URI. - A value that is true if the is a file URI; otherwise, false. - This instance represents a relative URI, and this property is valid only for absolute URIs. - 1 - - - - - - Gets whether the specified references the local host. - A value that is true if this references the local host; otherwise, false. - This instance represents a relative URI, and this property is valid only for absolute URIs. - 2 - - - - - - Gets whether the specified is a universal naming convention (UNC) path. - A value that is true if the is a UNC path; otherwise, false. - This instance represents a relative URI, and this property is valid only for absolute URIs. - 2 - - - - - - Indicates whether the string used to construct this was well-formed and is not required to be further escaped. - A value that is true if the string was well-formed; else false. - - - Indicates whether the string is well-formed by attempting to construct a URI with the string and ensures that the string does not require further escaping. - A value that is true if the string was well-formed; else false. - The string used to attempt to construct a . - The type of the in . - - - Gets a local operating-system representation of a file name. - A that contains the local operating-system representation of a file name. - This instance represents a relative URI, and this property is valid only for absolute URIs. - 2 - - - - - - Determines the difference between two instances. - If the hostname and scheme of this URI instance and are the same, then this method returns a relative that, when appended to the current URI instance, yields .If the hostname or scheme is different, then this method returns a that represents the parameter. - The URI to compare to the current URI. - - is null. - This instance represents a relative URI, and this property is valid only for absolute URIs. - - - Determines whether two instances have the same value. - A value that is true if the instances are equivalent; otherwise, false. - A instance to compare with . - A instance to compare with . - 3 - - - - - - Determines whether two instances do not have the same value. - A value that is true if the two instances are not equal; otherwise, false. If either parameter is null, this method returns true. - A instance to compare with . - A instance to compare with . - 3 - - - - - - Gets the original URI string that was passed to the constructor. - A containing the exact URI specified when this instance was constructed; otherwise, . - This instance represents a relative URI, and this property is valid only for absolute URIs. - 1 - - - - - - Gets the and properties separated by a question mark (?). - A that contains the and properties separated by a question mark (?). - This instance represents a relative URI, and this property is valid only for absolute URIs. - 2 - - - - - - Gets the port number of this URI. - An value that contains the port number for this URI. - This instance represents a relative URI, and this property is valid only for absolute URIs. - 2 - - - - - - Gets any query information included in the specified URI. - A that contains any query information included in the specified URI. - This instance represents a relative URI, and this property is valid only for absolute URIs. - 2 - - - - - - Gets the scheme name for this URI. - A that contains the scheme for this URI, converted to lowercase. - This instance represents a relative URI, and this property is valid only for absolute URIs. - 2 - - - - - - Gets an array containing the path segments that make up the specified URI. - A array that contains the path segments that make up the specified URI. - This instance represents a relative URI, and this property is valid only for absolute URIs. - 2 - - - - - - Gets a canonical string representation for the specified instance. - A instance that contains the unescaped canonical representation of the instance. All characters are unescaped except #, ?, and %. - 2 - - - - - - Creates a new using the specified instance and a . - A value that is true if the was successfully created; otherwise, false. - The representing the . - The type of the Uri. - When this method returns, contains the constructed . - - - Creates a new using the specified base and relative instances. - A value that is true if the was successfully created; otherwise, false. - The base . - The relative , represented as a , to add to the base . - When this method returns, contains a constructed from and . This parameter is passed uninitialized. - - - Creates a new using the specified base and relative instances. - A value that is true if the was successfully created; otherwise, false. - The base . - The relative to add to the base . - When this method returns, contains a constructed from and . This parameter is passed uninitialized. - - is null. - 1 - - - Converts a string to its unescaped representation. - A that contains the unescaped representation of . - The string to unescape. - - is null. - - - Indicates that the URI string was completely escaped before the instance was created. - A value that is true if the parameter was set to true when the instance was created; otherwise, false. - 2 - - - Gets the user name, password, or other user-specific information associated with the specified URI. - A that contains the user information associated with the URI. The returned value does not include the '@' character reserved for delimiting the user information part of the URI. - This instance represents a relative URI, and this property is valid only for absolute URIs. - 1 - - - - - - Specifies the parts of a . - 1 - - - The , , , , , , and data. - - - The data. - - - The data. - - - The and data. If no port data is in the Uri and a default port has been assigned to the , the default port is returned. If there is no default port, -1 is returned. - - - The , , , , and data. - - - Specifies that the delimiter should be included. - - - The normalized form of the . - - - The data. - - - The and data. Also see . - - - The data. - - - The data. - - - The data. - - - The , , and data. - - - The complete context that is needed for Uri Serializers. The context includes the IPv6 scope. - - - The , , and data. If no port data is in the and a default port has been assigned to the , the default port is returned. If there is no default port, -1 is returned. - - - The data. If no port data is in the and a default port has been assigned to the , the default port is returned. If there is no default port, -1 is returned. - - - The data. - - - Controls how URI information is escaped. - 1 - - - Characters that have a reserved meaning in the requested URI components remain escaped. All others are not escaped. See Remarks. - - - No escaping is performed. - - - Escaping is performed according to the rules in RFC 2396. - - - The exception that is thrown when an invalid Uniform Resource Identifier (URI) is detected. - 2 - - - Initializes a new instance of the class. - - - Initializes a new instance of the class with the specified message. - The error message string. - - - Initializes a new instance of the class with a specified error message and a reference to the inner exception that is the cause of this exception. - The message that describes the exception. The caller of this constructor is required to ensure that this string has been localized for the current system culture. - The exception that is the cause of the current exception. If the parameter is not null, the current exception is raised in a catch block that handles the inner exception. - - - Defines host name types for the method. - 2 - - - The host is set, but the type cannot be determined. - - - The host name is a domain name system (DNS) style host name. - - - The host name is an Internet Protocol (IP) version 4 host address. - - - The host name is an Internet Protocol (IP) version 6 host address. - - - The type of the host name is not supplied. - - - Defines the kinds of s for the and several methods. - - - The Uri is an absolute Uri. - - - The Uri is a relative Uri. - - - The kind of the Uri is indeterminate. - - - Provides the base class for value types. - 2 - - - Initializes a new instance of the class. - - - Indicates whether this instance and a specified object are equal. - true if and this instance are the same type and represent the same value; otherwise, false. - The object to compare with the current instance. - 2 - - - Returns the hash code for this instance. - A 32-bit signed integer that is the hash code for this instance. - 2 - - - Returns the fully qualified type name of this instance. - A containing a fully qualified type name. - 2 - - - Represents the version number of an assembly, operating system, or the common language runtime. This class cannot be inherited. - 1 - - - Initializes a new instance of the class using the specified major and minor values. - The major version number. - The minor version number. - - or is less than zero. - - - Initializes a new instance of the class using the specified major, minor, and build values. - The major version number. - The minor version number. - The build number. - - , , or is less than zero. - - - Initializes a new instance of the class with the specified major, minor, build, and revision numbers. - The major version number. - The minor version number. - The build number. - The revision number. - - , , , or is less than zero. - - - Initializes a new instance of the class using the specified string. - A string containing the major, minor, build, and revision numbers, where each number is delimited with a period character ('.'). - - has fewer than two components or more than four components. - - is null. - A major, minor, build, or revision component is less than zero. - At least one component of does not parse to an integer. - At least one component of represents a number greater than . - - - Gets the value of the build component of the version number for the current object. - The build number, or -1 if the build number is undefined. - 1 - - - Compares the current object to a specified object and returns an indication of their relative values. - A signed integer that indicates the relative values of the two objects, as shown in the following table.Return value Meaning Less than zero The current object is a version before . Zero The current object is the same version as . Greater than zero The current object is a version subsequent to . -or- is null. - A object to compare to the current object, or null. - 1 - - - Returns a value indicating whether the current object is equal to a specified object. - true if the current object and are both objects, and every component of the current object matches the corresponding component of ; otherwise, false. - An object to compare with the current object, or null. - 1 - - - Returns a value indicating whether the current object and a specified object represent the same value. - true if every component of the current object matches the corresponding component of the parameter; otherwise, false. - A object to compare to the current object, or null. - 1 - - - Returns a hash code for the current object. - A 32-bit signed integer hash code. - 2 - - - Gets the value of the major component of the version number for the current object. - The major version number. - 1 - - - Gets the high 16 bits of the revision number. - A 16-bit signed integer. - - - Gets the value of the minor component of the version number for the current object. - The minor version number. - 1 - - - Gets the low 16 bits of the revision number. - A 16-bit signed integer. - - - Determines whether two specified objects are equal. - true if equals ; otherwise, false. - The first object. - The second object. - 3 - - - Determines whether the first specified object is greater than the second specified object. - true if is greater than ; otherwise, false. - The first object. - The second object. - 3 - - - Determines whether the first specified object is greater than or equal to the second specified object. - true if is greater than or equal to ; otherwise, false. - The first object. - The second object. - 3 - - - Determines whether two specified objects are not equal. - true if does not equal ; otherwise, false. - The first object. - The second object. - 3 - - - Determines whether the first specified object is less than the second specified object. - true if is less than ; otherwise, false. - The first object. - The second object. - - is null. - 3 - - - Determines whether the first specified object is less than or equal to the second object. - true if is less than or equal to ; otherwise, false. - The first object. - The second object. - - is null. - 3 - - - Converts the string representation of a version number to an equivalent object. - An object that is equivalent to the version number specified in the parameter. - A string that contains a version number to convert. - - is null. - - has fewer than two or more than four version components. - At least one component in is less than zero. - At least one component in is not an integer. - At least one component in represents a number that is greater than . - - - Gets the value of the revision component of the version number for the current object. - The revision number, or -1 if the revision number is undefined. - 1 - - - Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. - A signed integer that indicates the relative order of this instance and .Return value Meaning Less than zero This instance precedes in the sort order.Zero This instance occurs in the same position as in the sort order.Greater than zero This instance follows in the sort order.-or- is null. - An object to compare with this instance, or null. - - is not a object. - - - Converts the value of the current object to its equivalent representation. - The representation of the values of the major, minor, build, and revision components of the current object, as depicted in the following format. Each component is separated by a period character ('.'). Square brackets ('[' and ']') indicate a component that will not appear in the return value if the component is not defined: major.minor[.build[.revision]] For example, if you create a object using the constructor Version(1,1), the returned string is "1.1". If you create a object using the constructor Version(1,3,4,2), the returned string is "1.3.4.2". - 1 - - - Converts the value of the current object to its equivalent representation. A specified count indicates the number of components to return. - The representation of the values of the major, minor, build, and revision components of the current object, each separated by a period character ('.'). The parameter determines how many components are returned.fieldCount Return Value 0 An empty string (""). 1 major 2 major.minor 3 major.minor.build 4 major.minor.build.revision For example, if you create object using the constructor Version(1,3,5), ToString(2) returns "1.3" and ToString(4) throws an exception. - The number of components to return. The ranges from 0 to 4. - - is less than 0, or more than 4.-or- is more than the number of components defined in the current object. - 1 - - - Tries to convert the string representation of a version number to an equivalent object, and returns a value that indicates whether the conversion succeeded. - true if the parameter was converted successfully; otherwise, false. - A string that contains a version number to convert. - When this method returns, contains the equivalent of the number that is contained in , if the conversion succeeded, or a object whose major and minor version numbers are 0 if the conversion failed. If is null or , is null when the method returns. - - - Specifies a return value type for a method that does not return a value. - 2 - - - Represents a weak reference, which references an object while still allowing that object to be reclaimed by garbage collection. - 2 - - - Initializes a new instance of the class, referencing the specified object. - The object to track or null. - - - Initializes a new instance of the class, referencing the specified object and using the specified resurrection tracking. - An object to track. - Indicates when to stop tracking the object. If true, the object is tracked after finalization; if false, the object is only tracked until finalization. - - - Discards the reference to the target represented by the current object. - - - Gets an indication whether the object referenced by the current object has been garbage collected. - true if the object referenced by the current object has not been garbage collected and is still accessible; otherwise, false. - 2 - - - Gets or sets the object (the target) referenced by the current object. - null if the object referenced by the current object has been garbage collected; otherwise, a reference to the object referenced by the current object. - The reference to the target object is invalid. This exception can be thrown while setting this property if the value is a null reference or if the object has been finalized during the set operation. - 2 - - - Gets an indication whether the object referenced by the current object is tracked after it is finalized. - true if the object the current object refers to is tracked after finalization; or false if the object is only tracked until finalization. - 2 - - - Represents a typed weak reference, which references an object while still allowing that object to be reclaimed by garbage collection. - The type of the object referenced. - - - Initializes a new instance of the class that references the specified object. - The object to reference, or null. - - - Initializes a new instance of the class that references the specified object and uses the specified resurrection tracking. - The object to reference, or null. - true to track the object after finalization; false to track the object only until finalization. - - - Discards the reference to the target that is represented by the current object. - - - Sets the target object that is referenced by this object. - The new target object. - - - Tries to retrieve the target object that is referenced by the current object. - true if the target was retrieved; otherwise, false. - When this method returns, contains the target object, if it is available. This parameter is treated as uninitialized. - - - Defines a dictionary key/value pair that can be set or retrieved. - 1 - - - Initializes an instance of the type with the specified key and value. - The object defined in each key/value pair. - The definition associated with . - - is null and the .NET Framework version is 1.0 or 1.1. - - - Gets or sets the key in the key/value pair. - The key in the key/value pair. - 1 - - - Gets or sets the value in the key/value pair. - The value in the key/value pair. - 1 - - - Defines size, enumerators, and synchronization methods for all nongeneric collections. - 1 - - - Copies the elements of the to an , starting at a particular index. - The one-dimensional that is the destination of the elements copied from . The must have zero-based indexing. - The zero-based index in at which copying begins. - - is null. - - is less than zero. - - is multidimensional.-or- The number of elements in the source is greater than the available space from to the end of the destination .-or-The type of the source cannot be cast automatically to the type of the destination . - 2 - - - Gets the number of elements contained in the . - The number of elements contained in the . - 2 - - - Gets a value indicating whether access to the is synchronized (thread safe). - true if access to the is synchronized (thread safe); otherwise, false. - 2 - - - Gets an object that can be used to synchronize access to the . - An object that can be used to synchronize access to the . - 2 - - - Exposes a method that compares two objects. - 1 - - - Compares two objects and returns a value indicating whether one is less than, equal to, or greater than the other. - A signed integer that indicates the relative values of and , as shown in the following table.Value Meaning Less than zero is less than . Zero equals . Greater than zero is greater than . - The first object to compare. - The second object to compare. - Neither nor implements the interface.-or- and are of different types and neither one can handle comparisons with the other. - 2 - - - Represents a nongeneric collection of key/value pairs. - 1 - - - Adds an element with the provided key and value to the object. - The to use as the key of the element to add. - The to use as the value of the element to add. - - is null. - An element with the same key already exists in the object. - The is read-only.-or- The has a fixed size. - 2 - - - Removes all elements from the object. - The object is read-only. - 2 - - - Determines whether the object contains an element with the specified key. - true if the contains an element with the key; otherwise, false. - The key to locate in the object. - - is null. - 2 - - - Returns an object for the object. - An object for the object. - 2 - - - Gets a value indicating whether the object has a fixed size. - true if the object has a fixed size; otherwise, false. - 2 - - - Gets a value indicating whether the object is read-only. - true if the object is read-only; otherwise, false. - 2 - - - Gets or sets the element with the specified key. - The element with the specified key, or null if the key does not exist. - The key of the element to get or set. - - is null. - The property is set and the object is read-only.-or- The property is set, does not exist in the collection, and the has a fixed size. - 2 - - - Gets an object containing the keys of the object. - An object containing the keys of the object. - 2 - - - Removes the element with the specified key from the object. - The key of the element to remove. - - is null. - The object is read-only.-or- The has a fixed size. - 2 - - - Gets an object containing the values in the object. - An object containing the values in the object. - 2 - - - Enumerates the elements of a nongeneric dictionary. - 2 - - - Gets both the key and the value of the current dictionary entry. - A containing both the key and the value of the current dictionary entry. - The is positioned before the first entry of the dictionary or after the last entry. - 2 - - - Gets the key of the current dictionary entry. - The key of the current element of the enumeration. - The is positioned before the first entry of the dictionary or after the last entry. - 2 - - - Gets the value of the current dictionary entry. - The value of the current element of the enumeration. - The is positioned before the first entry of the dictionary or after the last entry. - 2 - - - Exposes an enumerator, which supports a simple iteration over a non-generic collection.To browse the .NET Framework source code for this type, see the Reference Source. - 1 - - - Returns an enumerator that iterates through a collection. - An object that can be used to iterate through the collection. - 2 - - - Supports a simple iteration over a non-generic collection. - 1 - - - Gets the current element in the collection. - The current element in the collection. - 2 - - - Advances the enumerator to the next element of the collection. - true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. - The collection was modified after the enumerator was created. - 2 - - - Sets the enumerator to its initial position, which is before the first element in the collection. - The collection was modified after the enumerator was created. - 2 - - - Defines methods to support the comparison of objects for equality. - - - Determines whether the specified objects are equal. - true if the specified objects are equal; otherwise, false. - The first object to compare. - The second object to compare. - - and are of different types and neither one can handle comparisons with the other. - - - Returns a hash code for the specified object. - A hash code for the specified object. - The for which a hash code is to be returned. - The type of is a reference type and is null. - - - Represents a non-generic collection of objects that can be individually accessed by index. - 1 - - - Adds an item to the . - The position into which the new element was inserted, or -1 to indicate that the item was not inserted into the collection. - The object to add to the . - The is read-only.-or- The has a fixed size. - 2 - - - Removes all items from the . - The is read-only. - 2 - - - Determines whether the contains a specific value. - true if the is found in the ; otherwise, false. - The object to locate in the . - 2 - - - Determines the index of a specific item in the . - The index of if found in the list; otherwise, -1. - The object to locate in the . - 2 - - - Inserts an item to the at the specified index. - The zero-based index at which should be inserted. - The object to insert into the . - - is not a valid index in the . - The is read-only.-or- The has a fixed size. - - is null reference in the . - 2 - - - Gets a value indicating whether the has a fixed size. - true if the has a fixed size; otherwise, false. - 2 - - - Gets a value indicating whether the is read-only. - true if the is read-only; otherwise, false. - 2 - - - Gets or sets the element at the specified index. - The element at the specified index. - The zero-based index of the element to get or set. - - is not a valid index in the . - The property is set and the is read-only. - 2 - - - Removes the first occurrence of a specific object from the . - The object to remove from the . - The is read-only.-or- The has a fixed size. - 2 - - - Removes the item at the specified index. - The zero-based index of the item to remove. - - is not a valid index in the . - The is read-only.-or- The has a fixed size. - 2 - - - Supports the structural comparison of collection objects. - - - Determines whether the current collection object precedes, occurs in the same position as, or follows another object in the sort order. - An integer that indicates the relationship of the current collection object to , as shown in the following table.Return valueDescription-1The current instance precedes .0The current instance and are equal.1The current instance follows . - The object to compare with the current instance. - An object that compares members of the current collection object with the corresponding members of . - This instance and are not the same type. - - - Defines methods to support the comparison of objects for structural equality. - - - Determines whether an object is structurally equal to the current instance. - true if the two objects are equal; otherwise, false. - The object to compare with the current instance. - An object that determines whether the current instance and are equal. - - - Returns a hash code for the current instance. - The hash code for the current instance. - An object that computes the hash code of the current object. - - - Defines methods to manipulate generic collections. - The type of the elements in the collection. - 1 - - - Adds an item to the . - The object to add to the . - The is read-only. - - - Removes all items from the . - The is read-only. - - - Determines whether the contains a specific value. - true if is found in the ; otherwise, false. - The object to locate in the . - - - Copies the elements of the to an , starting at a particular index. - The one-dimensional that is the destination of the elements copied from . The must have zero-based indexing. - The zero-based index in at which copying begins. - - is null. - - is less than 0. - The number of elements in the source is greater than the available space from to the end of the destination . - - - Gets the number of elements contained in the . - The number of elements contained in the . - - - Gets a value indicating whether the is read-only. - true if the is read-only; otherwise, false. - - - Removes the first occurrence of a specific object from the . - true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . - The object to remove from the . - The is read-only. - - - Defines a method that a type implements to compare two objects. - The type of objects to compare.This type parameter is contravariant. That is, you can use either the type you specified or any type that is less derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - 1 - - - Compares two objects and returns a value indicating whether one is less than, equal to, or greater than the other. - A signed integer that indicates the relative values of and , as shown in the following table.Value Meaning Less than zero is less than .Zero equals .Greater than zero is greater than . - The first object to compare. - The second object to compare. - - - Represents a generic collection of key/value pairs. - The type of keys in the dictionary. - The type of values in the dictionary. - 1 - - - Adds an element with the provided key and value to the . - The object to use as the key of the element to add. - The object to use as the value of the element to add. - - is null. - An element with the same key already exists in the . - The is read-only. - - - Determines whether the contains an element with the specified key. - true if the contains an element with the key; otherwise, false. - The key to locate in the . - - is null. - - - Gets or sets the element with the specified key. - The element with the specified key. - The key of the element to get or set. - - is null. - The property is retrieved and is not found. - The property is set and the is read-only. - - - Gets an containing the keys of the . - An containing the keys of the object that implements . - - - Removes the element with the specified key from the . - true if the element is successfully removed; otherwise, false. This method also returns false if was not found in the original . - The key of the element to remove. - - is null. - The is read-only. - - - Gets the value associated with the specified key. - true if the object that implements contains an element with the specified key; otherwise, false. - The key whose value to get. - When this method returns, the value associated with the specified key, if the key is found; otherwise, the default value for the type of the parameter. This parameter is passed uninitialized. - - is null. - - - Gets an containing the values in the . - An containing the values in the object that implements . - - - Exposes the enumerator, which supports a simple iteration over a collection of a specified type.To browse the .NET Framework source code for this type, see the Reference Source. - The type of objects to enumerate.This type parameter is covariant. That is, you can use either the type you specified or any type that is more derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - 1 - - - Returns an enumerator that iterates through the collection. - An enumerator that can be used to iterate through the collection. - 1 - - - Supports a simple iteration over a generic collection. - The type of objects to enumerate.This type parameter is covariant. That is, you can use either the type you specified or any type that is more derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - 1 - - - Gets the element in the collection at the current position of the enumerator. - The element in the collection at the current position of the enumerator. - - - Defines methods to support the comparison of objects for equality. - The type of objects to compare.This type parameter is contravariant. That is, you can use either the type you specified or any type that is less derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - - - Determines whether the specified objects are equal. - true if the specified objects are equal; otherwise, false. - The first object of type to compare. - The second object of type to compare. - - - Returns a hash code for the specified object. - A hash code for the specified object. - The for which a hash code is to be returned. - The type of is a reference type and is null. - - - Represents a collection of objects that can be individually accessed by index. - The type of elements in the list. - 1 - - - Determines the index of a specific item in the . - The index of if found in the list; otherwise, -1. - The object to locate in the . - - - Inserts an item to the at the specified index. - The zero-based index at which should be inserted. - The object to insert into the . - - is not a valid index in the . - The is read-only. - - - Gets or sets the element at the specified index. - The element at the specified index. - The zero-based index of the element to get or set. - - is not a valid index in the . - The property is set and the is read-only. - - - Removes the item at the specified index. - The zero-based index of the item to remove. - - is not a valid index in the . - The is read-only. - - - Represents a strongly-typed, read-only collection of elements. - The type of the elements.This type parameter is covariant. That is, you can use either the type you specified or any type that is more derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - - - Gets the number of elements in the collection. - The number of elements in the collection. - - - Represents a generic read-only collection of key/value pairs. - The type of keys in the read-only dictionary. - The type of values in the read-only dictionary. - - - Determines whether the read-only dictionary contains an element that has the specified key. - true if the read-only dictionary contains an element that has the specified key; otherwise, false. - The key to locate. - - is null. - - - Gets the element that has the specified key in the read-only dictionary. - The element that has the specified key in the read-only dictionary. - The key to locate. - - is null. - The property is retrieved and is not found. - - - Gets an enumerable collection that contains the keys in the read-only dictionary. - An enumerable collection that contains the keys in the read-only dictionary. - - - Gets the value that is associated with the specified key. - true if the object that implements the interface contains an element that has the specified key; otherwise, false. - The key to locate. - When this method returns, the value associated with the specified key, if the key is found; otherwise, the default value for the type of the parameter. This parameter is passed uninitialized. - - is null. - - - Gets an enumerable collection that contains the values in the read-only dictionary. - An enumerable collection that contains the values in the read-only dictionary. - - - Represents a read-only collection of elements that can be accessed by index. - The type of elements in the read-only list. This type parameter is covariant. That is, you can use either the type you specified or any type that is more derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. - - - Gets the element at the specified index in the read-only list. - The element at the specified index in the read-only list. - The zero-based index of the element to get. - - - Provides the base interface for the abstraction of sets. - The type of elements in the set. - - - Adds an element to the current set and returns a value to indicate if the element was successfully added. - true if the element is added to the set; false if the element is already in the set. - The element to add to the set. - - - Removes all elements in the specified collection from the current set. - The collection of items to remove from the set. - - is null. - - - Modifies the current set so that it contains only elements that are also in a specified collection. - The collection to compare to the current set. - - is null. - - - Determines whether the current set is a proper (strict) subset of a specified collection. - true if the current set is a proper subset of ; otherwise, false. - The collection to compare to the current set. - - is null. - - - Determines whether the current set is a proper (strict) superset of a specified collection. - true if the current set is a proper superset of ; otherwise, false. - The collection to compare to the current set. - - is null. - - - Determines whether a set is a subset of a specified collection. - true if the current set is a subset of ; otherwise, false. - The collection to compare to the current set. - - is null. - - - Determines whether the current set is a superset of a specified collection. - true if the current set is a superset of ; otherwise, false. - The collection to compare to the current set. - - is null. - - - Determines whether the current set overlaps with the specified collection. - true if the current set and share at least one common element; otherwise, false. - The collection to compare to the current set. - - is null. - - - Determines whether the current set and the specified collection contain the same elements. - true if the current set is equal to ; otherwise, false. - The collection to compare to the current set. - - is null. - - - Modifies the current set so that it contains only elements that are present either in the current set or in the specified collection, but not both. - The collection to compare to the current set. - - is null. - - - Modifies the current set so that it contains all elements that are present in the current set, in the specified collection, or in both. - The collection to compare to the current set. - - is null. - - - The exception that is thrown when the key specified for accessing an element in a collection does not match any key in the collection. - 1 - - - Initializes a new instance of the class using default property values. - - - Initializes a new instance of the class with the specified error message. - The message that describes the error. - - - Initializes a new instance of the class with the specified error message and a reference to the inner exception that is the cause of this exception. - The error message that explains the reason for the exception. - The exception that is the cause of the current exception. If the parameter is not null, the current exception is raised in a catch block that handles the inner exception. - - - Defines a key/value pair that can be set or retrieved. - The type of the key. - The type of the value. - 1 - - - Initializes a new instance of the structure with the specified key and value. - The object defined in each key/value pair. - The definition associated with . - - - Gets the key in the key/value pair. - A that is the key of the . - - - Returns a string representation of the , using the string representations of the key and value. - A string representation of the , which includes the string representations of the key and value. - - - Gets the value in the key/value pair. - A that is the value of the . - - - Provides the base class for a generic collection. - The type of elements in the collection. - - - Initializes a new instance of the class that is empty. - - - Initializes a new instance of the class as a wrapper for the specified list. - The list that is wrapped by the new collection. - - is null. - - - Adds an object to the end of the . - The object to be added to the end of the . The value can be null for reference types. - - - Removes all elements from the . - - - Removes all elements from the . - - - Determines whether an element is in the . - true if is found in the ; otherwise, false. - The object to locate in the . The value can be null for reference types. - - - Copies the entire to a compatible one-dimensional , starting at the specified index of the target array. - The one-dimensional that is the destination of the elements copied from . The must have zero-based indexing. - The zero-based index in at which copying begins. - - is null. - - is less than zero. - The number of elements in the source is greater than the available space from to the end of the destination . - - - Gets the number of elements actually contained in the . - The number of elements actually contained in the . - - - Returns an enumerator that iterates through the . - An for the . - - - Searches for the specified object and returns the zero-based index of the first occurrence within the entire . - The zero-based index of the first occurrence of within the entire , if found; otherwise, -1. - The object to locate in the . The value can be null for reference types. - - - Inserts an element into the at the specified index. - The zero-based index at which should be inserted. - The object to insert. The value can be null for reference types. - - is less than zero.-or- is greater than . - - - Inserts an element into the at the specified index. - The zero-based index at which should be inserted. - The object to insert. The value can be null for reference types. - - is less than zero.-or- is greater than . - - - Gets or sets the element at the specified index. - The element at the specified index. - The zero-based index of the element to get or set. - - is less than zero.-or- is equal to or greater than . - - - Gets a wrapper around the . - A wrapper around the . - - - Removes the first occurrence of a specific object from the . - true if is successfully removed; otherwise, false. This method also returns false if was not found in the original . - The object to remove from the . The value can be null for reference types. - - - Removes the element at the specified index of the . - The zero-based index of the element to remove. - - is less than zero.-or- is equal to or greater than . - - - Removes the element at the specified index of the . - The zero-based index of the element to remove. - - is less than zero.-or- is equal to or greater than . - - - Replaces the element at the specified index. - The zero-based index of the element to replace. - The new value for the element at the specified index. The value can be null for reference types. - - is less than zero.-or- is greater than . - - - Gets a value indicating whether the is read-only. - true if the is read-only; otherwise, false. In the default implementation of , this property always returns false. - - - Copies the elements of the to an , starting at a particular index. - The one-dimensional that is the destination of the elements copied from . The must have zero-based indexing. - The zero-based index in at which copying begins. - - is null. - - is less than zero. - - is multidimensional.-or- does not have zero-based indexing.-or-The number of elements in the source is greater than the available space from to the end of the destination .-or-The type of the source cannot be cast automatically to the type of the destination . - - - Gets a value indicating whether access to the is synchronized (thread safe). - true if access to the is synchronized (thread safe); otherwise, false. In the default implementation of , this property always returns false. - - - Gets an object that can be used to synchronize access to the . - An object that can be used to synchronize access to the . In the default implementation of , this property always returns the current instance. - - - Returns an enumerator that iterates through a collection. - An that can be used to iterate through the collection. - - - Adds an item to the . - The position into which the new element was inserted. - The to add to the . - - is of a type that is not assignable to the . - - - Determines whether the contains a specific value. - true if the is found in the ; otherwise, false. - The to locate in the . - - is of a type that is not assignable to the . - - - Determines the index of a specific item in the . - The index of if found in the list; otherwise, -1. - The to locate in the . - - is of a type that is not assignable to the . - - - Inserts an item into the at the specified index. - The zero-based index at which should be inserted. - The to insert into the . - - is not a valid index in the . - - is of a type that is not assignable to the . - - - Gets a value indicating whether the has a fixed size. - true if the has a fixed size; otherwise, false. In the default implementation of , this property always returns false. - - - Gets a value indicating whether the is read-only. - true if the is read-only; otherwise, false. In the default implementation of , this property always returns false. - - - Gets or sets the element at the specified index. - The element at the specified index. - The zero-based index of the element to get or set. - - is not a valid index in the . - The property is set and is of a type that is not assignable to the . - - - Removes the first occurrence of a specific object from the . - The to remove from the . - - is of a type that is not assignable to the . - - - Provides the base class for a generic read-only collection. - The type of elements in the collection. - - - Initializes a new instance of the class that is a read-only wrapper around the specified list. - The list to wrap. - - is null. - - - Determines whether an element is in the . - true if is found in the ; otherwise, false. - The object to locate in the . The value can be null for reference types. - - - Copies the entire to a compatible one-dimensional , starting at the specified index of the target array. - The one-dimensional that is the destination of the elements copied from . The must have zero-based indexing. - The zero-based index in at which copying begins. - - is null. - - is less than zero. - The number of elements in the source is greater than the available space from to the end of the destination . - - - Gets the number of elements contained in the instance. - The number of elements contained in the instance. - - - Returns an enumerator that iterates through the . - An for the . - - - Searches for the specified object and returns the zero-based index of the first occurrence within the entire . - The zero-based index of the first occurrence of within the entire , if found; otherwise, -1. - The object to locate in the . The value can be null for reference types. - - - Gets the element at the specified index. - The element at the specified index. - The zero-based index of the element to get. - - is less than zero.-or- is equal to or greater than . - - - Returns the that the wraps. - The that the wraps. - - - Adds an item to the . This implementation always throws . - The object to add to the . - Always thrown. - - - Removes all items from the . This implementation always throws . - Always thrown. - - - Gets a value indicating whether the is read-only. - true if the is read-only; otherwise, false. In the default implementation of , this property always returns true. - - - Removes the first occurrence of a specific object from the . This implementation always throws . - true if was successfully removed from the ; otherwise, false. - The object to remove from the . - Always thrown. - - - Inserts an item to the at the specified index. This implementation always throws . - The zero-based index at which should be inserted. - The object to insert into the . - Always thrown. - - - Gets the element at the specified index. An occurs if you try to set the item at the specified index. - The element at the specified index. - The zero-based index of the element to get. - Always thrown if the property is set. - - - Removes the item at the specified index. This implementation always throws . - The zero-based index of the item to remove. - Always thrown. - - - Copies the elements of the to an , starting at a particular index. - The one-dimensional that is the destination of the elements copied from . The must have zero-based indexing. - The zero-based index in at which copying begins. - - is null. - - is less than zero. - - is multidimensional.-or- does not have zero-based indexing.-or-The number of elements in the source is greater than the available space from to the end of the destination .-or-The type of the source cannot be cast automatically to the type of the destination . - - - Gets a value indicating whether access to the is synchronized (thread safe). - true if access to the is synchronized (thread safe); otherwise, false. In the default implementation of , this property always returns false. - - - Gets an object that can be used to synchronize access to the . - An object that can be used to synchronize access to the . In the default implementation of , this property always returns the current instance. - - - Returns an enumerator that iterates through a collection. - An that can be used to iterate through the collection. - - - Adds an item to the . This implementation always throws . - The position into which the new element was inserted. - The to add to the . - Always thrown. - - - Removes all items from the . This implementation always throws . - Always thrown. - - - Determines whether the contains a specific value. - true if the is found in the ; otherwise, false. - The to locate in the . - - is not of the type specified for the generic type parameter . - - - Determines the index of a specific item in the . - The index of if found in the list; otherwise, -1. - The to locate in the . - - is not of the type specified for the generic type parameter . - - - Inserts an item to the at the specified index. This implementation always throws . - The zero-based index at which should be inserted. - The to insert into the . - Always thrown. - - - Gets a value indicating whether the has a fixed size. - true if the has a fixed size; otherwise, false. In the default implementation of , this property always returns true. - - - Gets a value indicating whether the is read-only. - true if the is read-only; otherwise, false. In the default implementation of , this property always returns true. - - - Gets the element at the specified index. A occurs if you try to set the item at the specified index. - The element at the specified index. - The zero-based index of the element to get. - - is not a valid index in the . - Always thrown if the property is set. - - - Removes the first occurrence of a specific object from the . This implementation always throws . - The to remove from the . - Always thrown. - - - Removes the item at the specified index. This implementation always throws . - The zero-based index of the item to remove. - Always thrown. - - - Specifies the default value for a property. - - - Initializes a new instance of the class using a value. - A that is the default value. - - - Initializes a new instance of the class using an 8-bit unsigned integer. - An 8-bit unsigned integer that is the default value. - - - Initializes a new instance of the class using a Unicode character. - A Unicode character that is the default value. - - - Initializes a new instance of the class using a double-precision floating point number. - A double-precision floating point number that is the default value. - - - Initializes a new instance of the class using a 16-bit signed integer. - A 16-bit signed integer that is the default value. - - - Initializes a new instance of the class using a 32-bit signed integer. - A 32-bit signed integer that is the default value. - - - Initializes a new instance of the class using a 64-bit signed integer. - A 64-bit signed integer that is the default value. - - - Initializes a new instance of the class. - An that represents the default value. - - - Initializes a new instance of the class using a single-precision floating point number. - A single-precision floating point number that is the default value. - - - Initializes a new instance of the class using a . - A that is the default value. - - - Initializes a new instance of the class, converting the specified value to the specified type, and using an invariant culture as the translation context. - A that represents the type to convert the value to. - A that can be converted to the type using the for the type and the U.S. English culture. - - - Returns whether the value of the given object is equal to the current . - true if the value of the given object is equal to that of the current; otherwise, false. - The object to test the value equality of. - - - - Gets the default value of the property this attribute is bound to. - An that represents the default value of the property this attribute is bound to. - - - Specifies that a property or method is viewable in an editor. This class cannot be inherited. - - - Initializes a new instance of the class with an . - The to set to. - - - Returns whether the value of the given object is equal to the current . - true if the value of the given object is equal to that of the current; otherwise, false. - The object to test the value equality of. - - - - Gets the browsable state of the property or method. - An that is the browsable state of the property or method. - - - Specifies the browsable state of a property or method from within an editor. - - - The property or method is a feature that only advanced users should see. An editor can either show or hide such properties. - - - The property or method is always browsable from within an editor. - - - The property or method is never browsable from within an editor. - - - Indicates to compilers that a method call or attribute should be ignored unless a specified conditional compilation symbol is defined. - 1 - - - Initializes a new instance of the class. - A string that specifies the case-sensitive conditional compilation symbol that is associated with the attribute. - - - Gets the conditional compilation symbol that is associated with the attribute. - A string that specifies the case-sensitive conditional compilation symbol that is associated with the attribute. - 2 - - - Modifies code generation for runtime just-in-time (JIT) debugging. This class cannot be inherited. - 1 - - - Initializes a new instance of the class, using the specified debugging modes for the just-in-time (JIT) compiler. - A bitwise combination of the values specifying the debugging mode for the JIT compiler. - - - Specifies the debugging mode for the just-in-time (JIT) compiler. - - - Instructs the just-in-time (JIT) compiler to use its default behavior, which includes enabling optimizations, disabling Edit and Continue support, and using symbol store sequence points if present. In the .NET Framework version 2.0, JIT tracking information, the Microsoft intermediate language (MSIL) offset to the native-code offset within a method, is always generated. - - - Disable optimizations performed by the compiler to make your output file smaller, faster, and more efficient. Optimizations result in code rearrangement in the output file, which can make debugging difficult. Typically optimization should be disabled while debugging. In versions 2.0 or later, combine this value with Default (Default | DisableOptimizations) to enable JIT tracking and disable optimizations. - - - Enable edit and continue. Edit and continue enables you to make changes to your source code while your program is in break mode. The ability to edit and continue is compiler dependent. - - - Use the implicit MSIL sequence points, not the program database (PDB) sequence points. The symbolic information normally includes at least one Microsoft intermediate language (MSIL) offset for each source line. When the just-in-time (JIT) compiler is about to compile a method, it asks the profiling services for a list of MSIL offsets that should be preserved. These MSIL offsets are called sequence points. - - - In the .NET Framework version 2.0, JIT tracking information is always generated, and this flag has the same effect as with the exception of the property being false, which has no meaning in version 2.0. - - - Defines the formatting options that customize string parsing for some date and time parsing methods. - - - Date and time are returned as a Coordinated Universal Time (UTC). If the input string denotes a local time, through a time zone specifier or , the date and time are converted from the local time to UTC. If the input string denotes a UTC time, through a time zone specifier or , no conversion occurs. If the input string does not denote a local or UTC time, no conversion occurs and the resulting property is . - - - Extra white-space characters in the middle of the string must be ignored during parsing, except if they occur in the format patterns. - - - Leading white-space characters must be ignored during parsing, except if they occur in the format patterns. - - - Trailing white-space characters must be ignored during parsing, except if they occur in the format patterns. - - - Extra white-space characters anywhere in the string must be ignored during parsing, except if they occur in the format patterns. This value is a combination of the , , and values. - - - If no time zone is specified in the parsed string, the string is assumed to denote a local time. - - - If no time zone is specified in the parsed string, the string is assumed to denote a UTC. - - - If the parsed string contains only the time and not the date, the parsing methods assume the Gregorian date with year = 1, month = 1, and day = 1. If this value is not used, the current date is assumed. - - - Default formatting options must be used. This value represents the default style for the , , and methods. - - - The field of a date is preserved when a object is converted to a string using the "o" or "r" standard format specifier, and the string is then converted back to a object. - - - Determines the styles permitted in numeric string arguments that are passed to the Parse and TryParse methods of the integral and floating-point numeric types. - - - Indicates that the numeric string can contain a currency symbol. Valid currency symbols are determined by the property. - - - Indicates that the numeric string can have a decimal point. If the value includes the flag and the parsed string includes a currency symbol, the decimal separator character is determined by the property. Otherwise, the decimal separator character is determined by the property. - - - Indicates that the numeric string can be in exponential notation. The flag allows the parsed string to contain an exponent that begins with the "E" or "e" character and that is followed by an optional positive or negative sign and an integer. In other words, it successfully parses strings in the form nnnExx, nnnE+xx, and nnnE-xx. It does not allow a decimal separator or sign in the significand or mantissa; to allow these elements in the string to be parsed, use the and flags, or use a composite style that includes these individual flags. - - - Indicates that the numeric string represents a hexadecimal value. Valid hexadecimal values include the numeric digits 0-9 and the hexadecimal digits A-F and a-f. Strings that are parsed using this style cannot be prefixed with "0x" or "&h". A string that is parsed with the style will always be interpreted as a hexadecimal value. The only flags that can be combined with are and . The enumeration includes a composite style, , that consists of these three flags. - - - Indicates that the numeric string can have a leading sign. Valid leading sign characters are determined by the and properties. - - - Indicates that leading white-space characters can be present in the parsed string. Valid white-space characters have the Unicode values U+0009, U+000A, U+000B, U+000C, U+000D, and U+0020. Note that this is a subset of the characters for which the method returns true. - - - Indicates that the numeric string can have one pair of parentheses enclosing the number. The parentheses indicate that the string to be parsed represents a negative number. - - - Indicates that the numeric string can have group separators, such as symbols that separate hundreds from thousands. If the value includes the flag and the string to be parsed includes a currency symbol, the valid group separator character is determined by the property, and the number of digits in each group is determined by the property. Otherwise, the valid group separator character is determined by the property, and the number of digits in each group is determined by the property. - - - Indicates that the numeric string can have a trailing sign. Valid trailing sign characters are determined by the and properties. - - - Indicates that trailing white-space characters can be present in the parsed string. Valid white-space characters have the Unicode values U+0009, U+000A, U+000B, U+000C, U+000D, and U+0020. Note that this is a subset of the characters for which the method returns true. - - - Indicates that all styles except are used. This is a composite number style. - - - Indicates that all styles except and are used. This is a composite number style. - - - Indicates that the , , , , and styles are used. This is a composite number style. - - - Indicates that the , , and styles are used. This is a composite number style. - - - Indicates that the , , and styles are used. This is a composite number style. - - - Indicates that no style elements, such as leading or trailing white space, thousands separators, or a decimal separator, can be present in the parsed string. The string to be parsed must consist of integral decimal digits only. - - - Indicates that the , , , , , and styles are used. This is a composite number style. - - - Defines the formatting options that customize string parsing for the and methods. - - - Indicates that input is always interpreted as a negative time interval. - - - Indicates that input is interpreted as a negative time interval only if a negative sign is present. - - - The exception that is thrown when part of a file or directory cannot be found. - 2 - - - Initializes a new instance of the class with its message string set to a system-supplied message and its HRESULT set to COR_E_DIRECTORYNOTFOUND. - - - Initializes a new instance of the class with its message string set to and its HRESULT set to COR_E_DIRECTORYNOTFOUND. - A that describes the error. The content of is intended to be understood by humans. The caller of this constructor is required to ensure that this string has been localized for the current system culture. - - - Initializes a new instance of the class with a specified error message and a reference to the inner exception that is the cause of this exception. - The error message that explains the reason for the exception. - The exception that is the cause of the current exception. If the parameter is not null, the current exception is raised in a catch block that handles the inner exception. - - - The exception that is thrown when a managed assembly is found but cannot be loaded. - 2 - - - Initializes a new instance of the class, setting the property of the new instance to a system-supplied message that describes the error, such as "Could not load the specified file." This message takes into account the current system culture. - - - Initializes a new instance of the class with the specified error message. - A that describes the error. The content of is intended to be understood by humans. The caller of this constructor is required to ensure that this string has been localized for the current system culture. - - - Initializes a new instance of the class with a specified error message and a reference to the inner exception that is the cause of this exception. - A that describes the error. The content of is intended to be understood by humans. The caller of this constructor is required to ensure that this string has been localized for the current system culture. - The exception that is the cause of the current exception. If the parameter is not null, the current exception is raised in a catch block that handles the inner exception. - - - Initializes a new instance of the class with a specified error message and the name of the file that could not be loaded. - A that describes the error. The content of is intended to be understood by humans. The caller of this constructor is required to ensure that this string has been localized for the current system culture. - A containing the name of the file that was not loaded. - - - Initializes a new instance of the class with a specified error message, the name of the file that could not be loaded, and a reference to the inner exception that is the cause of this exception. - A that describes the error. The content of is intended to be understood by humans. The caller of this constructor is required to ensure that this string has been localized for the current system culture. - A containing the name of the file that was not loaded. - The exception that is the cause of the current exception. If the parameter is not null, the current exception is raised in a catch block that handles the inner exception. - - - Gets the name of the file that causes this exception. - A containing the name of the file with the invalid image, or a null reference if no file name was passed to the constructor for the current instance. - 2 - - - Gets the error message and the name of the file that caused this exception. - A string containing the error message and the name of the file that caused this exception. - 2 - - - Returns the fully qualified name of the current exception, and possibly the error message, the name of the inner exception, and the stack trace. - A string containing the fully qualified name of this exception, and possibly the error message, the name of the inner exception, and the stack trace, depending on which constructor is used. - 2 - - - - - - The exception that is thrown when an attempt to access a file that does not exist on disk fails. - 2 - - - Initializes a new instance of the class with its message string set to a system-supplied message and its HRESULT set to COR_E_FILENOTFOUND. - - - Initializes a new instance of the class with its message string set to and its HRESULT set to COR_E_FILENOTFOUND. - A description of the error. The content of is intended to be understood by humans. The caller of this constructor is required to ensure that this string has been localized for the current system culture. - - - Initializes a new instance of the class with a specified error message and a reference to the inner exception that is the cause of this exception. - A description of the error. The content of is intended to be understood by humans. The caller of this constructor is required to ensure that this string has been localized for the current system culture. - The exception that is the cause of the current exception. If the parameter is not null, the current exception is raised in a catch block that handles the inner exception. - - - Initializes a new instance of the class with its message string set to , specifying the file name that cannot be found, and its HRESULT set to COR_E_FILENOTFOUND. - A description of the error. The content of is intended to be understood by humans. The caller of this constructor is required to ensure that this string has been localized for the current system culture. - The full name of the file with the invalid image. - - - Initializes a new instance of the class with a specified error message and a reference to the inner exception that is the cause of this exception. - The error message that explains the reason for the exception. - The full name of the file with the invalid image. - The exception that is the cause of the current exception. If the parameter is not null, the current exception is raised in a catch block that handles the inner exception. - - - Gets the name of the file that cannot be found. - The name of the file, or null if no file name was passed to the constructor for this instance. - 2 - - - Gets the error message that explains the reason for the exception. - The error message. - 2 - - - Returns the fully qualified name of this exception and possibly the error message, the name of the inner exception, and the stack trace. - The fully qualified name of this exception and possibly the error message, the name of the inner exception, and the stack trace. - 2 - - - - - - The exception that is thrown when an I/O error occurs. - 1 - - - Initializes a new instance of the class with its message string set to the empty string (""), its HRESULT set to COR_E_IO, and its inner exception set to a null reference. - - - Initializes a new instance of the class with its message string set to , its HRESULT set to COR_E_IO, and its inner exception set to null. - A that describes the error. The content of is intended to be understood by humans. The caller of this constructor is required to ensure that this string has been localized for the current system culture. - - - Initializes a new instance of the class with a specified error message and a reference to the inner exception that is the cause of this exception. - The error message that explains the reason for the exception. - The exception that is the cause of the current exception. If the parameter is not null, the current exception is raised in a catch block that handles the inner exception. - - - Initializes a new instance of the class with its message string set to and its HRESULT user-defined. - A that describes the error. The content of is intended to be understood by humans. The caller of this constructor is required to ensure that this string has been localized for the current system culture. - An integer identifying the error that has occurred. - - - The exception that is thrown when a path or file name is longer than the system-defined maximum length. - 2 - - - Initializes a new instance of the class with its HRESULT set to COR_E_PATHTOOLONG. - - - Initializes a new instance of the class with its message string set to and its HRESULT set to COR_E_PATHTOOLONG. - A that describes the error. The content of is intended to be understood by humans. The caller of this constructor is required to ensure that this string has been localized for the current system culture. - - - Initializes a new instance of the class with a specified error message and a reference to the inner exception that is the cause of this exception. - A that describes the error. The content of is intended to be understood by humans. The caller of this constructor is required to ensure that this string has been localized for the current system culture. - The exception that is the cause of the current exception. If the parameter is not null, the current exception is raised in a catch block that handles the inner exception. - - - Defines a company name custom attribute for an assembly manifest. - - - Initializes a new instance of the class. - The company name information. - - - Gets company name information. - A string containing the company name. - - - Specifies the build configuration, such as retail or debug, for an assembly. - - - Initializes a new instance of the class. - The assembly configuration. - - - Gets assembly configuration information. - A string containing the assembly configuration information. - - - Defines a copyright custom attribute for an assembly manifest. - - - Initializes a new instance of the class. - The copyright information. - - - Gets copyright information. - A string containing the copyright information. - - - Specifies which culture the assembly supports. - - - Initializes a new instance of the class with the culture supported by the assembly being attributed. - The culture supported by the attributed assembly. - - - Gets the supported culture of the attributed assembly. - A string containing the name of the supported culture. - - - Defines a friendly default alias for an assembly manifest. - - - Initializes a new instance of the class. - The assembly default alias information. - - - Gets default alias information. - A string containing the default alias information. - - - Specifies that the assembly is not fully signed when created. - - - Initializes a new instance of the class. - true if the feature this attribute represents is activated; otherwise, false. - - - Gets a value indicating the state of the attribute. - true if this assembly has been built as delay-signed; otherwise, false. - - - Provides a text description for an assembly. - - - Initializes a new instance of the class. - The assembly description. - - - Gets assembly description information. - A string containing the assembly description. - - - Instructs a compiler to use a specific version number for the Win32 file version resource. The Win32 file version is not required to be the same as the assembly's version number. - - - Initializes a new instance of the class, specifying the file version. - The file version. - - is null. - - - Gets the Win32 file version resource name. - A string containing the file version resource name. - - - Specifies a bitwise combination of flags for an assembly, describing just-in-time (JIT) compiler options, whether the assembly is retargetable, and whether it has a full or tokenized public key. This class cannot be inherited. - - - Initializes a new instance of the class with the specified combination of flags. - A bitwise combination of flags representing just-in-time (JIT) compiler options, longevity, whether an assembly is retargetable, and whether it has a full or tokenized public key. - - - Gets an integer value representing the combination of flags specified when this attribute instance was created. - An integer value representing a bitwise combination of flags. - - - Defines additional version information for an assembly manifest. - - - Initializes a new instance of the class. - The assembly version information. - - - Gets version information. - A string containing the version information. - - - Specifies the name of a file containing the key pair used to generate a strong name. - - - Initializes a new instance of the AssemblyKeyFileAttribute class with the name of the file containing the key pair to generate a strong name for the assembly being attributed. - The name of the file containing the key pair. - - - Gets the name of the file containing the key pair used to generate a strong name for the attributed assembly. - A string containing the name of the file that contains the key pair. - - - Specifies the name of a key container within the CSP containing the key pair used to generate a strong name. - - - Initializes a new instance of the class with the name of the container holding the key pair used to generate a strong name for the assembly being attributed. - The name of the container containing the key pair. - - - Gets the name of the container having the key pair that is used to generate a strong name for the attributed assembly. - A string containing the name of the container that has the relevant key pair. - - - Defines a key/value metadata pair for the decorated assembly. - - - Initializes a new instance of the class by using the specified metadata key and value. - The metadata key. - The metadata value. - - - Gets the metadata key. - The metadata key. - - - Gets the metadata value. - The metadata value. - - - Provides information about an reference. - - - Specifies that no flags are in effect. - - - Specifies that a public key is formed from the full public key rather than the public key token. - - - Specifies that the assembly can be retargeted at runtime to an assembly from a different publisher. This value supports the .NET Framework infrastructure and is not intended to be used directly from your code. - - - Defines a product name custom attribute for an assembly manifest. - - - Initializes a new instance of the class. - The product name information. - - - Gets product name information. - A string containing the product name. - - - Provides migration from an older, simpler strong name key to a larger key with a stronger hashing algorithm. - - - Creates a new instance of the class by using the specified public key and countersignature. - The public or identity key. - The countersignature, which is the signature key portion of the strong-name key. - - - Gets the countersignature for the strong name for this assembly. - The countersignature for this signature key. - - - Gets the public key for the strong name used to sign the assembly. - The public key for this assembly. - - - Specifies a description for an assembly. - - - Initializes a new instance of the class. - The assembly title. - - - Gets assembly title information. - The assembly title. - - - Defines a trademark custom attribute for an assembly manifest. - - - Initializes a new instance of the class. - The trademark information. - - - Gets trademark information. - A String containing trademark information. - - - Specifies the version of the assembly being attributed. - - - Initializes a new instance of the AssemblyVersionAttribute class with the version number of the assembly being attributed. - The version number of the attributed assembly. - - - Gets the version number of the attributed assembly. - A string containing the assembly version number. - - - Defines the member of a type that is the default member used by . - - - Initializes a new instance of the class. - A String containing the name of the member to invoke. This may be a constructor, method, property, or field. A suitable invocation attribute must be specified when the member is invoked. The default member of a class can be specified by passing an empty String as the name of the member.The default member of a type is marked with the DefaultMemberAttribute custom attribute or marked in COM in the usual way. - - - Gets the name from the attribute. - A string representing the member name. - - - Identifies the processor and bits-per-word of the platform targeted by an executable. - - - A 64-bit AMD processor only. - - - An ARM processor. - - - A 64-bit Intel processor only. - - - Neutral with respect to processor and bits-per-word. - - - An unknown or unspecified combination of processor and bits-per-word. - - - A 32-bit Intel processor, either native or in the Windows on Windows environment on a 64-bit platform (WOW64). - - - [Supported in the .NET Framework 4.5.1 and later versions] Indicates whether the next blocking garbage collection compacts the large object heap (LOH). - - - The large object heap (LOH) will be compacted during the next blocking generation 2 garbage collection. - - - The large object heap (LOH) is not compacted. - - - Adjusts the time that the garbage collector intrudes in your application. - - - Disables garbage collection concurrency and reclaims objects in a batch call. This is the most intrusive mode. - - - Enables garbage collection concurrency and reclaims objects while the application is running. This is the default mode for garbage collection on a workstation and is less intrusive than . It balances responsiveness with throughput. - - - Enables garbage collection that is more conservative in reclaiming objects. Full collections occur only if the system is under memory pressure, whereas generation 0 and generation 1 collections might occur more frequently - - - Enables garbage collection that tries to minimize latency over an extended period. The collector tries to perform only generation 0, generation 1, and concurrent generation 2 collections. Full blocking collections may still occur if the system is under memory pressure. - - - Specifies the garbage collection settings for the current process. - - - Gets a value that indicates whether server garbage collection is enabled. - true if server garbage collection is enabled; otherwise, false. - - - [Supported in the .NET Framework 4.5.1 and later versions] Gets or sets a value that indicates whether a full blocking garbage collection compacts the large object heap (LOH). - One of the enumeration values that indicates whether a full blocking garbage collection compacts the LOH. - - - Gets or sets the current latency mode for garbage collection. - One of the enumeration values that specifies the latency mode. - The property is being set to an invalid value. -or-The property cannot be set to . - - - Specifies the name of the property that accesses the attributed field. - - - Initializes a new instance of the AccessedThroughPropertyAttribute class with the name of the property used to access the attributed field. - The name of the property used to access the attributed field. - - - Gets the name of the property used to access the attributed field. - The name of the property used to access the attributed field. - - - Indicates whether a method is marked with either the Async (Visual Basic) or async (C# Reference) modifier. - - - Initializes a new instance of the class. - The type object for the underlying state machine type that's used to implement a state machine method. - - - Allows you to obtain the full path of the source file that contains the caller. This is the file path at the time of compile. - - - Initializes a new instance of the class. - - - Allows you to obtain the line number in the source file at which the method is called. - - - Initializes a new instance of the class. - - - Allows you to obtain the method or property name of the caller to the method. - - - Initializes a new instance of the class. - - - Controls the strictness of the code generated by the common language runtime's just-in-time (JIT) compiler. - - - Initializes a new instance of the class with the specified compilation relaxations. - The compilation relaxations. - - - Gets the compilation relaxations specified when the current object was constructed. - The compilation relaxations specified when the current object was constructed.Use the enumeration with the property. - - - Distinguishes a compiler-generated element from a user-generated element. This class cannot be inherited. - - - Initializes a new instance of the class. - - - Enables compilers to dynamically attach object fields to managed objects. - The reference type to which the field is attached. - The field's type. This must be a reference type. - - - Initializes a new instance of the class. - - - Adds a key to the table. - The key to add. represents the object to which the property is attached. - The key's property value. - - is null. - - already exists. - - - Ensures that resources are freed and other cleanup operations are performed when the garbage collector reclaims the object. - - - Atomically searches for a specified key in the table and returns the corresponding value. If the key does not exist in the table, the method invokes the default constructor of the class that represents the table's value to create a value that is bound to the specified key. - The value that corresponds to , if already exists in the table; otherwise, a new value created by the default constructor of the class defined by the generic type parameter. - The key to search for. represents the object to which the property is attached. - - is null. - In the .NET for Windows Store apps or the Portable Class Library, catch the base class exception, , instead.The class that represents the table's value does not define a default constructor. - - - Atomically searches for a specified key in the table and returns the corresponding value. If the key does not exist in the table, the method invokes a callback method to create a value that is bound to the specified key. - The value attached to , if already exists in the table; otherwise, the new value returned by the delegate. - The key to search for. represents the object to which the property is attached. - A delegate to a method that can create a value for the given . It has a single parameter of type , and returns a value of type . - - or is null. - - - Removes a key and its value from the table. - true if the key is found and removed; otherwise, false. - The key to remove. - - is null. - - - Gets the value of the specified key. - true if is found; otherwise, false. - The key that represents an object with an attached property. - When this method returns, contains the attached property value. If is not found, contains the default value. - - is null. - - - Represents a method that creates a non-default value to add as part of a key/value pair to a object. - - - - - - - Defines a constant value that a compiler can persist for a field or method parameter. - - - Initializes a new instance of the class. - - - Gets the constant value stored by this attribute. - The constant value stored by this attribute. - - - Persists an 8-byte constant for a field or parameter. - - - Initializes a new instance of the DateTimeConstantAttribute class with the number of 100-nanosecond ticks that represent the date and time of this instance. - The number of 100-nanosecond ticks that represent the date and time of this instance. - - - Gets the number of 100-nanosecond ticks that represent the date and time of this instance. - The number of 100-nanosecond ticks that represent the date and time of this instance. - - - Stores the value of a constant in metadata. This class cannot be inherited. - - - Initializes a new instance of the class with the specified signed integer values. - The power of 10 scaling factor that indicates the number of digits to the right of the decimal point. Valid values are 0 through 28 inclusive. - A value of 0 indicates a positive value, and a value of 1 indicates a negative value. - The high 32 bits of the 96-bit . - The middle 32 bits of the 96-bit . - The low 32 bits of the 96-bit . - - - Initializes a new instance of the class with the specified unsigned integer values. - The power of 10 scaling factor that indicates the number of digits to the right of the decimal point. Valid values are 0 through 28 inclusive. - A value of 0 indicates a positive value, and a value of 1 indicates a negative value. - The high 32 bits of the 96-bit . - The middle 32 bits of the 96-bit . - The low 32 bits of the 96-bit . - - > 28. - - - Gets the decimal constant stored in this attribute. - The decimal constant stored in this attribute. - - - Indicates that any private members contained in an assembly's types are not available to reflection. - - - Initializes a new instances of the class. - - - Indicates that a method is an extension method, or that a class or assembly contains extension methods. - - - Initializes a new instance of the class. - - - Indicates that a field should be treated as containing a fixed number of elements of the specified primitive type. This class cannot be inherited. - - - Initializes a new instance of the class. - The type of the elements contained in the buffer. - The number of elements in the buffer. - - - Gets the type of the elements contained in the fixed buffer. - The type of the elements. - - - Gets the number of elements in the fixed buffer. - The number of elements in the fixed buffer. - - - Provides a static method to create a object from a composite format string and its arguments. - - - Creates a instance from a composite format string and its arguments. - The object that represents the composite format string and its arguments. - A composite format string. - The arguments whose string representations are to be inserted in the result string. - - is null. -or- is null. - - - Indicates the name by which an indexer is known in programming languages that do not support indexers directly. - - - Initializes a new instance of the class. - The name of the indexer, as shown to other languages. - - - Specifies that types that are ordinarily visible only within the current assembly are visible to a specified assembly. - - - Initializes a new instance of the class with the name of the specified friend assembly. - The name of a friend assembly. - - - Gets the name of the friend assembly to which all types and type members that are marked with the internal keyword are to be made visible. - A string that represents the name of the friend assembly. - - - Indicates that the modified type has a const modifier. This class cannot be inherited. - - - Defines a property for accessing the value that an object references. - 2 - - - Gets or sets the value that an object references. - The value that the object references. - - - Marks a field as volatile. This class cannot be inherited. - - - Indicates whether a method in Visual Basic is marked with the Iterator modifier. - - - Initializes a new instance of the class. - The type object for the underlying state machine type that's used to implement a state machine method. - - - Specifies the details of how a method is implemented. This class cannot be inherited. - - - Initializes a new instance of the class with the specified value. - A value specifying properties of the attributed method. - - - Gets the value describing the attributed method. - The value describing the attributed method. - - - Defines the details of how a method is implemented. - - - The method should be inlined if possible. - - - The method cannot be inlined. Inlining is an optimization by which a method call is replaced with the method body. - - - The method is not optimized by the just-in-time (JIT) compiler or by native code generation (see Ngen.exe) when debugging possible code generation problems. - - - The method signature is exported exactly as declared. - - - Identifies an assembly as a reference assembly, which contains metadata but no executable code. - - - Initializes a new instance of the class. - - - Initializes a new instance of the class by using the specified description. - The description of the reference assembly. - - - Gets the description of the reference assembly. - The description of the reference assembly. - - - Specifies whether to wrap exceptions that do not derive from the class with a object. This class cannot be inherited. - - - Initializes a new instance of the class. - - - Gets or sets a value that indicates whether to wrap exceptions that do not derive from the class with a object. - true if exceptions that do not derive from the class should appear wrapped with a object; otherwise, false. - - - Provides a set of static methods and properties that provide support for compilers. This class cannot be inherited. - - - Ensures that the remaining stack space is large enough to execute the average .NET Framework function. - The available stack space is insufficient to execute the average .NET Framework function. - - - Serves as a hash function for a particular object, and is suitable for use in algorithms and data structures that use hash codes, such as a hash table. - A hash code for the object identified by the parameter. - An object to retrieve the hash code for. - - - Boxes a value type. - A boxed copy of if it is a value class; otherwise, itself. - The value type to be boxed. - - - Provides a fast way to initialize an array from data that is stored in a module. - The array to be initialized. - A field handle that specifies the location of the data used to initialize the array. - - - Gets the offset, in bytes, to the data in the given string. - The byte offset, from the start of the object to the first character in the string. - - - Runs a specified class constructor method. - A type handle that specifies the class constructor method to run. - The class initializer throws an exception. - - - Allows you to determine whether a method is a state machine method. - - - Initializes a new instance of the class. - The type object for the underlying state machine type that was generated by the compiler to implement the state machine method. - - - Returns the type object for the underlying state machine type that was generated by the compiler to implement the state machine method. - Gets the type object for the underlying state machine type that was generated by the compiler to implement the state machine method. - - - Holds a reference to a value. - The type of the value that the references. - 2 - - - Initializes a new StrongBox which can receive a value when used in a reference call. - - - Initializes a new instance of the class by using the supplied value. - A value that the will reference. - 2 - - - Gets or sets the value that the references. - The value that the references. - - - Represents the value that the references. - - - Specifies a source in another assembly. - - - Initializes a new instance of the class. - The source in another assembly. - - is null or empty. - - - Gets the assembly-qualified name of the source type. - The assembly-qualified name of the source type. - - - Specifies a destination in another assembly. - - - Initializes a new instance of the class specifying a destination . - The destination in another assembly. - - - Gets the destination in another assembly. - The destination in another assembly. - - - Specifies that a type contains an unmanaged array that might potentially overflow. This class cannot be inherited. - - - Initializes a new instance of the class. - - - Represents an exception whose state is captured at a certain point in code. - - - Creates an object that represents the specified exception at the current point in code. - An object that represents the specified exception at the current point in code. - The exception whose state is captured, and which is represented by the returned object. - - is null. - - - Gets the exception that is represented by the current instance. - The exception that is represented by the current instance. - - - Throws the exception that is represented by the current object, after restoring the state that was saved when the exception was captured. - - - Dictates which character set marshaled strings should use. - - - Marshal strings as multiple-byte character strings. - - - Marshal strings as Unicode 2-byte characters. - - - Controls accessibility of an individual managed type or member, or of all types within an assembly, to COM. - - - Initializes a new instance of the ComVisibleAttribute class. - true to indicate that the type is visible to COM; otherwise, false. The default is true. - - - Gets a value that indicates whether the COM type is visible. - true if the type is visible; otherwise, false. The default value is true. - - - Indicates the physical position of fields within the unmanaged representation of a class or structure. - - - Initializes a new instance of the class with the offset in the structure to the beginning of the field. - The offset in bytes from the beginning of the structure to the beginning of the field. - - - Gets the offset from the beginning of the structure to the beginning of the field. - The offset from the beginning of the structure to the beginning of the field. - - - Controls the layout of an object when exported to unmanaged code. - - - The runtime automatically chooses an appropriate layout for the members of an object in unmanaged memory. Objects defined with this enumeration member cannot be exposed outside of managed code. Attempting to do so generates an exception. - - - The precise position of each member of an object in unmanaged memory is explicitly controlled, subject to the setting of the field. Each member must use the to indicate the position of that field within the type. - - - The members of the object are laid out sequentially, in the order in which they appear when exported to unmanaged memory. The members are laid out according to the packing specified in , and can be noncontiguous. - - - Indicates that data should be marshaled from callee back to caller. - - - Initializes a new instance of the class. - - - Lets you control the physical layout of the data fields of a class or structure in memory. - - - Initalizes a new instance of the class with the specified enumeration member. - One of the enumeration values that specifes how the class or structure should be arranged. - - - Indicates whether string data fields within the class should be marshaled as LPWSTR or LPSTR by default. - - - Controls the alignment of data fields of a class or structure in memory. - - - Indicates the absolute size of the class or structure. - - - Gets the value that specifies how the class or structure is arranged. - One of the enumeration values that specifies how the class or structure is arranged. - - - Identifies the version of the .NET Framework that a particular assembly was compiled against. - - - Initializes an instance of the class by specifying the .NET Framework version against which an assembly was built. - The version of the .NET Framework against which the assembly was built. - - is null. - - - Gets the display name of the .NET Framework version against which an assembly was built. - The display name of the .NET Framework version. - - - Gets the name of the .NET Framework version against which a particular assembly was compiled. - The name of the .NET Framework version with which the assembly was compiled. - - - Allows an assembly to be called by partially trusted code. Without this declaration, only fully trusted callers are able to use the assembly. This class cannot be inherited. - - - Initializes a new instance of the class. - - - Specifies that code or an assembly performs security-critical operations. - - - Initializes a new instance of the class. - - - The exception that is thrown when a security error is detected. - - - Initializes a new instance of the class with default properties. - - - Initializes a new instance of the class with a specified error message. - The error message that explains the reason for the exception. - - - Initializes a new instance of the class with a specified error message and a reference to the inner exception that is the cause of this exception. - The error message that explains the reason for the exception. - The exception that is the cause of the current exception. If the parameter is not null, the current exception is raised in a catch block that handles the inner exception. - - - Returns a representation of the current . - A string representation of the current . - - - - - - - - Identifies types or members as security-critical and safely accessible by transparent code. - - - Initializes a new instance of the class. - - - Specifies that an assembly cannot cause an elevation of privilege. - - - Initializes a new instance of the class. - - - The exception that is thrown when the security policy requires code to be type safe and the verification process is unable to verify that the code is type safe. - - - Initializes a new instance of the class with default properties. - - - Initializes a new instance of the class with an explanatory message. - A message indicating the reason the exception occurred. - - - Initializes a new instance of the class with a specified error message and a reference to the inner exception that is the cause of this exception. - The error message that explains the reason for the exception. - The exception that is the cause of the current exception. If the parameter is not null, the current exception is raised in a catch block that handles the inner exception. - - - Represents a mutable string of characters. This class cannot be inherited.To browse the .NET Framework source code for this type, see the Reference Source. - 1 - - - Initializes a new instance of the class. - - - Initializes a new instance of the class using the specified capacity. - The suggested starting size of this instance. - - is less than zero. - - - Initializes a new instance of the class that starts with a specified capacity and can grow to a specified maximum. - The suggested starting size of the . - The maximum number of characters the current string can contain. - - is less than one, is less than zero, or is greater than . - - - Initializes a new instance of the class using the specified string. - The string used to initialize the value of the instance. If is null, the new will contain the empty string (that is, it contains ). - - - Initializes a new instance of the class using the specified string and capacity. - The string used to initialize the value of the instance. If is null, the new will contain the empty string (that is, it contains ). - The suggested starting size of the . - - is less than zero. - - - Initializes a new instance of the class from the specified substring and capacity. - The string that contains the substring used to initialize the value of this instance. If is null, the new will contain the empty string (that is, it contains ). - The position within where the substring begins. - The number of characters in the substring. - The suggested starting size of the . - - is less than zero.-or- plus is not a position within . - - - Appends the string representation of a specified Boolean value to this instance. - A reference to this instance after the append operation has completed. - The Boolean value to append. - Enlarging the value of this instance would exceed . - 1 - - - Appends the string representation of a specified 8-bit unsigned integer to this instance. - A reference to this instance after the append operation has completed. - The value to append. - Enlarging the value of this instance would exceed . - 1 - - - Appends the string representation of a specified Unicode character to this instance. - A reference to this instance after the append operation has completed. - The Unicode character to append. - Enlarging the value of this instance would exceed . - 1 - - - Appends an array of Unicode characters starting at a specified address to this instance. - A reference to this instance after the append operation has completed. - A pointer to an array of characters. - The number of characters in the array. - - is less than zero. -or-Enlarging the value of this instance would exceed . - - is a null pointer. - - - Appends a specified number of copies of the string representation of a Unicode character to this instance. - A reference to this instance after the append operation has completed. - The character to append. - The number of times to append . - - is less than zero.-or- Enlarging the value of this instance would exceed . - Out of memory. - 1 - - - Appends the string representation of the Unicode characters in a specified array to this instance. - A reference to this instance after the append operation has completed. - The array of characters to append. - Enlarging the value of this instance would exceed . - 1 - - - Appends the string representation of a specified subarray of Unicode characters to this instance. - A reference to this instance after the append operation has completed. - A character array. - The starting position in . - The number of characters to append. - - is null, and and are not zero. - - is less than zero.-or- is less than zero.-or- + is greater than the length of .-or- Enlarging the value of this instance would exceed . - 1 - - - Appends the string representation of a specified decimal number to this instance. - A reference to this instance after the append operation has completed. - The value to append. - Enlarging the value of this instance would exceed . - 1 - - - Appends the string representation of a specified double-precision floating-point number to this instance. - A reference to this instance after the append operation has completed. - The value to append. - Enlarging the value of this instance would exceed . - 1 - - - Appends the string representation of a specified 16-bit signed integer to this instance. - A reference to this instance after the append operation has completed. - The value to append. - Enlarging the value of this instance would exceed . - 1 - - - Appends the string representation of a specified 32-bit signed integer to this instance. - A reference to this instance after the append operation has completed. - The value to append. - Enlarging the value of this instance would exceed . - 1 - - - Appends the string representation of a specified 64-bit signed integer to this instance. - A reference to this instance after the append operation has completed. - The value to append. - Enlarging the value of this instance would exceed . - 1 - - - Appends the string representation of a specified object to this instance. - A reference to this instance after the append operation has completed. - The object to append. - Enlarging the value of this instance would exceed . - 1 - - - Appends the string representation of a specified 8-bit signed integer to this instance. - A reference to this instance after the append operation has completed. - The value to append. - Enlarging the value of this instance would exceed . - 1 - - - Appends the string representation of a specified single-precision floating-point number to this instance. - A reference to this instance after the append operation has completed. - The value to append. - Enlarging the value of this instance would exceed . - 1 - - - Appends a copy of the specified string to this instance. - A reference to this instance after the append operation has completed. - The string to append. - Enlarging the value of this instance would exceed . - 1 - - - Appends a copy of a specified substring to this instance. - A reference to this instance after the append operation has completed. - The string that contains the substring to append. - The starting position of the substring within . - The number of characters in to append. - - is null, and and are not zero. - - less than zero.-or- less than zero.-or- + is greater than the length of .-or- Enlarging the value of this instance would exceed . - 1 - - - Appends the string representation of a specified 16-bit unsigned integer to this instance. - A reference to this instance after the append operation has completed. - The value to append. - Enlarging the value of this instance would exceed . - 1 - - - Appends the string representation of a specified 32-bit unsigned integer to this instance. - A reference to this instance after the append operation has completed. - The value to append. - Enlarging the value of this instance would exceed . - 1 - - - Appends the string representation of a specified 64-bit unsigned integer to this instance. - A reference to this instance after the append operation has completed. - The value to append. - Enlarging the value of this instance would exceed . - 1 - - - Appends the string returned by processing a composite format string, which contains zero or more format items, to this instance. Each format item is replaced by the string representation of a single argument using a specified format provider. - A reference to this instance after the append operation has completed. After the append operation, this instance contains any data that existed before the operation, suffixed by a copy of in which any format specification is replaced by the string representation of . - An object that supplies culture-specific formatting information. - A composite format string (see Remarks). - The object to format. - - is null. - - is invalid. -or-The index of a format item is less than 0 (zero), or greater than or equal to one (1). - The length of the expanded string would exceed . - - - Appends the string returned by processing a composite format string, which contains zero or more format items, to this instance. Each format item is replaced by the string representation of either of two arguments using a specified format provider. - A reference to this instance after the append operation has completed. After the append operation, this instance contains any data that existed before the operation, suffixed by a copy of where any format specification is replaced by the string representation of the corresponding object argument. - An object that supplies culture-specific formatting information. - A composite format string (see Remarks). - The first object to format. - The second object to format. - - is null. - - is invalid. -or-The index of a format item is less than 0 (zero), or greater than or equal to 2 (two). - The length of the expanded string would exceed . - - - Appends the string returned by processing a composite format string, which contains zero or more format items, to this instance. Each format item is replaced by the string representation of either of three arguments using a specified format provider. - A reference to this instance after the append operation has completed. After the append operation, this instance contains any data that existed before the operation, suffixed by a copy of where any format specification is replaced by the string representation of the corresponding object argument. - An object that supplies culture-specific formatting information. - A composite format string (see Remarks). - The first object to format. - The second object to format. - The third object to format. - - is null. - - is invalid. -or-The index of a format item is less than 0 (zero), or greater than or equal to 3 (three). - The length of the expanded string would exceed . - - - Appends the string returned by processing a composite format string, which contains zero or more format items, to this instance. Each format item is replaced by the string representation of a corresponding argument in a parameter array using a specified format provider. - A reference to this instance after the append operation has completed. After the append operation, this instance contains any data that existed before the operation, suffixed by a copy of where any format specification is replaced by the string representation of the corresponding object argument. - An object that supplies culture-specific formatting information. - A composite format string (see Remarks). - An array of objects to format. - - is null. - - is invalid. -or-The index of a format item is less than 0 (zero), or greater than or equal to the length of the array. - The length of the expanded string would exceed . - 2 - - - Appends the string returned by processing a composite format string, which contains zero or more format items, to this instance. Each format item is replaced by the string representation of a single argument. - A reference to this instance with appended. Each format item in is replaced by the string representation of . - A composite format string (see Remarks). - An object to format. - - is null. - - is invalid. -or-The index of a format item is less than 0 (zero), or greater than or equal to 1. - The length of the expanded string would exceed . - 2 - - - Appends the string returned by processing a composite format string, which contains zero or more format items, to this instance. Each format item is replaced by the string representation of either of two arguments. - A reference to this instance with appended. Each format item in is replaced by the string representation of the corresponding object argument. - A composite format string (see Remarks). - The first object to format. - The second object to format. - - is null. - - is invalid.-or-The index of a format item is less than 0 (zero), or greater than or equal to 2. - The length of the expanded string would exceed . - 2 - - - Appends the string returned by processing a composite format string, which contains zero or more format items, to this instance. Each format item is replaced by the string representation of either of three arguments. - A reference to this instance with appended. Each format item in is replaced by the string representation of the corresponding object argument. - A composite format string (see Remarks). - The first object to format. - The second object to format. - The third object to format. - - is null. - - is invalid.-or-The index of a format item is less than 0 (zero), or greater than or equal to 3. - The length of the expanded string would exceed . - 2 - - - Appends the string returned by processing a composite format string, which contains zero or more format items, to this instance. Each format item is replaced by the string representation of a corresponding argument in a parameter array. - A reference to this instance with appended. Each format item in is replaced by the string representation of the corresponding object argument. - A composite format string (see Remarks). - An array of objects to format. - - or is null. - - is invalid. -or-The index of a format item is less than 0 (zero), or greater than or equal to the length of the array. - The length of the expanded string would exceed . - 2 - - - Appends the default line terminator to the end of the current object. - A reference to this instance after the append operation has completed. - Enlarging the value of this instance would exceed . - 1 - - - Appends a copy of the specified string followed by the default line terminator to the end of the current object. - A reference to this instance after the append operation has completed. - The string to append. - Enlarging the value of this instance would exceed . - 1 - - - Gets or sets the maximum number of characters that can be contained in the memory allocated by the current instance. - The maximum number of characters that can be contained in the memory allocated by the current instance. Its value can range from to . - The value specified for a set operation is less than the current length of this instance.-or- The value specified for a set operation is greater than the maximum capacity. - 2 - - - Gets or sets the character at the specified character position in this instance. - The Unicode character at position . - The position of the character. - - is outside the bounds of this instance while setting a character. - - is outside the bounds of this instance while getting a character. - 2 - - - Removes all characters from the current instance. - An object whose is 0 (zero). - - - Copies the characters from a specified segment of this instance to a specified segment of a destination array. - The starting position in this instance where characters will be copied from. The index is zero-based. - The array where characters will be copied. - The starting position in where characters will be copied. The index is zero-based. - The number of characters to be copied. - - is null. - - , , or , is less than zero.-or- is greater than the length of this instance. - - + is greater than the length of this instance.-or- + is greater than the length of . - 1 - - - Ensures that the capacity of this instance of is at least the specified value. - The new capacity of this instance. - The minimum capacity to ensure. - - is less than zero.-or- Enlarging the value of this instance would exceed . - 2 - - - Returns a value indicating whether this instance is equal to a specified object. - true if this instance and have equal string, , and values; otherwise, false. - An object to compare with this instance, or null. - 2 - - - Inserts the string representation of a Boolean value into this instance at the specified character position. - A reference to this instance after the insert operation has completed. - The position in this instance where insertion begins. - The value to insert. - - is less than zero or greater than the length of this instance. - Enlarging the value of this instance would exceed . - 1 - - - Inserts the string representation of a specified 8-bit unsigned integer into this instance at the specified character position. - A reference to this instance after the insert operation has completed. - The position in this instance where insertion begins. - The value to insert. - - is less than zero or greater than the length of this instance. - Enlarging the value of this instance would exceed . - 1 - - - Inserts the string representation of a specified Unicode character into this instance at the specified character position. - A reference to this instance after the insert operation has completed. - The position in this instance where insertion begins. - The value to insert. - - is less than zero or greater than the length of this instance.-or- Enlarging the value of this instance would exceed . - 1 - - - Inserts the string representation of a specified array of Unicode characters into this instance at the specified character position. - A reference to this instance after the insert operation has completed. - The position in this instance where insertion begins. - The character array to insert. - - is less than zero or greater than the length of this instance.-or- Enlarging the value of this instance would exceed . - 1 - - - Inserts the string representation of a specified subarray of Unicode characters into this instance at the specified character position. - A reference to this instance after the insert operation has completed. - The position in this instance where insertion begins. - A character array. - The starting index within . - The number of characters to insert. - - is null, and and are not zero. - - , , or is less than zero.-or- is greater than the length of this instance.-or- plus is not a position within .-or- Enlarging the value of this instance would exceed . - 1 - - - Inserts the string representation of a decimal number into this instance at the specified character position. - A reference to this instance after the insert operation has completed. - The position in this instance where insertion begins. - The value to insert. - - is less than zero or greater than the length of this instance. - Enlarging the value of this instance would exceed . - 1 - - - Inserts the string representation of a double-precision floating-point number into this instance at the specified character position. - A reference to this instance after the insert operation has completed. - The position in this instance where insertion begins. - The value to insert. - - is less than zero or greater than the length of this instance. - Enlarging the value of this instance would exceed . - 1 - - - Inserts the string representation of a specified 16-bit signed integer into this instance at the specified character position. - A reference to this instance after the insert operation has completed. - The position in this instance where insertion begins. - The value to insert. - - is less than zero or greater than the length of this instance. - Enlarging the value of this instance would exceed . - 1 - - - Inserts the string representation of a specified 32-bit signed integer into this instance at the specified character position. - A reference to this instance after the insert operation has completed. - The position in this instance where insertion begins. - The value to insert. - - is less than zero or greater than the length of this instance. - Enlarging the value of this instance would exceed . - 1 - - - Inserts the string representation of a 64-bit signed integer into this instance at the specified character position. - A reference to this instance after the insert operation has completed. - The position in this instance where insertion begins. - The value to insert. - - is less than zero or greater than the length of this instance. - Enlarging the value of this instance would exceed . - 1 - - - Inserts the string representation of an object into this instance at the specified character position. - A reference to this instance after the insert operation has completed. - The position in this instance where insertion begins. - The object to insert, or null. - - is less than zero or greater than the length of this instance. - Enlarging the value of this instance would exceed . - 1 - - - Inserts the string representation of a specified 8-bit signed integer into this instance at the specified character position. - A reference to this instance after the insert operation has completed. - The position in this instance where insertion begins. - The value to insert. - - is less than zero or greater than the length of this instance. - Enlarging the value of this instance would exceed . - 1 - - - Inserts the string representation of a single-precision floating point number into this instance at the specified character position. - A reference to this instance after the insert operation has completed. - The position in this instance where insertion begins. - The value to insert. - - is less than zero or greater than the length of this instance. - Enlarging the value of this instance would exceed . - 1 - - - Inserts a string into this instance at the specified character position. - A reference to this instance after the insert operation has completed. - The position in this instance where insertion begins. - The string to insert. - - is less than zero or greater than the current length of this instance. -or-The current length of this object plus the length of exceeds . - 1 - - - Inserts one or more copies of a specified string into this instance at the specified character position. - A reference to this instance after insertion has completed. - The position in this instance where insertion begins. - The string to insert. - The number of times to insert . - - is less than zero or greater than the current length of this instance.-or- is less than zero. - The current length of this object plus the length of times exceeds . - 1 - - - Inserts the string representation of a 16-bit unsigned integer into this instance at the specified character position. - A reference to this instance after the insert operation has completed. - The position in this instance where insertion begins. - The value to insert. - - is less than zero or greater than the length of this instance. - Enlarging the value of this instance would exceed . - 1 - - - Inserts the string representation of a 32-bit unsigned integer into this instance at the specified character position. - A reference to this instance after the insert operation has completed. - The position in this instance where insertion begins. - The value to insert. - - is less than zero or greater than the length of this instance. - Enlarging the value of this instance would exceed . - 1 - - - Inserts the string representation of a 64-bit unsigned integer into this instance at the specified character position. - A reference to this instance after the insert operation has completed. - The position in this instance where insertion begins. - The value to insert. - - is less than zero or greater than the length of this instance. - Enlarging the value of this instance would exceed . - 1 - - - Gets or sets the length of the current object. - The length of this instance. - The value specified for a set operation is less than zero or greater than . - 1 - - - Gets the maximum capacity of this instance. - The maximum number of characters this instance can hold. - 2 - - - Removes the specified range of characters from this instance. - A reference to this instance after the excise operation has completed. - The zero-based position in this instance where removal begins. - The number of characters to remove. - If or is less than zero, or + is greater than the length of this instance. - 1 - - - Replaces all occurrences of a specified character in this instance with another specified character. - A reference to this instance with replaced by . - The character to replace. - The character that replaces . - 1 - - - Replaces, within a substring of this instance, all occurrences of a specified character with another specified character. - A reference to this instance with replaced by in the range from to + -1. - The character to replace. - The character that replaces . - The position in this instance where the substring begins. - The length of the substring. - - + is greater than the length of the value of this instance.-or- or is less than zero. - 1 - - - Replaces all occurrences of a specified string in this instance with another specified string. - A reference to this instance with all instances of replaced by . - The string to replace. - The string that replaces , or null. - - is null. - The length of is zero. - Enlarging the value of this instance would exceed . - 1 - - - Replaces, within a substring of this instance, all occurrences of a specified string with another specified string. - A reference to this instance with all instances of replaced by in the range from to + - 1. - The string to replace. - The string that replaces , or null. - The position in this instance where the substring begins. - The length of the substring. - - is null. - The length of is zero. - - or is less than zero.-or- plus indicates a character position not within this instance.-or- Enlarging the value of this instance would exceed . - 1 - - - Converts the value of this instance to a . - A string whose value is the same as this instance. - 1 - - - Converts the value of a substring of this instance to a . - A string whose value is the same as the specified substring of this instance. - The starting position of the substring in this instance. - The length of the substring. - - or is less than zero.-or- The sum of and is greater than the length of the current instance. - 1 - - - Specifies how a instance synchronizes access among multiple threads. - - - Locks are used to ensure that only a single thread can initialize a instance in a thread-safe manner. If the initialization method (or the default constructor, if there is no initialization method) uses locks internally, deadlocks can occur. If you use a constructor that specifies an initialization method ( parameter), and if that initialization method throws an exception (or fails to handle an exception) the first time you call the property, then the exception is cached and thrown again on subsequent calls to the property. If you use a constructor that does not specify an initialization method, exceptions that are thrown by the default constructor for are not cached. In that case, a subsequent call to the property might successfully initialize the instance. If the initialization method recursively accesses the property of the instance, an is thrown. - - - The instance is not thread safe; if the instance is accessed from multiple threads, its behavior is undefined. Use this mode only when high performance is crucial and the instance is guaranteed never to be initialized from more than one thread. If you use a constructor that specifies an initialization method ( parameter), and if that initialization method throws an exception (or fails to handle an exception) the first time you call the property, then the exception is cached and thrown again on subsequent calls to the property. If you use a constructor that does not specify an initialization method, exceptions that are thrown by the default constructor for are not cached. In that case, a subsequent call to the property might successfully initialize the instance. If the initialization method recursively accesses the property of the instance, an is thrown. - - - When multiple threads try to initialize a instance simultaneously, all threads are allowed to run the initialization method (or the default constructor, if there is no initialization method). The first thread to complete initialization sets the value of the instance. That value is returned to any other threads that were simultaneously running the initialization method, unless the initialization method throws exceptions on those threads. Any instances of that were created by the competing threads are discarded. If the initialization method throws an exception on any thread, the exception is propagated out of the property on that thread. The exception is not cached. The value of the property remains false, and subsequent calls to the property, either by the thread where the exception was thrown or by other threads, cause the initialization method to run again. If the initialization method recursively accesses the property of the instance, no exception is thrown. - - - Contains constants that specify infinite time-out intervals. This class cannot be inherited. - 2 - - - A constant used to specify an infinite waiting period, for threading methods that accept an parameter. - 1 - - - A constant used to specify an infinite waiting period, for methods that accept a parameter. - - - Encapsulates operating system–specific objects that wait for exclusive access to shared resources. - 2 - - - Initializes a new instance of the class. - - - Releases all resources used by the current instance of the class. - - - When overridden in a derived class, releases the unmanaged resources used by the , and optionally releases the managed resources. - true to release both managed and unmanaged resources; false to release only unmanaged resources. - - - Represents an invalid native operating system handle. This field is read-only. - - - Waits for all the elements in the specified array to receive a signal. - true when every element in has received a signal; otherwise the method never returns. - A WaitHandle array containing the objects for which the current instance will wait. This array cannot contain multiple references to the same object. - The parameter is null. -or- One or more of the objects in the array are null. -or- is an array with no elements and the .NET Framework version is 2.0 or later. - In the .NET for Windows Store apps or the Portable Class Library, catch the base class exception, , instead.The array contains elements that are duplicates. - The number of objects in is greater than the system permits.-or- The attribute is applied to the thread procedure for the current thread, and contains more than one element. - - is an array with no elements and the .NET Framework version is 1.0 or 1.1. - The wait terminated because a thread exited without releasing a mutex. This exception is not thrown on Windows 98 or Windows Millennium Edition. - The array contains a transparent proxy for a in another application domain. - 1 - - - Waits for all the elements in the specified array to receive a signal, using an value to specify the time interval. - true when every element in has received a signal; otherwise, false. - A WaitHandle array containing the objects for which the current instance will wait. This array cannot contain multiple references to the same object (duplicates). - The number of milliseconds to wait, or (-1) to wait indefinitely. - The parameter is null.-or- One or more of the objects in the array is null. -or- is an array with no elements. - In the .NET for Windows Store apps or the Portable Class Library, catch the base class exception, , instead.The array contains elements that are duplicates. - The number of objects in is greater than the system permits.-or- The attribute is applied to the thread procedure for the current thread, and contains more than one element. - - is a negative number other than -1, which represents an infinite time-out. - The wait completed because a thread exited without releasing a mutex. This exception is not thrown on Windows 98 or Windows Millennium Edition. - The array contains a transparent proxy for a in another application domain. - - - Waits for all the elements in the specified array to receive a signal, using a value to specify the time interval. - true when every element in has received a signal; otherwise, false. - A WaitHandle array containing the objects for which the current instance will wait. This array cannot contain multiple references to the same object. - A that represents the number of milliseconds to wait, or a that represents -1 milliseconds, to wait indefinitely. - The parameter is null. -or- One or more of the objects in the array is null. -or- is an array with no elements. - In the .NET for Windows Store apps or the Portable Class Library, catch the base class exception, , instead.The array contains elements that are duplicates. - The number of objects in is greater than the system permits.-or- The attribute is applied to the thread procedure for the current thread, and contains more than one element. - - is a negative number other than -1 milliseconds, which represents an infinite time-out. -or- is greater than . - The wait terminated because a thread exited without releasing a mutex. This exception is not thrown on Windows 98 or Windows Millennium Edition. - The array contains a transparent proxy for a in another application domain. - - - Waits for any of the elements in the specified array to receive a signal. - The array index of the object that satisfied the wait. - A WaitHandle array containing the objects for which the current instance will wait. - The parameter is null.-or-One or more of the objects in the array is null. - The number of objects in is greater than the system permits. - - is an array with no elements, and the .NET Framework version is 1.0 or 1.1. - The wait completed because a thread exited without releasing a mutex. This exception is not thrown on Windows 98 or Windows Millennium Edition. - - is an array with no elements, and the .NET Framework version is 2.0 or later. - The array contains a transparent proxy for a in another application domain. - 1 - - - Waits for any of the elements in the specified array to receive a signal, using a 32-bit signed integer to specify the time interval. - The array index of the object that satisfied the wait, or if no object satisfied the wait and a time interval equivalent to has passed. - A WaitHandle array containing the objects for which the current instance will wait. - The number of milliseconds to wait, or (-1) to wait indefinitely. - The parameter is null.-or-One or more of the objects in the array is null. - The number of objects in is greater than the system permits. - - is a negative number other than -1, which represents an infinite time-out. - The wait completed because a thread exited without releasing a mutex. This exception is not thrown on Windows 98 or Windows Millennium Edition. - - is an array with no elements. - The array contains a transparent proxy for a in another application domain. - - - Waits for any of the elements in the specified array to receive a signal, using a to specify the time interval. - The array index of the object that satisfied the wait, or if no object satisfied the wait and a time interval equivalent to has passed. - A WaitHandle array containing the objects for which the current instance will wait. - A that represents the number of milliseconds to wait, or a that represents -1 milliseconds to wait indefinitely. - The parameter is null.-or-One or more of the objects in the array is null. - The number of objects in is greater than the system permits. - - is a negative number other than -1 milliseconds, which represents an infinite time-out. -or- is greater than . - The wait completed because a thread exited without releasing a mutex. This exception is not thrown on Windows 98 or Windows Millennium Edition. - - is an array with no elements. - The array contains a transparent proxy for a in another application domain. - - - Blocks the current thread until the current receives a signal. - true if the current instance receives a signal. If the current instance is never signaled, never returns. - The current instance has already been disposed. - The wait completed because a thread exited without releasing a mutex. This exception is not thrown on Windows 98 or Windows Millennium Edition. - The current instance is a transparent proxy for a in another application domain. - 2 - - - Blocks the current thread until the current receives a signal, using a 32-bit signed integer to specify the time interval in milliseconds. - true if the current instance receives a signal; otherwise, false. - The number of milliseconds to wait, or (-1) to wait indefinitely. - The current instance has already been disposed. - - is a negative number other than -1, which represents an infinite time-out. - The wait completed because a thread exited without releasing a mutex. This exception is not thrown on Windows 98 or Windows Millennium Edition. - The current instance is a transparent proxy for a in another application domain. - - - Blocks the current thread until the current instance receives a signal, using a to specify the time interval. - true if the current instance receives a signal; otherwise, false. - A that represents the number of milliseconds to wait, or a that represents -1 milliseconds to wait indefinitely. - The current instance has already been disposed. - - is a negative number other than -1 milliseconds, which represents an infinite time-out.-or- is greater than . - The wait completed because a thread exited without releasing a mutex. This exception is not thrown on Windows 98 or Windows Millennium Edition. - The current instance is a transparent proxy for a in another application domain. - - - Indicates that a operation timed out before any of the wait handles were signaled. This field is constant. - 1 - - - \ No newline at end of file diff --git a/pyaedt/dlls/PDFReport/de/PdfSharpCore.resources.dll b/pyaedt/dlls/PDFReport/de/PdfSharpCore.resources.dll deleted file mode 100644 index 83d95e0aa2017f42a9340b349c9a5b13d82bfa25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5632 zcmeHLU2Ggz6+UCfj^os!R?>=}D7~pu*%r=tZO2J%NaLTiT@%|`yv`4mXfiu{cXs6Y zS?=8R+AXxn0}|>}d1zHo9}ueG36zIQv?$?$2!Sd!Jn;akP{ebkz88t`ojW`BI!*%5 zRqtlb+DIie-2oldEqzhv6((X-;9 zl_Tl~h98W73<3x|Q+SA;H1oF9Zbq>EW?TmZo<}=P{g_$#-_Erm| zOjsxz)H0@Ey{%*rgVB(#fylCs;At6CL^CZ*Gra}Bc(844)IkM7^lk@{#Yl`#pCh`? z3G#oAnc{b5tmbaEW#g2cv&V8{BNHs3g95-jg!jEhbQAASd0y1YkGzCA-i0nc%f5?6 z`UU2EbbSjK7xQ@E#MIeJ=%>(u!H*NYRX}~f15b#^{N6V&Jx(j%o z{tj3K+;^R=Xs74d95em|-TM$7P6HlKQBOJnWP9I9jVAi`a$K$l@&zhODsClOhW2Vb z(tao@FH3dLb4r1n);OV3T}zry5*e0)tuw zN`Bz$7HXkfDOMd-n~jx3)g^IVxiYcKL9iV^SqY@e4v_8YSY`OU?|4z1Xx~jTR8y6m z`X^OUstq6FXqT4NZ7s_(NgR*Wwdmf>ylqnR{7_jqVu&>3!*cKMUK^a5zJ2-io?kuH zjwBJ5)zvP@>cFJ8mzRgSZl1gPdhg%5C%dd>6FbJ)z1H^hW#!aX;%IKumF9%jsw!?I z7WmRcJ7Li?MJ+2%B=GV*se}`i#cUj<2^1^Xf%-qUeI8=K9TcOv-1td=GeY8=l_QFA zMK>HJ#X?wmaR~c^*o&kXSdd7dXbVm2#(s-#SXr0^GE3Mib8BE#vb#IO^Ge{G7Aq~{ipV(ZD^BR3{p^+?rpskNP1ImZEc^JN}>eDnsS(A5=KB(>sm57JltqB?5OTZ zZO6(Rt~u^HOBycvn@dg!A+(KXvyteaMV-)SkDo@jv#4VP4Hw_eUW=Z{eB>zL^nZx{ zdH18w{=lXGQ#?Ud@7w8>CEBWV%2Ex9FmYoQ_@yDyEZ4K#&hf*M)B{~t@@ypQS~(|P{)^)-6u zXKx<)?a%SN`g#4IFZ}hbfBmxmH;2KAu1d6uhg17Dp11LE_a0gyheDFHOmz@7TBHU> z0bV8_unJ57OoADYqeZi!1|)BiASA$en2n(0K9*sWUIxRlixh!-lWKr2R7fh*8pX7Z zSwuI$@+`Bg16`9#eY{bT;gj;TNGx7$NrtjR+uV~aFr>0vC z?%cwsDX2%DK&`k{L$$3pte5KHZWdUCvdq*WL>wo?NSv2Z)Zq5;3bx#NyHY`9#K1)u zUvQEHl=7fJCsl@dMkeZp#u_5A(Nb^1+dIXKw2p?^I{Q*k0WwV|V;B3#!S2jbrYjRi|Ho1ehZ9Y|;`iCBv0~d&lY>jrfBNwq&`%aw0@C`y6rZ zamGnRhAE=C;z)CRIEImlC1(PA$+=mAg}SMg|A6a({47`V*q4~kh!3l?Q)E4l$}OhZ zw7*5hC8Ik#8>XkHW79a{N`Y|+e~nnC!q|2N%Q#PVyn2)_8@y~^3=b5nim^9~E zfczMdslzkf64^(~g-ZC|iTLf_``~HvS?0_`$ovD~pT;Th4TIy5*80QtjA0L-Kkxo> Ze1Rh%(*HC1#Qguv7ue4)U3+K*{tK#pyPyC7 diff --git a/pyaedt/dlls/PDFReport/de/System.Collections.NonGeneric.xml b/pyaedt/dlls/PDFReport/de/System.Collections.NonGeneric.xml deleted file mode 100644 index f3dcf10e607..00000000000 --- a/pyaedt/dlls/PDFReport/de/System.Collections.NonGeneric.xml +++ /dev/null @@ -1,1553 +0,0 @@ - - - - System.Collections.NonGeneric - - - - Implementiert die -Schnittstelle. Dabei wird ein Array verwendet, dessen Größe je nach Bedarf dynamisch erhöht wird.Um den .NET Framework-Quellcode für diesen Typ zu durchsuchen, rufen Sie die Verweisquelle auf. - 1 - - - Initialisiert eine neue, leere Instanz der -Klasse, die die Standardanfangskapazität aufweist. - - - Initialisiert eine neue Instanz der -Klasse, die aus der angegebenen Auflistung kopierte Elemente enthält und deren anfängliche Kapazität der Anzahl der kopierten Elemente entspricht. - Die , deren Elemente der neuen Liste hinzugefügt werden. - - is null. - - - Initialisiert eine neue, leere Instanz der -Klasse, die die angegebene Anfangskapazität aufweist. - Die Anzahl von Elementen, die anfänglich in der neuen Liste gespeichert werden können. - - is less than zero. - - - Erstellt einen -Wrapper für eine angegebene . - Der die umgebende -Wrapper. - Die zu umschließende . - - is null. - 2 - - - Fügt am Ende der ein Objekt hinzu. - Der -Index, an dem der hinzugefügt wurde. - Das , das am Ende der hinzugefügt werden soll.Der Wert kann null sein. - The is read-only.-or- The has a fixed size. - 1 - - - Fügt die Elemente einer am Ende der hinzu. - Die , deren Elemente am Ende der hinzugefügt werden sollen.Die Auflistung selbst kann nicht null sein, aber sie kann Elemente enthalten, die null sind. - - is null. - The is read-only.-or- The has a fixed size. - 1 - - - Durchsucht mithilfe des angegebenen Vergleichs einen Bereich von Elementen in der sortierten nach einem Element und gibt den nullbasierten Index des Elements zurück. - Der nullbasierte Index von in der sortierten , sofern gefunden wird, andernfalls eine negative Zahl, die das bitweise Komplement des Indexes des nächsten Elements darstellt, das größer als ist, oder, wenn es kein größeres Element gibt, das bitweise Komplement von . - Der nullbasierte Startindex des zu durchsuchenden Bereichs. - Die Länge des zu durchsuchenden Bereichs. - Die zu suchende -Klasse.Der Wert kann null sein. - Die -Implementierung, die beim Vergleich von Elementen verwendet werden soll.- oder - null, wenn der Standardvergleich verwendet werden soll. Dies ist die -Implementierung des jeweiligen Elements. - - and do not denote a valid range in the .-or- is null and neither nor the elements of implement the interface. - - is null and is not of the same type as the elements of the . - - is less than zero.-or- is less than zero. - 1 - - - Durchsucht mithilfe des Standardcomparers die gesamte sortierte nach einem Element und gibt den nullbasierten Index des Elements zurück. - Der nullbasierte Index von in der sortierten , sofern gefunden wird, andernfalls eine negative Zahl, die das bitweise Komplement des Indexes des nächsten Elements darstellt, das größer als ist, oder, wenn es kein größeres Element gibt, das bitweise Komplement von . - Die zu suchende -Klasse.Der Wert kann null sein. - Neither nor the elements of implement the interface. - - is not of the same type as the elements of the . - 1 - - - Durchsucht mithilfe des angegebenen Comparers die gesamte sortierte nach einem Element und gibt den nullbasierten Index des Elements zurück. - Der nullbasierte Index von in der sortierten , sofern gefunden wird, andernfalls eine negative Zahl, die das bitweise Komplement des Indexes des nächsten Elements darstellt, das größer als ist, oder, wenn es kein größeres Element gibt, das bitweise Komplement von . - Die zu suchende -Klasse.Der Wert kann null sein. - Die -Implementierung, die beim Vergleich von Elementen verwendet werden soll.- oder - null, wenn der Standardvergleich verwendet werden soll. Dies ist die -Implementierung des jeweiligen Elements. - - is null and neither nor the elements of implement the interface. - - is null and is not of the same type as the elements of the . - 1 - - - Ruft die Anzahl der Elemente ab, die die enthalten kann, oder legt diese fest. - Die anfängliche Anzahl von Elementen, die die enthalten kann. - - is set to a value that is less than . - There is not enough memory available on the system. - 1 - - - Entfernt alle Elemente aus der . - The is read-only.-or- The has a fixed size. - 1 - - - Erstellt eine flache Kopie von . - Eine flache Kopie von . - 2 - - - Bestimmt, ob sich ein Element in befindet. - true, wenn das in der gefunden wird, andernfalls false. - Das , das in der gesucht werden soll.Der Wert kann null sein. - 1 - - - Kopiert die gesamte in ein kompatibles eindimensionales , wobei am Anfang des Zielarrays begonnen wird. - Das eindimensionale , das das Ziel der aus der kopierten Elemente ist.Für das muss eine nullbasierte Indizierung verwendet werden. - - is null. - - is multidimensional.-or- The number of elements in the source is greater than the number of elements that the destination can contain. - The type of the source cannot be cast automatically to the type of the destination . - 2 - - - Kopiert die gesamte in ein kompatibles eindimensionales , beginnend am angegebenen Index des Zielarrays. - Das eindimensionale , das das Ziel der aus der kopierten Elemente ist.Für das muss eine nullbasierte Indizierung verwendet werden. - Der nullbasierte Index im , bei dem der Kopiervorgang beginnt. - - is null. - - is less than zero. - - is multidimensional.-or- The number of elements in the source is greater than the available space from to the end of the destination . - The type of the source cannot be cast automatically to the type of the destination . - 2 - - - Kopiert einen Bereich von Elementen aus der in ein kompatibles eindimensionales , beginnend ab dem angegebenen Index im Zielarray. - Der nullbasierte Index in der Quell-, ab dem mit dem Kopieren begonnen wird. - Das eindimensionale , das das Ziel der aus der kopierten Elemente ist.Für das muss eine nullbasierte Indizierung verwendet werden. - Der nullbasierte Index im , bei dem der Kopiervorgang beginnt. - Die Anzahl der zu kopierenden Elemente. - - is null. - - is less than zero.-or- is less than zero.-or- is less than zero. - - is multidimensional.-or- is equal to or greater than the of the source .-or- The number of elements from to the end of the source is greater than the available space from to the end of the destination . - The type of the source cannot be cast automatically to the type of the destination . - 2 - - - Ruft die Anzahl der Elemente ab, die tatsächlich in enthalten sind. - Die Anzahl der Elemente, die tatsächlich in enthalten sind. - 1 - - - Gibt einen -Wrapper mit fester Größe zurück. - Ein -Wrapper mit fester Größe. - Die zu umschließende . - - is null. - 2 - - - Gibt einen -Wrapper mit fester Größe zurück. - Ein -Wrapper mit fester Größe. - Die zu umschließende . - - is null. - 2 - - - Gibt einen Enumerator für die gesamte zurück. - Ein für das gesamte . - 2 - - - Gibt einen Enumerator für einen Bereich von Elementen in der zurück. - Ein für den angegebenen Bereich von Elementen in der . - Der nullbasierte Startindex des Abschnitts der , auf den der Enumerator verweisen soll. - Die Anzahl der Elemente in dem Abschnitt der , auf den der Enumerator verweisen soll. - - is less than zero.-or- is less than zero. - - and do not specify a valid range in the . - 2 - - - Gibt eine zurück, die eine Teilgruppe der Elemente aus der Quell- darstellt. - Eine , die eine Teilgruppe der Elemente aus der Quell- darstellt. - Der nullbasierte -Index, an dem der Bereich beginnt. - Die Anzahl der Elemente im Bereich. - - is less than zero.-or- is less than zero. - - and do not denote a valid range of elements in the . - 2 - - - Sucht nach dem angegebenen und gibt den nullbasierten Index des ersten Vorkommens innerhalb der gesamten zurück. - Der nullbasierte Index des ggf. ersten Vorkommens von in der gesamten , andernfalls -1. - Das , das in der gesucht werden soll.Der Wert kann null sein. - 1 - - - Sucht nach dem angegebenen und gibt den nullbasierten Index des ersten Vorkommens innerhalb des Bereichs von Elementen in der zurück, der sich vom angegebenen Index bis zum letzten Element erstreckt. - Der nullbasierte Index des ersten Vorkommens von innerhalb des Bereichs von Elementen in der , der sich von bis zum letzten Element erstreckt, sofern gefunden, andernfalls -1. - Das , das in der gesucht werden soll.Der Wert kann null sein. - Der nullbasierte Startindex für die Suche.0 (null) ist in einer leeren Liste gültig. - - is outside the range of valid indexes for the . - 1 - - - Sucht nach dem angegebenen und gibt den nullbasierten Index des ersten Vorkommens innerhalb des Bereichs von Elementen in der zurück, der am angegebenen Index beginnt und die angegebene Anzahl von Elementen enthält. - Der nullbasierte Index des ersten Vorkommens von innerhalb des Bereichs von Elementen in der , der am beginnt und Anzahl von Elementen enthält, sofern gefunden, andernfalls -1. - Das , das in der gesucht werden soll.Der Wert kann null sein. - Der nullbasierte Startindex für die Suche.0 (null) ist in einer leeren Liste gültig. - Die Anzahl der Elemente im zu durchsuchenden Abschnitt. - - is outside the range of valid indexes for the .-or- is less than zero.-or- and do not specify a valid section in the . - 1 - - - Fügt am angegebenen Index ein Element in die ein. - Der nullbasierte Index, an dem eingefügt werden soll. - Die einzufügende .Der Wert kann null sein. - - is less than zero.-or- is greater than . - The is read-only.-or- The has a fixed size. - 1 - - - Fügt die Elemente einer Auflistung am angegebenen Index in die ein. - Der nullbasierte Index, an dem neue Elemente eingefügt werden sollen. - Die , deren Elemente in die eingefügt werden sollen.Die Auflistung selbst kann nicht null sein, aber sie kann Elemente enthalten, die null sind. - - is null. - - is less than zero.-or- is greater than . - The is read-only.-or- The has a fixed size. - 2 - - - Ruft einen Wert ab, der angibt, ob das eine feste Größe aufweist. - true, wenn das eine feste Größe aufweist, andernfalls false.Die Standardeinstellung ist false. - 2 - - - Ruft einen Wert ab, der angibt, ob das schreibgeschützt ist. - true, wenn das schreibgeschützt ist, andernfalls false.Die Standardeinstellung ist false. - 2 - - - Ruft einen Wert ab, der angibt, ob der Zugriff auf die synchronisiert (threadsicher) ist. - true, wenn der Zugriff auf das synchronisiert (threadsicher) ist, andernfalls false.Die Standardeinstellung ist false. - 2 - - - Ruft das Element am angegebenen Index ab oder legt dieses fest. - Das Element am angegebenen Index. - Der nullbasierte Index des Elements, das abgerufen oder festgelegt werden soll. - - is less than zero.-or- is equal to or greater than . - 1 - - - Sucht nach dem angegebenen und gibt den nullbasierten Index des letzten Vorkommens innerhalb der gesamten zurück. - Der nullbasierte Index des ggf. letzten Vorkommens von in der gesamten , andernfalls -1. - Das , das in der gesucht werden soll.Der Wert kann null sein. - 2 - - - Sucht nach dem angegebenen und gibt den nullbasierten Index des letzten Vorkommens innerhalb des Bereichs von Elementen in der zurück, der sich vom angegebenen Index bis zum letzten Element erstreckt. - Der nullbasierte Index des letzten Vorkommens von innerhalb des Bereichs von Elementen in der , der sich vom ersten Element bis erstreckt, sofern gefunden, andernfalls -1. - Das , das in der gesucht werden soll.Der Wert kann null sein. - Der nullbasierte Startindex für die Rückwärtssuche. - - is outside the range of valid indexes for the . - 2 - - - Sucht nach dem angegebenen und gibt den nullbasierten Index des letzten Vorkommens innerhalb des Bereichs von Elementen in der zurück, der die angegebene Anzahl von Elementen enthält und am angegebenen Index endet. - Der nullbasierte Index des letzten Vorkommens von innerhalb des Bereichs von Elementen in der , der Anzahl von Elementen enthält und am endet, sofern gefunden, andernfalls -1. - Das , das in der gesucht werden soll.Der Wert kann null sein. - Der nullbasierte Startindex für die Rückwärtssuche. - Die Anzahl der Elemente im zu durchsuchenden Abschnitt. - - is outside the range of valid indexes for the .-or- is less than zero.-or- and do not specify a valid section in the . - 2 - - - Gibt einen schreibgeschützten -Wrapper zurück. - Ein schreibgeschützter -Wrapper um . - Die zu umschließende . - - is null. - 2 - - - Gibt einen schreibgeschützten -Wrapper zurück. - Ein schreibgeschützter -Wrapper um . - Die zu umschließende . - - is null. - 2 - - - Entfernt das erste Vorkommen eines angegebenen Objekts aus der . - Der , der aus der entfernt werden soll.Der Wert kann null sein. - The is read-only.-or- The has a fixed size. - 1 - - - Entfernt das Element am angegebenen Index aus der . - Der nullbasierte Index des zu entfernenden Elements. - - is less than zero.-or- is equal to or greater than . - The is read-only.-or- The has a fixed size. - 1 - - - Entfernt einen Bereich von Elementen aus der . - Der nullbasierte Startindex des zu entfernenden Bereichs von Elementen. - Die Anzahl der zu entfernenden Elemente. - - is less than zero.-or- is less than zero. - - and do not denote a valid range of elements in the . - The is read-only.-or- The has a fixed size. - 2 - - - Gibt eine zurück, deren Elemente Kopien des angegebenen Werts sind. - Eine mit einer Anzahl von Elementen, die alle Kopien von sind. - Das , das mehrmals in die neue kopiert werden soll.Der Wert kann null sein. - Wie oft kopiert werden soll. - - is less than zero. - 2 - - - Kehrt die Reihenfolge der Elemente in der gesamten um. - The is read-only. - 2 - - - Kehrt die Reihenfolge der Elemente im angegebenen Bereich um. - Der nullbasierte Startindex des Bereichs, in dem die Reihenfolge umgekehrt werden soll. - Die Anzahl der Elemente im Bereich, in dem die Reihenfolge umgekehrt werden soll. - - is less than zero.-or- is less than zero. - - and do not denote a valid range of elements in the . - The is read-only. - 2 - - - Kopiert die Elemente einer Auflistung über einen Bereich von Elementen in der . - Der nullbasierte -Index, an dem mit dem Kopieren der Elemente von begonnen werden soll. - Die , deren Elemente in die kopiert werden sollen.Die Auflistung selbst kann nicht null sein, aber sie kann Elemente enthalten, die null sind. - - is less than zero.-or- plus the number of elements in is greater than . - - is null. - The is read-only. - 2 - - - Sortiert die Elemente in der gesamten . - The is read-only. - 1 - - - Sortiert die Elemente in der gesamten mithilfe des angegebenen Comparers. - Die -Implementierung, die beim Vergleich von Elementen verwendet werden soll.- oder - Ein NULL-Verweis (Nothing in Visual Basic), wenn die -Implementierung der einzelnen Elemente verwendet werden soll. - The is read-only. - An error occurred while comparing two elements. - null is passed for , and the elements in the list do not implement . - 1 - - - Sortiert die Elemente in einem Bereich von Elementen in der mithilfe des angegebenen Vergleichs. - Der nullbasierte Startindex des zu sortierenden Bereichs. - Die Länge des zu sortierenden Bereichs. - Die -Implementierung, die beim Vergleich von Elementen verwendet werden soll.- oder - Ein NULL-Verweis (Nothing in Visual Basic), wenn die -Implementierung der einzelnen Elemente verwendet werden soll. - - is less than zero.-or- is less than zero. - - and do not specify a valid range in the . - The is read-only. - An error occurred while comparing two elements. - 1 - - - Gibt einen synchronisierten (threadsicheren) -Wrapper zurück. - Ein -Wrapper, der synchronisiert (threadsicher) ist. - Die , die synchronisiert werden soll. - - is null. - 2 - - - Gibt einen synchronisierten (threadsicheren) -Wrapper zurück. - Ein -Wrapper, der synchronisiert (threadsicher) ist. - Die , die synchronisiert werden soll. - - is null. - 2 - - - Ruft ein Objekt ab, mit dem der Zugriff auf synchronisiert werden kann. - Ein Objekt, mit dem der Zugriff auf die synchronisiert werden kann. - 2 - - - Kopiert die Elemente der in ein neues -Array. - Ein -Array, das Kopien der Elemente aus enthält. - 1 - - - Kopiert die Elemente der in ein neues Array vom angegebenen Elementtyp. - Ein Array vom angegebenen Elementtyp, das Kopien der Elemente aus enthält. - Der Element- des Zielarrays, das erstellt und in das Elemente kopiert werden sollen. - - is null. - The type of the source cannot be cast automatically to the specified type. - 1 - - - Legt die Kapazität auf die Anzahl der tatsächlich in der enthaltenen Elemente fest. - The is read-only.-or- The has a fixed size. - 2 - - - Vergleicht zwei Objekte auf Äquivalenz und ignoriert dabei die Groß- und Kleinschreibung in Zeichenfolgen. - 2 - - - Initialisiert eine neue Instanz der -Klasse mit der des aktuellen Threads. - - - Initialisiert eine neue Instanz der -Klasse mit dem angegebenen . - Die , die für den neuen verwendet werden soll. - - ist null. - - - Führt einen Vergleich zweier Objekte gleichen Typs ohne Berücksichtigung der Groß- und Kleinschreibung durch und gibt über den zurückgegebenen Wert an, ob das eine Objekt kleiner, größer oder gleich dem anderen Objekt ist. - Eine ganze Zahl mit Vorzeichen, die die relativen Werte von und angibt, wie in der folgenden Tabelle veranschaulicht.Wert Bedeutung Kleiner als 0 ist kleiner als , wobei die Groß- und Kleinschreibung ignoriert wird. Zero ist gleich , wobei die Groß- und Kleinschreibung ignoriert wird. Größer als 0 (null) ist größer als , wobei die Groß- und Kleinschreibung ignoriert wird. - Das erste zu vergleichende Objekt. - Das zweite zu vergleichende Objekt. - Weder noch implementieren die -Schnittstelle.- oder - und sind nicht vom gleichen Typ. - 2 - - - Ruft eine Instanz von ab, die der des aktuellen Threads zugeordnet und jederzeit verfügbar ist. - Eine Instanz von , die der des aktuellen Threads zugeordnet ist. - 1 - - - - - - Ruft eine Instanz von ab, die zugeordnet und jederzeit verfügbar ist. - Eine Instanz von , die zugeordnet ist. - 1 - - - - - - Stellt die abstract-Basisklasse für eine Auflistung mit starker Typisierung bereit. - 2 - - - Initialisiert eine neue Instanz der -Klasse mit der angegebenen anfänglichen Kapazität. - - - Initialisiert eine neue Instanz der -Klasse mit der angegebenen Kapazität. - Die Anzahl von Elementen, die anfänglich in der neuen Liste gespeichert werden können. - - - Ruft die Anzahl der Elemente ab, die die enthalten kann, oder legt diese fest. - Die Anzahl von Elementen, die enthalten kann. - - ist auf einen Wert festgelegt, der kleiner ist als . - Es ist nicht genügend Arbeitsspeicher im System verfügbar. - 2 - - - Entfernt alle Objekte aus der -Instanz.Diese Methode kann nicht überschrieben werden. - 2 - - - Ruft die Anzahl der in der -Instanz enthaltenen Elemente ab.Diese Eigenschaft kann nicht überschrieben werden. - Die Anzahl der in der -Instanz enthaltenen Elemente.Das Abrufen des Wertes dieser Eigenschaft ist ein O(1)-Vorgang. - 2 - - - Gibt einen Enumerator zurück, der die durchläuft. - Ein für die -Instanz. - 2 - - - Ruft eine mit der Liste der Elemente in der -Instanz ab. - Eine , die die -Instanz selbst darstellt.Das Abrufen des Wertes dieser Eigenschaft ist ein O(1)-Vorgang. - - - Ruft eine mit der Liste der Elemente in der -Instanz ab. - Eine , die die -Instanz selbst darstellt. - - - Führt zusätzliche benutzerdefinierte Prozesse beim Löschen des Inhalts der -Instanz aus. - - - Führt nach dem Löschen des Inhalts der -Instanz zusätzliche benutzerdefinierte Prozesse aus. - - - Führt zusätzliche benutzerdefinierte Prozesse vor dem Einfügen eines neuen Elements in die -Instanz aus. - Der nullbasierte Index, an dem der eingefügt werden soll. - Der neue Wert des Elements an . - - - Führt zusätzliche benutzerdefinierte Prozesse nach dem Einfügen eines neuen Elements in die -Instanz aus. - Der nullbasierte Index, an dem der eingefügt werden soll. - Der neue Wert des Elements an . - - - Führt zusätzliche benutzerdefinierte Prozesse beim Entfernen eines Elements aus der -Instanz aus. - Der nullbasierte Index, an dem sich befindet. - Der Wert des Elements, das an entfernt wird. - - - Führt zusätzliche benutzerdefinierte Prozesse nach dem Entfernen eines Elements aus der -Instanz aus. - Der nullbasierte Index, an dem sich befindet. - Der Wert des Elements, das an entfernt wird. - - - Führt zusätzliche benutzerdefinierte Prozesse vor dem Festlegen eines Werts in der -Instanz aus. - Der nullbasierte Index, an dem sich befindet. - Der Wert, der durch ersetzt werden soll. - Der neue Wert des Elements an . - - - Führt zusätzliche benutzerdefinierte Prozesse nach dem Festlegen eines Werts in der -Instanz aus. - Der nullbasierte Index, an dem sich befindet. - Der Wert, der durch ersetzt werden soll. - Der neue Wert des Elements an . - - - Führt zusätzliche benutzerdefinierte Prozesse beim Validieren eines Werts aus. - Das Objekt, das validiert werden soll. - - ist null. - - - Entfernt das Element am angegebenen Index aus der -Instanz.Diese Methode kann nicht überschrieben werden. - Der nullbasierte Index des zu entfernenden Elements. - - ist kleiner als 0.- oder - ist größer oder gleich . - 2 - - - Kopiert die gesamte in ein kompatibles eindimensionales , beginnend am angegebenen Index des Zielarrays. - Das eindimensionale , das das Ziel der aus der kopierten Elemente ist.Für das muss eine nullbasierte Indizierung verwendet werden. - Der nullbasierte Index im , bei dem der Kopiervorgang beginnt. - - ist null. - - ist kleiner als 0. - - ist mehrdimensional.- oder -Die Anzahl der Elemente in der Quell- ist größer als der verfügbare Platz von bis zum Ende des Ziel-. - Der Typ der Quell- kann nicht automatisch in den Typ des Ziel- umgewandelt werden. - - - Ruft einen Wert ab, der angibt, ob der Zugriff auf synchronisiert (threadsicher) ist. - true, wenn der Zugriff auf das synchronisiert (threadsicher) ist, andernfalls false.Die Standardeinstellung ist false. - - - Ruft ein Objekt ab, mit dem der Zugriff auf synchronisiert werden kann. - Ein Objekt, mit dem der Zugriff auf die synchronisiert werden kann. - - - Fügt am Ende der ein Objekt hinzu. - Der -Index, an dem hinzugefügt wurde. - Das , das am Ende der hinzugefügt werden soll. - - ist schreibgeschützt.- oder - hat eine feste Größe. - - - Bestimmt, ob ein bestimmtes Element enthält. - true, wenn den angegebenen enthält, andernfalls false. - Das , das in der gesucht werden soll. - - - Sucht nach dem angegebenen und gibt den nullbasierten Index des ersten Vorkommens innerhalb der gesamten zurück. - Der nullbasierte Index des ersten Vorkommens des in der gesamten , sofern vorhanden, andernfalls -1. - Das , das in der gesucht werden soll. - - - Fügt am angegebenen Index ein Element in die ein. - Der nullbasierte Index, an dem eingefügt werden soll. - Die einzufügende . - - ist kleiner als 0.- oder - ist größer als . - - ist schreibgeschützt.- oder - hat eine feste Größe. - - - Ruft einen Wert ab, der angibt, ob eine feste Größe hat. - true, wenn eine feste Größe hat, andernfalls false.Die Standardeinstellung ist false. - - - Ruft einen Wert ab, der angibt, ob das schreibgeschützt ist. - true, wenn das schreibgeschützt ist, andernfalls false.Die Standardeinstellung ist false. - - - Ruft das Element am angegebenen Index ab oder legt dieses fest. - Das Element am angegebenen Index. - Der nullbasierte Index des Elements, das abgerufen oder festgelegt werden soll. - - ist kleiner als 0.- oder - ist größer oder gleich . - - - Entfernt das erste Vorkommen eines angegebenen Objekts aus der . - Der , der aus der entfernt werden soll. - Der -Parameter wurde im -Objekt nicht gefunden. - - ist schreibgeschützt.- oder - hat eine feste Größe. - - - Vergleicht zwei Objekte auf Äquivalenz, wobei die Groß- und Kleinschreibung bei Zeichenfolgenvergleichen berücksichtigt wird. - 2 - - - Initialisiert eine neue Instanz der -Klasse mit dem angegebenen . - Die , die für den neuen verwendet werden soll. - - ist null. - - - Führt einen Vergleich zweier Objekte gleichen Typs unter Berücksichtigung der Groß- und Kleinschreibung durch und gibt über den zurückgegebenen Wert an, ob das eine Objekt kleiner, größer oder gleich dem anderen Objekt ist. - Eine ganze Zahl mit Vorzeichen, die die relativen Werte von und angibt, wie in der folgenden Tabelle veranschaulicht.Wert Bedeutung Kleiner als 0 ist kleiner als . Zero ist gleich . Größer als 0 (null) ist größer als . - Das erste zu vergleichende Objekt. - Das zweite zu vergleichende Objekt. - Weder noch implementieren die -Schnittstelle.- oder - und sind nicht vom gleichen Typ. Keines der beiden kann einen Vergleich mit dem jeweils anderen Objekt behandeln. - 2 - - - Stellt eine Instanz von dar, die der des aktuellen Threads zugeordnet ist.Dieses Feld ist schreibgeschützt. - 1 - - - Stellt eine Instanz von dar, die der zugeordnet ist.Dieses Feld ist schreibgeschützt. - 1 - - - Stellt die abstract-Basisklasse für eine stark typisierte Auflistung von Schlüssel-Wert-Paaren bereit. - 2 - - - Initialisiert eine neue Instanz der-Klasse. - - - Löscht den Inhalt der -Instanz. - 2 - - - Kopiert die -Elemente am angegebenen Index in ein eindimensionales . - Das eindimensionale , in das die -Objekte aus der -Instanz kopiert werden.Für das muss eine nullbasierte Indizierung verwendet werden. - Der nullbasierte Index im , bei dem der Kopiervorgang beginnt. - - ist null. - - ist kleiner als 0. - - ist mehrdimensional.- oder - Die Anzahl der Elemente in der Quell- überschreitet den verfügbaren Platz vom bis zum Ende des Ziel-. - Der Typ der Quell- kann nicht automatisch in den Typ des Ziel- umgewandelt werden. - 2 - - - Ruft die Anzahl der Elemente ab, die in der -Instanz enthalten sind. - Die Anzahl der Elemente, die in der -Instanz enthalten sind. - 2 - - - Ruft die Liste der in der -Instanz enthaltenen Elemente ab. - Eine , die die -Instanz selbst darstellt. - - - Gibt einen zurück, der die -Instanz durchläuft. - Ein für die -Instanz. - 2 - - - Ruft die Liste der in der -Instanz enthaltenen Elemente ab. - Eine , die die -Instanz selbst darstellt. - - - Führt vor dem Löschen des Inhalts der -Instanz zusätzliche benutzerdefinierte Prozesse aus. - - - Führt nach dem Löschen des Inhalts der -Instanz zusätzliche benutzerdefinierte Prozesse aus. - - - Ruft das Element mit dem angegebenen Schlüssel und Wert aus der -Instanz ab. - Ein , das das Element mit dem angegebenen Schlüssel und Wert enthält. - Der Schlüssel des abzurufenden Elements. - Der aktuelle Wert des Elements, das zugeordnet ist. - - - Führt zusätzliche benutzerdefinierte Prozesse vor dem Einfügen eines neuen Elements in die -Instanz aus. - Der Schlüssel des einzufügenden Elements. - Der Wert des einzufügenden Elements. - - - Führt zusätzliche benutzerdefinierte Prozesse nach dem Einfügen eines neuen Elements in die -Instanz aus. - Der Schlüssel des einzufügenden Elements. - Der Wert des einzufügenden Elements. - - - Führt zusätzliche benutzerdefinierte Prozesse vor dem Entfernen eines Elements aus der -Instanz aus. - Der Schlüssel des zu entfernenden Elements. - Der Wert des zu entfernenden Elements. - - - Führt zusätzliche benutzerdefinierte Prozesse nach dem Entfernen eines Elements aus der -Instanz aus. - Der Schlüssel des zu entfernenden Elements. - Der Wert des zu entfernenden Elements. - - - Führt zusätzliche benutzerdefinierte Prozesse vor dem Festlegen eines Werts in der -Instanz aus. - Der Schlüssel des zu suchenden Elements. - Der alte Wert des Elements, das zugeordnet ist. - Der neue Wert des Elements, das zugeordnet ist. - - - Führt zusätzliche benutzerdefinierte Prozesse nach dem Festlegen eines Werts in der -Instanz aus. - Der Schlüssel des zu suchenden Elements. - Der alte Wert des Elements, das zugeordnet ist. - Der neue Wert des Elements, das zugeordnet ist. - - - Führt bei der Überprüfung des Elements mit dem angegebenen Schlüssel und Wert zusätzliche benutzerdefinierte Aktionen aus. - Der Schlüssel des zu überprüfenden Elements. - Der Wert des zu überprüfenden Elements. - - - Ruft einen Wert ab, der angibt, ob der Zugriff auf ein -Objekt synchronisiert (threadsicher) ist. - true, wenn der Zugriff auf das -Objekt synchronisiert (threadsicher) ist, andernfalls false.Die Standardeinstellung ist false. - - - Ruft ein Objekt ab, mit dem der Zugriff auf ein -Objekt synchronisiert werden kann. - Ein Objekt, mit dem der Zugriff auf das -Objekt synchronisiert werden kann. - - - Fügt dem ein Element mit dem angegebenen Schlüssel und Wert hinzu. - Der Schlüssel des hinzuzufügenden Elements. - Der Wert des hinzuzufügenden Elements. - - ist null. - Ein Element mit dem gleichen Schlüssel ist bereits im vorhanden. - - ist schreibgeschützt.- oder - hat eine feste Größe. - - - Stellt fest, ob der einen bestimmten Schlüssel enthält. - true, wenn das ein Element mit dem angegebenen Schlüssel enthält, andernfalls false. - Der im zu suchende Schlüssel. - - ist null. - - - Ruft einen Wert ab, der angibt, ob ein -Objekt eine feste Größe hat. - true, wenn das -Objekt eine feste Größe hat, andernfalls false.Die Standardeinstellung ist false. - - - Ruft einen Wert ab, der angibt, ob ein -Objekt schreibgeschützt ist. - true, wenn das -Objekt schreibgeschützt ist, andernfalls false.Die Standardeinstellung ist false. - - - Ruft den Wert ab, der dem angegebenen Schlüssel zugeordnet ist, oder legt diesen fest. - Der dem angegebenen Schlüssel zugeordnete Wert.Wenn der angegebene Schlüssel nicht gefunden werden kann, wird beim Abrufen dieses Schlüssels null zurückgegeben. Beim Festlegen wird ein neues Element mit dem angegebenen Schlüssel erstellt. - Der Schlüssel, dessen Wert abgerufen oder festgelegt werden soll. - - ist null. - Die Eigenschaft wird festgelegt, und die ist schreibgeschützt.- oder - Die Eigenschaft wird festgelegt, ist in der Auflistung nicht vorhanden, und hat eine feste Größe. - - - Ruft ein -Objekt ab, das die Schlüssel im -Objekt enthält. - Ein -Objekt, das die Schlüssel im -Objekt enthält. - - - Entfernt das Element mit dem angegebenen Schlüssel aus dem . - Der Schlüssel des zu entfernenden Elements. - - ist null. - - ist schreibgeschützt.- oder - hat eine feste Größe. - - - Ruft ein -Objekt ab, das die Werte des -Objekts enthält. - Ein -Objekt, das die Werte des -Objekts enthält. - - - Gibt einen zurück, der durchläuft. - Ein für das . - - - Stellt eine Auflistung von Schlüssel-Wert-Paaren dar, die auf Grundlage des Hashcodes des Schlüssels geordnet sind.Um den .NET Framework-Quellcode für diesen Typ zu durchsuchen, rufen Sie die Verweisquelle auf. - 1 - - - Initialisiert eine neue leere Instanz der -Klasse unter Verwendung der anfänglichen Standardkapazität, des Standardlastfaktors, Hashcode-Standardanbieters und des Standardcomparers. - - - Initialisiert eine neue Instanz der -Klasse durch Kopieren der Elemente aus dem angegebenen Wörterbuch in das neue -Objekt.Das neue -Objekt besitzt eine Anfangskapazität, die mit der Anzahl der kopierten Elemente identisch ist, und verwendet den Standardlastfaktor, den Hashcode-Standardanbieter und den Standardcomparer. - Das -Objekt, das in ein neues -Objekt kopiert werden soll. - - ist null. - - - Initialisiert eine neue Instanz der -Klasse durch Kopieren der Elemente aus dem angegebenen Wörterbuch in ein neues -Objekt.Das neue -Objekt besitzt eine Anfangskapazität, die mit der Anzahl der kopierten Elemente identisch ist, und verwendet den Standardlastfaktor sowie das angegebene -Objekt. - Das -Objekt, das in ein neues -Objekt kopiert werden soll. - Der , der sowohl den Hashcodeanbieter als auch den Comparer zur Verwendung mit der definiert.- oder - null, um den Hashcode-Standardanbieter und den Standardcomparer zu verwenden.Der Hashcode-Standardanbieter ist die Implementierung von jedes Schlüssels, und der Standardcomparer ist die Implementierung von jedes Schlüssels. - - ist null. - - - Initialisiert eine neue Instanz der -Klasse durch Kopieren der Elemente aus dem angegebenen Wörterbuch in das neue -Objekt.Das neue -Objekt besitzt eine Anfangskapazität, die mit der Anzahl der kopierten Elemente identisch ist, und verwendet den angegebenen Lastfaktor sowie den Hashcode-Standardanbieter und den Standardcomparer. - Das -Objekt, das in ein neues -Objekt kopiert werden soll. - Eine Zahl im Bereich 0,1 bis 1,0, die mit dem Standardwert für die optimale Leistung multipliziert wird.Das Ergebnis ist das maximale Verhältnis von Elementen zu Buckets. - - ist null. - - ist kleiner als 0,1.- oder - ist größer als 1,0. - - - Initialisiert eine neue Instanz der -Klasse durch Kopieren der Elemente aus dem angegebenen Wörterbuch in das neue -Objekt.Das neue -Objekt besitzt eine Anfangskapazität, die mit der Anzahl der kopierten Elemente identisch ist, und verwendet den angegebenen Lastfaktor und das angegebene -Objekt. - Das -Objekt, das in ein neues -Objekt kopiert werden soll. - Eine Zahl im Bereich 0,1 bis 1,0, die mit dem Standardwert für die optimale Leistung multipliziert wird.Das Ergebnis ist das maximale Verhältnis von Elementen zu Buckets. - Der , der sowohl den Hashcodeanbieter als auch den Comparer zur Verwendung mit der definiert.- oder - null, um den Hashcode-Standardanbieter und den Standardcomparer zu verwenden.Der Hashcode-Standardanbieter ist die Implementierung von jedes Schlüssels, und der Standardcomparer ist die Implementierung von jedes Schlüssels. - - ist null. - - ist kleiner als 0,1.- oder - ist größer als 1,0. - - - Initialisiert eine neue leere Instanz der -Klasse unter Verwendung der anfänglichen Standardkapazität, des Standardlastfaktors und des angegebenen -Objekts. - Der , der sowohl den Hashcodeanbieter als auch den Comparer zur Verwendung mit der definiert.- oder - null, um den Hashcode-Standardanbieter und den Standardcomparer zu verwenden.Der Hashcode-Standardanbieter ist die Implementierung von jedes Schlüssels, und der Standardcomparer ist die Implementierung von jedes Schlüssels. - - - Initialisiert eine neue leere Instanz der -Klasse unter Verwendung der angegebenen Anfangskapazität, des Standardlastfaktors, des Hashcode-Standardanbieters und des Standardcomparers. - Die ungefähre Anzahl von Elementen, die die anfänglich enthalten kann. - - ist kleiner als 0. - - - Initialisiert eine neue leere Instanz der -Klasse unter Verwendung der angegebenen Anfangskapazität und des angegebenen sowie des Standardlastfaktors. - Die ungefähre Anzahl von Elementen, die die anfänglich enthalten kann. - Der , der sowohl den Hashcodeanbieter als auch den Comparer zur Verwendung mit der definiert.- oder - null, um den Hashcode-Standardanbieter und den Standardcomparer zu verwenden.Der Hashcode-Standardanbieter ist die Implementierung von jedes Schlüssels, und der Standardcomparer ist die Implementierung von jedes Schlüssels. - - ist kleiner als 0. - - - Initialisiert eine neue leere Instanz der -Klasse unter Verwendung der angegebenen Anfangskapazität und des Lastfaktors sowie des Hashcode-Standardanbieter und des angegebenen Comparers. - Die ungefähre Anzahl von Elementen, die die anfänglich enthalten kann. - Eine Zahl im Bereich 0,1 bis 1,0, die mit dem Standardwert für die optimale Leistung multipliziert wird.Das Ergebnis ist das maximale Verhältnis von Elementen zu Buckets. - - ist kleiner als 0.- oder - ist kleiner als 0,1.- oder - ist größer als 1,0. - - verursacht einen Überlauf. - - - Initialisiert eine neue leere Instanz der -Klasse unter Verwendung der angegebenen Anfangskapazität, des angegebenen Lastfaktors und des angegebenen -Objekts. - Die ungefähre Anzahl von Elementen, die die anfänglich enthalten kann. - Eine Zahl im Bereich 0,1 bis 1,0, die mit dem Standardwert für die optimale Leistung multipliziert wird.Das Ergebnis ist das maximale Verhältnis von Elementen zu Buckets. - Der , der sowohl den Hashcodeanbieter als auch den Comparer zur Verwendung mit der definiert.- oder - null, um den Hashcode-Standardanbieter und den Standardcomparer zu verwenden.Der Hashcode-Standardanbieter ist die Implementierung von jedes Schlüssels, und der Standardcomparer ist die Implementierung von jedes Schlüssels. - - ist kleiner als 0.- oder - ist kleiner als 0,1.- oder - ist größer als 1,0. - - - Fügt dem ein Element mit dem angegebenen Schlüssel und Wert hinzu. - Der Schlüssel des hinzuzufügenden Elements. - Der Wert des hinzuzufügenden Elements.Der Wert kann null sein. - - ist null. - Ein Element mit dem gleichen Schlüssel ist bereits im vorhanden. - - ist schreibgeschützt.- oder - hat eine feste Größe. - 1 - - - Entfernt alle Elemente aus der . - - ist schreibgeschützt. - 1 - - - Erstellt eine flache Kopie von . - Eine flache Kopie von . - 1 - - - Stellt fest, ob der einen bestimmten Schlüssel enthält. - true, wenn das ein Element mit dem angegebenen Schlüssel enthält, andernfalls false. - Der im zu suchende Schlüssel. - - ist null. - 1 - - - Stellt fest, ob der einen bestimmten Schlüssel enthält. - true, wenn das ein Element mit dem angegebenen Schlüssel enthält, andernfalls false. - Der im zu suchende Schlüssel. - - ist null. - 1 - - - Ermittelt, ob die einen bestimmten Wert enthält. - true, wenn die ein Element mit dem angegebenen enthält, andernfalls false. - Der im zu suchende Wert.Der Wert kann null sein. - 1 - - - Kopiert die -Elemente an den angegebenen Index in einer eindimensionalen -Instanz. - Das eindimensionale , das das Ziel der aus kopierten -Objekte ist.Für das muss eine nullbasierte Indizierung verwendet werden. - Der nullbasierte Index im , bei dem der Kopiervorgang beginnt. - - ist null. - - ist kleiner als 0. - - ist mehrdimensional.- oder - Die Anzahl der Elemente in der Quell- überschreitet den verfügbaren Platz vom bis zum Ende des Ziel-. - Der Typ der Quell- kann nicht automatisch in den Typ des Ziel- umgewandelt werden. - 2 - - - Ruft die Anzahl der Schlüssel-Wert-Paare im ab. - Die Anzahl der Schlüssel-Wert-Paare im . - 1 - - - Ruft den ab, der für die verwendet werden soll. - Der , der für die verwendet werden soll. - Die Eigenschaft wird auf einen Wert festgelegt, aber die Hashtabelle wurde mit einem und einem erstellt. - - - Gibt einen zurück, der durchläuft. - Ein für das . - 2 - - - Gibt den Hashcode für den angegebenen Schlüssel zurück. - Der Hashcode für . - Das , für das ein Hashcode zurückgegeben werden soll. - - ist null. - - - Ruft einen Wert ab, der angibt, ob das eine feste Größe aufweist. - true, wenn das eine feste Größe aufweist, andernfalls false.Die Standardeinstellung ist false. - 2 - - - Ruft einen Wert ab, der angibt, ob das schreibgeschützt ist. - true, wenn das schreibgeschützt ist, andernfalls false.Die Standardeinstellung ist false. - 2 - - - Ruft einen Wert ab, der angibt, ob der Zugriff auf die synchronisiert (threadsicher) ist. - true, wenn der Zugriff auf das synchronisiert (threadsicher) ist, andernfalls false.Die Standardeinstellung ist false. - 2 - - - Ruft den Wert ab, der dem angegebenen Schlüssel zugeordnet ist, oder legt diesen fest. - Der dem angegebenen Schlüssel zugeordnete Wert.Wenn der angegebene Schlüssel nicht gefunden werden kann, wird beim Abrufen dieses Schlüssels null zurückgegeben. Beim Festlegen wird ein neues Element mit dem angegebenen Schlüssel erstellt. - Der Schlüssel, dessen Wert abgerufen oder festgelegt werden soll. - - ist null. - Die Eigenschaft wird festgelegt, und die ist schreibgeschützt.- oder - Die Eigenschaft wird festgelegt, ist in der Auflistung nicht vorhanden, und hat eine feste Größe. - 2 - - - Vergleicht ein bestimmtes mit einem bestimmten Schlüssel in . - true, wenn und gleich sind, andernfalls false. - Das , das mit verglichen werden soll. - Der Schlüssel in der , der mit verglichen werden soll. - - ist null.- oder - ist null. - - - Ruft eine ab, die die Schlüssel in der enthält. - Eine , die die Schlüssel in der enthält. - 1 - - - Entfernt das Element mit dem angegebenen Schlüssel aus dem . - Der Schlüssel des zu entfernenden Elements. - - ist null. - - ist schreibgeschützt.- oder - hat eine feste Größe. - 1 - - - Gibt einen synchronisierten (threadsicheren) Wrapper für die zurück. - Ein synchronisierter (threadsicherer) Wrapper für die . - Die , die synchronisiert werden soll. - - ist null. - 1 - - - Ruft ein Objekt ab, mit dem der Zugriff auf synchronisiert werden kann. - Ein Objekt, mit dem der Zugriff auf die synchronisiert werden kann. - 2 - - - Gibt einen Enumerator zurück, der eine Auflistung durchläuft. - Ein , der zum Durchlaufen der Auflistung verwendet werden kann. - - - Ruft eine ab, die die Werte im enthält. - Eine , die die Werte im enthält. - 1 - - - Stellt eine FIFO-Auflistung (First-In-First-Out) von Objekten dar. - 1 - - - Initialisiert eine neue, leere Instanz der -Klasse, die anfänglich über die Standardkapazität verfügt und den Standardzuwachsfaktor verwendet. - - - Initialisiert eine neue Instanz der -Klasse, die aus der angegebenen Auflistung kopierte Elemente enthält und über eine der Anzahl der kopierten Elemente entsprechende anfängliche Kapazität verfügt sowie den Standardzuwachsfaktor verwendet. - Die , aus der Elemente kopiert werden sollen. - - is null. - - - Initialisiert eine neue, leere Instanz der -Klasse, die über die angegebenen Anfangskapazität verfügt und den Standardzuwachsfaktor verwendet. - Die anfängliche Anzahl von Elementen, die enthalten kann. - - is less than zero. - - - Initialisiert eine neue, leere Instanz der -Klasse, die über die angegebenen Anfangskapazität verfügt und den angegebenen Zuwachsfaktor verwendet. - Die anfängliche Anzahl von Elementen, die enthalten kann. - Der Faktor, um den die Kapazität von erweitert wird. - - is less than zero.-or- is less than 1.0 or greater than 10.0. - - - Entfernt alle Objekte aus dem . - 2 - - - Erstellt eine flache Kopie von . - Eine flache Kopie von . - 2 - - - Bestimmt, ob sich ein Element in befindet. - true, wenn das in der gefunden wird, andernfalls false. - Das , das in der gesucht werden soll.Der Wert kann null sein. - 2 - - - Kopiert die -Elemente in ein vorhandenes eindimensionales , beginnend beim angegebenen Arrayindex. - Das eindimensionale , das das Ziel der aus der kopierten Elemente ist.Für das muss eine nullbasierte Indizierung verwendet werden. - Der nullbasierte Index im , bei dem der Kopiervorgang beginnt. - - is null. - - is less than zero. - - is multidimensional.-or- The number of elements in the source is greater than the available space from to the end of the destination . - The type of the source cannot be cast automatically to the type of the destination . - 2 - - - Ruft die Anzahl der Elemente ab, die in enthalten sind. - Die Anzahl der Elemente, die in enthalten sind. - 2 - - - Entfernt das Objekt am Anfang von und gibt es zurück. - Das Objekt, das vom Anfang der entfernt wurde. - The is empty. - 2 - - - Fügt am Ende der ein Objekt hinzu. - Das Objekt, das hinzugefügt werden soll.Der Wert kann null sein. - 2 - - - Gibt einen Enumerator zurück, der die durchläuft. - Ein für das . - 2 - - - Ruft einen Wert ab, der angibt, ob der Zugriff auf die synchronisiert (threadsicher) ist. - true, wenn der Zugriff auf das synchronisiert (threadsicher) ist, andernfalls false.Die Standardeinstellung ist false. - 2 - - - Gibt das Objekt am Anfang von zurück, ohne es zu entfernen. - Das Objekt am Anfang der . - The is empty. - 2 - - - Gibt eine neue zurück, die die ursprüngliche Warteschlange umschließt und threadsicher ist. - Ein -Wrapper, der synchronisiert (threadsicher) ist. - Die , die synchronisiert werden soll. - - is null. - 2 - - - Ruft ein Objekt ab, mit dem der Zugriff auf synchronisiert werden kann. - Ein Objekt, mit dem der Zugriff auf die synchronisiert werden kann. - 2 - - - Kopiert die -Elemente in ein neues Array. - Ein neues Array mit Elementen, die aus kopiert werden. - 2 - - - Legt die Kapazität auf die Anzahl der tatsächlich in der enthaltenen Elemente fest. - The is read-only. - 2 - - - Stellt die abstract-Basisklasse für eine stark typisierte nicht generische schreibgeschützte Auflistung bereit. - 2 - - - Initialisiert eine neue Instanz der -Klasse. - - - Ruft die Anzahl der in der -Instanz enthaltenen Elemente ab. - Die Anzahl der in der -Instanz enthaltenen Elemente.Das Abrufen des Wertes dieser Eigenschaft ist ein O(1)-Vorgang. - 2 - - - Gibt einen Enumerator zurück, der die durchläuft. - Ein für die -Instanz. - 2 - - - Ruft die Liste der in der -Instanz enthaltenen Elemente ab. - Eine , die die -Instanz selbst darstellt. - - - Kopiert die gesamte in ein kompatibles eindimensionales , beginnend am angegebenen Index des Zielarrays. - Das eindimensionale , das das Ziel der aus der kopierten Elemente ist.Für das muss eine nullbasierte Indizierung verwendet werden. - Der nullbasierte Index im , bei dem der Kopiervorgang beginnt. - - ist null. - - ist kleiner als 0. - - ist mehrdimensional.- oder - Die Anzahl der Elemente in der Quell- ist größer als der verfügbare Platz von bis zum Ende des Ziel-. - Der Typ der Quell- kann nicht automatisch in den Typ des Ziel- umgewandelt werden. - - - Ruft einen Wert ab, der angibt, ob der Zugriff auf ein -Objekt synchronisiert (threadsicher) ist. - true, wenn der Zugriff auf das -Objekt synchronisiert (threadsicher) ist, andernfalls false.Die Standardeinstellung ist false. - - - Ruft ein Objekt ab, mit dem der Zugriff auf ein -Objekt synchronisiert werden kann. - Ein Objekt, mit dem der Zugriff auf das -Objekt synchronisiert werden kann. - - - Stellt eine Auflistung von Schlüssel-Wert-Paaren dar, die nach Schlüsseln sortiert sind und auf die sowohl über Schlüssel als auch über Indizes zugegriffen werden kann. - 1 - - - Initialisiert eine neue, leere Instanz der -Klasse, die über die anfängliche Standardkapazität verfügt und entsprechend der -Schnittstelle sortiert wird, die von jedem zum -Objekt hinzugefügten Schlüssel implementiert wird. - - - Initialisiert eine neue, leere Instanz der -Klasse, die über die anfängliche Standardkapazität verfügt und entsprechend der angegebenen -Schnittstelle sortiert wird. - Die -Implementierung, die beim Vergleich von Schlüsseln verwendet wird.- oder - null, wenn die -Implementierung des jeweiligen Schlüssels verwendet werden soll. - - - Initialisiert eine neue, leere Instanz der -Klasse, die über die angegebene anfängliche Kapazität verfügt und entsprechend der angegebenen -Schnittstelle sortiert wird. - Die -Implementierung, die beim Vergleich von Schlüsseln verwendet wird.- oder - null, wenn die -Implementierung des jeweiligen Schlüssels verwendet werden soll. - Die anfängliche Anzahl an Elementen, die das -Objekt enthalten kann. - - ist kleiner als 0. - Es ist nicht genügend Arbeitsspeicher verfügbar, um ein -Objekt mit der angegebenen zu erstellen. - - - Initialisiert eine neue Instanz der -Klasse mit Elementen, die aus dem angegebenen Wörterbuch kopiert werden. Die anfängliche Kapazität entspricht der Anzahl der kopierten Elemente, und die Sortierung erfolgt entsprechend der -Schnittstelle, die von den einzelnen Schlüsseln implementiert wird. - Die -Implementierung, die in ein neues -Objekt kopiert werden soll. - - ist null. - Mindestens ein Element in implementiert die -Schnittstelle nicht. - - - Initialisiert eine neue Instanz der -Klasse, die aus dem angegebenen Wörterbuch kopierte Elemente enthält. Die anfängliche Kapazität entspricht der Anzahl der kopierten Elemente, und die Sortierung erfolgt nach der angegebenen -Schnittstelle. - Die -Implementierung, die in ein neues -Objekt kopiert werden soll. - Die -Implementierung, die beim Vergleich von Schlüsseln verwendet wird.- oder - null, wenn die -Implementierung des jeweiligen Schlüssels verwendet werden soll. - - ist null. - - ist null, und mindestens ein Element in implementiert die -Schnittstelle nicht. - - - Initialisiert eine neue, leere Instanz der -Klasse, die über die angegebene anfängliche Standardkapazität verfügt und entsprechend der -Schnittstelle sortiert wird, die von jedem zum -Objekt hinzugefügten Schlüssel implementiert wird. - Die anfängliche Anzahl an Elementen, die das -Objekt enthalten kann. - - ist kleiner als 0. - Es ist nicht genügend Arbeitsspeicher verfügbar, um ein -Objekt mit der angegebenen zu erstellen. - - - Fügt einem -Objekt ein Element mit dem angegebenen Schlüssel und Wert hinzu. - Der Schlüssel des hinzuzufügenden Elements. - Der Wert des hinzuzufügenden Elements.Der Wert kann null sein. - - ist null. - Ein Element mit dem angegebenen ist bereits im -Objekt vorhanden.- oder - ist auf die Verwendung der -Schnittstelle festgelegt, und implementiert die -Schnittstelle nicht. - - ist schreibgeschützt.- oder - hat eine feste Größe. - Es ist nicht genügend Arbeitsspeicher verfügbar, um das Element zu hinzuzufügen. - Der Vergleich löst eine Ausnahme aus. - 2 - - - Ruft die Kapazität eines -Objekts ab oder legt diese fest. - Die Anzahl von Elementen, die das -Objekt enthalten kann. - Der zugewiesene Wert ist kleiner als die derzeitige Anzahl der Elemente im -Objekt. - Es ist nicht genügend Arbeitsspeicher im System verfügbar. - 2 - - - Entfernt alle Elemente aus einem -Objekt. - Das -Objekt ist schreibgeschützt.- oder - hat eine feste Größe. - 1 - - - Erstellt eine flache Kopie eines -Objekts. - Eine flache Kopie des -Objekts. - 2 - - - - - - Ermittelt, ob ein -Objekt einen bestimmten Schlüssel enthält. - true, wenn das -Objekt ein Element mit dem angegebenen enthält, andernfalls false. - Der im -Objekt zu suchende Schlüssel. - - ist null. - Der Vergleich löst eine Ausnahme aus. - 1 - - - Ermittelt, ob ein -Objekt einen bestimmten Schlüssel enthält. - true, wenn das -Objekt ein Element mit dem angegebenen enthält, andernfalls false. - Der im -Objekt zu suchende Schlüssel. - - ist null. - Der Vergleich löst eine Ausnahme aus. - 1 - - - Ermittelt, ob ein -Objekt einen bestimmten Wert enthält. - true, wenn das -Objekt ein Element mit dem angegebenen enthält, andernfalls false. - Der im -Objekt zu suchende Wert.Der Wert kann null sein. - 2 - - - Kopiert -Elemente in ein eindimensionales -Objekt, beginnend mit dem angegebenen Index im Array. - Das eindimensionale -Objekt, das das Ziel der aus kopierten -Objekte darstellt.Für das muss eine nullbasierte Indizierung verwendet werden. - Der nullbasierte Index im , bei dem der Kopiervorgang beginnt. - - ist null. - - ist kleiner als 0. - - ist mehrdimensional.- oder - Die Anzahl der aus dem -Quellobjekt zu kopierenden Elemente ist größer als der verfügbare Platz von bis zum Ende des Ziel-. - Der Typ der Quell- kann nicht automatisch in den Typ des Ziel- umgewandelt werden. - 2 - - - Ruft die Anzahl der Elemente ab, die in einem -Objekt enthalten sind. - Die Anzahl der Elemente, die im -Objekt enthalten sind. - 1 - - - Ruft den Wert am angegebenen Index in einem -Objekt ab. - Der Wert am angegebenen Index im -Objekt. - Der nullbasierte Index des abzurufenden Werts. - - liegt außerhalb des Bereichs der gültigen Indizes für das -Objekt. - 2 - - - Gibt ein -Objekt zurück, das ein -Objekt durchläuft. - Ein -Objekt für das -Objekt. - 2 - - - Ruft den Schlüssel am angegebenen Index in einem -Objekt ab. - Der Schlüssel am angegebenen Index im -Objekt. - Der nullbasierte Index des abzurufenden Schlüssels. - - liegt außerhalb des Bereichs der gültigen Indizes für das -Objekt. - 2 - - - Ruft die Schlüssel in einem -Objekt ab. - Ein -Objekt, das die Schlüssel im -Objekt enthält. - 2 - - - Ruft die Werte in einem -Objekt ab. - Ein -Objekt, das die Werte des -Objekts enthält. - 2 - - - Gibt den nullbasierten Index des angegebenen Schlüssels in einem -Objekt zurück. - Der nullbasierte Index des -Parameters, wenn im -Objekt gefunden wurde, andernfalls -1. - Der im -Objekt zu suchende Schlüssel. - - ist null. - Der Vergleich löst eine Ausnahme aus. - 1 - - - Gibt den nullbasierten Index des ersten Vorkommens des angegebenen Werts in einem -Objekt zurück. - Der nullbasierte Index des ersten Vorkommens des -Parameters in der Auflistung, sofern im -Objekt gefunden wurde, andernfalls -1. - Der im -Objekt zu suchende Wert.Der Wert kann null sein. - 1 - - - Ruft einen Wert ab, der angibt, ob ein -Objekt eine feste Größe hat. - true, wenn das -Objekt eine feste Größe hat, andernfalls false.Die Standardeinstellung ist false. - 2 - - - Ruft einen Wert ab, der angibt, ob ein -Objekt schreibgeschützt ist. - true, wenn das -Objekt schreibgeschützt ist, andernfalls false.Die Standardeinstellung ist false. - 2 - - - Ruft einen Wert ab, der angibt, ob der Zugriff auf ein -Objekt synchronisiert (threadsicher) ist. - true, wenn der Zugriff auf das -Objekt synchronisiert (threadsicher) ist, andernfalls false.Die Standardeinstellung ist false. - 2 - - - Ruft den Wert ab, der einem bestimmten Schlüssel in einem -Objekt zugeordnet ist, oder legt diesen fest. - Wenn gefunden wird, der dem -Parameter zugeordnete Wert im -Objekt, andernfalls null. - Der Schlüssel, der dem abzurufenden oder festzulegenden Wert zugeordnet ist. - - ist null. - Die Eigenschaft wird festgelegt, und das -Objekt ist schreibgeschützt.- oder - Die Eigenschaft wird festgelegt, ist in der Auflistung nicht vorhanden, und hat eine feste Größe. - Es ist nicht genügend Arbeitsspeicher verfügbar, um das Element zu hinzuzufügen. - Der Vergleich löst eine Ausnahme aus. - 1 - - - Ruft die Schlüssel in einem -Objekt ab. - Ein -Objekt, das die Schlüssel im -Objekt enthält. - 1 - - - Entfernt das Element mit dem angegebenen Schlüssel aus einem -Objekt. - Der Schlüssel des zu entfernenden Elements. - - ist null. - Das -Objekt ist schreibgeschützt.- oder - hat eine feste Größe. - 1 - - - Entfernt das Element am angegebenen Index aus einem -Objekt. - Der nullbasierte Index des zu entfernenden Elements. - - liegt außerhalb des Bereichs der gültigen Indizes für das -Objekt. - - ist schreibgeschützt.- oder - hat eine feste Größe. - 2 - - - Ersetzt den Wert an einem bestimmten Index in einem -Objekt. - Der nullbasierte Index, an dem gespeichert werden soll. - Das , das im -Objekt gespeichert werden soll.Der Wert kann null sein. - - liegt außerhalb des Bereichs der gültigen Indizes für das -Objekt. - 2 - - - Gibt einen synchronisierten (threadsicheren) Wrapper für ein -Objekt zurück. - Ein synchronisierter (threadsicherer) Wrapper das -Objekt. - Das -Objekt, das synchronisiert werden soll. - - ist null. - 1 - - - - - - Ruft ein Objekt ab, mit dem der Zugriff auf ein -Objekt synchronisiert werden kann. - Ein Objekt, mit dem der Zugriff auf das -Objekt synchronisiert werden kann. - 2 - - - Gibt einen zurück, der durchläuft. - Ein für das . - - - Legt die Kapazität auf die tatsächliche Anzahl der in einem -Objekt enthaltenen Elemente fest. - Das -Objekt ist schreibgeschützt.- oder - hat eine feste Größe. - 2 - - - Ruft die Werte in einem -Objekt ab. - Ein -Objekt, das die Werte des -Objekts enthält. - 1 - - - Stellt eine einfache, nicht generische LIFO (Last-In-First-Out)-Auflistung von Objekten dar. - 1 - - - Initialisiert eine neue, leere Instanz der -Klasse, die die Standardanfangskapazität aufweist. - - - Initialisiert eine neue Instanz der -Klasse, die aus der angegebenen Auflistung kopierte Elemente enthält und deren anfängliche Kapazität der Anzahl der kopierten Elemente entspricht. - Die , aus der Elemente kopiert werden sollen. - - ist null. - - - Initialisiert eine neue, leere Instanz der -Klasse, die über die angegebene anfängliche Kapazität, mindestens aber über die anfängliche Standardkapazität verfügt. - Die anfängliche Anzahl an Elementen, die der enthalten kann. - - ist kleiner als null. - - - Entfernt alle Objekte aus dem . - 2 - - - Erstellt eine flache Kopie von . - Eine flache Kopie von . - 2 - - - Bestimmt, ob sich ein Element in befindet. - true, wenn sich in befindet, andernfalls false. - Das , das in der gesucht werden soll.Der Wert kann null sein. - 2 - - - Kopiert in ein vorhandenes eindimensionales , beginnend beim angegebenen Arrayindex. - Das eindimensionale , das das Ziel der aus der kopierten Elemente ist.Für das muss eine nullbasierte Indizierung verwendet werden. - Der nullbasierte Index im , bei dem der Kopiervorgang beginnt. - - ist null. - - ist kleiner als 0. - - ist mehrdimensional.- oder - Die Anzahl der Elemente in der Quell- ist größer als der verfügbare Platz von bis zum Ende des Ziel-. - Der Typ der Quell- kann nicht automatisch in den Typ des Ziel- umgewandelt werden. - 2 - - - Ruft die Anzahl der Elemente ab, die in enthalten sind. - Die Anzahl der Elemente, die in enthalten sind. - 2 - - - Gibt einen für das zurück. - Ein für den . - 2 - - - Ruft einen Wert ab, der angibt, ob der Zugriff auf synchronisiert (threadsicher) ist. - true, wenn der Zugriff auf die synchronisiert (threadsicher) ist, andernfalls false.Die Standardeinstellung ist false. - 2 - - - Gibt das oberste Objekt von zurück, ohne es zu entfernen. - Das oberste von . - Der ist leer. - 2 - - - Entfernt das oberste Objekt aus und gibt es zurück. - Das , das vom Anfang des entfernt wurde. - Der ist leer. - 2 - - - Fügt ein Objekt am Anfang von ein. - Das , das auf dem abgelegt werden soll.Der Wert kann null sein. - 2 - - - Gibt einen synchronisierten (threadsicheren) Wrapper für zurück. - Ein synchronisierter Wrapper um . - Der , der synchronisiert werden soll. - - ist null. - 2 - - - Ruft ein Objekt ab, mit dem der Zugriff auf synchronisiert werden kann. - Ein , mit dem der Zugriff auf synchronisiert werden kann. - 2 - - - Kopiert in ein neues Array. - Ein neues Array, das Kopien der Elemente aus enthält. - 2 - - - Erstellt Auflistungen, bei denen die Groß- und Kleinschreibung in Zeichenfolgen ignoriert wird. - - - Initialisiert eine neue Instanz der -Klasse. - - - Erstellt eine neue, die Groß- und Kleinschreibung nicht berücksichtigende Instanz der -Klasse mit der anfänglichen Standardkapazität. - Eine neue, die Groß- und Kleinschreibung nicht berücksichtigende Instanz der -Klasse mit der anfänglichen Standardkapazität. - - - - - - Kopiert die Einträge aus dem angegebenen Wörterbuch in eine neue, die Groß- und Kleinschreibung nicht berücksichtigende Instanz der -Klasse mit einer Anfangskapazität, die der Anzahl der kopierten Einträge entspricht. - Eine neue, die Groß- und Kleinschreibung nicht berücksichtigende Instanz der -Klasse mit den Einträgen aus dem angegebenen . - Das , das in eine neue, die Groß- und Kleinschreibung nicht berücksichtigende kopiert werden soll. - - ist null. - - - Erstellt eine neue, die Groß- und Kleinschreibung nicht berücksichtigende Instanz der -Klasse mit der angegebenen Anfangskapazität. - Eine neue, die Groß- und Kleinschreibung nicht berücksichtigende Instanz der -Klasse mit der angegebenen Anfangskapazität. - Die ungefähre Anzahl von Einträgen, die die anfänglich enthalten kann. - - ist kleiner als 0 (null). - - - Erstellt eine neue Instanz der -Klasse, die die Groß- und Kleinschreibung von Zeichenfolgen nicht berücksichtigt. - Eine neue Instanz der -Klasse, die die Groß- und Kleinschreibung von Zeichenfolgen nicht berücksichtigt. - - - \ No newline at end of file diff --git a/pyaedt/dlls/PDFReport/Images/Ansys.png b/pyaedt/generic/Ansys.png similarity index 100% rename from pyaedt/dlls/PDFReport/Images/Ansys.png rename to pyaedt/generic/Ansys.png diff --git a/pyaedt/generic/AnsysTemplate.json b/pyaedt/generic/AnsysTemplate.json new file mode 100644 index 00000000000..7f887898bc6 --- /dev/null +++ b/pyaedt/generic/AnsysTemplate.json @@ -0,0 +1,25 @@ +{ + "units": "cm", + "top_margin":3.0, + "bottom_margin":2.0, + "left_margin":1.0, + "right_margin":1.0, + "footer_font_size ": 7, + "footer_text":"Copyright (c) 2023, ANSYS Inc. unauthorised use, distribution or duplication is prohibited", + "header_font_size":7, + "header_image_width":3.3, + "title_font_size":14, + "subtitle_font_size":12, + "text_font_size":11, + "table_font_size":9, + "caption_font_size":9, + "cover_title_font_size":28, + "cover_subtitle_font_size":24, + "font":"helvetica", + "chart_width":16, + "font_color":[0, 0, 0], + "font_chapter_color":[255, 0, 0], + "font_subchapter_color":[0, 128, 0], + "font_header_color":[0, 0, 255], + "font_caption_color":[125, 0, 100] +} \ No newline at end of file diff --git a/pyaedt/generic/pdf.py b/pyaedt/generic/pdf.py index f673a5a55ae..d2aada311f8 100644 --- a/pyaedt/generic/pdf.py +++ b/pyaedt/generic/pdf.py @@ -1,42 +1,196 @@ +import json import os -import warnings - -from pyaedt import __version__ -from pyaedt import pyaedt_path -from pyaedt.edb_core.general import convert_py_list_to_net_list -from pyaedt.generic.clr_module import List -from pyaedt.generic.clr_module import _clr -from pyaedt.generic.clr_module import is_clr - -try: - _clr.AddReference("AnsysReport") - from AnsysReport import CreatePdfReport - from AnsysReport import ReportSpec -except ImportError: - msg = "pythonnet or dotnetcore not installed. Pyaedt will work only in client mode." - warnings.warn(msg) +from fpdf import FPDF -class AnsysReport: - """Generate a pdf report.""" - +from pyaedt import __version__ +from pyaedt.generic.constants import unit_converter + + +class ReportSpec: + document_prefix = "ANSS" + ansys_version = "2023R2" + revision = "Rev 1.0" + logo_name = os.path.join(os.path.dirname(__file__), "Ansys.png") + company_name = "Ansys Inc." + template_name = os.path.join(os.path.dirname(__file__), "AnsysTemplate.json") + design_name = "Design1" + project_name = "Project1" + pyaedt_version = __version__ + + +class TemplateData: + """Class containing default template data.""" + + units = "cm" + top_margin = 3.0 + bottom_margin = 2.0 + left_margin = 1.0 + right_margin = 1.0 + footer_font_size = 7 + footer_text = "Copyright (c) 2023, ANSYS Inc. unauthorised use, distribution or duplication is prohibited" + header_font_size = 7 + header_image_width = 3.3 + title_font_size = 14 + subtitle_font_size = 12 + text_font_size = 11 + table_font_size = 9 + caption_font_size = 9 + cover_title_font_size = 28 + cover_subtitle_font_size = 24 + font = "helvetica" + chart_width = 16 + font_color = [0, 0, 0] + font_chapter_color = [255, 0, 0] + font_subchapter_color = [0, 128, 0] + font_header_color = [0, 0, 255] + font_caption_color = [125, 0, 100] + + +class AnsysReport(FPDF): def __init__(self, version="2023R1", design_name="design1", project_name="AnsysProject", tempplate_json_file=None): - assert is_clr, ".Net Core 3.1 is needed to run AnsysReport." + super().__init__() self.report_specs = ReportSpec() - self.report_specs.AnsysVersion = version - self.report_specs.DesignName = design_name - self.report_specs.ProjectName = project_name - self.report_specs.PyAEDTVersion = __version__ + self.report_specs.ansys_version = version + self.report_specs.design_name = design_name + self.report_specs.project_name = project_name if tempplate_json_file: - self.report_specs.TemplateName = tempplate_json_file + self.report_specs.template_name = tempplate_json_file + self._read_template() + self._chapter_idx = 0 + self._sub_chapter_idx = 0 + self._figure_idx = 1 + self.set_top_margin(unit_converter(self.template_data.top_margin, input_units=self.template_data.units)) + self.set_right_margin(unit_converter(self.template_data.right_margin, input_units=self.template_data.units)) + self.set_left_margin(unit_converter(self.template_data.left_margin, input_units=self.template_data.units)) + self.set_auto_page_break( + True, margin=unit_converter(self.template_data.bottom_margin, input_units=self.template_data.units) + ) + self.alias_nb_pages() + + def _read_template(self): + self.template_data = TemplateData() + tdata = {} + with open(self.report_specs.template_name, "r") as f: + tdata = json.load(f) + for k, v in tdata.items(): + if k in self.template_data.__dict__: + self.template_data.__dict__[k] = v + + def _add_cover_page(self): + self.add_page() + self.set_font(self.template_data.font.lower(), "b", self.template_data.cover_subtitle_font_size) + self.y += 40 + self.cell( + 0, + 12, + "Simulation Report", + new_x="LMARGIN", + new_y="NEXT", + align="L", + ) + self.ln(10) + self.set_font(self.template_data.font.lower(), "B", self.template_data.cover_title_font_size) + self.cell( + 0, + 16, + f"Project Name: {self.report_specs.project_name}", + new_x="LMARGIN", + new_y="NEXT", + align="L", + ) + self.cell( + 0, + 16, + f"Design Name: {self.report_specs.design_name}", + new_x="LMARGIN", + new_y="NEXT", + align="L", + ) - def create(self, add_header=True, add_first_page=True): + def header(self): + # Logo + self.set_y(15) + line_x = self.x + line_y = self.y + delta = (self.w - self.r_margin - self.l_margin) / 5 - 10 + self.set_text_color(*self.template_data.font_header_color) + + def add_field(field_name, field_value): + self.set_font(self.template_data.font.lower(), size=self.template_data.header_font_size) + self.cell( + 0, + 3, + field_name, + new_x="LMARGIN", + new_y="NEXT", + align="L", + ) + self.set_x(line_x) + self.cell( + 0, + 3, + field_value, + new_x="LMARGIN", + new_y="NEXT", + align="L", + ) + + add_field("Project Name", self.report_specs.project_name) + self.set_y(line_y) + line_x += delta + self.set_x(line_x) + add_field("Design Name", self.report_specs.design_name) + + self.set_y(line_y) + line_x += delta + self.set_x(line_x) + add_field("Ansys Version", self.report_specs.ansys_version) + self.set_y(line_y) + line_x += delta + self.set_x(line_x) + add_field("PyAEDT Version", self.report_specs.pyaedt_version) + self.set_y(line_y) + line_x += delta + self.set_x(line_x) + from datetime import date + + add_field("Date", str(date.today())) + self.set_y(line_y) + line_x += delta + self.set_x(line_x) + add_field("Revision", self.report_specs.revision) + self.set_y(10) + line_x += delta + self.set_x(self.w - self.r_margin - 33) + self.image( + self.report_specs.logo_name, + self.x, + self.y, + unit_converter(self.template_data.header_image_width, input_units=self.template_data.units), + ) + self.set_x(self.l_margin) + self.set_y(self.t_margin) + self.line(x1=self.l_margin, y1=self.t_margin - 7, x2=self.w - self.r_margin, y2=self.t_margin - 7) + + # Page footer + def footer(self): + # Position at 1.5 cm from bottom + self.set_y(-15) + # Arial italic 8 + self.set_font("helvetica", "I", 8) + self.set_text_color(*self.template_data.font_header_color) + # Page number + self.cell(0, 10, self.template_data.footer_text, 0, align="L") + self.cell(0, 10, "Page " + str(self.page_no()) + "/{nb}", align="R") + + def create(self, add_cover_page=True, add_toc=True): """Create a new report using ``report_specs`` properties. Parameters ---------- - add_header :bool, optional - Whether to add pdf header or not. Default is ``True``. + add_toc :bool, optional + Whether to add pdf table of content or not. Default is ``True``. add_first_page :bool, optional Whether to add first page with title or not. Default is ``True``. @@ -44,13 +198,15 @@ def create(self, add_header=True, add_first_page=True): ------- :class:`AnsysReport` """ - self.report = CreatePdfReport(os.path.join(pyaedt_path, "dlls", "PDFReport")) - self.report.Specs = self.report_specs - if add_header: - self.report.AddAnsysHeader(-1) - if add_first_page: - self.report.AddFirstPage() - return self.report + if add_cover_page: + self._add_cover_page() + + if add_toc: + if not add_cover_page: + self.add_page() + self.add_toc() + + return True @property def template_name(self): @@ -62,11 +218,11 @@ def template_name(self): ------- str """ - return self.report_specs.TemplateName + return self.report_specs.template_name @template_name.setter def template_name(self, value): - self.report_specs.TemplateName = value + self.report_specs.template_name = value @property def design_name(self): @@ -76,11 +232,11 @@ def design_name(self): ------- str """ - return self.report_specs.DesignName + return self.report_specs.design_name @design_name.setter def design_name(self, value): - self.report_specs.DesignName = value + self.report_specs.design_name = value @property def project_name(self): @@ -90,11 +246,11 @@ def project_name(self): ------- str """ - return self.report_specs.ProjectName + return self.report_specs.project_name @project_name.setter def project_name(self, value): - self.report_specs.ProjectName = value + self.report_specs.project_name = value @property def aedt_version(self): @@ -104,53 +260,91 @@ def aedt_version(self): ------- str """ - return self.report_specs.AnsysVersion + return self.report_specs.ansys_version @aedt_version.setter def aedt_version(self, value): - self.report_specs.AnsysVersion = value + self.report_specs.ansys_version = value - def add_section(self, portrait=True): + def add_section(self, portrait=True, format="a4"): """Add a new section to Pdf. Parameters ---------- portrait : bool, optional Section orientation. Default ``True`` for portrait. + format : str, optional + Currently supported formats are a3, a4, a5, letter, legal or a tuple (width, height). Returns ------- int, Section id. """ - orientation = "P" if portrait else "L" - return self.report.CreateNewSection(orientation) + orientation = "portrait" + if not portrait: + orientation = "landscape" + self.add_page(orientation=orientation, format=format) - def add_chapter(self, chapter_name, section_id=0): + def add_chapter(self, chapter_name): """Add a new chapter. Parameters ---------- chapter_name : str Chapter name. - section_id : int, optional - Section on which add the chapter. Default is 0 which use current section. """ - self.report.AddChapter(chapter_name, section_id) + self._chapter_idx += 1 + self._sub_chapter_idx = 0 + txt = f"{self._chapter_idx} {chapter_name}" + self.set_font(self.template_data.font.lower(), "B", self.template_data.title_font_size) + self.start_section(txt) + self.set_text_color(*self.template_data.font_chapter_color) + self.cell( + 0, + 12, + txt, + new_x="LMARGIN", + new_y="NEXT", + align="L", + ) + self.set_font(self.template_data.font.lower(), "I", self.template_data.text_font_size) + self.set_text_color(*self.template_data.font_color) + return True - def add_sub_chapter(self, chapter_name, section_id=0): + def add_sub_chapter(self, chapter_name): """Add a new sub-chapter. Parameters ---------- chapter_name : str Chapter name. - section_id : int, optional - Section on which add the subchapter. Default is 0 which use current section. """ - return self.report.AddSubChapter(chapter_name, section_id) + self._sub_chapter_idx += 1 + txt = f" {self._chapter_idx}.{self._sub_chapter_idx} {chapter_name}" + self.set_font(self.template_data.font.lower(), "I", self.template_data.subtitle_font_size) + self.start_section(txt.strip(), level=1) + self.set_text_color(*self.template_data.font_subchapter_color) + self.cell( + 0, + 10, + txt, + new_x="LMARGIN", + new_y="NEXT", + align="L", + ) + self.set_font(self.template_data.font.lower(), "I", self.template_data.text_font_size) + self.set_text_color(*self.template_data.font_color) + + return True - def add_image(self, path, caption="", width=10, section_id=0): + def add_image( + self, + path, + caption="", + width=0, + height=0, + ): """Add a new image. Parameters @@ -160,55 +354,65 @@ def add_image(self, path, caption="", width=10, section_id=0): caption : str, optional Image caption. width : int, optional - Image width in centimeters. - section_id : int, optional - Section on which add the chapter. Default is 0 which use current section. + Image width in millimeters. + height : int, optional + Image height in millimeters. """ - return self.report.AddImageWithCaption(path, caption, width, section_id) + if width == 0: + width = self.epw + + self.image(path, h=height, w=width, x=self.epw / 2 - width / 2 + self.l_margin) + if caption: + caption = f"Figure {self._figure_idx}. {caption}" + self.add_caption(caption) + self._figure_idx += 1 + return True - def add_caption(self, content, section_id=0): + def add_caption(self, content): """Add a new caption. Parameters ---------- content : str Caption name. - section_id : int, optional - Section on which add the caption. Default is 0 which use current section. + """ - return self.report.AddCaption(content, section_id) + self.set_font(self.template_data.font.lower(), "I", self.template_data.caption_font_size) + self.set_text_color(*self.template_data.font_caption_color) + self.start_section(content, level=1) + self.cell( + 0, + 6, + content, + new_x="LMARGIN", + new_y="NEXT", + align="C", + ) + self.set_font(self.template_data.font.lower(), "I", self.template_data.text_font_size) + self.set_text_color(*self.template_data.font_color) - def add_empty_line(self, num_lines=1, section_id=0): + def add_empty_line(self, num_lines=1): """Add a new empty line. Parameters ---------- num_lines : int, optional Number of lines to add. - section_id : int, optional - Section on which add the lines. Default is 0 which use current section. """ - return self.report.AddEmptyLines(num_lines, section_id) + self.ln(num_lines) - def add_page_break(self, section_id=0): + def add_page_break(self): """Add a new page break line. Parameters ---------- - section_id : int, optional - Section on which add the lines. Default is 0 which use current section. """ - return self.report.AddPageBreak(section_id) + self.add_page() def add_table( self, title, content, - is_centered=True, - transposed=True, - bold_first_row=True, - bold_first_column=True, - section_id=0, ): """Add a new table from a list of data. Data shall be a list of list where every line is either a row or a column. @@ -219,25 +423,25 @@ def add_table( Table title. content : list of list Table content. - is_centered : bool, optional - Whether if table is centered or not. Default is ``True``. - transposed : bool, optional - Whether if data are transposed or not. Default is ``True``. - bold_first_row : bool, optional - Whether if first row will be bolded or not. Default is ``True``. - bold_first_column : bool, optional - Whether if first column will be bolded or not. Default is ``True``. - section_id : int, optional - Section on which add the lines. Default is 0 which use current section. """ - content_sharp = List[type(List[str]())]() - for el in content: - content_sharp.Add(convert_py_list_to_net_list([str(i) for i in el])) - return self.report.AddTableFromList( - title, content_sharp, is_centered, transposed, bold_first_row, bold_first_column, section_id - ) - - def add_text(self, content, bold=False, italic=False, section_id=0): + self.set_font(self.template_data.font.lower(), size=self.template_data.text_font_size) + self.add_caption(f"Table {title}") + + self.set_font(self.template_data.font.lower(), size=self.template_data.table_font_size) + with self.table( + borders_layout="MINIMAL", + cell_fill_color=200, # grey + cell_fill_mode="ROWS", + line_height=self.font_size * 2.5, + text_align="CENTER", + width=160, + ) as table: + for data_row in content: + row = table.row() + for datum in data_row: + row.cell(datum) + + def add_text(self, content, bold=False, italic=False): """Add a new text. Parameters @@ -248,16 +452,63 @@ def add_text(self, content, bold=False, italic=False, section_id=0): Whether if text is bold or not. Default is ``True``. italic : bool, optional Whether if text is italic or not. Default is ``True``. - section_id : int, optional - Section on which add the caption. Default is 0 which use current section. """ - self.report.AddText(content, bold, italic, section_id) + type = "" + if bold: + type = "B" + if italic: + type += "I" + self.set_font(self.template_data.font.lower(), type.lower(), self.template_data.text_font_size) + self.set_text_color(*self.template_data.font_color) + + self.multi_cell( + 0, + 6, + content, + new_x="LMARGIN", + new_y="NEXT", + align="L", + ) def add_toc(self): """Add Table of content.""" - self.report.AddTableOfContent() - def save_pdf(self, file_path, file_name=None, open=False): + def p(pdf, text, **kwargs): + "Inserts a paragraph" + pdf.multi_cell( + w=pdf.epw, + h=pdf.font_size, + text=text, + new_x="LMARGIN", + new_y="NEXT", + **kwargs, + ) + + def render_toc(pdf, outline): + pdf.set_font(self.template_data.font.lower(), size=self.template_data.title_font_size) + self.set_text_color(*self.template_data.font_color) + pdf.underline = True + pdf.x = pdf.l_margin + p(pdf, "Table of contents:") + pdf.underline = False + pdf.y += 10 + pdf.set_font("Courier", size=12) + for section in outline: + link = pdf.add_link() + + pdf.set_link(link, page=section.page_number) + p( + pdf, + f'{" " * section.level * 2} {section.name} ' + f'{"." * (60 - section.level * 2 - len(section.name))} {section.page_number}', + align="C", + link=link, + ) + + self.add_page() + self.insert_toc_placeholder(render_toc) + + def save_pdf(self, file_path, file_name=None): """Save pdf. Parameters @@ -266,19 +517,12 @@ def save_pdf(self, file_path, file_name=None, open=False): Pdf path. file_name : str, optional File name. - open : bool, optional - Whether if open the pdf at the end or not. """ - if open: - if not file_name: - file_name = self.report_specs.ProjectName + "_" + self.report_specs.Revision + ".pdf" - self.report.SaveAndOpenPDF(os.path.join(file_path, file_name)) - return os.path.join(file_path, file_name) - else: - return self.report.SavePDF(file_path, file_name) + self.output(os.path.join(file_path, file_name)) + return os.path.join(file_path, file_name) - def add_chart(self, x_values, y_values, x_caption, y_caption, title, section_id=0): - """Add a chart to the report. + def add_chart(self, x_values, y_values, x_caption, y_caption, title): + """Add a chart to the report using matplotlib. Parameters ---------- @@ -292,14 +536,26 @@ def add_chart(self, x_values, y_values, x_caption, y_caption, title, section_id= Y axis caption. title : str Chart title. - section_id : int, optional - Section on which add the caption. Default is 0 which use current section. """ - self.report.CreateCustomChart( - convert_py_list_to_net_list(x_values, float), - convert_py_list_to_net_list(y_values, float), - x_caption, - y_caption, - title, - section_id, - ) + from PIL import Image + from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas + from matplotlib.figure import Figure + import numpy as np + + dpi = 100.0 + figsize = (2000 / dpi, 2000 / dpi) + fig = Figure(figsize=figsize, dpi=dpi) + fig.subplots_adjust(top=0.8) + ax = fig.add_subplot(1, 1, 1) + ax.set_ylabel(y_caption) + ax.set_title(title) + x = np.array(x_values) + y = np.array(y_values) + (line,) = ax.plot(x, y, color="blue", lw=2) + + ax.set_xlabel(x_caption) + # Converting Figure to an image: + canvas = FigureCanvas(fig) + canvas.draw() + img = Image.fromarray(np.asarray(canvas.buffer_rgba())) + self.image(img, w=self.epw) # Make the image full width From 86ece186263f071d0059e5d833b924e1b1fe9f28 Mon Sep 17 00:00:00 2001 From: maxcapodi78 Date: Fri, 5 Jan 2024 10:45:47 +0100 Subject: [PATCH 2/8] Added ToC to AnsysReport --- _unittest/test_01_pdf.py | 1 + .../06-Multiphysics/Hfss_Icepak_Coupling.py | 2 +- pyaedt/generic/pdf.py | 85 +++++++++---------- 3 files changed, 44 insertions(+), 44 deletions(-) diff --git a/_unittest/test_01_pdf.py b/_unittest/test_01_pdf.py index d01ef23e4c3..5e894b13980 100644 --- a/_unittest/test_01_pdf.py +++ b/_unittest/test_01_pdf.py @@ -39,4 +39,5 @@ def test_create_pdf(self, local_scratch): report.add_table("MyTable", [["x", "y"], ["0", "1"], ["2", "3"], ["10", "20"]]) report.add_section() report.add_chart([0, 1, 2, 3, 4, 5], [10, 20, 4, 30, 40, 12], "Freq", "Val", "MyTable") + report.add_toc() assert os.path.exists(report.save_pdf(local_scratch.path, "my_firstpdf.pdf")) diff --git a/examples/06-Multiphysics/Hfss_Icepak_Coupling.py b/examples/06-Multiphysics/Hfss_Icepak_Coupling.py index 166d1251da7..e193d7b2509 100644 --- a/examples/06-Multiphysics/Hfss_Icepak_Coupling.py +++ b/examples/06-Multiphysics/Hfss_Icepak_Coupling.py @@ -344,7 +344,7 @@ report.add_chapter("Icepak Results") report.add_sub_chapter("Temperature Plot") report.add_text("This section contains Multiphysics temperature plot.") - +report.add_toc() #report.add_image(os.path.join(results_folder, plot5.name+".jpg"), "Coaxial Cable Temperatures") report.save_pdf(results_folder, "AEDT_Results.pdf") diff --git a/pyaedt/generic/pdf.py b/pyaedt/generic/pdf.py index d2aada311f8..78acf864532 100644 --- a/pyaedt/generic/pdf.py +++ b/pyaedt/generic/pdf.py @@ -184,15 +184,15 @@ def footer(self): self.cell(0, 10, self.template_data.footer_text, 0, align="L") self.cell(0, 10, "Page " + str(self.page_no()) + "/{nb}", align="R") - def create(self, add_cover_page=True, add_toc=True): + def create(self, add_cover_page=True, add_new_section_after=True): """Create a new report using ``report_specs`` properties. Parameters ---------- - add_toc :bool, optional - Whether to add pdf table of content or not. Default is ``True``. - add_first_page :bool, optional - Whether to add first page with title or not. Default is ``True``. + add_cover_page :bool, optional + Whether to add cover page or not. Default is ``True``. + add_new_section_after : bool, optional + Whether if add a new section after the cover page or not. Returns ------- @@ -200,12 +200,8 @@ def create(self, add_cover_page=True, add_toc=True): """ if add_cover_page: self._add_cover_page() - - if add_toc: - if not add_cover_page: - self.add_page() - self.add_toc() - + if add_new_section_after: + self.add_page() return True @property @@ -471,43 +467,46 @@ def add_text(self, content, bold=False, italic=False): ) def add_toc(self): - """Add Table of content.""" - - def p(pdf, text, **kwargs): + def p(section, **kwargs): "Inserts a paragraph" - pdf.multi_cell( - w=pdf.epw, - h=pdf.font_size, - text=text, + self.cell(w=self.epw, h=self.font_size, text=section, new_x="LMARGIN", new_y="NEXT", **kwargs) + + self.add_page() + self.set_font(self.template_data.font.lower(), size=self.template_data.title_font_size) + self.set_text_color(*self.template_data.font_color) + self.underline = True + self.x = self.l_margin + p("Table of contents:") + self.underline = False + self.y += 10 + self.set_font(self.template_data.font, size=12) + + for section in self._outline: + link = self.add_link() + self.set_link(link, page=section.page_number) + string1 = f'{" " * section.level * 2} {section.name}' + string2 = f"Page {section.page_number}" + self.set_x(self.l_margin * 2) + self.cell( + w=self.epw - self.l_margin - self.r_margin, + h=self.font_size, + text=string1, + new_x="LMARGIN", + new_y="LAST", + align="L", + link=link, + ) + self.set_x(self.l_margin * 2) + self.cell( + w=self.epw - self.l_margin - self.r_margin, + h=self.font_size, + text=string2, new_x="LMARGIN", new_y="NEXT", - **kwargs, + align="R", + link=link, ) - def render_toc(pdf, outline): - pdf.set_font(self.template_data.font.lower(), size=self.template_data.title_font_size) - self.set_text_color(*self.template_data.font_color) - pdf.underline = True - pdf.x = pdf.l_margin - p(pdf, "Table of contents:") - pdf.underline = False - pdf.y += 10 - pdf.set_font("Courier", size=12) - for section in outline: - link = pdf.add_link() - - pdf.set_link(link, page=section.page_number) - p( - pdf, - f'{" " * section.level * 2} {section.name} ' - f'{"." * (60 - section.level * 2 - len(section.name))} {section.page_number}', - align="C", - link=link, - ) - - self.add_page() - self.insert_toc_placeholder(render_toc) - def save_pdf(self, file_path, file_name=None): """Save pdf. From e09d6c9131dbccf58dff9574d08b9d6f9c55f9bb Mon Sep 17 00:00:00 2001 From: maxcapodi78 Date: Fri, 5 Jan 2024 10:46:51 +0100 Subject: [PATCH 3/8] Added dependencies --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index c0df6b4a384..7cdff3c8ae8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,6 +32,7 @@ dependencies = [ "rpyc==5.3.1", "psutil", "dotnetcore2 ==3.1.23;platform_system=='Linux'", + "fpdf2" ] [project.optional-dependencies] From 5306793f4059872518194e3ed0997439bb348ebe Mon Sep 17 00:00:00 2001 From: maxcapodi78 Date: Fri, 5 Jan 2024 12:38:33 +0100 Subject: [PATCH 4/8] fixed codacy --- _unittest/test_01_pdf.py | 2 +- pyaedt/generic/pdf.py | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/_unittest/test_01_pdf.py b/_unittest/test_01_pdf.py index 5e894b13980..20f27c44ad4 100644 --- a/_unittest/test_01_pdf.py +++ b/_unittest/test_01_pdf.py @@ -35,7 +35,7 @@ def test_create_pdf(self, local_scratch): report.add_empty_line(2) report.add_page_break() report.add_image(os.path.join(local_path, "example_models", "Coax_HFSS.jpg"), "Coaxial Cable") - report.add_section("L") + report.add_section(portrait=False, page_format="a3") report.add_table("MyTable", [["x", "y"], ["0", "1"], ["2", "3"], ["10", "20"]]) report.add_section() report.add_chart([0, 1, 2, 3, 4, 5], [10, 20, 4, 30, 40, 12], "Freq", "Val", "MyTable") diff --git a/pyaedt/generic/pdf.py b/pyaedt/generic/pdf.py index 78acf864532..d9662e21e3b 100644 --- a/pyaedt/generic/pdf.py +++ b/pyaedt/generic/pdf.py @@ -262,14 +262,14 @@ def aedt_version(self): def aedt_version(self, value): self.report_specs.ansys_version = value - def add_section(self, portrait=True, format="a4"): + def add_section(self, portrait=True, page_format="a4"): """Add a new section to Pdf. Parameters ---------- portrait : bool, optional Section orientation. Default ``True`` for portrait. - format : str, optional + page_format : str, optional Currently supported formats are a3, a4, a5, letter, legal or a tuple (width, height). Returns @@ -280,7 +280,7 @@ def add_section(self, portrait=True, format="a4"): orientation = "portrait" if not portrait: orientation = "landscape" - self.add_page(orientation=orientation, format=format) + self.add_page(orientation=orientation, format=page_format) def add_chapter(self, chapter_name): """Add a new chapter. @@ -449,12 +449,12 @@ def add_text(self, content, bold=False, italic=False): italic : bool, optional Whether if text is italic or not. Default is ``True``. """ - type = "" + font_type = "" if bold: - type = "B" + font_type = "B" if italic: - type += "I" - self.set_font(self.template_data.font.lower(), type.lower(), self.template_data.text_font_size) + font_type += "I" + self.set_font(self.template_data.font.lower(), font_type.lower(), self.template_data.text_font_size) self.set_text_color(*self.template_data.font_color) self.multi_cell( @@ -550,7 +550,7 @@ def add_chart(self, x_values, y_values, x_caption, y_caption, title): ax.set_title(title) x = np.array(x_values) y = np.array(y_values) - (line,) = ax.plot(x, y, color="blue", lw=2) + ax.plot(x, y, color="blue", lw=2) ax.set_xlabel(x_caption) # Converting Figure to an image: From c7ecd173baf4bcd65c4907c26867613abd49c358 Mon Sep 17 00:00:00 2001 From: Massimo Capodiferro <77293250+maxcapodi78@users.noreply.github.com> Date: Mon, 8 Jan 2024 09:53:38 +0100 Subject: [PATCH 5/8] Apply suggestions from code review Co-authored-by: SMoraisAnsys <146729917+SMoraisAnsys@users.noreply.github.com> --- pyaedt/generic/pdf.py | 45 ++++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/pyaedt/generic/pdf.py b/pyaedt/generic/pdf.py index d9662e21e3b..941e4ac11cf 100644 --- a/pyaedt/generic/pdf.py +++ b/pyaedt/generic/pdf.py @@ -48,7 +48,7 @@ class TemplateData: class AnsysReport(FPDF): - def __init__(self, version="2023R1", design_name="design1", project_name="AnsysProject", tempplate_json_file=None): + def __init__(self, version="2023R2", design_name="design1", project_name="AnsysProject", tempplate_json_file=None): super().__init__() self.report_specs = ReportSpec() self.report_specs.ansys_version = version @@ -56,10 +56,10 @@ def __init__(self, version="2023R1", design_name="design1", project_name="AnsysP self.report_specs.project_name = project_name if tempplate_json_file: self.report_specs.template_name = tempplate_json_file - self._read_template() - self._chapter_idx = 0 - self._sub_chapter_idx = 0 - self._figure_idx = 1 + self.__read_template() + self.__chapter_idx = 0 + self.__sub_chapter_idx = 0 + self.__figure_idx = 1 self.set_top_margin(unit_converter(self.template_data.top_margin, input_units=self.template_data.units)) self.set_right_margin(unit_converter(self.template_data.right_margin, input_units=self.template_data.units)) self.set_left_margin(unit_converter(self.template_data.left_margin, input_units=self.template_data.units)) @@ -68,7 +68,7 @@ def __init__(self, version="2023R1", design_name="design1", project_name="AnsysP ) self.alias_nb_pages() - def _read_template(self): + def __read_template(self): self.template_data = TemplateData() tdata = {} with open(self.report_specs.template_name, "r") as f: @@ -77,7 +77,7 @@ def _read_template(self): if k in self.template_data.__dict__: self.template_data.__dict__[k] = v - def _add_cover_page(self): + def __add_cover_page(self): self.add_page() self.set_font(self.template_data.font.lower(), "b", self.template_data.cover_subtitle_font_size) self.y += 40 @@ -109,12 +109,7 @@ def _add_cover_page(self): ) def header(self): - # Logo - self.set_y(15) - line_x = self.x - line_y = self.y - delta = (self.w - self.r_margin - self.l_margin) / 5 - 10 - self.set_text_color(*self.template_data.font_header_color) + from datetime import date def add_field(field_name, field_value): self.set_font(self.template_data.font.lower(), size=self.template_data.header_font_size) @@ -135,6 +130,13 @@ def add_field(field_name, field_value): new_y="NEXT", align="L", ) + + # Logo + self.set_y(15) + line_x = self.x + line_y = self.y + delta = (self.w - self.r_margin - self.l_margin) / 5 - 10 + self.set_text_color(*self.template_data.font_header_color) add_field("Project Name", self.report_specs.project_name) self.set_y(line_y) @@ -153,7 +155,6 @@ def add_field(field_name, field_value): self.set_y(line_y) line_x += delta self.set_x(line_x) - from datetime import date add_field("Date", str(date.today())) self.set_y(line_y) @@ -199,7 +200,7 @@ def create(self, add_cover_page=True, add_new_section_after=True): :class:`AnsysReport` """ if add_cover_page: - self._add_cover_page() + self.__add_cover_page() if add_new_section_after: self.add_page() return True @@ -290,9 +291,9 @@ def add_chapter(self, chapter_name): chapter_name : str Chapter name. """ - self._chapter_idx += 1 - self._sub_chapter_idx = 0 - txt = f"{self._chapter_idx} {chapter_name}" + self.__chapter_idx += 1 + self.__sub_chapter_idx = 0 + txt = f"{self.__chapter_idx} {chapter_name}" self.set_font(self.template_data.font.lower(), "B", self.template_data.title_font_size) self.start_section(txt) self.set_text_color(*self.template_data.font_chapter_color) @@ -316,8 +317,8 @@ def add_sub_chapter(self, chapter_name): chapter_name : str Chapter name. """ - self._sub_chapter_idx += 1 - txt = f" {self._chapter_idx}.{self._sub_chapter_idx} {chapter_name}" + self.__sub_chapter_idx += 1 + txt = f" {self.__chapter_idx}.{self.__sub_chapter_idx} {chapter_name}" self.set_font(self.template_data.font.lower(), "I", self.template_data.subtitle_font_size) self.start_section(txt.strip(), level=1) self.set_text_color(*self.template_data.font_subchapter_color) @@ -359,9 +360,9 @@ def add_image( self.image(path, h=height, w=width, x=self.epw / 2 - width / 2 + self.l_margin) if caption: - caption = f"Figure {self._figure_idx}. {caption}" + caption = f"Figure {self.__figure_idx}. {caption}" self.add_caption(caption) - self._figure_idx += 1 + self.__figure_idx += 1 return True def add_caption(self, content): From 74ea1fb651c285fed76ac3a1cd83dfd3a9049a7b Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 8 Jan 2024 08:55:14 +0000 Subject: [PATCH 6/8] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- pyaedt/generic/pdf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyaedt/generic/pdf.py b/pyaedt/generic/pdf.py index 941e4ac11cf..bf719fb9f64 100644 --- a/pyaedt/generic/pdf.py +++ b/pyaedt/generic/pdf.py @@ -130,7 +130,7 @@ def add_field(field_name, field_value): new_y="NEXT", align="L", ) - + # Logo self.set_y(15) line_x = self.x From 55af484bb163b73092890123acba7385513c7515 Mon Sep 17 00:00:00 2001 From: maxcapodi78 Date: Mon, 8 Jan 2024 12:39:10 +0100 Subject: [PATCH 7/8] Replaced with data classes. Merged templatedata and ReportSpecs into a single data class --- pyaedt/generic/AnsysTemplate.json | 2 +- pyaedt/generic/pdf.py | 158 +++++++++++++++--------------- 2 files changed, 81 insertions(+), 79 deletions(-) diff --git a/pyaedt/generic/AnsysTemplate.json b/pyaedt/generic/AnsysTemplate.json index 7f887898bc6..2190d2e456e 100644 --- a/pyaedt/generic/AnsysTemplate.json +++ b/pyaedt/generic/AnsysTemplate.json @@ -4,7 +4,7 @@ "bottom_margin":2.0, "left_margin":1.0, "right_margin":1.0, - "footer_font_size ": 7, + "footer_font_size": 7, "footer_text":"Copyright (c) 2023, ANSYS Inc. unauthorised use, distribution or duplication is prohibited", "header_font_size":7, "header_image_width":3.3, diff --git a/pyaedt/generic/pdf.py b/pyaedt/generic/pdf.py index d9662e21e3b..2dbb9cbdd44 100644 --- a/pyaedt/generic/pdf.py +++ b/pyaedt/generic/pdf.py @@ -1,3 +1,5 @@ +from dataclasses import dataclass +from dataclasses import field import json import os @@ -7,79 +9,79 @@ from pyaedt.generic.constants import unit_converter +@dataclass class ReportSpec: - document_prefix = "ANSS" - ansys_version = "2023R2" - revision = "Rev 1.0" - logo_name = os.path.join(os.path.dirname(__file__), "Ansys.png") - company_name = "Ansys Inc." - template_name = os.path.join(os.path.dirname(__file__), "AnsysTemplate.json") - design_name = "Design1" - project_name = "Project1" - pyaedt_version = __version__ - - -class TemplateData: - """Class containing default template data.""" - - units = "cm" - top_margin = 3.0 - bottom_margin = 2.0 - left_margin = 1.0 - right_margin = 1.0 - footer_font_size = 7 - footer_text = "Copyright (c) 2023, ANSYS Inc. unauthorised use, distribution or duplication is prohibited" - header_font_size = 7 - header_image_width = 3.3 - title_font_size = 14 - subtitle_font_size = 12 - text_font_size = 11 - table_font_size = 9 - caption_font_size = 9 - cover_title_font_size = 28 - cover_subtitle_font_size = 24 - font = "helvetica" - chart_width = 16 - font_color = [0, 0, 0] - font_chapter_color = [255, 0, 0] - font_subchapter_color = [0, 128, 0] - font_header_color = [0, 0, 255] - font_caption_color = [125, 0, 100] + """Data class containing all report template specifications.""" + + document_prefix: str = "ANSS" + ansys_version: str = "2023R2" + revision: str = "Rev 1.0" + logo_name: str = os.path.join(os.path.dirname(__file__), "Ansys.png") + company_name: str = "Ansys Inc." + template_name: str = os.path.join(os.path.dirname(__file__), "AnsysTemplate.json") + design_name: str = "Design1" + project_name: str = "Project1" + pyaedt_version: str = __version__ + units: str = "cm" + top_margin: float = 3.0 + bottom_margin: float = 2.0 + left_margin: float = 1.0 + right_margin: float = 1.0 + footer_font_size: int = 7 + footer_text: str = "Copyright (c) 2023, ANSYS Inc. unauthorised use, distribution or duplication is prohibited" + header_font_size: int = 7 + header_image_width: float = 3.3 + title_font_size: int = 14 + subtitle_font_size: int = 12 + text_font_size: int = 11 + table_font_size: int = 9 + caption_font_size: int = 9 + cover_title_font_size: int = 28 + cover_subtitle_font_size: int = 24 + font: str = "helvetica" + chart_width: float = 16.0 + font_color: list = field(default_factory=lambda: [0, 0, 0]) + font_chapter_color: list = field(default_factory=lambda: [0, 0, 0]) + font_subchapter_color: list = field(default_factory=lambda: [0, 0, 0]) + font_header_color: list = field(default_factory=lambda: [0, 0, 0]) + font_caption_color: list = field(default_factory=lambda: [0, 0, 0]) class AnsysReport(FPDF): def __init__(self, version="2023R1", design_name="design1", project_name="AnsysProject", tempplate_json_file=None): super().__init__() self.report_specs = ReportSpec() + self.read_template(tempplate_json_file) self.report_specs.ansys_version = version self.report_specs.design_name = design_name self.report_specs.project_name = project_name - if tempplate_json_file: - self.report_specs.template_name = tempplate_json_file - self._read_template() self._chapter_idx = 0 self._sub_chapter_idx = 0 self._figure_idx = 1 - self.set_top_margin(unit_converter(self.template_data.top_margin, input_units=self.template_data.units)) - self.set_right_margin(unit_converter(self.template_data.right_margin, input_units=self.template_data.units)) - self.set_left_margin(unit_converter(self.template_data.left_margin, input_units=self.template_data.units)) + self.set_top_margin(unit_converter(self.report_specs.top_margin, input_units=self.report_specs.units)) + self.set_right_margin(unit_converter(self.report_specs.right_margin, input_units=self.report_specs.units)) + self.set_left_margin(unit_converter(self.report_specs.left_margin, input_units=self.report_specs.units)) self.set_auto_page_break( - True, margin=unit_converter(self.template_data.bottom_margin, input_units=self.template_data.units) + True, margin=unit_converter(self.report_specs.bottom_margin, input_units=self.report_specs.units) ) self.alias_nb_pages() - def _read_template(self): - self.template_data = TemplateData() - tdata = {} - with open(self.report_specs.template_name, "r") as f: - tdata = json.load(f) - for k, v in tdata.items(): - if k in self.template_data.__dict__: - self.template_data.__dict__[k] = v + def read_template(self, template_file): + """Reade pdf template + + template_file : str + Path to the json template file. + """ + if template_file: + self.report_specs.template_name = template_file + if os.path.exists(self.report_specs.template_name): + with open(self.report_specs.template_name, "r") as f: + tdata = json.load(f) + self.report_specs = ReportSpec(**tdata) def _add_cover_page(self): self.add_page() - self.set_font(self.template_data.font.lower(), "b", self.template_data.cover_subtitle_font_size) + self.set_font(self.report_specs.font.lower(), "b", self.report_specs.cover_subtitle_font_size) self.y += 40 self.cell( 0, @@ -90,7 +92,7 @@ def _add_cover_page(self): align="L", ) self.ln(10) - self.set_font(self.template_data.font.lower(), "B", self.template_data.cover_title_font_size) + self.set_font(self.report_specs.font.lower(), "B", self.report_specs.cover_title_font_size) self.cell( 0, 16, @@ -114,10 +116,10 @@ def header(self): line_x = self.x line_y = self.y delta = (self.w - self.r_margin - self.l_margin) / 5 - 10 - self.set_text_color(*self.template_data.font_header_color) + self.set_text_color(*self.report_specs.font_header_color) def add_field(field_name, field_value): - self.set_font(self.template_data.font.lower(), size=self.template_data.header_font_size) + self.set_font(self.report_specs.font.lower(), size=self.report_specs.header_font_size) self.cell( 0, 3, @@ -167,7 +169,7 @@ def add_field(field_name, field_value): self.report_specs.logo_name, self.x, self.y, - unit_converter(self.template_data.header_image_width, input_units=self.template_data.units), + unit_converter(self.report_specs.header_image_width, input_units=self.report_specs.units), ) self.set_x(self.l_margin) self.set_y(self.t_margin) @@ -179,9 +181,9 @@ def footer(self): self.set_y(-15) # Arial italic 8 self.set_font("helvetica", "I", 8) - self.set_text_color(*self.template_data.font_header_color) + self.set_text_color(*self.report_specs.font_header_color) # Page number - self.cell(0, 10, self.template_data.footer_text, 0, align="L") + self.cell(0, 10, self.report_specs.footer_text, 0, align="L") self.cell(0, 10, "Page " + str(self.page_no()) + "/{nb}", align="R") def create(self, add_cover_page=True, add_new_section_after=True): @@ -293,9 +295,9 @@ def add_chapter(self, chapter_name): self._chapter_idx += 1 self._sub_chapter_idx = 0 txt = f"{self._chapter_idx} {chapter_name}" - self.set_font(self.template_data.font.lower(), "B", self.template_data.title_font_size) + self.set_font(self.report_specs.font.lower(), "B", self.report_specs.title_font_size) self.start_section(txt) - self.set_text_color(*self.template_data.font_chapter_color) + self.set_text_color(*self.report_specs.font_chapter_color) self.cell( 0, 12, @@ -304,8 +306,8 @@ def add_chapter(self, chapter_name): new_y="NEXT", align="L", ) - self.set_font(self.template_data.font.lower(), "I", self.template_data.text_font_size) - self.set_text_color(*self.template_data.font_color) + self.set_font(self.report_specs.font.lower(), "I", self.report_specs.text_font_size) + self.set_text_color(*self.report_specs.font_color) return True def add_sub_chapter(self, chapter_name): @@ -318,9 +320,9 @@ def add_sub_chapter(self, chapter_name): """ self._sub_chapter_idx += 1 txt = f" {self._chapter_idx}.{self._sub_chapter_idx} {chapter_name}" - self.set_font(self.template_data.font.lower(), "I", self.template_data.subtitle_font_size) + self.set_font(self.report_specs.font.lower(), "I", self.report_specs.subtitle_font_size) self.start_section(txt.strip(), level=1) - self.set_text_color(*self.template_data.font_subchapter_color) + self.set_text_color(*self.report_specs.font_subchapter_color) self.cell( 0, 10, @@ -329,8 +331,8 @@ def add_sub_chapter(self, chapter_name): new_y="NEXT", align="L", ) - self.set_font(self.template_data.font.lower(), "I", self.template_data.text_font_size) - self.set_text_color(*self.template_data.font_color) + self.set_font(self.report_specs.font.lower(), "I", self.report_specs.text_font_size) + self.set_text_color(*self.report_specs.font_color) return True @@ -373,8 +375,8 @@ def add_caption(self, content): Caption name. """ - self.set_font(self.template_data.font.lower(), "I", self.template_data.caption_font_size) - self.set_text_color(*self.template_data.font_caption_color) + self.set_font(self.report_specs.font.lower(), "I", self.report_specs.caption_font_size) + self.set_text_color(*self.report_specs.font_caption_color) self.start_section(content, level=1) self.cell( 0, @@ -384,8 +386,8 @@ def add_caption(self, content): new_y="NEXT", align="C", ) - self.set_font(self.template_data.font.lower(), "I", self.template_data.text_font_size) - self.set_text_color(*self.template_data.font_color) + self.set_font(self.report_specs.font.lower(), "I", self.report_specs.text_font_size) + self.set_text_color(*self.report_specs.font_color) def add_empty_line(self, num_lines=1): """Add a new empty line. @@ -420,10 +422,10 @@ def add_table( content : list of list Table content. """ - self.set_font(self.template_data.font.lower(), size=self.template_data.text_font_size) + self.set_font(self.report_specs.font.lower(), size=self.report_specs.text_font_size) self.add_caption(f"Table {title}") - self.set_font(self.template_data.font.lower(), size=self.template_data.table_font_size) + self.set_font(self.report_specs.font.lower(), size=self.report_specs.table_font_size) with self.table( borders_layout="MINIMAL", cell_fill_color=200, # grey @@ -454,8 +456,8 @@ def add_text(self, content, bold=False, italic=False): font_type = "B" if italic: font_type += "I" - self.set_font(self.template_data.font.lower(), font_type.lower(), self.template_data.text_font_size) - self.set_text_color(*self.template_data.font_color) + self.set_font(self.report_specs.font.lower(), font_type.lower(), self.report_specs.text_font_size) + self.set_text_color(*self.report_specs.font_color) self.multi_cell( 0, @@ -472,14 +474,14 @@ def p(section, **kwargs): self.cell(w=self.epw, h=self.font_size, text=section, new_x="LMARGIN", new_y="NEXT", **kwargs) self.add_page() - self.set_font(self.template_data.font.lower(), size=self.template_data.title_font_size) - self.set_text_color(*self.template_data.font_color) + self.set_font(self.report_specs.font.lower(), size=self.report_specs.title_font_size) + self.set_text_color(*self.report_specs.font_color) self.underline = True self.x = self.l_margin p("Table of contents:") self.underline = False self.y += 10 - self.set_font(self.template_data.font, size=12) + self.set_font(self.report_specs.font, size=12) for section in self._outline: link = self.add_link() From 07fc6919a4e460a84ff7ef27335dccb699dfb5e1 Mon Sep 17 00:00:00 2001 From: maxcapodi78 Date: Mon, 8 Jan 2024 12:44:02 +0100 Subject: [PATCH 8/8] Replaced with data classes. Merged templatedata and ReportSpecs into a single data class --- pyaedt/generic/pdf.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pyaedt/generic/pdf.py b/pyaedt/generic/pdf.py index bf610526932..ccaf42cbcb2 100644 --- a/pyaedt/generic/pdf.py +++ b/pyaedt/generic/pdf.py @@ -55,9 +55,9 @@ def __init__(self, version="2023R2", design_name="design1", project_name="AnsysP self.report_specs.ansys_version = version self.report_specs.design_name = design_name self.report_specs.project_name = project_name - self._chapter_idx = 0 - self._sub_chapter_idx = 0 - self._figure_idx = 1 + self.__chapter_idx = 0 + self.__sub_chapter_idx = 0 + self.__figure_idx = 1 self.set_top_margin(unit_converter(self.report_specs.top_margin, input_units=self.report_specs.units)) self.set_right_margin(unit_converter(self.report_specs.right_margin, input_units=self.report_specs.units)) self.set_left_margin(unit_converter(self.report_specs.left_margin, input_units=self.report_specs.units))

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